diff options
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | src/imlib.c | 17 |
2 files changed, 17 insertions, 1 deletions
@@ -12,6 +12,7 @@ git HEAD have no use for these shortcuts) is growing. * Draw a nice little message when in caption editing mode with empty caption (to indicate that caption editing is actually active) + * caption mode: Automatically create caption directory if it doesn't exist Sat Jun 5 21:35:25 CEST 2010 Daniel Friesel <derf@chaosdorf.de diff --git a/src/imlib.c b/src/imlib.c index ae1acb1..1681b38 100644 --- a/src/imlib.c +++ b/src/imlib.c @@ -668,7 +668,8 @@ void feh_draw_filename(winwidget w) char *build_caption_filename(feh_file * file) { char *caption_filename; - char *s, *dir; + char *s, *dir, *caption_dir; + struct stat cdir_stat; s = strrchr(file->filename, '/'); if (s) { dir = estrdup(file->filename); @@ -677,6 +678,20 @@ char *build_caption_filename(feh_file * file) } else { dir = estrdup("."); } + + caption_dir = estrjoin("/", dir, opt.caption_path, NULL); + + D(4, ("dir %s, cp %s, cdir %s\n", dir, opt.caption_path, caption_dir)) + + if (stat(caption_dir, &cdir_stat) == -1) { + if (mkdir(caption_dir, 0755) == -1) + eprintf("Failed to create caption directory %s:", caption_dir); + } else if (!S_ISDIR(cdir_stat.st_mode)) + eprintf("Caption directory (%s) exists, but is not a directory.", + caption_dir); + + free(caption_dir); + caption_filename = estrjoin("", dir, "/", opt.caption_path, "/", file->name, ".txt", NULL); free(dir); return caption_filename; |