dav/optparser.c

changeset 68
f6d3db6113d3
parent 62
3b813c57c106
child 74
da079dc0724c
equal deleted inserted replaced
67:6b0c60659652 68:f6d3db6113d3
41 CmdArgs *a = malloc(sizeof(CmdArgs)); 41 CmdArgs *a = malloc(sizeof(CmdArgs));
42 a->options = ucx_map_new(16); 42 a->options = ucx_map_new(16);
43 a->argv = calloc(argc, sizeof(char*)); 43 a->argv = calloc(argc, sizeof(char*));
44 a->argc = 0; 44 a->argc = 0;
45 45
46 const char *NOARG = "";
47
46 char *option = NULL; 48 char *option = NULL;
47 char optchar = 0; 49 char optchar = 0;
48 for(int i=0;i<argc;i++) { 50 for(int i=0;i<argc;i++) {
49 char *arg = argv[i]; 51 char *arg = argv[i];
50 size_t len = strlen(arg); 52 size_t len = strlen(arg);
53 switch(arg[c]) { 55 switch(arg[c]) {
54 default: { 56 default: {
55 fprintf(stderr, "Unknown option -%c", arg[c]); 57 fprintf(stderr, "Unknown option -%c", arg[c]);
56 cmd_args_free(a); 58 cmd_args_free(a);
57 return NULL; 59 return NULL;
60 }
61 case 'v': {
62 ucx_map_cstr_put(a->options, "verbose", NOARG);
63 break;
58 } 64 }
59 case 'k': { 65 case 'k': {
60 if(!option) { 66 if(!option) {
61 option = "key"; 67 option = "key";
62 optchar = 'k'; 68 optchar = 'k';
69 return NULL; 75 return NULL;
70 } 76 }
71 break; 77 break;
72 } 78 }
73 case 'p': { 79 case 'p': {
74 ucx_map_cstr_put(a->options, "plain", ""); 80 ucx_map_cstr_put(a->options, "plain", NOARG);
75 break; 81 break;
76 } 82 }
77 case 'c': { 83 case 'c': {
78 ucx_map_cstr_put(a->options, "crypt", ""); 84 ucx_map_cstr_put(a->options, "crypt", NOARG);
79 break; 85 break;
80 } 86 }
81 case 'a': { 87 case 'a': {
82 ucx_map_cstr_put(a->options, "all", ""); 88 ucx_map_cstr_put(a->options, "all", NOARG);
83 break; 89 break;
84 } 90 }
85 case 'l': { 91 case 'l': {
86 ucx_map_cstr_put(a->options, "list", ""); 92 ucx_map_cstr_put(a->options, "list", NOARG);
87 break; 93 break;
88 } 94 }
89 case 't': { 95 case 't': {
90 ucx_map_cstr_put(a->options, "type", ""); 96 ucx_map_cstr_put(a->options, "type", NOARG);
91 break; 97 break;
92 } 98 }
93 case 'R': { 99 case 'R': {
94 ucx_map_cstr_put(a->options, "recursive", ""); 100 ucx_map_cstr_put(a->options, "recursive", NOARG);
95 break; 101 break;
96 } 102 }
97 case 'o': { 103 case 'o': {
98 if(!option) { 104 if(!option) {
99 option = "output"; 105 option = "output";

mercurial