summaryrefslogtreecommitdiffstats
path: root/thumbs.c
diff options
context:
space:
mode:
authorBert <ber.t@gmx.com>2011-04-07 17:29:59 +0200
committerBert <ber.t@gmx.com>2011-04-07 17:29:59 +0200
commit92709b2b2f579300b1c007e5a3ba869e78fcc922 (patch)
tree52b7f876bb19d342eeee01d0a1fb3dcb22742005 /thumbs.c
parentf52a99db6c1f0a659934a50ae4a4ef8085ee3752 (diff)
downloadnsxiv-92709b2b2f579300b1c007e5a3ba869e78fcc922.tar.zst
Use directory structure in cache dir
Diffstat (limited to 'thumbs.c')
-rw-r--r--thumbs.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/thumbs.c b/thumbs.c
index 6b37526..820fd4b 100644
--- a/thumbs.c
+++ b/thumbs.c
@@ -327,7 +327,6 @@ int tns_cache_enabled() {
char* tns_cache_filename(const char *filename) {
size_t len;
- int i;
char *cfile, *abspath;
if (!cache_dir || !filename)
@@ -341,13 +340,7 @@ char* tns_cache_filename(const char *filename) {
strcpy(abspath, filename);
}
- len = strlen(abspath);
- for (i = 0; i < len; ++i) {
- if (abspath[i] == '/')
- abspath[i] = '%';
- }
-
- len += strlen(cache_dir) + 6;
+ len = strlen(cache_dir) + strlen(abspath) + 6;
cfile = (char*) s_malloc(len);
snprintf(cfile, len, "%s/%s.png", cache_dir, abspath + 1);
@@ -380,10 +373,10 @@ Imlib_Image* tns_cache_load(const char *filename) {
}
void tns_cache_write(thumb_t *t, Bool force) {
- char *cfile;
+ char *cfile, *dirend;
struct stat cstats, fstats;
struct timeval times[2];
- Imlib_Load_Error err;
+ Imlib_Load_Error err = 0;
if (!t || !t->im || !t->filename)
return;
@@ -395,9 +388,17 @@ void tns_cache_write(thumb_t *t, Bool force) {
cstats.st_mtim.tv_sec != fstats.st_mtim.tv_sec ||
cstats.st_mtim.tv_nsec != fstats.st_mtim.tv_nsec)
{
- imlib_context_set_image(t->im);
- imlib_image_set_format("png");
- imlib_save_image_with_error_return(cfile, &err);
+ if ((dirend = strrchr(cfile, '/'))) {
+ *dirend = '\0';
+ err = create_dir_rec(cfile);
+ *dirend = '/';
+ }
+
+ if (!err) {
+ imlib_context_set_image(t->im);
+ imlib_image_set_format("png");
+ imlib_save_image_with_error_return(cfile, &err);
+ }
if (err) {
warn("could not cache thumbnail: %s", t->filename);