diff -r e6d0fbe0ebd9 -r 5db6178d8b58 dav/main.c --- 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] \n"); + fprintf(stderr, " get [-p] [-k ] [-o ] \n"); + fprintf(stderr, " put [-p] [-k ] \n"); + fprintf(stderr, "\n"); + fprintf(stderr, "Options:\n"); + fprintf(stderr, + " -k Key to use for encryption or decryption\n"); + fprintf(stderr, " -p Don't encrypt or decrypt files\n"); + fprintf(stderr, " -o 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, " /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);