dav/main.c

changeset 16
5dbef9e07376
parent 15
182af08b4813
child 17
11dffb40cd91
equal deleted inserted replaced
15:182af08b4813 16:5dbef9e07376
66 if(!args) { 66 if(!args) {
67 print_usage(argv[0]); 67 print_usage(argv[0]);
68 return -1; 68 return -1;
69 } 69 }
70 70
71 if(!strcmp(cmd, "list") || !strcmp(cmd, "ls")) { 71 int ret = -1;
72 return cmd_list(args); 72 if(!strcasecmp(cmd, "list") || !strcasecmp(cmd, "ls")) {
73 } else if(!strcmp(cmd, "get")) { 73 ret = cmd_list(args);
74 return cmd_get(args); 74 } else if(!strcasecmp(cmd, "get")) {
75 } else if(!strcmp(cmd, "put")) { 75 ret = cmd_get(args);
76 return cmd_put(args); 76 } else if(!strcasecmp(cmd, "put")) {
77 } else if(!strcmp(cmd, "remove") || !strcmp(cmd, "rm")) { 77 ret = cmd_put(args);
78 return cmd_remove(args); 78 } else if(
79 } 79 !strcasecmp(cmd, "remove") ||
80 80 !strcasecmp(cmd, "rm") ||
81 print_usage(argv[0]); 81 !strcasecmp(cmd, "delete"))
82 return -1; 82 {
83 ret = cmd_remove(args);
84 } else if(!strcasecmp(cmd, "mkdir") || !strcasecmp(cmd, "mkcol")) {
85 ret = cmd_mkdir(args);
86 } else {
87 print_usage(argv[0]);
88 }
89 dav_context_destroy(ctx);
90
91 return ret;
83 } 92 }
84 93
85 void print_usage(char *cmd) { 94 void print_usage(char *cmd) {
86 fprintf(stderr, "Usage: %s command [options] arguments...\n\n", cmd); 95 fprintf(stderr, "Usage: %s command [options] arguments...\n\n", cmd);
87 fprintf(stderr, "Commands:\n"); 96 fprintf(stderr, "Commands:\n");
88 fprintf(stderr, " list [-alt] <url>\n"); 97 fprintf(stderr, " list [-alt] <url>\n");
89 fprintf(stderr, " get [-p] [-k <key>] [-o <file>] <url>\n"); 98 fprintf(stderr, " get [-p] [-k <key>] [-o <file>] <url>\n");
90 fprintf(stderr, " put [-p] [-k <key>] <url> <file>\n"); 99 fprintf(stderr, " put [-p] [-k <key>] <url> <file>\n");
100 fprintf(stderr, " mkdir <url>\n");
101 fprintf(stderr, " remove <url>\n");
91 fprintf(stderr, "\n"); 102 fprintf(stderr, "\n");
92 fprintf(stderr, "Options:\n"); 103 fprintf(stderr, "Options:\n");
93 fprintf(stderr, 104 fprintf(stderr,
94 " -k <key> Key to use for encryption or decryption\n"); 105 " -k <key> Key to use for encryption or decryption\n");
95 fprintf(stderr, " -p Don't encrypt or decrypt files\n"); 106 fprintf(stderr, " -p Don't encrypt or decrypt files\n");
153 break; 164 break;
154 } 165 }
155 case DAV_FORBIDDEN: { 166 case DAV_FORBIDDEN: {
156 fprintf(stderr, "Access forbidden.\n"); 167 fprintf(stderr, "Access forbidden.\n");
157 break; 168 break;
169 }
170 case DAV_METHOD_NOT_ALLOWED: {
171 fprintf(stderr, "Method not allowed.\n");
172 }
173 case DAV_CONFLICT: {
174 fprintf(
175 stderr,
176 "Missing intermediate collections for resource %s.\n",
177 res_url);
158 } 178 }
159 } 179 }
160 free(res_url); 180 free(res_url);
161 } 181 }
162 182
528 return -1; 548 return -1;
529 } 549 }
530 550
531 return 0; 551 return 0;
532 } 552 }
553
554 int cmd_mkdir(CmdArgs *a) {
555 if(a->argc < 1) {
556 fprintf(stderr, "Too few arguments\n");
557 return -1;
558 }
559
560 DavSession *sn = NULL;
561 char *url = a->argv[0];
562 char *root = NULL;
563 char *path = NULL;
564 url_get_parts(url, &root, &path);
565
566 Repository *repo = get_repository(root);
567 if(repo) {
568 sn = dav_session_new_auth(ctx, repo->url, repo->user, repo->password);
569 } else {
570 sn = dav_session_new(ctx, root);
571 }
572
573 DavResource *res = dav_resource_new(sn, path);
574 if(!res) {
575 fprintf(stderr, "error\n");
576 return -1;
577 }
578 res->iscollection = 1;
579
580 if(dav_create(res)) {
581 print_resource_error(sn, res->path);
582 fprintf(stderr, "Cannot create collection.\n");
583 return -1;
584 }
585
586 return 0;
587 }

mercurial