aboutsummaryrefslogtreecommitdiffstats
path: root/fm.c
diff options
context:
space:
mode:
Diffstat (limited to 'fm.c')
-rw-r--r--fm.c70
1 files changed, 48 insertions, 22 deletions
diff --git a/fm.c b/fm.c
index 1d1302c..2f9c66c 100644
--- a/fm.c
+++ b/fm.c
@@ -34,7 +34,8 @@ int open_with_editor(char **argv);
bool fm_preview_file(window *w, const char *path);
/* Functions */
-static fm_info *fm_w_init(terminal *term)
+static fm_info *
+fm_w_init(terminal *term)
{
int maxx = term->maxx;
@@ -65,21 +66,28 @@ static fm_info *fm_w_init(terminal *term)
return info;
}
-void fm_getcwd(fm_info *info) { getcwd(info->cwd, sizeof(info->cwd)); }
+void
+fm_getcwd(fm_info *info)
+{
+ getcwd(info->cwd, sizeof(info->cwd));
+}
-static void fm_file_items_realloc(file_list *l)
+static void
+fm_file_items_realloc(file_list *l)
{
l->cap *= 2;
l->items = realloc(l->items, sizeof(file_item) * l->cap);
l->items = xrealloc(l->items, sizeof(file_item) * l->cap);
}
-file_list *fm_getdir(file_list *list, const char *path)
+file_list *
+fm_getdir(file_list *list, const char *path)
{
log_write(LOG_INFO, "path = %s", path);
DIR *dir = opendir(path);
if (!dir) {
- die("Cannot open dir");
+ log_write(LOG_ERR, "Cannot open directory");
+ return NULL;
}
file_list *new_list = list;
@@ -116,7 +124,8 @@ file_list *fm_getdir(file_list *list, const char *path)
return new_list;
}
-static void fm_file_list_init(file_list *l, int cap)
+static void
+fm_file_list_init(file_list *l, int cap)
{
if (!l)
die("File list initialization failed");
@@ -129,7 +138,8 @@ static void fm_file_list_init(file_list *l, int cap)
fm_getenv();
}
-fm_info *fm_init(terminal *t)
+fm_info *
+fm_init(terminal *t)
{
fm_info *info = fm_w_init(t);
info->cursor = 0;
@@ -140,7 +150,8 @@ fm_info *fm_init(terminal *t)
return info;
}
-static char *detect_file_type(const char *filepath)
+static char *
+detect_file_type(const char *filepath)
{
if (!g_magic_ctx)
magic_init();
@@ -149,7 +160,8 @@ static char *detect_file_type(const char *filepath)
return desc ? strdup(desc) : strdup("unknown");
}
-void fm_draw_file_stream(window *w, FILE *fp)
+void
+fm_draw_file_stream(window *w, FILE *fp)
{
char line_buf[512];
int line_num = 0;
@@ -161,22 +173,26 @@ void fm_draw_file_stream(window *w, FILE *fp)
}
}
-bool fm_preview_file(window *w, const char *path)
+bool
+fm_preview_file(window *w, const char *path)
{
- wclear(w->win);
if (!w || !path)
return false;
+ wclear(w->win);
+
char *file_type = detect_file_type(path);
if (strstr(file_type, "text") == NULL) {
mvwprintw(w->win, 0, 0, "%s", file_type);
+ free(file_type);
return false;
}
FILE *fp = fopen(path, "r");
if (!fp) {
mvwprintw(w->win, 0, 0, "<Cannot open file>");
+ free(file_type);
return false;
}
@@ -187,8 +203,9 @@ bool fm_preview_file(window *w, const char *path)
return true;
}
-void fm_draw_entries(window *window, file_list *list, size_t cursor, int top,
- int bottom)
+void
+fm_draw_entries(window *window, file_list *list, size_t cursor, int top,
+ int bottom)
{
if (!window || !list)
return;
@@ -216,7 +233,8 @@ void fm_draw_entries(window *window, file_list *list, size_t cursor, int top,
}
}
-void fm_entries_scroll(fm_info *info, int n)
+void
+fm_entries_scroll(fm_info *info, int n)
{
if (!info)
return;
@@ -242,7 +260,8 @@ void fm_entries_scroll(fm_info *info, int n)
need_redraw = true;
}
-static void fm_reset_windows_data(fm_info *i)
+static void
+fm_reset_windows_data(fm_info *i)
{
if (!i)
return;
@@ -250,7 +269,8 @@ static void fm_reset_windows_data(fm_info *i)
i->top = 0;
i->bottom = i->windows[FM_PANE_LEFT]->height - 1;
}
-void fm_cd_up(fm_info *info)
+void
+fm_cd_up(fm_info *info)
{
if (strcmp(info->cwd, "/") == 0)
return;
@@ -286,7 +306,8 @@ void fm_cd_up(fm_info *info)
need_redraw = true;
}
-void fm_cd_down(fm_info *info)
+void
+fm_cd_down(fm_info *info)
{
if (!info->cur || info->cur->count == 0)
return;
@@ -326,7 +347,8 @@ void fm_cd_down(fm_info *info)
free(next_dir);
}
-void magic_init(void)
+void
+magic_init(void)
{
if (!g_magic_ctx) {
g_magic_ctx = magic_open(MAGIC_MIME_TYPE | MAGIC_SYMLINK);
@@ -337,24 +359,28 @@ void magic_init(void)
}
}
-void magic_cleanup(void)
+void
+magic_cleanup(void)
{
if (g_magic_ctx)
magic_close(g_magic_ctx);
}
-static char *xgetenv(const char *const name, char *fallback)
+static char *
+xgetenv(const char *const name, char *fallback)
{
char *value = getenv(name);
return value && value[0] ? value : fallback;
}
-static void fm_getenv(void)
+static void
+fm_getenv(void)
{
enveditor = xgetenv(envs[ENV_EDITOR], utils[UTIL_VI]);
}
-int open_with_editor(char **argv)
+int
+open_with_editor(char **argv)
{
pid_t pid;
def_prog_mode();