dav/sopt.c

changeset 219
9792cfe63b80
parent 185
cd42cccee550
child 221
e22c29b7ee2f
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->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': {

mercurial