diff -r bf19378aed58 -r 54433cb371df dav/sync.c --- a/dav/sync.c Fri Nov 18 15:27:45 2016 +0100 +++ b/dav/sync.c Fri Nov 18 16:00:15 2016 +0100 @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -49,7 +50,6 @@ #include "assistant.h" #include "sync.h" -#include "ucx/properties.h" #include "libidav/session.h" static DavContext *ctx; @@ -109,11 +109,14 @@ ret = cmd_trash_info(args); } else if(!strcmp(cmd, "empty-trash")) { ret = cmd_empty_trash(args); - } else if(!strcmp(cmd, "add-directory")) { + } else if(!strcmp(cmd, "add-dir") + || !strcmp(cmd, "add-directory")) { ret = cmd_add_directory(args); - } else if(!strcmp(cmd, "list-directories")) { - ret = list_syncdirs(); - } else if(!strcmp(cmd, "check-repositories")) { + } else if(!strcmp(cmd, "list-dirs") + || !strcmp(cmd, "list-directories")) { + ret = cmd_list_dirs(); + } else if(!strcmp(cmd, "check-repos") + || !strcmp(cmd, "check-repositories")) { ret = cmd_check_repositories(); } else { print_usage(argv[0]); @@ -154,7 +157,7 @@ fprintf(stderr, "Config commands:\n"); fprintf(stderr, " add-directory\n"); fprintf(stderr, " list-directories\n"); - fprintf(stderr, " check (or check-config)\n"); + fprintf(stderr, " check-config\n"); fprintf(stderr, " check-repositories\n\n"); } @@ -1638,7 +1641,56 @@ return ret; } +int cmd_list_dirs() { + UcxMapIterator iter = scfg_directory_iterator(); + SyncDirectory *dir; + UCX_MAP_FOREACH(key, dir, iter) { + printf("%s\n", dir->name); + } + return 0; +} + int cmd_check_repositories() { - fprintf(stderr, "Not implemented.\n"); - return EXIT_FAILURE; + int ret = EXIT_SUCCESS; + + UcxList *reponames = NULL; + { + UcxMapIterator iter = scfg_directory_iterator(); + SyncDirectory *dir; + UCX_MAP_FOREACH(key, dir, iter) { + reponames = ucx_list_append_once(reponames, + dir->repository, ucx_strcmp, NULL); + } + } + + UCX_FOREACH(listelem, reponames) { + char *reponame = listelem->data; + printf("Checking %s... ", reponame); + Repository* repo = get_repository(sstr(reponame)); + if (!repo) { + printf(" not found in config.xml!\n"); + ret = EXIT_FAILURE; + } else { + DavSession *sn = create_session(ctx, repo, repo->url); + if (sn) { + DavResource *res = dav_query(sn, + "select - from / with depth = 0"); + if (res) { + printf("OK.\n"); + dav_resource_free(res); + } else { + printf("unavailable!\n"); + ret = EXIT_FAILURE; + } + dav_session_destroy(sn); + } else { + printf("cannot create session!\n"); + ret = EXIT_FAILURE; + } + } + } + + ucx_list_free(reponames); + + return ret; }