diff -r 7534cb97b9ab -r 6b8e287269fc dav/main.c --- a/dav/main.c Mon Nov 07 19:32:17 2016 +0100 +++ b/dav/main.c Fri Nov 11 15:03:19 2016 +0100 @@ -66,20 +66,6 @@ } int main(int argc, char **argv) { - xmlGenericErrorFunc fnc = xmlerrorfnc; - initGenericErrorDefaultFunc(&fnc); - ctx = dav_context_new(); - dav_add_namespace(ctx, "apache", "http://apache.org/dav/props/"); - load_config(ctx); - printxmlerror = 0; -#ifdef DO_THE_TEST - test(); - return 0; -#endif - - memcpy(ctx->http_proxy, get_http_proxy(), sizeof(Proxy)); - memcpy(ctx->https_proxy, get_https_proxy(), sizeof(Proxy)); - if(argc < 2) { fprintf(stderr, "Missing command\n"); print_usage(argv[0]); @@ -94,46 +80,66 @@ return -1; } - - int ret = -1; - if(!strcasecmp(cmd, "list") || !strcasecmp(cmd, "ls")) { - ret = cmd_list(args); - } else if(!strcasecmp(cmd, "get")) { - ret = cmd_get(args); - } else if(!strcasecmp(cmd, "put")) { - ret = cmd_put(args); - } else if( - !strcasecmp(cmd, "remove") || - !strcasecmp(cmd, "rm") || - !strcasecmp(cmd, "delete")) - { - ret = cmd_remove(args); - } else if(!strcasecmp(cmd, "mkdir") || !strcasecmp(cmd, "mkcol")) { - ret = cmd_mkdir(args); - } else if(!strcasecmp(cmd, "copy") || !strcasecmp(cmd, "cp")) { - ret = cmd_move(args, true); - } else if(!strcasecmp(cmd, "move") || !strcasecmp(cmd, "mv")) { - ret = cmd_move(args, false); - } else if(!strcasecmp(cmd, "date")) { - ret = cmd_date(args); - } else if(!strcasecmp(cmd, "set-property")) { - ret = cmd_set_property(args); - } else if(!strcasecmp(cmd, "get-property")) { - ret = cmd_get_property(args); - } else if(!strcasecmp(cmd, "lock")) { - ret = cmd_lock(args); - } else if(!strcasecmp(cmd, "unlock")) { - ret = cmd_unlock(args); - } else if(!strcasecmp(cmd, "info")) { - ret = cmd_info(args); - } else if(!strcasecmp(cmd, "add-repository")) { - ret = cmd_add_repository(args); - } else if(!strcasecmp(cmd, "list-repositories")) { - ret = list_repositories(); - } else if(!strcasecmp(cmd, "version") || !strcasecmp(cmd, "-version") || !strcasecmp(cmd, "--version")) { - fprintf(stderr, "dav %s\n", DAV_VERSION); - } else { - print_usage(argv[0]); + xmlGenericErrorFunc fnc = xmlerrorfnc; + initGenericErrorDefaultFunc(&fnc); + ctx = dav_context_new(); + dav_add_namespace(ctx, "apache", "http://apache.org/dav/props/"); + int cfgret = load_config(ctx); + int ret = EXIT_FAILURE; + printxmlerror = 0; +#ifdef DO_THE_TEST + test(); + return 0; +#endif + if(!strcmp(cmd, "check") || !strcmp(cmd, "check-config")) { + if(!cfgret) { + fprintf(stdout, "Configuration OK.\n"); + ret = EXIT_SUCCESS; + } else { + /* no output, the warnings are written by load_config */ + ret = EXIT_FAILURE; + } + } else if(!cfgret) { + if(!strcasecmp(cmd, "list") || !strcasecmp(cmd, "ls")) { + ret = cmd_list(args); + } else if(!strcasecmp(cmd, "get")) { + ret = cmd_get(args); + } else if(!strcasecmp(cmd, "put")) { + ret = cmd_put(args); + } else if( + !strcasecmp(cmd, "remove") || + !strcasecmp(cmd, "rm") || + !strcasecmp(cmd, "delete")) + { + ret = cmd_remove(args); + } else if(!strcasecmp(cmd, "mkdir") || !strcasecmp(cmd, "mkcol")) { + ret = cmd_mkdir(args); + } else if(!strcasecmp(cmd, "copy") || !strcasecmp(cmd, "cp")) { + ret = cmd_move(args, true); + } else if(!strcasecmp(cmd, "move") || !strcasecmp(cmd, "mv")) { + ret = cmd_move(args, false); + } else if(!strcasecmp(cmd, "date")) { + ret = cmd_date(args); + } else if(!strcasecmp(cmd, "set-property")) { + ret = cmd_set_property(args); + } else if(!strcasecmp(cmd, "get-property")) { + ret = cmd_get_property(args); + } else if(!strcasecmp(cmd, "lock")) { + ret = cmd_lock(args); + } else if(!strcasecmp(cmd, "unlock")) { + ret = cmd_unlock(args); + } else if(!strcasecmp(cmd, "info")) { + ret = cmd_info(args); + } else if(!strcasecmp(cmd, "add-repository")) { + ret = cmd_add_repository(args); + } else if(!strcasecmp(cmd, "list-repositories")) { + ret = list_repositories(); + } else if(!strcasecmp(cmd, "version") || !strcasecmp(cmd, "-version") + || !strcasecmp(cmd, "--version")) { + fprintf(stderr, "dav %s\n", DAV_VERSION); + } else { + print_usage(argv[0]); + } } dav_context_destroy(ctx); @@ -195,6 +201,7 @@ fprintf(stderr, "Config commands:\n"); fprintf(stderr, " add-repository\n"); fprintf(stderr, " list-repositories\n"); + fprintf(stderr, " check (or check-config)\n"); fprintf(stderr, "\n"); fprintf(stderr, "Instead of an url you can pass a repository name "