improvenments to file previews

This commit is contained in:
nova
2025-07-07 19:28:34 +02:00
parent b2b100727f
commit 3f8fdc9e17
3 changed files with 27 additions and 22 deletions

View File

@ -3,7 +3,9 @@
#include <string.h>
#include "defines.h"
char* text(char *path, unsigned long *file_size);
char* generic(char *path);
char* get_mimetype(char *path){
static char *cmd_str = "file --mime-type -b ./\"";
@ -24,32 +26,23 @@ char* get_mimetype(char *path){
pclose(cmd_open);
return line;
}
char* preview_file(char *path, unsigned long file_size){
char* preview_file(file *file_current){
/* this calls "file" on path */
char *file_buffer;
char *mime = get_mimetype(path);
unsigned int mime_len = strlen(mime);
char *mime = get_mimetype(file_current->file_name);
if (strstr(mime, "text")) {
file_buffer = text(path, &file_size);
file_buffer = text(file_current->file_name, &file_current->file_size);
} else {
file_buffer = malloc(mime_len + 1);
memset(file_buffer, ' ', mime_len);
memcpy(file_buffer, mime, mime_len);
file_buffer[mime_len] = '\0';
file_buffer = generic(file_current->file_name);
}
free(mime);
return file_buffer;
}
char* text(char *path, unsigned long *file_size){
char *file_buffer = malloc(*file_size + 1);
@ -59,3 +52,14 @@ char* text(char *path, unsigned long *file_size){
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;
}