From 5153780ac2d83cd46113ca1bfd1f7182e748f18e Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Mon, 7 Jun 2010 21:55:55 +0200 Subject: --caption-path: Autocreate caption directories if they don't exist --- src/imlib.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src') 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; -- cgit v1.2.3