opening files using mimetypes defined in config.h
This commit is contained in:
@ -4,15 +4,12 @@
|
||||
#include "defines.h"
|
||||
|
||||
char* text(char *path, unsigned long *file_size);
|
||||
char* preview_file(char *path, unsigned long file_size){
|
||||
/* this calls "file" on path */
|
||||
|
||||
char *file_buffer;
|
||||
unsigned long cmd_size = 0;
|
||||
|
||||
char* get_mimetype(char *path){
|
||||
static char *cmd_str = "file --mime-type -b ./\"";
|
||||
unsigned long cmd_len = strlen(cmd_str);
|
||||
unsigned int path_len = strlen(path);
|
||||
|
||||
char *cmd = malloc((cmd_len + path_len) + 2);
|
||||
memset(cmd, ' ', cmd_len + path_len);
|
||||
memcpy(cmd, cmd_str, cmd_len);
|
||||
@ -23,23 +20,37 @@ char* preview_file(char *path, unsigned long file_size){
|
||||
FILE *cmd_open = popen(cmd, "r");
|
||||
char *line;
|
||||
size_t size = 0;
|
||||
char *tmp = getline(&line, &size, cmd_open);
|
||||
cmd_size = strlen(line);
|
||||
getline(&line, &size, cmd_open);
|
||||
pclose(cmd_open);
|
||||
return line;
|
||||
}
|
||||
char* preview_file(char *path, unsigned long file_size){
|
||||
/* this calls "file" on path */
|
||||
|
||||
if (strstr(line, "text")) {
|
||||
char *file_buffer;
|
||||
|
||||
|
||||
char *mime = get_mimetype(path);
|
||||
|
||||
unsigned int mime_len = strlen(mime);
|
||||
|
||||
if (strstr(mime, "text")) {
|
||||
file_buffer = text(path, &file_size);
|
||||
} else {
|
||||
file_buffer = malloc(cmd_size + 1);
|
||||
memset(file_buffer, ' ', cmd_size);
|
||||
memcpy(file_buffer, line, cmd_size);
|
||||
file_buffer[cmd_size] = '\0';
|
||||
|
||||
file_buffer = malloc(mime_len + 1);
|
||||
memset(file_buffer, ' ', mime_len);
|
||||
memcpy(file_buffer, mime, mime_len);
|
||||
file_buffer[mime_len] = '\0';
|
||||
}
|
||||
free(cmd);
|
||||
free(mime);
|
||||
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);
|
||||
FILE *fp = fopen(path, "r");
|
||||
@ -48,11 +59,3 @@ char* text(char *path, unsigned long *file_size) {
|
||||
|
||||
return file_buffer;
|
||||
}
|
||||
/*
|
||||
FILE *cmd_open = popen(cmd, "r");
|
||||
memset(file_buffer, ' ', file_size);
|
||||
fread(file_buffer, file_size, 1, cmd_open);
|
||||
file_buffer[file_size] = '\0';
|
||||
pclose(cmd_open);
|
||||
return file_buffer;
|
||||
*/
|
||||
|
Reference in New Issue
Block a user