summaryrefslogtreecommitdiff
path: root/src/filelist.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/filelist.c')
-rw-r--r--src/filelist.c923
1 files changed, 432 insertions, 491 deletions
diff --git a/src/filelist.c b/src/filelist.c
index dcbab54..da17f15 100644
--- a/src/filelist.c
+++ b/src/filelist.c
@@ -28,584 +28,525 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "options.h"
gib_list *filelist = NULL;
-int filelist_len = 0;
+int filelist_len = 0;
gib_list *current_file = NULL;
extern int errno;
static gib_list *rm_filelist = NULL;
-feh_file *
-feh_file_new(char *filename)
+feh_file *feh_file_new(char *filename)
{
- feh_file *newfile;
- char *s;
-
- D_ENTER(4);
-
- newfile = (feh_file *) emalloc(sizeof(feh_file));
- newfile->caption = NULL;
- newfile->filename = estrdup(filename);
- s = strrchr(filename, '/');
- if (s)
- newfile->name = estrdup(s + 1);
- else
- newfile->name = estrdup(filename);
- newfile->info = NULL;
- D_RETURN(4, newfile);
+ feh_file *newfile;
+ char *s;
+
+ D_ENTER(4);
+
+ newfile = (feh_file *) emalloc(sizeof(feh_file));
+ newfile->caption = NULL;
+ newfile->filename = estrdup(filename);
+ s = strrchr(filename, '/');
+ if (s)
+ newfile->name = estrdup(s + 1);
+ else
+ newfile->name = estrdup(filename);
+ newfile->info = NULL;
+ D_RETURN(4, newfile);
}
-void
-feh_file_free(feh_file * file)
+void feh_file_free(feh_file * file)
{
- D_ENTER(4);
- if (!file)
- D_RETURN_(4);
- if (file->filename)
- free(file->filename);
- if (file->name)
- free(file->name);
- if (file->caption)
- free(file->caption);
- if (file->info)
- feh_file_info_free(file->info);
- free(file);
- D_RETURN_(4);
+ D_ENTER(4);
+ if (!file)
+ D_RETURN_(4);
+ if (file->filename)
+ free(file->filename);
+ if (file->name)
+ free(file->name);
+ if (file->caption)
+ free(file->caption);
+ if (file->info)
+ feh_file_info_free(file->info);
+ free(file);
+ D_RETURN_(4);
}
-feh_file_info *
-feh_file_info_new(void)
+feh_file_info *feh_file_info_new(void)
{
- feh_file_info *info;
+ feh_file_info *info;
- D_ENTER(4);
+ D_ENTER(4);
- info = (feh_file_info *) emalloc(sizeof(feh_file_info));
+ info = (feh_file_info *) emalloc(sizeof(feh_file_info));
- info->width = 0;
- info->height = 0;
- info->size = 0;
- info->pixels = 0;
- info->has_alpha = 0;
- info->format = NULL;
- info->extension = NULL;
+ info->width = 0;
+ info->height = 0;
+ info->size = 0;
+ info->pixels = 0;
+ info->has_alpha = 0;
+ info->format = NULL;
+ info->extension = NULL;
- D_RETURN(4, info);
+ D_RETURN(4, info);
}
-void
-feh_file_info_free(feh_file_info * info)
+void feh_file_info_free(feh_file_info * info)
{
- D_ENTER(4);
- if (!info)
- D_RETURN_(4);
- if (info->format)
- free(info->format);
- if (info->extension)
- free(info->extension);
- free(info);
- D_RETURN_(4);
+ D_ENTER(4);
+ if (!info)
+ D_RETURN_(4);
+ if (info->format)
+ free(info->format);
+ if (info->extension)
+ free(info->extension);
+ free(info);
+ D_RETURN_(4);
}
-gib_list *
-feh_file_rm_and_free(gib_list * list, gib_list * l)
+gib_list *feh_file_rm_and_free(gib_list * list, gib_list * l)
{
- D_ENTER(4);
- unlink(FEH_FILE(l->data)->filename);
- D_RETURN(4, feh_file_remove_from_list(list, l));
+ D_ENTER(4);
+ unlink(FEH_FILE(l->data)->filename);
+ D_RETURN(4, feh_file_remove_from_list(list, l));
}
-gib_list *
-feh_file_remove_from_list(gib_list * list, gib_list * l)
+gib_list *feh_file_remove_from_list(gib_list * list, gib_list * l)
{
- D_ENTER(4);
- feh_file_free(FEH_FILE(l->data));
- D_RETURN(4, gib_list_remove(list, l));
+ D_ENTER(4);
+ feh_file_free(FEH_FILE(l->data));
+ D_RETURN(4, gib_list_remove(list, l));
}
/* Recursive */
-void
-add_file_to_filelist_recursively(char *origpath, unsigned char level)
+void add_file_to_filelist_recursively(char *origpath, unsigned char level)
{
- struct stat st;
- char *path;
-
- D_ENTER(5);
- if (!origpath)
- D_RETURN_(5);
-
- path = estrdup(origpath);
- D(4, ("file is %s\n", path));
-
- if (level == FILELIST_FIRST)
- {
- /* First time through, sort out pathname */
- int len = 0;
-
- len = strlen(path);
- if (path[len - 1] == '/')
- path[len - 1] = '\0';
-
- if ((!strncmp(path, "http://", 7)) ||
- (!strncmp(path, "https://", 8)) ||
- (!strncmp(path, "ftp://", 6)))
- {
- /* Its a url */
- D(3, ("Adding url %s to filelist\n", path));
- filelist = gib_list_add_front(filelist, feh_file_new(path));
- /* We'll download it later... */
- free(path);
- D_RETURN_(5);
- }
- else if (opt.filelistfile)
- {
- char *newpath = feh_absolute_path(path);
-
- free(path);
- path = newpath;
- }
- }
-
- errno = 0;
- if (stat(path, &st))
- {
- /* Display useful error message */
- switch (errno)
- {
- case ENOENT:
- case ENOTDIR:
- if (!opt.quiet)
- weprintf("%s does not exist - skipping", path);
- break;
- case ELOOP:
- if (!opt.quiet)
- weprintf("%s - too many levels of symbolic links - skipping",
- path);
- break;
- case EACCES:
- if (!opt.quiet)
- weprintf("you don't have permission to open %s - skipping",
- path);
- break;
- default:
- if (!opt.quiet)
- weprintf("couldn't open %s", path);
- break;
- }
- free(path);
- D_RETURN_(5);
- }
-
- if ((S_ISDIR(st.st_mode)) && (level != FILELIST_LAST))
- {
- struct dirent *de;
- DIR *dir;
-
- D(4, ("It is a directory\n"));
-
- if ((dir = opendir(path)) == NULL)
- {
- if (!opt.quiet)
- weprintf("couldn't open directory %s:", path);
- free(path);
- D_RETURN_(5);
- }
- de = readdir(dir);
- while (de != NULL)
- {
- if (strcmp(de->d_name, ".") && strcmp(de->d_name, ".."))
- {
- char *newfile;
-
- newfile = estrjoin("", path, "/", de->d_name, NULL);
-
- /* This ensures we go down one level even if not fully recursive
- - this way "feh some_dir" expands to some_dir's contents */
- if (opt.recursive)
- add_file_to_filelist_recursively(newfile, FILELIST_CONTINUE);
- else
- add_file_to_filelist_recursively(newfile, FILELIST_LAST);
-
- free(newfile);
- }
- de = readdir(dir);
- }
- closedir(dir);
- }
- else if (S_ISREG(st.st_mode))
- {
- D(5, ("Adding regular file %s to filelist\n", path));
- filelist = gib_list_add_front(filelist, feh_file_new(path));
- }
- free(path);
- D_RETURN_(5);
+ struct stat st;
+ char *path;
+
+ D_ENTER(5);
+ if (!origpath)
+ D_RETURN_(5);
+
+ path = estrdup(origpath);
+ D(4, ("file is %s\n", path));
+
+ if (level == FILELIST_FIRST) {
+ /* First time through, sort out pathname */
+ int len = 0;
+
+ len = strlen(path);
+ if (path[len - 1] == '/')
+ path[len - 1] = '\0';
+
+ if ((!strncmp(path, "http://", 7))
+ || (!strncmp(path, "https://", 8))
+ || (!strncmp(path, "ftp://", 6))) {
+ /* Its a url */
+ D(3, ("Adding url %s to filelist\n", path));
+ filelist = gib_list_add_front(filelist, feh_file_new(path));
+ /* We'll download it later... */
+ free(path);
+ D_RETURN_(5);
+ } else if (opt.filelistfile) {
+ char *newpath = feh_absolute_path(path);
+
+ free(path);
+ path = newpath;
+ }
+ }
+
+ errno = 0;
+ if (stat(path, &st)) {
+ /* Display useful error message */
+ switch (errno) {
+ case ENOENT:
+ case ENOTDIR:
+ if (!opt.quiet)
+ weprintf("%s does not exist - skipping", path);
+ break;
+ case ELOOP:
+ if (!opt.quiet)
+ weprintf("%s - too many levels of symbolic links - skipping", path);
+ break;
+ case EACCES:
+ if (!opt.quiet)
+ weprintf("you don't have permission to open %s - skipping", path);
+ break;
+ default:
+ if (!opt.quiet)
+ weprintf("couldn't open %s", path);
+ break;
+ }
+ free(path);
+ D_RETURN_(5);
+ }
+
+ if ((S_ISDIR(st.st_mode)) && (level != FILELIST_LAST)) {
+ struct dirent *de;
+ DIR *dir;
+
+ D(4, ("It is a directory\n"));
+
+ if ((dir = opendir(path)) == NULL) {
+ if (!opt.quiet)
+ weprintf("couldn't open directory %s:", path);
+ free(path);
+ D_RETURN_(5);
+ }
+ de = readdir(dir);
+ while (de != NULL) {
+ if (strcmp(de->d_name, ".")
+ && strcmp(de->d_name, "..")) {
+ char *newfile;
+
+ newfile = estrjoin("", path, "/", de->d_name, NULL);
+
+ /* This ensures we go down one level even if not fully recursive
+ - this way "feh some_dir" expands to some_dir's contents */
+ if (opt.recursive)
+ add_file_to_filelist_recursively(newfile, FILELIST_CONTINUE);
+ else
+ add_file_to_filelist_recursively(newfile, FILELIST_LAST);
+
+ free(newfile);
+ }
+ de = readdir(dir);
+ }
+ closedir(dir);
+ } else if (S_ISREG(st.st_mode)) {
+ D(5, ("Adding regular file %s to filelist\n", path));
+ filelist = gib_list_add_front(filelist, feh_file_new(path));
+ }
+ free(path);
+ D_RETURN_(5);
}
-void
-add_file_to_rm_filelist(char *file)
+void add_file_to_rm_filelist(char *file)
{
- D_ENTER(4);
- rm_filelist = gib_list_add_front(rm_filelist, feh_file_new(file));
- D_RETURN_(4);
+ D_ENTER(4);
+ rm_filelist = gib_list_add_front(rm_filelist, feh_file_new(file));
+ D_RETURN_(4);
}
-void
-delete_rm_files(void)
+void delete_rm_files(void)
{
- gib_list *l;
+ gib_list *l;
- D_ENTER(4);
- for (l = rm_filelist; l; l = l->next)
- unlink(FEH_FILE(l->data)->filename);
- D_RETURN_(4);
+ D_ENTER(4);
+ for (l = rm_filelist; l; l = l->next)
+ unlink(FEH_FILE(l->data)->filename);
+ D_RETURN_(4);
}
-gib_list *
-feh_file_info_preload(gib_list * list)
+gib_list *feh_file_info_preload(gib_list * list)
{
- gib_list *l;
- feh_file *file = NULL;
- gib_list *remove_list = NULL;
-
- D_ENTER(4);
- if (opt.verbose)
- fprintf(stdout, PACKAGE " - preloading...\n");
-
- for (l = list; l; l = l->next)
- {
- file = FEH_FILE(l->data);
- D(5,
- ("file %p, file->next %p, file->name %s\n", l, l->next, file->name));
- if (feh_file_info_load(file, NULL))
- {
- D(3, ("Failed to load file %p\n", file));
- remove_list = gib_list_add_front(remove_list, l);
- if (opt.verbose)
- feh_display_status('x');
- }
- else if (opt.verbose)
- feh_display_status('.');
- }
- if (opt.verbose)
- fprintf(stdout, "\n");
-
- if (remove_list)
- {
- for (l = remove_list; l; l = l->next)
- filelist = list = gib_list_remove(list, (gib_list *) l->data);
-
- gib_list_free(remove_list);
- }
-
- D_RETURN(4, list);
+ gib_list *l;
+ feh_file *file = NULL;
+ gib_list *remove_list = NULL;
+
+ D_ENTER(4);
+ if (opt.verbose)
+ fprintf(stdout, PACKAGE " - preloading...\n");
+
+ for (l = list; l; l = l->next) {
+ file = FEH_FILE(l->data);
+ D(5, ("file %p, file->next %p, file->name %s\n", l, l->next, file->name));
+ if (feh_file_info_load(file, NULL)) {
+ D(3, ("Failed to load file %p\n", file));
+ remove_list = gib_list_add_front(remove_list, l);
+ if (opt.verbose)
+ feh_display_status('x');
+ } else if (opt.verbose)
+ feh_display_status('.');
+ }
+ if (opt.verbose)
+ fprintf(stdout, "\n");
+
+ if (remove_list) {
+ for (l = remove_list; l; l = l->next)
+ filelist = list = gib_list_remove(list, (gib_list *) l->data);
+
+ gib_list_free(remove_list);
+ }
+
+ D_RETURN(4, list);
}
-int
-feh_file_info_load(feh_file * file, Imlib_Image im)
+int feh_file_info_load(feh_file * file, Imlib_Image im)
{
- struct stat st;
- int need_free = 1;
- Imlib_Image im1;
-
- D_ENTER(4);
-
- D(4, ("im is %p\n", im));
-
- if (im)
- need_free = 0;
-
- errno = 0;
- if (stat(file->filename, &st))
- {
- /* Display useful error message */
- switch (errno)
- {
- case ENOENT:
- case ENOTDIR:
- if (!opt.quiet)
- weprintf("%s does not exist - skipping", file->filename);
- break;
- case ELOOP:
- if (!opt.quiet)
- weprintf("%s - too many levels of symbolic links - skipping",
- file->filename);
- break;
- case EACCES:
- if (!opt.quiet)
- weprintf("you don't have permission to open %s - skipping",
- file->filename);
- break;
- default:
- if (!opt.quiet)
- weprintf("couldn't open %s ", file->filename);
- break;
- }
- D_RETURN(4, 1);
- }
-
- if (im)
- im1 = im;
- else if (!feh_load_image(&im1, file))
- D_RETURN(4, 1);
-
- if (!im1)
- D_RETURN(4, 1);
-
- file->info = feh_file_info_new();
-
- file->info->width = gib_imlib_image_get_width(im1);
- file->info->height = gib_imlib_image_get_height(im1);
-
- file->info->has_alpha = gib_imlib_image_has_alpha(im1);
-
- file->info->pixels = file->info->width * file->info->height;
-
- file->info->format = estrdup(gib_imlib_image_format(im1));
-
- file->info->size = st.st_size;
-
- if (need_free && im1)
- gib_imlib_free_image_and_decache(im1);
- D_RETURN(4, 0);
+ struct stat st;
+ int need_free = 1;
+ Imlib_Image im1;
+
+ D_ENTER(4);
+
+ D(4, ("im is %p\n", im));
+
+ if (im)
+ need_free = 0;
+
+ errno = 0;
+ if (stat(file->filename, &st)) {
+ /* Display useful error message */
+ switch (errno) {
+ case ENOENT:
+ case ENOTDIR:
+ if (!opt.quiet)
+ weprintf("%s does not exist - skipping", file->filename);
+ break;
+ case ELOOP:
+ if (!opt.quiet)
+ weprintf("%s - too many levels of symbolic links - skipping", file->filename);
+ break;
+ case EACCES:
+ if (!opt.quiet)
+ weprintf("you don't have permission to open %s - skipping", file->filename);
+ break;
+ default:
+ if (!opt.quiet)
+ weprintf("couldn't open %s ", file->filename);
+ break;
+ }
+ D_RETURN(4, 1);
+ }
+
+ if (im)
+ im1 = im;
+ else if (!feh_load_image(&im1, file))
+ D_RETURN(4, 1);
+
+ if (!im1)
+ D_RETURN(4, 1);
+
+ file->info = feh_file_info_new();
+
+ file->info->width = gib_imlib_image_get_width(im1);
+ file->info->height = gib_imlib_image_get_height(im1);
+
+ file->info->has_alpha = gib_imlib_image_has_alpha(im1);
+
+ file->info->pixels = file->info->width * file->info->height;
+
+ file->info->format = estrdup(gib_imlib_image_format(im1));
+
+ file->info->size = st.st_size;
+
+ if (need_free && im1)
+ gib_imlib_free_image_and_decache(im1);
+ D_RETURN(4, 0);
}
-int
-feh_cmp_filename(void *file1, void *file2)
+int feh_cmp_filename(void *file1, void *file2)
{
- D_ENTER(4);
- D_RETURN(4, strcmp(FEH_FILE(file1)->filename, FEH_FILE(file2)->filename));
+ D_ENTER(4);
+ D_RETURN(4, strcmp(FEH_FILE(file1)->filename, FEH_FILE(file2)->filename));
}
-int
-feh_cmp_name(void *file1, void *file2)
+int feh_cmp_name(void *file1, void *file2)
{
- D_ENTER(4);
- D_RETURN(4, strcmp(FEH_FILE(file1)->name, FEH_FILE(file2)->name));
+ D_ENTER(4);
+ D_RETURN(4, strcmp(FEH_FILE(file1)->name, FEH_FILE(file2)->name));
}
-int
-feh_cmp_width(void *file1, void *file2)
+int feh_cmp_width(void *file1, void *file2)
{
- D_ENTER(4);
- D_RETURN(4, (FEH_FILE(file1)->info->width - FEH_FILE(file2)->info->width));
+ D_ENTER(4);
+ D_RETURN(4, (FEH_FILE(file1)->info->width - FEH_FILE(file2)->info->width));
}
-int
-feh_cmp_height(void *file1, void *file2)
+int feh_cmp_height(void *file1, void *file2)
{
- D_ENTER(4);
- D_RETURN(4,
- (FEH_FILE(file1)->info->height - FEH_FILE(file2)->info->height));
+ D_ENTER(4);
+ D_RETURN(4, (FEH_FILE(file1)->info->height - FEH_FILE(file2)->info->height));
}
-int
-feh_cmp_pixels(void *file1, void *file2)
+int feh_cmp_pixels(void *file1, void *file2)
{
- D_ENTER(4);
- D_RETURN(4,
- (FEH_FILE(file1)->info->pixels - FEH_FILE(file2)->info->pixels));
+ D_ENTER(4);
+ D_RETURN(4, (FEH_FILE(file1)->info->pixels - FEH_FILE(file2)->info->pixels));
}
-int
-feh_cmp_size(void *file1, void *file2)
+int feh_cmp_size(void *file1, void *file2)
{
- D_ENTER(4);
- D_RETURN(4, (FEH_FILE(file1)->info->size - FEH_FILE(file2)->info->size));
+ D_ENTER(4);
+ D_RETURN(4, (FEH_FILE(file1)->info->size - FEH_FILE(file2)->info->size));
}
-int
-feh_cmp_format(void *file1, void *file2)
+int feh_cmp_format(void *file1, void *file2)
{
- D_ENTER(4);
- D_RETURN(4,
- strcmp(FEH_FILE(file1)->info->format,
- FEH_FILE(file2)->info->format));
+ D_ENTER(4);
+ D_RETURN(4, strcmp(FEH_FILE(file1)->info->format, FEH_FILE(file2)->info->format));
}
-void
-feh_prepare_filelist(void)
+void feh_prepare_filelist(void)
{
- D_ENTER(4);
- if (opt.list || opt.customlist || (opt.sort > SORT_FILENAME)
- || opt.preload)
- {
- /* For these sort options, we have to preload images */
- filelist = feh_file_info_preload(filelist);
- if (!gib_list_length(filelist))
- show_mini_usage();
- }
-
- D(3, ("sort mode requested is: %d\n", opt.sort));
- switch (opt.sort)
- {
- case SORT_NONE:
- if (opt.randomize)
- {
- /* Randomize the filename order */
- filelist = gib_list_randomize(filelist);
- }
- else if (!opt.reverse)
- {
- /* Let's reverse the list. Its back-to-front right now ;) */
- filelist = gib_list_reverse(filelist);
- }
- break;
- case SORT_NAME:
- filelist = gib_list_sort(filelist, feh_cmp_name);
- break;
- case SORT_FILENAME:
- filelist = gib_list_sort(filelist, feh_cmp_filename);
- break;
- case SORT_WIDTH:
- filelist = gib_list_sort(filelist, feh_cmp_width);
- break;
- case SORT_HEIGHT:
- filelist = gib_list_sort(filelist, feh_cmp_height);
- break;
- case SORT_PIXELS:
- filelist = gib_list_sort(filelist, feh_cmp_pixels);
- break;
- case SORT_SIZE:
- filelist = gib_list_sort(filelist, feh_cmp_size);
- break;
- case SORT_FORMAT:
- filelist = gib_list_sort(filelist, feh_cmp_format);
- break;
- default:
- break;
- }
-
- /* no point reversing a random list */
- if (opt.reverse && (opt.sort != SORT_NONE))
- {
- D(3, ("Reversing filelist as requested\n"));
- filelist = gib_list_reverse(filelist);
- }
-
- D_RETURN_(4);
+ D_ENTER(4);
+ if (opt.list || opt.customlist || (opt.sort > SORT_FILENAME)
+ || opt.preload) {
+ /* For these sort options, we have to preload images */
+ filelist = feh_file_info_preload(filelist);
+ if (!gib_list_length(filelist))
+ show_mini_usage();
+ }
+
+ D(3, ("sort mode requested is: %d\n", opt.sort));
+ switch (opt.sort) {
+ case SORT_NONE:
+ if (opt.randomize) {
+ /* Randomize the filename order */
+ filelist = gib_list_randomize(filelist);
+ } else if (!opt.reverse) {
+ /* Let's reverse the list. Its back-to-front right now ;) */
+ filelist = gib_list_reverse(filelist);
+ }
+ break;
+ case SORT_NAME:
+ filelist = gib_list_sort(filelist, feh_cmp_name);
+ break;
+ case SORT_FILENAME:
+ filelist = gib_list_sort(filelist, feh_cmp_filename);
+ break;
+ case SORT_WIDTH:
+ filelist = gib_list_sort(filelist, feh_cmp_width);
+ break;
+ case SORT_HEIGHT:
+ filelist = gib_list_sort(filelist, feh_cmp_height);
+ break;
+ case SORT_PIXELS:
+ filelist = gib_list_sort(filelist, feh_cmp_pixels);
+ break;
+ case SORT_SIZE:
+ filelist = gib_list_sort(filelist, feh_cmp_size);
+ break;
+ case SORT_FORMAT:
+ filelist = gib_list_sort(filelist, feh_cmp_format);
+ break;
+ default:
+ break;
+ }
+
+ /* no point reversing a random list */
+ if (opt.reverse && (opt.sort != SORT_NONE)) {
+ D(3, ("Reversing filelist as requested\n"));
+ filelist = gib_list_reverse(filelist);
+ }
+
+ D_RETURN_(4);
}
-int
-feh_write_filelist(gib_list * list, char *filename)
+int feh_write_filelist(gib_list * list, char *filename)
{
- FILE *fp;
- gib_list *l;
+ FILE *fp;
+ gib_list *l;
- D_ENTER(4);
+ D_ENTER(4);
- if (!list || !filename)
- D_RETURN(4, 0);
+ if (!list || !filename)
+ D_RETURN(4, 0);
- errno = 0;
- if ((fp = fopen(filename, "w")) == NULL)
- {
- weprintf("can't write filelist %s:", filename);
- D_RETURN(4, 0);
- }
+ errno = 0;
+ if ((fp = fopen(filename, "w")) == NULL) {
+ weprintf("can't write filelist %s:", filename);
+ D_RETURN(4, 0);
+ }
- for (l = list; l; l = l->next)
- fprintf(fp, "%s\n", (FEH_FILE(l->data)->filename));
+ for (l = list; l; l = l->next)
+ fprintf(fp, "%s\n", (FEH_FILE(l->data)->filename));
- fclose(fp);
+ fclose(fp);
- D_RETURN(4, 1);
+ D_RETURN(4, 1);
}
-gib_list *
-feh_read_filelist(char *filename)
+gib_list *feh_read_filelist(char *filename)
{
- FILE *fp;
- gib_list *list = NULL;
- char s[1024], s1[1024];
- Imlib_Image im1;
-
- D_ENTER(4);
-
- if (!filename)
- D_RETURN(4, NULL);
-
- /* try and load the given filelist as an image, cowardly refuse to
- * overwrite an image with a filelist. (requested by user who did feh -df *
- * when he meant feh -dF *, as it overwrote the first image with the
- * filelist).
- */
- if (feh_load_image_char(&im1, filename)) {
- weprintf("The file you specified as a filelist to read - %s - appears to be an image. Ignoring it (this is a common mistake).\n", filename);
- opt.filelistfile = NULL;
- D_RETURN(4, NULL);
- }
-
- errno = 0;
- if ((fp = fopen(filename, "r")) == NULL)
- {
- /* return quietly, as it's okay to specify a filelist file that doesn't
- exist. In that case we create it on exit. */
- D_RETURN(4, NULL);
- }
-
- for (; fgets(s, sizeof(s), fp);)
- {
- D(5, ("Got line '%s'\n", s));
- s1[0] = '\0';
- sscanf(s, "%[^\n]", (char *) &s1);
- if (!(*s1) || (*s1 == '\n'))
- continue;
- D(5, ("Got filename %s from filelist file\n", s1));
- /* Add it to the new list */
- list = gib_list_add_front(list, feh_file_new(s1));
- }
- fclose(fp);
-
- D_RETURN(4, list);
+ FILE *fp;
+ gib_list *list = NULL;
+ char s[1024], s1[1024];
+ Imlib_Image im1;
+
+ D_ENTER(4);
+
+ if (!filename)
+ D_RETURN(4, NULL);
+
+ /* try and load the given filelist as an image, cowardly refuse to
+ * overwrite an image with a filelist. (requested by user who did feh -df *
+ * when he meant feh -dF *, as it overwrote the first image with the
+ * filelist).
+ */
+ if (feh_load_image_char(&im1, filename)) {
+ weprintf(
+ "The file you specified as a filelist to read - %s - appears to be an image. Ignoring it (this is a common mistake).\n",
+ filename);
+ opt.filelistfile = NULL;
+ D_RETURN(4, NULL);
+ }
+
+ errno = 0;
+ if ((fp = fopen(filename, "r")) == NULL) {
+ /* return quietly, as it's okay to specify a filelist file that doesn't
+ exist. In that case we create it on exit. */
+ D_RETURN(4, NULL);
+ }
+
+ for (; fgets(s, sizeof(s), fp);) {
+ D(5, ("Got line '%s'\n", s));
+ s1[0] = '\0';
+ sscanf(s, "%[^\n]", (char *) &s1);
+ if (!(*s1) || (*s1 == '\n'))
+ continue;
+ D(5, ("Got filename %s from filelist file\n", s1));
+ /* Add it to the new list */
+ list = gib_list_add_front(list, feh_file_new(s1));
+ }
+ fclose(fp);
+
+ D_RETURN(4, list);
}
-char *
-feh_absolute_path(char *path)
+char *feh_absolute_path(char *path)
{
- char cwd[PATH_MAX];
- char fullpath[PATH_MAX];
- char temp[PATH_MAX];
- char *ret;
-
- D_ENTER(4);
-
- if (!path)
- D_RETURN(4, NULL);
- if (path[0] == '/')
- D_RETURN(4, estrdup(path));
- /* This path is not relative. We're gonna convert it, so that a
- filelist file can be saved anywhere and feh will still find the
- images */
- D(4, ("Need to convert %s to an absolute form\n", path));
- /* I SHOULD be able to just use a simple realpath() here, but dumb *
- old Solaris's realpath doesn't return an absolute path if the
- path you give it is relative. Linux and BSD get this right... */
- getcwd(cwd, sizeof(cwd));
- snprintf(temp, sizeof(temp), "%s/%s", cwd, path);
- if (realpath(temp, fullpath) != NULL)
- {
- ret = estrdup(fullpath);
- }
- else
- {
- ret = estrdup(temp);
- }
- D(4, ("Converted path to %s\n", ret));
- D_RETURN(4, ret);
+ char cwd[PATH_MAX];
+ char fullpath[PATH_MAX];
+ char temp[PATH_MAX];
+ char *ret;
+
+ D_ENTER(4);
+
+ if (!path)
+ D_RETURN(4, NULL);
+ if (path[0] == '/')
+ D_RETURN(4, estrdup(path));
+ /* This path is not relative. We're gonna convert it, so that a
+ filelist file can be saved anywhere and feh will still find the
+ images */
+ D(4, ("Need to convert %s to an absolute form\n", path));
+ /* I SHOULD be able to just use a simple realpath() here, but dumb *
+ old Solaris's realpath doesn't return an absolute path if the
+ path you give it is relative. Linux and BSD get this right... */
+ getcwd(cwd, sizeof(cwd));
+ snprintf(temp, sizeof(temp), "%s/%s", cwd, path);
+ if (realpath(temp, fullpath) != NULL) {
+ ret = estrdup(fullpath);
+ } else {
+ ret = estrdup(temp);
+ }
+ D(4, ("Converted path to %s\n", ret));
+ D_RETURN(4, ret);
}
void feh_save_filelist()
{
- char *tmpname;
+ char *tmpname;
- D_ENTER(4);
+ D_ENTER(4);
- tmpname =
- feh_unique_filename("", "filelist");
+ tmpname = feh_unique_filename("", "filelist");
- if(!opt.quiet)
- printf("saving filelist to filename '%s'\n", tmpname);
+ if (!opt.quiet)
+ printf("saving filelist to filename '%s'\n", tmpname);
- feh_write_filelist(filelist, tmpname);
- free(tmpname);
- D_RETURN_(4);
+ feh_write_filelist(filelist, tmpname);
+ free(tmpname);
+ D_RETURN_(4);
}