Krolyxon
Commit f52a99d

Branches

Refs →

nsxivf52a99d

Refactored thumbnail cache_dir

Author
Bert
Date
2011-04-07 17:23 +0200
Parent
f93f4d8
Commit
f52a99db6c1f0a659934a50ae4a4ef8085ee3752

+24 −18

1 file changed

  1. M thumbs.c +24 −18
M thumbs.c View
@@ -28,13 +28,18 @@
2828 #include "util.h"
2929
3030 extern Imlib_Image *im_invalid;
31+
3132 const int thumb_dim = THUMB_SIZE + 10;
33+char *cache_dir = NULL;
3234
3335 int tns_cache_enabled();
3436 Imlib_Image* tns_cache_load(const char*);
3537 void tns_cache_write(thumb_t*, Bool);
3638
3739 void tns_init(tns_t *tns, int cnt) {
40+ int len;
41+ char *homedir;
42+
3843 if (!tns)
3944 return;
4045
@@ -43,6 +48,14 @@ void tns_init(tns_t *tns, int cnt) {
4348 memset(tns->thumbs, 0, cnt * sizeof(thumb_t));
4449 tns->cap = cnt;
4550 tns->dirty = 0;
51+
52+ if ((homedir = getenv("HOME"))) {
53+ if (cache_dir)
54+ free(cache_dir);
55+ len = strlen(homedir) + 10;
56+ cache_dir = (char*) s_malloc(len * sizeof(char));
57+ snprintf(cache_dir, len, "%s/.sxiv", homedir);
58+ }
4659 }
4760
4861 void tns_free(tns_t *tns, win_t *win) {
@@ -60,6 +73,11 @@ void tns_free(tns_t *tns, win_t *win) {
6073
6174 free(tns->thumbs);
6275 tns->thumbs = NULL;
76+
77+ if (cache_dir) {
78+ free(cache_dir);
79+ cache_dir = NULL;
80+ }
6381 }
6482
6583 void tns_load(tns_t *tns, win_t *win, int n, const char *filename) {
@@ -301,30 +319,18 @@ int tns_translate(tns_t *tns, int x, int y) {
301319 /* thumbnail caching */
302320
303321 int tns_cache_enabled() {
304− int len, ret = 0;
305− char *cpath, *homedir;
306322 struct stat stats;
307323
308− if ((homedir = getenv("HOME"))) {
309− len = strlen(homedir) + 10;
310− cpath = (char*) s_malloc(len * sizeof(char));
311− snprintf(cpath, len, "%s/.sxiv", homedir);
312− ret = !stat(cpath, &stats) && S_ISDIR(stats.st_mode) &&
313− !access(cpath, W_OK);
314− free(cpath);
315− }
316−
317− return ret;
324+ return cache_dir && !stat(cache_dir, &stats) && S_ISDIR(stats.st_mode) &&
325+ !access(cache_dir, W_OK);
318326 }
319327
320328 char* tns_cache_filename(const char *filename) {
321329 size_t len;
322330 int i;
323− char *cfile, *abspath, *homedir;
331+ char *cfile, *abspath;
324332
325− if (!filename)
326− return NULL;
327− if (!(homedir = getenv("HOME")))
333+ if (!cache_dir || !filename)
328334 return NULL;
329335
330336 if (*filename != '/') {
@@ -341,9 +347,9 @@ char* tns_cache_filename(const char *filename) {
341347 abspath[i] = '%';
342348 }
343349
344− len += strlen(homedir) + 15;
350+ len += strlen(cache_dir) + 6;
345351 cfile = (char*) s_malloc(len);
346− snprintf(cfile, len, "%s/.sxiv/%s.png", homedir, abspath + 1);
352+ snprintf(cfile, len, "%s/%s.png", cache_dir, abspath + 1);
347353
348354 free(abspath);
349355