X-Git-Url: http://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Ffcache.c;h=35e4512029fd95968348e8dee75f9d83d8ca0f11;hb=f47ae5bf35cc0e967653c02366a38606ecb0e9fb;hp=89c66d45e07b9098da104a9a941027fe47779f0b;hpb=be68914bbcbfde6dbc51e20075691afbab3c2489;p=ppastats.git diff --git a/src/fcache.c b/src/fcache.c index 89c66d4..35e4512 100644 --- a/src/fcache.c +++ b/src/fcache.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2012 jeanfi@gmail.com + * Copyright (C) 2011-2014 jeanfi@gmail.com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -25,9 +25,9 @@ #include #include -#include "fcache.h" -#include "io.h" -#include "log.h" +#include +#include +#include static const char *cache_dir; @@ -59,12 +59,15 @@ static char *key_to_path(const char *key) char *path; const char *dir; + if (!key || !*key || *key != '/') + return NULL; + dir = get_cache_dir(); if (!dir) return NULL; - path = malloc(strlen(dir) + 1 + strlen(key) + strlen("/data.json") + 1); - sprintf(path, "%s%s/data.json", dir, key); + path = malloc(strlen(dir) + 1 + strlen(key) + strlen("/data") + 1); + sprintf(path, "%s%s.data", dir, key); return path; } @@ -74,22 +77,24 @@ char *fcache_get(const char *key) char *path, *content; path = key_to_path(key); - if (!path) + if (!path) { + log_err(_("file cache, invalid key: %s"), key); return NULL; + } content = file_get_content(path); - + if (content) log_debug(_("file cache hit %s"), key); else log_debug(_("file cache miss %s %s"), key, path); - + free(path); - + return content; } - -void fcache_put(const char *key, char *value) + +void fcache_put(const char *key, const char *value) { char *path, *dir, *tmp; FILE *f;