summaryrefslogtreecommitdiffabout
path: root/cache.c
Unidiff
Diffstat (limited to 'cache.c') (more/less context) (show whitespace changes)
-rw-r--r--cache.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/cache.c b/cache.c
index 1be1ea4..b034c48 100644
--- a/cache.c
+++ b/cache.c
@@ -1,48 +1,56 @@
1/* cache.c: cache management
2 *
3 * Copyright (C) 2006 Lars Hjemli
4 *
5 * Licensed under GNU General Public License v2
6 * (see COPYING for full license text)
7 */
8
1#include "cgit.h" 9#include "cgit.h"
2 10
3const int NOLOCK = -1; 11const int NOLOCK = -1;
4 12
5int cache_lookup(struct cacheitem *item) 13int cache_lookup(struct cacheitem *item)
6{ 14{
7 if (!cgit_query_repo) { 15 if (!cgit_query_repo) {
8 item->name = xstrdup(fmt("%s/index.html", cgit_cache_root)); 16 item->name = xstrdup(fmt("%s/index.html", cgit_cache_root));
9 item->ttl = cgit_cache_root_ttl; 17 item->ttl = cgit_cache_root_ttl;
10 } else if (!cgit_query_page) { 18 } else if (!cgit_query_page) {
11 item->name = xstrdup(fmt("%s/%s/index.html", cgit_cache_root, 19 item->name = xstrdup(fmt("%s/%s/index.html", cgit_cache_root,
12 cgit_query_repo)); 20 cgit_query_repo));
13 item->ttl = cgit_cache_repo_ttl; 21 item->ttl = cgit_cache_repo_ttl;
14 } else { 22 } else {
15 item->name = xstrdup(fmt("%s/%s/%s/%s.html", cgit_cache_root, 23 item->name = xstrdup(fmt("%s/%s/%s/%s.html", cgit_cache_root,
16 cgit_query_repo, cgit_query_page, 24 cgit_query_repo, cgit_query_page,
17 cgit_querystring)); 25 cgit_querystring));
18 if (cgit_query_has_symref) 26 if (cgit_query_has_symref)
19 item->ttl = cgit_cache_dynamic_ttl; 27 item->ttl = cgit_cache_dynamic_ttl;
20 else if (cgit_query_has_sha1) 28 else if (cgit_query_has_sha1)
21 item->ttl = cgit_cache_static_ttl; 29 item->ttl = cgit_cache_static_ttl;
22 else 30 else
23 item->ttl = cgit_cache_repo_ttl; 31 item->ttl = cgit_cache_repo_ttl;
24 } 32 }
25 if (stat(item->name, &item->st)) { 33 if (stat(item->name, &item->st)) {
26 item->st.st_mtime = 0; 34 item->st.st_mtime = 0;
27 return 0; 35 return 0;
28 } 36 }
29 return 1; 37 return 1;
30} 38}
31 39
32int cache_create_dirs() 40int cache_create_dirs()
33{ 41{
34 char *path; 42 char *path;
35 43
36 if (!cgit_query_repo) 44 if (!cgit_query_repo)
37 return 0; 45 return 0;
38 46
39 path = fmt("%s/%s", cgit_cache_root, cgit_query_repo); 47 path = fmt("%s/%s", cgit_cache_root, cgit_query_repo);
40 if (mkdir(path, S_IRWXU) && errno!=EEXIST) 48 if (mkdir(path, S_IRWXU) && errno!=EEXIST)
41 return 0; 49 return 0;
42 50
43 if (cgit_query_page) { 51 if (cgit_query_page) {
44 path = fmt("%s/%s/%s", cgit_cache_root, cgit_query_repo, 52 path = fmt("%s/%s/%s", cgit_cache_root, cgit_query_repo,
45 cgit_query_page); 53 cgit_query_page);
46 if (mkdir(path, S_IRWXU) && errno!=EEXIST) 54 if (mkdir(path, S_IRWXU) && errno!=EEXIST)
47 return 0; 55 return 0;
48 } 56 }