diff options
author | David Gowers <00ai99@gmail.com> | 2013-05-06 10:56:52 +0930 |
---|---|---|
committer | David Gowers <00ai99@gmail.com> | 2013-05-06 10:58:29 +0930 |
commit | 4b2a378e848161d197e7eaf601c1ce6fe26b93b4 (patch) | |
tree | bbf9da549fe3e7c666a91efae9c3a39d9de60523 | |
parent | 8c199f28f0113b9a300ddd765e54d3999e46bc0c (diff) | |
download | feh-4b2a378e848161d197e7eaf601c1ce6fe26b93b4.zip |
Add %L format code (temporary copy of filelist)
-rw-r--r-- | man/feh.pre | 4 | ||||
-rw-r--r-- | src/slideshow.c | 13 |
2 files changed, 17 insertions, 0 deletions
diff --git a/man/feh.pre b/man/feh.pre index 23fdfce..3c1b979 100644 --- a/man/feh.pre +++ b/man/feh.pre @@ -830,6 +830,10 @@ Image height . Total number of files in filelist . +.It %L +. +Temporary copy of filelist. Multiple uses of %L within the same format string will return the same copy. +. .It %m . Current mode diff --git a/src/slideshow.c b/src/slideshow.c index 65aae3d..ee461ee 100644 --- a/src/slideshow.c +++ b/src/slideshow.c @@ -467,8 +467,10 @@ char *feh_printf(char *str, feh_file * file, winwidget winwid) char *c; char buf[20]; static char ret[4096]; + char *filelist_tmppath; ret[0] = '\0'; + filelist_tmppath = NULL; for (c = str; *c != '\0'; c++) { if ((*c == '%') && (*(c+1) != '\0')) { @@ -492,6 +494,15 @@ char *feh_printf(char *str, feh_file * file, winwidget winwid) snprintf(buf, sizeof(buf), "%d", gib_list_length(filelist)); strcat(ret, buf); break; + case 'L': + if (filelist_tmppath != NULL) { + strcat(ret, filelist_tmppath); + } else { + filelist_tmppath = feh_unique_filename("/tmp/","filelist"); + feh_write_filelist(filelist, filelist_tmppath); + strcat(ret, filelist_tmppath); + } + break; case 'm': strcat(ret, mode); break; @@ -589,6 +600,8 @@ char *feh_printf(char *str, feh_file * file, winwidget winwid) } else strncat(ret, c, 1); } + if (filelist_tmppath != NULL) + free(filelist_tmppath); return(ret); } |