Hi,
On Thu, Jan 19, 2012 at 12:47:06PM +, Jonathan Wiltshire wrote:
On Fri, Jul 08, 2011 at 08:06:17PM +0200, Julien Cristau wrote:
[...]
ick. mkdtemp(3), please.
Any news on this?
the attached patches (created against the unpatched 1.3.4.dfsg.1-1 / 1.8-1
packages) use mkdtemp for the fix.
I removed the --cache 0 wget argument because my system's wget does not support
it anymore, if the wget in oldstable still has it it's safe to put that back in.
--Daniel
diff --git a/src/imlib.c b/src/imlib.c
index fc4dcf0..1d06628 100644
--- a/src/imlib.c
+++ b/src/imlib.c
@@ -263,7 +263,7 @@ feh_http_load_image(char *url)
char *newurl = NULL;
char randnum[20];
int rnum;
- char *path = NULL;
+ static char *path = NULL;
D_ENTER(4);
@@ -274,11 +274,16 @@ feh_http_load_image(char *url)
else
path = ;
}
- else
- path = /tmp/;
+ else {
+ path = estrdup(/tmp/feh_XX);
+ if (mkdtemp(path) == NULL)
+ eprintf(Failed to create temporary directory);
+ path = estrjoin(, path, /, NULL);
+ opt.tmp_path = path;
+ }
basename = strrchr(url, '/') + 1;
- tmpname = feh_unique_filename(path, basename);
+ tmpname = estrjoin(, path, basename, NULL);
if (opt.wget_timestamp)
{
@@ -288,7 +293,7 @@ feh_http_load_image(char *url)
ppid = getpid();
snprintf(cppid, sizeof(cppid), %06ld, (long)ppid);
tmpname_timestamper =
- estrjoin(, /tmp/feh_, cppid, _, basename, NULL);
+ estrjoin(, path, cppid, _, basename, NULL);
}
if (opt.wget_timestamp)
@@ -548,7 +553,7 @@ feh_http_load_image(char *url)
}
else
{
-execlp(wget, wget, --cache, 0, newurl, -O, tmpname,
+execlp(wget, wget, newurl, -O, tmpname,
quiet, (char*) NULL);
}
eprintf(url: exec failed: wget:);
diff --git a/src/main.c b/src/main.c
index 745fdf9..4fbe600 100644
--- a/src/main.c
+++ b/src/main.c
@@ -215,5 +215,8 @@ feh_clean_exit(void)
if (opt.filelistfile)
feh_write_filelist(filelist, opt.filelistfile);
+ if (opt.tmp_path !opt.keep_http)
+ rmdir(opt.tmp_path);
+
D_RETURN_(4);
}
diff --git a/src/options.c b/src/options.c
index d9d803d..7fd46b0 100644
--- a/src/options.c
+++ b/src/options.c
@@ -55,6 +55,7 @@ init_parse_options(int argc, char **argv)
opt.thumb_h = 60;
opt.menu_font = estrdup(DEFAULT_MENU_FONT);
opt.font = estrdup(DEFAULT_FONT);
+ opt.tmp_path = NULL;
opt.menu_bg = estrdup(PREFIX /share/feh/images/menubg_default.png);
opt.menu_style = estrdup(PREFIX /share/feh/fonts/menu.style);
opt.menu_border = 4;
diff --git a/src/options.h b/src/options.h
index 0101885..f365da8 100644
--- a/src/options.h
+++ b/src/options.h
@@ -89,6 +89,8 @@ struct __fehoptions
char *menu_style;
char *caption_path;
+ char *tmp_path;
+
gib_style *menu_style_l;
unsigned char next_button;
diff --git a/src/imlib.c b/src/imlib.c
index 69c6e50..ea88754 100644
--- a/src/imlib.c
+++ b/src/imlib.c
@@ -232,15 +232,20 @@ char *feh_http_load_image(char *url)
{
char *tmpname;
char *basename;
- char *path = NULL;
+ static char *path = NULL;
if (opt.keep_http) {
if (opt.output_dir)
path = opt.output_dir;
else
path = ;
- } else
- path = /tmp/;
+ } else {
+ path = estrdup(/tmp/feh_XX);
+ if (mkdtemp(path) == NULL)
+ eprintf(Failed to create temporary directory:);
+ path = estrjoin(NULL, path, /, NULL);
+ opt.tmp_path = path;
+ }
basename = strrchr(url, '/') + 1;
tmpname = feh_unique_filename(path, basename);
diff --git a/src/main.c b/src/main.c
index ce46879..9588863 100644
--- a/src/main.c
+++ b/src/main.c
@@ -190,5 +190,8 @@ void feh_clean_exit(void)
if (opt.filelistfile)
feh_write_filelist(filelist, opt.filelistfile);
+ if (opt.tmp_path !opt.keep_http)
+ rmdir(opt.tmp_path);
+
return;
}
diff --git a/src/options.c b/src/options.c
index 5962ca1..5f928ed 100644
--- a/src/options.c
+++ b/src/options.c
@@ -56,6 +56,7 @@ void init_parse_options(int argc, char **argv)
opt.thumb_redraw = 10;
opt.menu_font = estrdup(DEFAULT_MENU_FONT);
opt.font = NULL;
+ opt.tmp_path = NULL;
opt.image_bg = estrdup(default);
opt.menu_bg = estrdup(PREFIX /share/feh/images/menubg_default.png);
opt.menu_style = estrdup(PREFIX /share/feh/fonts/menu.style);
diff --git a/src/options.h b/src/options.h
index be20687..2cb174e 100644
--- a/src/options.h
+++ b/src/options.h
@@ -88,6 +88,8 @@ struct __fehoptions {
char *caption_path;
char *start_list_at;
+ char *tmp_path;
+
gib_style *menu_style_l;
unsigned char pan_button;
signature.asc
Description: Digital signature