commit e84a502bc400f7050148d37fca81acd7227b6827
parent e9b9894e29151ef7084e13729b629adb9651487c
Author: Quentin Rameau <quinq@fifth.space>
Date: Fri, 1 Sep 2017 15:12:54 +0200
Get rid of mkstemp and use full file name in cache
Diffstat:
2 files changed, 18 insertions(+), 20 deletions(-)
diff --git a/config.mk b/config.mk
@@ -9,7 +9,7 @@ UI=txt
#UIFLAGS=-lcurses
# Stock FLAGS
-SACCCFLAGS = -D_POSIX_C_SOURCE=200809L -D_DEFAULT_SOURCE $(CFLAGS)
+SACCCFLAGS = -D_DEFAULT_SOURCE $(CFLAGS)
SACCLDFLAGS = $(UIFLAGS) $(LDFLAGS)
.c.o:
diff --git a/sacc.c b/sacc.c
@@ -493,7 +493,7 @@ plumbitem(Item *item)
{
char *file, *path, *tag;
mode_t mode = S_IRUSR|S_IWUSR|S_IRGRP;
- int dest;
+ int n, dest, plumbitem;
if (file = strrchr(item->selector, '/'))
++file;
@@ -510,36 +510,34 @@ plumbitem(Item *item)
tag = NULL;
}
- if (path[0]) {
- if (tag && !strcmp(tag, path))
- goto cleanup;
+ plumbitem = path[0] ? 0 : 1;
+ if (!path[0]) {
+ clear(&path);
+ if (!tag) {
+ n = snprintf(NULL, 0, "%s/%s", "/tmp/sacc", file);
+ path = xmalloc(++n);
+ snprintf(path, n, "%s/%s", "/tmp/sacc", file);
+ }
+ }
+
+ if (path && (!tag || strcmp(tag, path))) {
if ((dest = open(path, O_WRONLY|O_CREAT|O_EXCL, mode)) < 0) {
uistatus("Can't open destination file %s: %s",
path, strerror(errno));
errno = 0;
goto cleanup;
}
- } else {
- clear(&path);
-
- if (!tag) {
- path = xstrdup("/tmp/sacc/img-XXXXXX");
-
- if ((dest = mkstemp(path)) < 0) {
- uistatus("mkstemp: %s: %s", path, strerror(errno));
- goto cleanup;
- }
- }
+ if (!download(item, dest) || tag)
+ goto cleanup;
}
- if (path && (!download(item, dest) || tag))
- goto cleanup;
-
if (!tag)
item->tag = path;
- plumb(item->tag);
+ if (plumbitem)
+ plumb(item->tag);
+
return;
cleanup:
free(path);