dav/main.c

changeset 11
5db6178d8b58
parent 8
4503498deb22
child 12
493128ef1b12
--- a/dav/main.c	Mon Aug 12 19:50:14 2013 +0200
+++ b/dav/main.c	Tue Aug 13 11:19:22 2013 +0200
@@ -52,24 +52,48 @@
     load_config();
     
     if(argc < 2) {
-        print_usage();
+        fprintf(stderr, "Missing command\n");
+        print_usage(argv[0]);
+        return -1;
+    }
+    
+    char *cmd = argv[1];
+    CmdArgs *args = cmd_parse_args(argc - 2, argv + 2);
+    if(!args) {
+        print_usage(argv[0]);
         return -1;
     }
     
-    if(!strcmp(argv[1], "list") || !strcmp(argv[1], "ls")) {
-        return cmd_list(argc - 2, argv + 2);
-    } else if(!strcmp(argv[1], "get")) {
-        return cmd_get(argc - 2, argv + 2);
-    } else if(!strcmp(argv[1], "put")) {
-        return cmd_put(argc - 2, argv + 2);
+    if(!strcmp(cmd, "list") || !strcmp(cmd, "ls")) {
+        return cmd_list(args);
+    } else if(!strcmp(cmd, "get")) {
+        return cmd_get(args);
+    } else if(!strcmp(cmd, "put")) {
+        return cmd_put(args);
     }
     
-    print_usage();
+    print_usage(argv[0]);
     return -1;
 }
 
-void print_usage() {
-    
+void print_usage(char *cmd) {
+    fprintf(stderr, "Usage: %s command [options] arguments...\n\n", cmd);
+    fprintf(stderr, "Commands:\n");
+    fprintf(stderr, "        list [-al] <url>\n");
+    fprintf(stderr, "        get [-p] [-k <key>] [-o <file>] <url>\n");
+    fprintf(stderr, "        put [-p] [-k <key>] <url> <file>\n");
+    fprintf(stderr, "\n");
+    fprintf(stderr, "Options:\n");
+    fprintf(stderr,
+            "        -k <key>   Key to use for encryption or decryption\n");
+    fprintf(stderr, "        -p         Don't encrypt or decrypt files\n");
+    fprintf(stderr, "        -o <file>  Write output to file\n");
+    fprintf(stderr, "\n");
+    fprintf(stderr,
+            "Instead of an url you can pass a repository name "
+            "with an optional path:\n");
+    fprintf(stderr, "        <repository>/path/\n");
+    fprintf(stderr, "\n");
 }
 
 void url_get_parts(char *url, char **root, char **path) {
@@ -78,9 +102,9 @@
     *path = NULL;
     
     int s;
-    if(ulen > 7 && !strncmp(url, "http://", 7)) {
+    if(ulen > 7 && !strncasecmp(url, "http://", 7)) {
         s = 7;
-    } else if(ulen > 8 && !strncmp(url, "https://", 8)) {
+    } else if(ulen > 8 && !strncasecmp(url, "https://", 8)) {
         s = 8;
     } else {
         s = 1;
@@ -105,15 +129,15 @@
 }
 
 
-int cmd_list(int argc, char **argv) {
-    if(argc == 0) {
+int cmd_list(CmdArgs *a) {
+    if(a->argc == 0) {
         return -1;
     }
     
     
     DavContext *ctx = dav_context_new();
     DavSession *sn = NULL;
-    char *url = argv[0];
+    char *url = a->argv[0];
     char *root = NULL;
     char *path = NULL;
     url_get_parts(url, &root, &path);
@@ -141,15 +165,15 @@
     return 0;
 }
 
-int cmd_get(int argc, char **argv) {
-    if(argc == 0) {
+int cmd_get(CmdArgs *a) {
+    if(a->argc == 0) {
         return -1;
     }
     
     DavContext *ctx = dav_context_new();
     dav_add_namespace(ctx, "U", "http://www.uap-core.de/");
     DavSession *sn = NULL;
-    char *url = argv[0];
+    char *url = a->argv[0];
     char *root = NULL;
     char *path = NULL;
     url_get_parts(url, &root, &path);
@@ -198,15 +222,15 @@
     return 0;
 }
 
-int cmd_put(int argc, char **argv) {
-    if(argc < 2) {
+int cmd_put(CmdArgs *a) {
+    if(a->argc < 2) {
         return -1;
     }
     
     DavContext *ctx = dav_context_new();
     DavSession *sn = NULL;
-    char *url = argv[0];
-    char *file = argv[1];
+    char *url = a->argv[0];
+    char *file = a->argv[1];
     char *root = NULL;
     char *path = NULL;
     url_get_parts(url, &root, &path);

mercurial