diff options
Diffstat (limited to 'cgit.c')
| -rw-r--r-- | cgit.c | 25 | 
1 files changed, 23 insertions, 2 deletions
| @@ -10,6 +10,28 @@ | |||
| 10 | 10 | ||
| 11 | const char cgit_version[] = CGIT_VERSION; | 11 | const char cgit_version[] = CGIT_VERSION; | 
| 12 | 12 | ||
| 13 | static void cgit_prepare_cache(struct cacheitem *item) | ||
| 14 | { | ||
| 15 | if (!cgit_query_repo) { | ||
| 16 | item->name = xstrdup(fmt("%s/index.html", cgit_cache_root)); | ||
| 17 | item->ttl = cgit_cache_root_ttl; | ||
| 18 | } else if (!cgit_query_page) { | ||
| 19 | item->name = xstrdup(fmt("%s/%s/index.html", cgit_cache_root, | ||
| 20 | cgit_query_repo)); | ||
| 21 | item->ttl = cgit_cache_repo_ttl; | ||
| 22 | } else { | ||
| 23 | item->name = xstrdup(fmt("%s/%s/%s/%s.html", cgit_cache_root, | ||
| 24 | cgit_query_repo, cgit_query_page, | ||
| 25 | cgit_querystring)); | ||
| 26 | if (cgit_query_has_symref) | ||
| 27 | item->ttl = cgit_cache_dynamic_ttl; | ||
| 28 | else if (cgit_query_has_sha1) | ||
| 29 | item->ttl = cgit_cache_static_ttl; | ||
| 30 | else | ||
| 31 | item->ttl = cgit_cache_repo_ttl; | ||
| 32 | } | ||
| 33 | } | ||
| 34 | |||
| 13 | static void cgit_print_repo_page(struct cacheitem *item) | 35 | static void cgit_print_repo_page(struct cacheitem *item) | 
| 14 | { | 36 | { | 
| 15 | if (chdir(fmt("%s/%s", cgit_root, cgit_query_repo)) || | 37 | if (chdir(fmt("%s/%s", cgit_root, cgit_query_repo)) || | 
| @@ -63,7 +85,6 @@ static void cgit_check_cache(struct cacheitem *item) | |||
| 63 | { | 85 | { | 
| 64 | int i = 0; | 86 | int i = 0; | 
| 65 | 87 | ||
| 66 | cache_prepare(item); | ||
| 67 | top: | 88 | top: | 
| 68 | if (++i > cgit_max_lock_attempts) { | 89 | if (++i > cgit_max_lock_attempts) { | 
| 69 | die("cgit_refresh_cache: unable to lock %s: %s", | 90 | die("cgit_refresh_cache: unable to lock %s: %s", | 
| @@ -152,8 +173,8 @@ int main(int argc, const char **argv) | |||
| 152 | cgit_parse_args(argc, argv); | 173 | cgit_parse_args(argc, argv); | 
| 153 | cgit_parse_query(cgit_querystring, cgit_querystring_cb); | 174 | cgit_parse_query(cgit_querystring, cgit_querystring_cb); | 
| 154 | 175 | ||
| 176 | cgit_prepare_cache(&item); | ||
| 155 | if (cgit_nocache) { | 177 | if (cgit_nocache) { | 
| 156 | cache_prepare(&item); | ||
| 157 | item.fd = STDOUT_FILENO; | 178 | item.fd = STDOUT_FILENO; | 
| 158 | cgit_fill_cache(&item); | 179 | cgit_fill_cache(&item); | 
| 159 | } else { | 180 | } else { | 
