diff options
Diffstat (limited to 'src/filelist.h')
-rw-r--r-- | src/filelist.h | 79 |
1 files changed, 55 insertions, 24 deletions
diff --git a/src/filelist.h b/src/filelist.h index a292bb4..4fc3930 100644 --- a/src/filelist.h +++ b/src/filelist.h @@ -1,6 +1,7 @@ /* filelist.h Copyright (C) 1999-2003 Tom Gilbert. +Copyright (C) 2010-2024 Birte Kristina Friesel. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to @@ -26,35 +27,58 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef FILELIST_H #define FILELIST_H -struct __feh_file -{ - char *filename; - char *caption; - char *name; +#ifdef HAVE_LIBEXIF +#include <libexif/exif-data.h> +#endif - /* info stuff */ - feh_file_info *info; /* only set when needed */ +struct __feh_file { + char *filename; + char *caption; + char *name; + + /* info stuff */ + time_t mtime; + int size; + feh_file_info *info; /* only set when needed */ +#ifdef HAVE_LIBEXIF + ExifData *ed; +#endif }; -struct __feh_file_info -{ - int width; - int height; - int size; - int pixels; - unsigned char has_alpha; - char *format; - char *extension; +struct __feh_file_info { + int width; + int height; + int pixels; + unsigned char has_alpha; + char *format; + char *extension; }; #define FEH_FILE(l) ((feh_file *) l) -enum filelist_recurse -{ FILELIST_FIRST, FILELIST_CONTINUE, FILELIST_LAST }; +/* + * PATH_MAX may not be defined on all systems. Since we only use it in for a + * getcwd call in feh_absolute_path, it isn't really worth the effort to malloc + * ever-increasing buffers until it fits. Instead, we just set it to 4096 and + * have --filelist and --bg-* hiccup if the path is larger. + */ +#ifndef PATH_MAX +#define PATH_MAX 4096 +#endif -enum sort_type -{ SORT_NONE, SORT_NAME, SORT_FILENAME, SORT_WIDTH, SORT_HEIGHT, SORT_PIXELS, - SORT_SIZE, SORT_FORMAT +enum filelist_recurse { FILELIST_FIRST, FILELIST_CONTINUE, FILELIST_LAST }; + +enum sort_type { + SORT_NONE, + SORT_NAME, + SORT_FILENAME, + SORT_DIRNAME, + SORT_SIZE, // everything after SORT_SIZE requires stat(2) information on the filelist + SORT_MTIME, + SORT_WIDTH, // everything after SORT_WIDTH requires preloading the images in the filelist + SORT_HEIGHT, + SORT_PIXELS, + SORT_FORMAT }; feh_file *feh_file_new(char *filename); @@ -62,20 +86,26 @@ void feh_file_free(feh_file * file); feh_file_info *feh_file_info_new(void); void feh_file_info_free(feh_file_info * info); gib_list *feh_file_rm_and_free(gib_list * list, gib_list * file); +int file_selector_all(const struct dirent *unused); void add_file_to_filelist_recursively(char *origpath, unsigned char level); void add_file_to_rm_filelist(char *file); void delete_rm_files(void); -gib_list *feh_file_info_preload(gib_list * list); +gib_list *feh_file_info_preload(gib_list * list, int load_images); +int feh_file_stat(feh_file * file); int feh_file_info_load(feh_file * file, Imlib_Image im); +void feh_file_dirname(char *dst, feh_file * f, int maxlen); void feh_prepare_filelist(void); int feh_write_filelist(gib_list * list, char *filename); gib_list *feh_read_filelist(char *filename); char *feh_absolute_path(char *path); gib_list *feh_file_remove_from_list(gib_list * list, gib_list * l); -void feh_save_filelist(); +void feh_save_filelist(void); +char *feh_http_unescape(char * url); int feh_cmp_name(void *file1, void *file2); +int feh_cmp_dirname(void *file1, void *file2); int feh_cmp_filename(void *file1, void *file2); +int feh_cmp_mtime(void *file1, void *file2); int feh_cmp_width(void *file1, void *file2); int feh_cmp_height(void *file1, void *file2); int feh_cmp_pixels(void *file1, void *file2); @@ -83,7 +113,8 @@ int feh_cmp_size(void *file1, void *file2); int feh_cmp_format(void *file1, void *file2); extern gib_list *filelist; -extern int filelist_len; +extern gib_list *original_file_items; +extern int filelist_len; extern gib_list *current_file; #endif |