| 61 name[i] = '-'; |
61 name[i] = '-'; |
| 62 } |
62 } |
| 63 } |
63 } |
| 64 f->name = name; |
64 f->name = name; |
| 65 log_ereport(LOG_VERBOSE, "add_function %s", f->name); |
65 log_ereport(LOG_VERBOSE, "add_function %s", f->name); |
| 66 cxMapPut(function_map, cx_hash_key_str(f->name), f); |
66 cxMapPut(function_map, f->name, f); |
| 67 } |
67 } |
| 68 |
68 |
| 69 void add_functions(FuncStruct *funcs) { |
69 void add_functions(FuncStruct *funcs) { |
| 70 int i = 0; |
70 int i = 0; |
| 71 while(funcs[i].func != NULL) { |
71 while(funcs[i].func != NULL) { |
| 79 for(int i=0;name_dup[i]!='\0';i++) { |
79 for(int i=0;name_dup[i]!='\0';i++) { |
| 80 if(name_dup[i] == '_') { |
80 if(name_dup[i] == '_') { |
| 81 name_dup[i] = '-'; |
81 name_dup[i] = '-'; |
| 82 } |
82 } |
| 83 } |
83 } |
| 84 void *ret = cxMapGet(function_map, cx_hash_key_str(name_dup)); |
84 void *ret = cxMapGet(function_map, name_dup); |
| 85 free(name_dup); |
85 free(name_dup); |
| 86 return ret; |
86 return ret; |
| 87 } |
87 } |
| 88 |
88 |
| 89 FuncStruct* func_resolve(pblock *pb, Session *sn, Request *rq) { |
89 FuncStruct* func_resolve(pblock *pb, Session *sn, Request *rq) { |