aboutsummaryrefslogtreecommitdiff
path: root/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'file.c')
-rw-r--r--file.c130
1 files changed, 0 insertions, 130 deletions
diff --git a/file.c b/file.c
deleted file mode 100644
index 1ff7f99..0000000
--- a/file.c
+++ /dev/null
@@ -1,130 +0,0 @@
-#include "file.h"
-#include "image.h"
-#include <dirent.h>
-#include <gtk-3.0/gtk/gtk.h>
-#include <libgen.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-
-static char **extensions = NULL;
-
-char *get_filename_ext(const char *file_name)
-{
- char *dot = strrchr(file_name, '.');
- if (!dot || dot == file_name)
- return "";
- return dot + 1;
-}
-
-int is_file_format_supported(const char *file_name)
-{
- char *file_ext = get_filename_ext(file_name);
- char **it = extensions;
- while (*it != NULL) {
- if (!strcmp(*it++, file_ext)) {
- return 1;
- }
- }
- return 0;
-}
-
-void scan_supported_formats()
-{
- GSList *list, *it;
- GdkPixbufFormat *format;
- gchar **exts, **ex_it;
- int i = 0;
-
- list = gdk_pixbuf_get_formats();
- if (list != NULL) {
- for (it = list; it->next != NULL; it = it->next) {
- format = (GdkPixbufFormat *)it->data;
- exts = gdk_pixbuf_format_get_extensions(format);
- if (exts != NULL) {
- ex_it = exts;
- while (*ex_it != NULL) {
- extensions = realloc(extensions, sizeof(char *) * (i + 1));
- extensions[i++] = strdup(*ex_it);
- g_free(*ex_it);
- ex_it++;
- }
- g_free(exts);
- }
- }
- g_slist_free(list);
- extensions[i] = NULL;
- }
-}
-
-int image_filter(const struct dirent *dir)
-{
- if (dir->d_type == DT_REG && is_file_format_supported(dir->d_name)) {
- return 1;
- }
- return 0;
-}
-
-int scan(const char *file_name)
-{
- scan_supported_formats();
- struct dirent **name_list;
- char *dir_name = dirname(strdup(file_name));
- file_list_count = scandir(dir_name, &name_list, image_filter, alphasort);
- if (file_list_count < 0) {
- return -1;
- }
-
- file_list = malloc(file_list_count * sizeof(char *));
- char *file_basename = basename(strdup(file_name));
- int i = 0;
- while (i < file_list_count) {
- if (!strcmp(file_basename, name_list[i]->d_name))
- curr_file_index = i;
- file_list[i] = g_build_filename(dir_name, name_list[i]->d_name, NULL);
- free(name_list[i]);
- i++;
- }
- free(name_list);
-
- return 0;
-}
-
-char *get_next_file()
-{
- if (curr_file_index >= file_list_count - 1)
- return NULL;
- return file_list[++curr_file_index];
-}
-
-char *get_prev_file()
-{
- if (curr_file_index <= 0)
- return NULL;
- return file_list[--curr_file_index];
-}
-
-char *get_first_file()
-{
- if (curr_file_index == 0)
- return NULL;
- curr_file_index = 0;
- return file_list[curr_file_index];
-}
-
-char *get_last_file()
-{
- if (curr_file_index == file_list_count - 1)
- return NULL;
- curr_file_index = file_list_count - 1;
- return file_list[curr_file_index];
-}
-
-void clean()
-{
- for (int i = 0; i < file_list_count; ++i) {
- g_free(file_list[i]);
- }
- g_free(file_list);
-}