improvenments to file previews
This commit is contained in:
@ -3,7 +3,9 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
|
|
||||||
|
|
||||||
char* text(char *path, unsigned long *file_size);
|
char* text(char *path, unsigned long *file_size);
|
||||||
|
char* generic(char *path);
|
||||||
|
|
||||||
char* get_mimetype(char *path){
|
char* get_mimetype(char *path){
|
||||||
static char *cmd_str = "file --mime-type -b ./\"";
|
static char *cmd_str = "file --mime-type -b ./\"";
|
||||||
@ -24,32 +26,23 @@ char* get_mimetype(char *path){
|
|||||||
pclose(cmd_open);
|
pclose(cmd_open);
|
||||||
return line;
|
return line;
|
||||||
}
|
}
|
||||||
char* preview_file(char *path, unsigned long file_size){
|
char* preview_file(file *file_current){
|
||||||
/* this calls "file" on path */
|
/* this calls "file" on path */
|
||||||
|
|
||||||
char *file_buffer;
|
char *file_buffer;
|
||||||
|
|
||||||
|
|
||||||
char *mime = get_mimetype(path);
|
char *mime = get_mimetype(file_current->file_name);
|
||||||
|
|
||||||
unsigned int mime_len = strlen(mime);
|
|
||||||
|
|
||||||
if (strstr(mime, "text")) {
|
if (strstr(mime, "text")) {
|
||||||
file_buffer = text(path, &file_size);
|
file_buffer = text(file_current->file_name, &file_current->file_size);
|
||||||
} else {
|
} else {
|
||||||
|
file_buffer = generic(file_current->file_name);
|
||||||
file_buffer = malloc(mime_len + 1);
|
|
||||||
memset(file_buffer, ' ', mime_len);
|
|
||||||
memcpy(file_buffer, mime, mime_len);
|
|
||||||
file_buffer[mime_len] = '\0';
|
|
||||||
}
|
}
|
||||||
free(mime);
|
free(mime);
|
||||||
return file_buffer;
|
return file_buffer;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
char* text(char *path, unsigned long *file_size){
|
char* text(char *path, unsigned long *file_size){
|
||||||
|
|
||||||
char *file_buffer = malloc(*file_size + 1);
|
char *file_buffer = malloc(*file_size + 1);
|
||||||
@ -59,3 +52,14 @@ char* text(char *path, unsigned long *file_size){
|
|||||||
|
|
||||||
return file_buffer;
|
return file_buffer;
|
||||||
}
|
}
|
||||||
|
char* generic(char *path){
|
||||||
|
char *cmd = concat("file ./\"", path);
|
||||||
|
cmd = concat(cmd, "\"");
|
||||||
|
|
||||||
|
FILE *cmd_open = popen(cmd, "r");
|
||||||
|
char *line;
|
||||||
|
size_t size = 0;
|
||||||
|
getline(&line, &size, cmd_open);
|
||||||
|
pclose(cmd_open);
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include "file_previews.c"
|
#include "file_previews.c"
|
||||||
|
#include "defines.h"
|
||||||
|
|
||||||
char* preview_file(char *path, unsigned long file_size);
|
char* preview_file(file *file_current);
|
||||||
char* get_mimetype(char *path);
|
char* get_mimetype(char *path);
|
||||||
|
16
threading.c
16
threading.c
@ -139,11 +139,11 @@ void *thread_rgt(void *data){
|
|||||||
|
|
||||||
free(rgt_content);
|
free(rgt_content);
|
||||||
rgt_content = malloc(sizeof(file));
|
rgt_content = malloc(sizeof(file));
|
||||||
rgt_content[0].file_name = malloc(file_current->file_name_width + 1);
|
rgt_content->file_name = malloc(file_current->file_name_width + 1);
|
||||||
strcpy(rgt_content[0].file_name, file_current->file_name);
|
strcpy(rgt_content->file_name, file_current->file_name);
|
||||||
rgt_content[0].file_name_width = file_current->file_name_width;
|
rgt_content->file_name_width = file_current->file_name_width;
|
||||||
rgt_content[0].file_size = file_current->file_size;
|
rgt_content->file_size = file_current->file_size;
|
||||||
rgt_content[0].file_type = file_current->file_type;
|
rgt_content->file_type = file_current->file_type;
|
||||||
|
|
||||||
pthread_mutex_unlock(&mutex_mid);
|
pthread_mutex_unlock(&mutex_mid);
|
||||||
|
|
||||||
@ -161,10 +161,10 @@ void *thread_rgt(void *data){
|
|||||||
|
|
||||||
rgt_file_count = 1;
|
rgt_file_count = 1;
|
||||||
|
|
||||||
rgt_content[0].file_type = FILE_TYPE_OPEN_FILE;
|
rgt_content->file_type = FILE_TYPE_OPEN_FILE;
|
||||||
rgt_content[0].status = FILE_STATUS_HOVER;
|
rgt_content->status = FILE_STATUS_HOVER;
|
||||||
free(rgt_buffer);
|
free(rgt_buffer);
|
||||||
rgt_buffer = preview_file(rgt_content[0].file_name, rgt_content[0].file_size);
|
rgt_buffer = preview_file(rgt_content);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user