-rw-r--r-- | cgit.c | 25 |
1 files changed, 23 insertions, 2 deletions
@@ -12,2 +12,24 @@ const char cgit_version[] = CGIT_VERSION; +static void cgit_prepare_cache(struct cacheitem *item) +{ + if (!cgit_query_repo) { + item->name = xstrdup(fmt("%s/index.html", cgit_cache_root)); + item->ttl = cgit_cache_root_ttl; + } else if (!cgit_query_page) { + item->name = xstrdup(fmt("%s/%s/index.html", cgit_cache_root, + cgit_query_repo)); + item->ttl = cgit_cache_repo_ttl; + } else { + item->name = xstrdup(fmt("%s/%s/%s/%s.html", cgit_cache_root, + cgit_query_repo, cgit_query_page, + cgit_querystring)); + if (cgit_query_has_symref) + item->ttl = cgit_cache_dynamic_ttl; + else if (cgit_query_has_sha1) + item->ttl = cgit_cache_static_ttl; + else + item->ttl = cgit_cache_repo_ttl; + } +} + static void cgit_print_repo_page(struct cacheitem *item) @@ -65,3 +87,2 @@ static void cgit_check_cache(struct cacheitem *item) - cache_prepare(item); top: @@ -154,4 +175,4 @@ int main(int argc, const char **argv) + cgit_prepare_cache(&item); if (cgit_nocache) { - cache_prepare(&item); item.fd = STDOUT_FILENO; |