示例#1
0
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);
}
示例#2
0
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;
}
示例#3
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;
}
示例#4
0
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;
}