From: Libor Peltan Date: Fri, 20 Apr 2018 08:21:26 +0000 (+0200) Subject: kr_cache_gc: separated main function X-Git-Tag: v4.1.0~8^2~37 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=db08e347e5af3aacf6112b01bdb29b072e34c132;p=thirdparty%2Fknot-resolver.git kr_cache_gc: separated main function --- diff --git a/utils/kr_cache_gc/Makefile b/utils/kr_cache_gc/Makefile index e38925cd6..fe45efea3 100644 --- a/utils/kr_cache_gc/Makefile +++ b/utils/kr_cache_gc/Makefile @@ -1,7 +1,12 @@ all: kr_cache_gc -kr_cache_gc: kr_cache_gc.c ../../contrib/dynarray.h ../../lib/defines.h ../../lib/cache/api.h ../../lib/cache/impl.h - gcc -std=gnu99 -o $@ $< -Wl,-Bdynamic -L../../lib -lknot -lkres -I../.. -I../../contrib -I/usr/include/luajit-2.0 +kr_cache_gc: kr_cache_gc.o main.c kr_cache_gc.h ../../lib/defines.h + gcc -std=gnu99 -o $@ main.c kr_cache_gc.o -Wl,-Bdynamic -L../../lib -lknot -lkres -I../.. +kr_cache_gc.o: kr_cache_gc.c ../../contrib/dynarray.h ../../lib/defines.h ../../lib/cache/api.h ../../lib/cache/impl.h + gcc -std=gnu99 -o $@ -c $< -I../.. -I../../contrib -I/usr/include/luajit-2.0 + +clean: + rm -f kr_cache_gc kr_cache_gc.o diff --git a/utils/kr_cache_gc/kr_cache_gc.c b/utils/kr_cache_gc/kr_cache_gc.c index 00109e8db..772aed634 100644 --- a/utils/kr_cache_gc/kr_cache_gc.c +++ b/utils/kr_cache_gc/kr_cache_gc.c @@ -12,8 +12,6 @@ #include #include -#define KR_CACHE_GC_VERSION "0.1" - // TODO remove and use time(NULL) ! this is just for debug with pre-generated cache int64_t now = 1523701784; @@ -128,22 +126,15 @@ dynarray_declare(entry, knot_db_val_t, DYNARRAY_VISIBILITY_STATIC, 256); dynarray_define(entry, knot_db_val_t, DYNARRAY_VISIBILITY_STATIC); -int main(int argc, char *argv[]) +int kr_cache_gc(const char *cache) { - printf("Knot Resolver Cache Garbage Collector v. %s\n", KR_CACHE_GC_VERSION); - if (argc < 2 || argv[1][0] == '-') { - printf("Usage: %s \n", argv[0]); - return 0; - } - - const char *cache = argv[1]; char cache_data[strlen(cache) + 10]; snprintf(cache_data, sizeof(cache_data), "%s/data.mdb", cache); struct stat st = { 0 }; if (stat(cache, &st) || !(st.st_mode & S_IFDIR) || stat(cache_data, &st)) { printf("Error: %s does not exist or is not a LMDB.\n", cache); - return 1; + return -ENOENT; } size_t cache_size = st.st_size; @@ -154,7 +145,7 @@ int main(int argc, char *argv[]) int ret = kr_cache_open(&krc, NULL, &opts, NULL); if (ret || krc.db == NULL) { printf("Error opening Resolver cache (%s).\n", kr_strerror(ret)); - return 2; + return -EINVAL; } const knot_db_api_t *api = knot_db_lmdb_api(); @@ -249,5 +240,5 @@ fail: free(db); kr_cache_close(&krc); - return (ret ? 10 : 0); + return ret; } diff --git a/utils/kr_cache_gc/kr_cache_gc.h b/utils/kr_cache_gc/kr_cache_gc.h new file mode 100644 index 000000000..b492f8b3b --- /dev/null +++ b/utils/kr_cache_gc/kr_cache_gc.h @@ -0,0 +1,3 @@ +int kr_cache_gc(const char *cache); + +#define KR_CACHE_GC_VERSION "0.1" diff --git a/utils/kr_cache_gc/main.c b/utils/kr_cache_gc/main.c new file mode 100644 index 000000000..f642a8d78 --- /dev/null +++ b/utils/kr_cache_gc/main.c @@ -0,0 +1,50 @@ +#include +#include +#include +#include + +#include + +#include "kr_cache_gc.h" + +static void print_help() +{ + printf("Usage: kr_cache_gc -c \n"); +} + +int main(int argc, char *argv[]) +{ + printf("Knot Resolver Cache Garbage Collector v. %s\n", KR_CACHE_GC_VERSION); + + const char *cache_path = NULL; + + int o; + while ((o = getopt(argc, argv, "hc:")) != -1) { + switch (o) { + case 'c': + cache_path = optarg; + break; + case ':': + case '?': + case 'h': + print_help(); + return 1; + default: + assert(0); + } + } + + if (cache_path == NULL) { + print_help(); + return 1; + } + + int ret = kr_cache_gc(cache_path); + if (ret) { + printf("Error (%s)\n", kr_strerror(ret)); + return 10; + } + + return 0; +} +