diff -r 182af08b4813 -r 5dbef9e07376 dav/main.c --- a/dav/main.c Thu Aug 15 11:23:25 2013 +0200 +++ b/dav/main.c Fri Aug 16 12:41:30 2013 +0200 @@ -68,18 +68,27 @@ return -1; } - 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); - } else if(!strcmp(cmd, "remove") || !strcmp(cmd, "rm")) { - return cmd_remove(args); + 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 { + print_usage(argv[0]); } + dav_context_destroy(ctx); - print_usage(argv[0]); - return -1; + return ret; } void print_usage(char *cmd) { @@ -88,6 +97,8 @@ fprintf(stderr, " list [-alt] \n"); fprintf(stderr, " get [-p] [-k ] [-o ] \n"); fprintf(stderr, " put [-p] [-k ] \n"); + fprintf(stderr, " mkdir \n"); + fprintf(stderr, " remove \n"); fprintf(stderr, "\n"); fprintf(stderr, "Options:\n"); fprintf(stderr, @@ -156,6 +167,15 @@ fprintf(stderr, "Access forbidden.\n"); break; } + case DAV_METHOD_NOT_ALLOWED: { + fprintf(stderr, "Method not allowed.\n"); + } + case DAV_CONFLICT: { + fprintf( + stderr, + "Missing intermediate collections for resource %s.\n", + res_url); + } } free(res_url); } @@ -530,3 +550,38 @@ return 0; } + +int cmd_mkdir(CmdArgs *a) { + if(a->argc < 1) { + fprintf(stderr, "Too few arguments\n"); + return -1; + } + + DavSession *sn = NULL; + char *url = a->argv[0]; + char *root = NULL; + char *path = NULL; + url_get_parts(url, &root, &path); + + Repository *repo = get_repository(root); + if(repo) { + sn = dav_session_new_auth(ctx, repo->url, repo->user, repo->password); + } else { + sn = dav_session_new(ctx, root); + } + + DavResource *res = dav_resource_new(sn, path); + if(!res) { + fprintf(stderr, "error\n"); + return -1; + } + res->iscollection = 1; + + if(dav_create(res)) { + print_resource_error(sn, res->path); + fprintf(stderr, "Cannot create collection.\n"); + return -1; + } + + return 0; +}