X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/fbaf1171b4e343929dd43ecac7cd9d1c692b84ec..7c849d94ec1cfecdec5a88d49f5af5c98f96ebca:/cache.c diff --git a/cache.c b/cache.c index b947a34..91b89a6 100644 --- a/cache.c +++ b/cache.c @@ -45,6 +45,10 @@ int cache_create_dirs() { char *path; + path = fmt("%s", cgit_cache_root); + if (mkdir(path, S_IRWXU) && errno!=EEXIST) + return 0; + if (!cgit_query_repo) return 0; @@ -74,7 +78,7 @@ int cache_refill_overdue(const char *lockfile) int cache_lock(struct cacheitem *item) { int i = 0; - char *lockfile = fmt("%s.lock", item->name); + char *lockfile = xstrdup(fmt("%s.lock", item->name)); top: if (++i > cgit_max_lock_attempts) @@ -90,6 +94,7 @@ int cache_lock(struct cacheitem *item) cache_refill_overdue(lockfile) && !unlink(lockfile)) goto top; + free(lockfile); return (item->fd > 0); }