--- a/dav/sopt.c Sun Apr 16 14:12:24 2023 +0200 +++ b/dav/sopt.c Fri Apr 21 21:25:32 2023 +0200 @@ -32,17 +32,23 @@ #include "sopt.h" +#include <cx/hash_map.h> + void cmd_args_free(CmdArgs *args) { if(args) { - ucx_map_free(args->options); + cxMapDestroy(args->options); free(args->argv); free(args); } } +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 = calloc(argc, sizeof(char*)); a->argc = 0; @@ -62,23 +68,23 @@ return NULL; } case 'c': { - ucx_map_cstr_put(a->options, "conflict", NOARG); + cmd_map_put(a->options, "conflict", NOARG); break; } case 'l': { - ucx_map_cstr_put(a->options, "lock", NOARG); + cmd_map_put(a->options, "lock", NOARG); break; } case 'd': { - ucx_map_cstr_put(a->options, "nolock", NOARG); + cmd_map_put(a->options, "nolock", NOARG); break; } case 'r': { - ucx_map_cstr_put(a->options, "remove", NOARG); + cmd_map_put(a->options, "remove", NOARG); break; } case 'v': { - ucx_map_cstr_put(a->options, "verbose", NOARG); + cmd_map_put(a->options, "verbose", NOARG); break; } case 's': { @@ -97,20 +103,20 @@ break; } case 'R': { - ucx_map_cstr_put(a->options, "restore-removed", NOARG); + cmd_map_put(a->options, "restore-removed", NOARG); break; } case 'M': { - ucx_map_cstr_put(a->options, "restore-modified", NOARG); + cmd_map_put(a->options, "restore-modified", NOARG); break; } case 'S': { - ucx_map_cstr_put(a->options, "snapshot", NOARG); + cmd_map_put(a->options, "snapshot", NOARG); } } } } 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; @@ -120,6 +126,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)); }