src/server/daemon/func.c

changeset 84
afd57ce39ec9
parent 54
3a1d5a52adfc
child 92
382bff43c6eb
--- a/src/server/daemon/func.c	Mon Jul 01 18:05:13 2013 +0200
+++ b/src/server/daemon/func.c	Mon Jul 08 11:10:54 2013 +0200
@@ -42,9 +42,16 @@
 }
 
 void add_function(FuncStruct *func) {
-    printf("add_function %s\n", func->name);
     struct FuncStruct *f = malloc(sizeof(FuncStruct));
     *f = *func;
+    char *name = strdup(func->name);
+    for(int i=0;name[i]!='\0';i++) {
+        if(name[i] == '_') {
+            name[i] = '-';
+        }
+    }
+    f->name = name;
+    printf("add_function %s\n", f->name);
     ucx_map_cstr_put(function_map, (char*)f->name, f);
 }
 
@@ -57,6 +64,11 @@
 }
 
 FuncStruct* get_function(char *name) {
+    for(int i=0;name[i]!='\0';i++) {
+        if(name[i] == '_') {
+            name[i] = '-';
+        }
+    }
     return ucx_map_cstr_get(function_map, name);
 }
 
@@ -82,3 +94,16 @@
     return func->func(pb, sn, rq);
 }
 
+
+
+
+// public API
+
+struct FuncStruct func_insert(char *name, FuncPtr fn) {
+    struct FuncStruct fc;
+    ZERO(&fc, sizeof(FuncStruct));
+    fc.func = fn;
+    fc.name = strdup(name);
+    add_function(&fc);
+    return *get_function(name);
+}

mercurial