static int sel_do_fetch(str* result, str *handle_name, int field_no, struct sip_msg* msg) { struct dbops_handle *a; a = find_handle_by_name(handle_name->s, handle_name->len); if (!a) { ERR(MODULE_NAME": fetch: handle (%.*s) is not declared\n", handle_name->len, handle_name->s); return -1; } if (check_query_opened(a, "fetch") < 0) return -1; return sel_get_field(result, &a->cur_row_no, field_no, a->result); }
static int dbops_close_query_fixup(void** param, int param_no) { struct dbops_handle *a; a = find_handle_by_name((char*) *param, -1); if (!a) { ERR(MODULE_NAME": handle '%s' is not declared\n", (char*) *param); return E_CFG; } pkg_free (*param); *param = (void*) a; return 0; }
static reg_handle_t* find_handle_2(long key, const char* subkey) { char* full_name; reg_handle_t* t; if((t=find_handle(key))==0) { TRACE("Invalid key\n"); return (reg_handle_t*)-1; } if(subkey==NULL) return t; full_name=malloc(strlen(t->name)+strlen(subkey)+10); strcpy(full_name, t->name); strcat(full_name, "\\"); strcat(full_name, subkey); t=find_handle_by_name(full_name); free(full_name); return t; }
static int declare_handle(modparam_t type, char* param) { struct dbops_handle *a; if (strlen(param) == 0) { ERR(MODULE_NAME": declare_handle: handle name is empty\n"); return E_CFG; } a = find_handle_by_name(param, -1); if (a) { ERR(MODULE_NAME": declare_handle: handle '%s' already exists\n", param); return E_CFG; } a = pkg_malloc(sizeof(*a)); if (!a) { ERR(MODULE_NAME": Out od memory\n"); return E_OUT_OF_MEM; } memset(a, 0, sizeof(*a)); a->handle_name = param; a->next = dbops_handles; dbops_handles = a; return 0; }