34 #include "sopt.h" |
34 #include "sopt.h" |
35 |
35 |
36 void cmd_args_free(CmdArgs *args) { |
36 void cmd_args_free(CmdArgs *args) { |
37 if(args) { |
37 if(args) { |
38 ucx_map_free(args->options); |
38 ucx_map_free(args->options); |
39 free(args->argv); |
39 if(args->argv) { |
|
40 free(args->argv); |
|
41 } |
40 free(args); |
42 free(args); |
41 } |
43 } |
42 } |
44 } |
43 |
45 |
44 CmdArgs* cmd_parse_args(int argc, char **argv) { |
46 CmdArgs* cmd_parse_args(int argc, char **argv) { |
45 CmdArgs *a = malloc(sizeof(CmdArgs)); |
47 CmdArgs *a = malloc(sizeof(CmdArgs)); |
46 a->options = ucx_map_new(16); |
48 a->options = ucx_map_new(16); |
47 a->argv = calloc(argc, sizeof(char*)); |
49 a->argv = argc > 0 ? calloc(argc, sizeof(char*)) : NULL; |
48 a->argc = 0; |
50 a->argc = 0; |
49 |
51 |
50 const char *NOARG = ""; |
52 const char *NOARG = ""; |
51 |
53 |
52 char *option = NULL; |
54 char *option = NULL; |