diff -r 7534cb97b9ab -r 6b8e287269fc dav/sync.c --- a/dav/sync.c Mon Nov 07 19:32:17 2016 +0100 +++ b/dav/sync.c Fri Nov 11 15:03:19 2016 +0100 @@ -73,49 +73,48 @@ } int ret = EXIT_FAILURE; - int loadcfg = 1; - if(!strcasecmp(cmd, "version") || !strcasecmp(cmd, "-version") || !strcasecmp(cmd, "--version")) { + if(!strcasecmp(cmd, "version") || !strcasecmp(cmd, "-version") + || !strcasecmp(cmd, "--version")) { fprintf(stderr, "dav-sync %s\n", DAV_VERSION); - loadcfg = 0; cmd_args_free(args); return -1; } - if(loadcfg) { - xmlGenericErrorFunc fnc = xmlerrorfnc; - initGenericErrorDefaultFunc(&fnc); - ctx = dav_context_new(); - load_config(ctx); - - // copy proxy config - memcpy(ctx->http_proxy, get_http_proxy(), sizeof(Proxy)); - memcpy(ctx->https_proxy, get_https_proxy(), sizeof(Proxy)); - - if(load_sync_config()) { - cmd_args_free(args); - dav_context_destroy(ctx); - return EXIT_FAILURE; - } - } + xmlGenericErrorFunc fnc = xmlerrorfnc; + initGenericErrorDefaultFunc(&fnc); + ctx = dav_context_new(); + int cfgret = load_config(ctx) || load_sync_config(); - if(!strcmp(cmd, "pull")) { - ret = cmd_pull(args); - } else if(!strcmp(cmd, "push")) { - ret = cmd_push(args); - } else if(!strcmp(cmd, "resolve-conflicts")) { - ret = cmd_resolve_conflicts(args); - } else if(!strcmp(cmd, "delete-conflicts")) { - ret = cmd_delete_conflicts(args); - } else if(!strcmp(cmd, "trash-info")) { - ret = cmd_trash_info(args); - } else if(!strcmp(cmd, "empty-trash")) { - ret = cmd_empty_trash(args); - } else if(!strcmp(cmd, "add-directory")) { - ret = cmd_add_directory(args); - } else if(!strcmp(cmd, "list-directories")) { - ret = list_syncdirs(); - } else { - print_usage(argv[0]); + 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(!strcmp(cmd, "pull")) { + ret = cmd_pull(args); + } else if(!strcmp(cmd, "push")) { + ret = cmd_push(args); + } else if(!strcmp(cmd, "resolve-conflicts")) { + ret = cmd_resolve_conflicts(args); + } else if(!strcmp(cmd, "delete-conflicts")) { + ret = cmd_delete_conflicts(args); + } else if(!strcmp(cmd, "trash-info")) { + ret = cmd_trash_info(args); + } else if(!strcmp(cmd, "empty-trash")) { + ret = cmd_empty_trash(args); + } else if(!strcmp(cmd, "add-directory")) { + ret = cmd_add_directory(args); + } else if(!strcmp(cmd, "list-directories")) { + ret = list_syncdirs(); + } else if(!strcmp(cmd, "check-repositories")) { + ret = cmd_check_repositories(); + } else { + print_usage(argv[0]); + } } // cleanup @@ -151,7 +150,9 @@ fprintf(stderr, "Config commands:\n"); fprintf(stderr, " add-directory\n"); - fprintf(stderr, " list-directories\n\n"); + fprintf(stderr, " list-directories\n"); + fprintf(stderr, " check (or check-config)\n"); + fprintf(stderr, " check-repositories\n\n"); } static int res_matches_filter(SyncDirectory *dir, char *res_path) { @@ -1633,3 +1634,8 @@ return ret; } + +int cmd_check_repositories() { + fprintf(stderr, "Not implemented.\n"); + return EXIT_FAILURE; +}