dav/sync.c

changeset 252
6b8e287269fc
parent 244
47791bdf1725
child 254
d7c4ba50b7d8
--- 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;
+}

mercurial