153 curl_global_cleanup(); |
153 curl_global_cleanup(); |
154 |
154 |
155 return ret; |
155 return ret; |
156 } |
156 } |
157 |
157 |
|
158 static char *cmdusageinfo[] = { |
|
159 "list [-altdepcR] [-u <date>] <url>", |
|
160 "get [-pcRK] [-o <file>] [-u <date>] <url>", |
|
161 "put [-pcR] [-k <key>] [-L <lock>] <url> <file>", |
|
162 "mkdir [-pc] [-k <key>] [-L <lock>] <url>", |
|
163 "remove [-pc] [-L <lock>] <url>", |
|
164 "copy [-pcO] [-L <lock>] <url> <url>", |
|
165 "move [-pcO] [-L <lock>] <url> <url>", |
|
166 "get-property [-pc] [-n <uri>] <url> <property>", |
|
167 "set-property [-pc] [-L <lock>] [-n <uri>] <url> <property> [value]", |
|
168 "remove-property [-pc] [-n <uri>] <url> <property>", |
|
169 "lock [-pc] [-T timeout] <url>", |
|
170 "unlock [-pc] [-L <lock>] <url>", |
|
171 "info [-pc] <url>", |
|
172 "date [url]", |
|
173 NULL |
|
174 }; |
|
175 |
|
176 char* find_usage_str(char *cmd) { |
|
177 sstr_t c = sstr(cmd); |
|
178 for(int i=0;;i++) { |
|
179 char *str = cmdusageinfo[i]; |
|
180 if(!str) { |
|
181 break; |
|
182 } |
|
183 sstr_t u = sstr(str); |
|
184 if(sstrprefix(u, c)) { |
|
185 return str; |
|
186 } |
|
187 } |
|
188 return NULL; |
|
189 } |
|
190 |
158 void print_usage(char *cmd) { |
191 void print_usage(char *cmd) { |
159 fprintf(stderr, "Usage: %s command [options] arguments...\n\n", cmd); |
192 for(int i=0;;i++) { |
160 fprintf(stderr, "Commands:\n"); |
193 char *str = cmdusageinfo[i]; |
161 fprintf(stderr, " list [-altdepcR] [-u <date>] <url>\n"); |
194 if(!str) { |
162 fprintf( |
195 break; |
163 stderr, |
196 } |
164 " get [-pcRK] [-o <file>] [-u <date>] <url>\n"); |
197 fprintf(stderr, " %s\n", str); |
165 fprintf(stderr, " put [-pcR] [-k <key>] [-L <lock>] <url> <file>\n"); |
198 } |
166 fprintf(stderr, " mkdir [-pc] [-k <key>] [-L <lock>] <url>\n"); |
199 |
167 fprintf(stderr, " remove [-pc] [-L <lock>] <url>\n"); |
|
168 fprintf(stderr, " copy [-pcO] [-L <lock>] <url> <url>\n"); |
|
169 fprintf(stderr, " move [-pcO] [-L <lock>] <url> <url>\n"); |
|
170 fprintf( |
|
171 stderr, |
|
172 " get-property [-pc] [-n <uri>] <url> <property>\n"); |
|
173 fprintf( |
|
174 stderr, |
|
175 " set-property [-pc] [-L <lock>] [-n <uri>] <url> <property> [value]\n"); |
|
176 fprintf( |
|
177 stderr, |
|
178 " remove-property [-pc] [-n <uri>] <url> <property>\n"); |
|
179 fprintf(stderr, " lock [-pc] [-T timeout] <url>\n"); |
|
180 fprintf(stderr, " unlock [-pc] [-L <lock>] <url>\n"); |
|
181 fprintf(stderr, " info [-pc] <url>\n"); |
|
182 fprintf(stderr, " date [url]\n"); |
|
183 fprintf(stderr, "\n"); |
200 fprintf(stderr, "\n"); |
184 fprintf(stderr, "Options:\n"); |
201 fprintf(stderr, "Options:\n"); |
185 fprintf(stderr, |
202 fprintf(stderr, |
186 " -k <key> Key to use for encryption\n"); |
203 " -k <key> Key to use for encryption\n"); |
187 fprintf(stderr, " -p Don't encrypt or decrypt files\n"); |
204 fprintf(stderr, " -p Don't encrypt or decrypt files\n"); |
362 #define LIST_QUERY_ORDER_BY_DATE "select `idav:crypto-name`,`idav:crypto-key`,D:lockdiscovery,apache:executable from %s with depth = %d where lastmodified > %t order by iscollection desc, lastmodified desc" |
379 #define LIST_QUERY_ORDER_BY_DATE "select `idav:crypto-name`,`idav:crypto-key`,D:lockdiscovery,apache:executable from %s with depth = %d where lastmodified > %t order by iscollection desc, lastmodified desc" |
363 |
380 |
364 int cmd_list(CmdArgs *a) { |
381 int cmd_list(CmdArgs *a) { |
365 if(a->argc != 1) { |
382 if(a->argc != 1) { |
366 fprintf(stderr, "Too %s arguments\n", a->argc < 1 ? "few":"many"); |
383 fprintf(stderr, "Too %s arguments\n", a->argc < 1 ? "few":"many"); |
|
384 fprintf(stderr, "Usage: dav %s\n", find_usage_str("list")); |
367 return -1; |
385 return -1; |
368 } |
386 } |
369 |
387 |
370 char *url = a->argv[0]; |
388 char *url = a->argv[0]; |
371 char *path = NULL; |
389 char *path = NULL; |
631 |
649 |
632 int cmd_get(CmdArgs *a) { |
650 int cmd_get(CmdArgs *a) { |
633 if(a->argc != 1) { |
651 if(a->argc != 1) { |
634 // TODO: change this, when get supports retrieval of multiple files |
652 // TODO: change this, when get supports retrieval of multiple files |
635 fprintf(stderr, "Too %s arguments\n", a->argc < 1 ? "few":"many"); |
653 fprintf(stderr, "Too %s arguments\n", a->argc < 1 ? "few":"many"); |
|
654 fprintf(stderr, "Usage: dav %s\n", find_usage_str("get")); |
636 return -1; |
655 return -1; |
637 } |
656 } |
638 |
657 |
639 char *url = a->argv[0]; |
658 char *url = a->argv[0]; |
640 char *path = NULL; |
659 char *path = NULL; |
788 |
807 |
789 int cmd_put(CmdArgs *a) { |
808 int cmd_put(CmdArgs *a) { |
790 if(a->argc != 2) { |
809 if(a->argc != 2) { |
791 // TODO: change, when put supports multiple files (however it should do) |
810 // TODO: change, when put supports multiple files (however it should do) |
792 fprintf(stderr, "Too %s arguments\n", a->argc < 2 ? "few":"many"); |
811 fprintf(stderr, "Too %s arguments\n", a->argc < 2 ? "few":"many"); |
|
812 fprintf(stderr, "Usage: dav %s\n", find_usage_str("put")); |
793 return -1; |
813 return -1; |
794 } |
814 } |
795 |
815 |
796 char *url = a->argv[0]; |
816 char *url = a->argv[0]; |
797 char *file = a->argv[1]; |
817 char *file = a->argv[1]; |
1064 |
1086 |
1065 int cmd_move(CmdArgs *a, int cp) { |
1087 int cmd_move(CmdArgs *a, int cp) { |
1066 if(a->argc != 2) { |
1088 if(a->argc != 2) { |
1067 // TODO: change, when creation of multiple dirs is supported |
1089 // TODO: change, when creation of multiple dirs is supported |
1068 fprintf(stderr, "Too %s arguments\n", a->argc < 2 ? "few":"many"); |
1090 fprintf(stderr, "Too %s arguments\n", a->argc < 2 ? "few":"many"); |
|
1091 fprintf(stderr, "Usage: dav %s\n", find_usage_str(cp ? "copy" : "move")); |
1069 return -1; |
1092 return -1; |
1070 } |
1093 } |
1071 |
1094 |
1072 char *url1 = a->argv[0]; |
1095 char *url1 = a->argv[0]; |
1073 char *path1 = NULL; |
1096 char *path1 = NULL; |