dav/optparser.c

changeset 747
efbd59642577
parent 721
c401f4af44b1
--- 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));
 }

mercurial