dav/optparser.c

changeset 219
9792cfe63b80
parent 213
cd870d5f8659
child 297
3cbe57eeaed1
equal deleted inserted replaced
218:5f1f7602cf77 219:9792cfe63b80
31 #include <string.h> 31 #include <string.h>
32 32
33 #include "optparser.h" 33 #include "optparser.h"
34 34
35 void cmd_args_free(CmdArgs *args) { 35 void cmd_args_free(CmdArgs *args) {
36 ucx_map_free(args->options); 36 if(args) {
37 free(args->argv); 37 ucx_map_free(args->options);
38 free(args); 38 free(args->argv);
39 free(args);
40 }
39 } 41 }
40 42
41 CmdArgs* cmd_parse_args(int argc, char **argv) { 43 CmdArgs* cmd_parse_args(int argc, char **argv) {
42 CmdArgs *a = malloc(sizeof(CmdArgs)); 44 CmdArgs *a = malloc(sizeof(CmdArgs));
43 a->options = ucx_map_new(16); 45 a->options = ucx_map_new(16);
53 size_t len = strlen(arg); 55 size_t len = strlen(arg);
54 if(len > 1 && arg[0] == '-') { 56 if(len > 1 && arg[0] == '-') {
55 for(int c=1;c<len;c++) { 57 for(int c=1;c<len;c++) {
56 switch(arg[c]) { 58 switch(arg[c]) {
57 default: { 59 default: {
58 fprintf(stderr, "Unknown option -%c", arg[c]); 60 fprintf(stderr, "Unknown option -%c\n\n", arg[c]);
59 cmd_args_free(a); 61 cmd_args_free(a);
60 return NULL; 62 return NULL;
61 } 63 }
62 case 'v': { 64 case 'v': {
63 ucx_map_cstr_put(a->options, "verbose", NOARG); 65 ucx_map_cstr_put(a->options, "verbose", NOARG);

mercurial