diff -r 28433f06d5ee -r afd57ce39ec9 src/server/daemon/func.c --- 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); +}