diff --git a/man/feh.pre b/man/feh.pre index 7ff69cfe15751ea94af2c99eef9a70704148e6a8..173410e287b0ecc7f7b10835f8064f967c7f4baa 100644 --- a/man/feh.pre +++ b/man/feh.pre @@ -594,7 +594,9 @@ image. . Save files to .Ar directory -.Pq only useful with -k . +when using +.Cm --keep-http +or the save_image command. By default, files are saved in the current working directory. . .It Cm -p , --preload diff --git a/src/slideshow.c b/src/slideshow.c index b4043184442a3357fcf6cf57af9601d3cf6d7e20..145bee168ff0b4668e6925bc52aaf4d2b287acf3 100644 --- a/src/slideshow.c +++ b/src/slideshow.c @@ -615,16 +615,24 @@ void slideshow_save_image(winwidget win) { char *tmpname; Imlib_Load_Error err; + char *base_dir = ""; + if (opt.output_dir) { + base_dir = estrjoin("", opt.output_dir, "/", NULL); + } if (win->file) { - tmpname = feh_unique_filename("", FEH_FILE(win->file->data)->name); + tmpname = feh_unique_filename(base_dir, FEH_FILE(win->file->data)->name); } else if (mode) { char *tmp; tmp = estrjoin(".", mode, "png", NULL); - tmpname = feh_unique_filename("", tmp); + tmpname = feh_unique_filename(base_dir, tmp); free(tmp); } else { - tmpname = feh_unique_filename("", "noname.png"); + tmpname = feh_unique_filename(base_dir, "noname.png"); + } + + if (opt.output_dir) { + free(base_dir); } if (opt.verbose) diff --git a/src/utils.c b/src/utils.c index ec30d4a83ef2c69807588be1324dc28eab0edbda..087e7f6287fcc6a302b6e14217b2a8ed07e8f3d8 100644 --- a/src/utils.c +++ b/src/utils.c @@ -152,6 +152,7 @@ char path_is_url(char *path) { return 0; } +/* Note: path must end with a trailing / or be an empty string */ /* free the result please */ char *feh_unique_filename(char *path, char *basename) {