dav/main.c

changeset 332
5587282ebe1c
parent 331
9ca1e4706acc
child 333
000cdd124115
equal deleted inserted replaced
331:9ca1e4706acc 332:5587282ebe1c
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];
964 984
965 int cmd_remove(CmdArgs *a) { 985 int cmd_remove(CmdArgs *a) {
966 if(a->argc != 1) { 986 if(a->argc != 1) {
967 // TODO: change, when removal of multiple files is supported 987 // TODO: change, when removal of multiple files is supported
968 fprintf(stderr, "Too %s arguments\n", a->argc < 1 ? "few":"many"); 988 fprintf(stderr, "Too %s arguments\n", a->argc < 1 ? "few":"many");
989 fprintf(stderr, "Usage: dav %s\n", find_usage_str("remove"));
969 return -1; 990 return -1;
970 } 991 }
971 992
972 char *url = a->argv[0]; 993 char *url = a->argv[0];
973 char *path = NULL; 994 char *path = NULL;
1007 1028
1008 int cmd_mkdir(CmdArgs *a) { 1029 int cmd_mkdir(CmdArgs *a) {
1009 if(a->argc != 1) { 1030 if(a->argc != 1) {
1010 // TODO: change, when creation of multiple dirs is supported 1031 // TODO: change, when creation of multiple dirs is supported
1011 fprintf(stderr, "Too %s arguments\n", a->argc < 1 ? "few":"many"); 1032 fprintf(stderr, "Too %s arguments\n", a->argc < 1 ? "few":"many");
1033 fprintf(stderr, "Usage: dav %s\n", find_usage_str("mkdir"));
1012 return -1; 1034 return -1;
1013 } 1035 }
1014 1036
1015 char *url = a->argv[0]; 1037 char *url = a->argv[0];
1016 char *path = NULL; 1038 char *path = NULL;
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;
1167 } 1190 }
1168 free(path); 1191 free(path);
1169 return 0; 1192 return 0;
1170 } else { 1193 } else {
1171 fprintf(stderr, "Too many arguments\n"); 1194 fprintf(stderr, "Too many arguments\n");
1195 fprintf(stderr, "Usage: dav %s\n", find_usage_str("date"));
1172 return -1; 1196 return -1;
1173 } 1197 }
1174 return 0; 1198 return 0;
1175 } 1199 }
1176 1200
1177 int cmd_get_property(CmdArgs *a) { 1201 int cmd_get_property(CmdArgs *a) {
1178 if(a->argc < 2) { 1202 if(a->argc < 2) {
1179 fprintf(stderr, "Too few arguments\n"); 1203 fprintf(stderr, "Too few arguments\n");
1204 fprintf(stderr, "Usage: dav %s\n", find_usage_str("get-property"));
1180 return -1; 1205 return -1;
1181 } 1206 }
1182 1207
1183 char *url = a->argv[0]; 1208 char *url = a->argv[0];
1184 char *path = NULL; 1209 char *path = NULL;
1238 } 1263 }
1239 1264
1240 int cmd_set_property(CmdArgs *a) { 1265 int cmd_set_property(CmdArgs *a) {
1241 if(a->argc < 2) { 1266 if(a->argc < 2) {
1242 fprintf(stderr, "Too few arguments\n"); 1267 fprintf(stderr, "Too few arguments\n");
1268 fprintf(stderr, "Usage: dav %s\n", find_usage_str("set-property"));
1243 return -1; 1269 return -1;
1244 } 1270 }
1245 1271
1246 char *url = a->argv[0]; 1272 char *url = a->argv[0];
1247 char *path = NULL; 1273 char *path = NULL;
1292 } 1318 }
1293 1319
1294 int cmd_remove_property(CmdArgs *a) { 1320 int cmd_remove_property(CmdArgs *a) {
1295 if(a->argc < 2) { 1321 if(a->argc < 2) {
1296 fprintf(stderr, "Too few arguments\n"); 1322 fprintf(stderr, "Too few arguments\n");
1323 fprintf(stderr, "Usage: dav %s\n", find_usage_str("remove-property"));
1297 return -1; 1324 return -1;
1298 } 1325 }
1299 1326
1300 char *url = a->argv[0]; 1327 char *url = a->argv[0];
1301 char *path = NULL; 1328 char *path = NULL;
1337 } 1364 }
1338 1365
1339 int cmd_lock(CmdArgs *a) { 1366 int cmd_lock(CmdArgs *a) {
1340 if(a->argc != 1) { 1367 if(a->argc != 1) {
1341 fprintf(stderr, "Too %s arguments\n", a->argc > 1 ? "many" : "few"); 1368 fprintf(stderr, "Too %s arguments\n", a->argc > 1 ? "many" : "few");
1369 fprintf(stderr, "Usage: dav %s\n", find_usage_str("lock"));
1342 return -1; 1370 return -1;
1343 } 1371 }
1344 1372
1345 char *url = a->argv[0]; 1373 char *url = a->argv[0];
1346 char *path = NULL; 1374 char *path = NULL;
1408 } 1436 }
1409 1437
1410 int cmd_unlock(CmdArgs *a) { 1438 int cmd_unlock(CmdArgs *a) {
1411 if(a->argc != 1) { 1439 if(a->argc != 1) {
1412 fprintf(stderr, "Too %s arguments\n", a->argc > 1 ? "many" : "few"); 1440 fprintf(stderr, "Too %s arguments\n", a->argc > 1 ? "many" : "few");
1441 fprintf(stderr, "Usage: dav %s\n", find_usage_str("unlock"));
1413 return -1; 1442 return -1;
1414 } 1443 }
1415 1444
1416 char *url = a->argv[0]; 1445 char *url = a->argv[0];
1417 char *path = NULL; 1446 char *path = NULL;
1466 } 1495 }
1467 1496
1468 int cmd_info(CmdArgs *a) { 1497 int cmd_info(CmdArgs *a) {
1469 if(a->argc < 1) { 1498 if(a->argc < 1) {
1470 fprintf(stderr, "Too few arguments\n"); 1499 fprintf(stderr, "Too few arguments\n");
1500 fprintf(stderr, "Usage: dav %s\n", find_usage_str("info"));
1471 return -1; 1501 return -1;
1472 } 1502 }
1473 1503
1474 char *url = a->argv[0]; 1504 char *url = a->argv[0];
1475 char *path = NULL; 1505 char *path = NULL;

mercurial