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