dav/main.c

changeset 252
6b8e287269fc
parent 241
da7ace67deab
child 256
54433cb371df
--- 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 "

mercurial