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->argv); |
|
39 free(args); |
|
40 } |
38 } |
41 } |
39 |
42 |
40 CmdArgs* cmd_parse_args(int argc, char **argv) { |
43 CmdArgs* cmd_parse_args(int argc, char **argv) { |
41 CmdArgs *a = malloc(sizeof(CmdArgs)); |
44 CmdArgs *a = malloc(sizeof(CmdArgs)); |
42 a->options = ucx_map_new(16); |
45 a->options = ucx_map_new(16); |
52 size_t len = strlen(arg); |
55 size_t len = strlen(arg); |
53 if(len > 1 && arg[0] == '-') { |
56 if(len > 1 && arg[0] == '-') { |
54 for(int c=1;c<len;c++) { |
57 for(int c=1;c<len;c++) { |
55 switch(arg[c]) { |
58 switch(arg[c]) { |
56 default: { |
59 default: { |
57 fprintf(stderr, "Unknown option -%c", arg[c]); |
60 fprintf(stderr, "Unknown option -%c\n\n", arg[c]); |
58 cmd_args_free(a); |
61 cmd_args_free(a); |
59 return NULL; |
62 return NULL; |
60 } |
63 } |
61 /* |
64 /* |
62 case 'k': { |
65 case 'k': { |