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"); |
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 } |