--- a/dav/optparser.c Sun Apr 16 14:12:24 2023 +0200 +++ b/dav/optparser.c Fri Apr 21 21:25:32 2023 +0200 @@ -33,9 +33,12 @@ #include "optparser.h" #include "sopt.h" +#include <cx/hash_map.h> + + void cmd_args_free(CmdArgs *args) { if(args) { - ucx_map_free(args->options); + cxMapDestroy(args->options); if(args->argv) { free(args->argv); } @@ -43,9 +46,13 @@ } } +static void cmd_map_put(CxMap *map, const char *key, const void *value) { + cxMapPut(map, key, (void*)value); +} + CmdArgs* cmd_parse_args(int argc, char **argv) { CmdArgs *a = malloc(sizeof(CmdArgs)); - a->options = ucx_map_new(16); + a->options = cxHashMapCreate(cxDefaultAllocator, CX_STORE_POINTERS, 16); a->argv = argc > 0 ? calloc(argc, sizeof(char*)) : NULL; a->argc = 0; @@ -71,7 +78,7 @@ for(int c=1;c<len;c++) { // argument is in the same arg if(option) { - ucx_map_cstr_put(a->options, option, &arg[c]); + cxMapPut(a->options, cx_hash_key_str(option), &arg[c]); option = NULL; break; } @@ -83,7 +90,7 @@ return NULL; } case 'v': { - ucx_map_cstr_put(a->options, "verbose", NOARG); + cmd_map_put(a->options, "verbose", NOARG); break; } case 'k': { @@ -92,51 +99,51 @@ break; } case 'p': { - ucx_map_cstr_put(a->options, "plain", NOARG); + cmd_map_put(a->options, "plain", NOARG); break; } case 'c': { - ucx_map_cstr_put(a->options, "crypt", NOARG); + cmd_map_put(a->options, "crypt", NOARG); break; } case 'a': { - ucx_map_cstr_put(a->options, "all", NOARG); + cmd_map_put(a->options, "all", NOARG); break; } case 'l': { - ucx_map_cstr_put(a->options, "list", NOARG); + cmd_map_put(a->options, "list", NOARG); break; } case 'd': { - ucx_map_cstr_put(a->options, "date", NOARG); + cmd_map_put(a->options, "date", NOARG); break; } case 't': { - ucx_map_cstr_put(a->options, "type", NOARG); + cmd_map_put(a->options, "type", NOARG); break; } case 'R': { - ucx_map_cstr_put(a->options, "recursive", NOARG); + cmd_map_put(a->options, "recursive", NOARG); break; } case 'O': { - ucx_map_cstr_put(a->options, "override", NOARG); + cmd_map_put(a->options, "override", NOARG); break; } case 'i': { - ucx_map_cstr_put(a->options, "insecure", NOARG); + cmd_map_put(a->options, "insecure", NOARG); break; } case 'N': { - ucx_map_cstr_put(a->options, "noinput", NOARG); + cmd_map_put(a->options, "noinput", NOARG); break; } case 'e': { - ucx_map_cstr_put(a->options, "extended", NOARG); + cmd_map_put(a->options, "extended", NOARG); break; } case 'x': { - ucx_map_cstr_put(a->options, "xml", NOARG); + cmd_map_put(a->options, "xml", NOARG); break; } case 'F': { @@ -146,11 +153,11 @@ } case 'S': { // undocumented hidden feature - ucx_map_cstr_put(a->options, "structure", NOARG); + cmd_map_put(a->options, "structure", NOARG); break; } case 'K': { - ucx_map_cstr_put(a->options, "keep", NOARG); + cmd_map_put(a->options, "keep", NOARG); break; } case 'o': { @@ -193,7 +200,7 @@ } } } else if(option) { - ucx_map_cstr_put(a->options, option, arg); + cmd_map_put(a->options, option, arg); option = NULL; } else { a->argv[a->argc++] = arg; @@ -209,6 +216,6 @@ return a; } -char* cmd_getoption(CmdArgs *arg, char *name) { - return ucx_map_cstr_get(arg->options, name); +char* cmd_getoption(CmdArgs *arg, const char *name) { + return cxMapGet(arg->options, cx_hash_key_str(name)); }