void f_async_db_exec(){ array_t *info; db_t *db; info = allocate_empty_array(1); info->item[0].type = T_STRING; info->item[0].subtype = STRING_MALLOC; info->item[0].u.string = string_copy((sp-1)->u.string, "f_db_exec"); valid_database("exec", info); db = find_db_conn((sp-1)->u.number); if (!db) { error("Attempt to exec on an invalid database handle\n"); } if (db->type->cleanup) { db->type->cleanup(&(db->c)); } function_to_call_t *cb = get_cb(); process_efun_callback(2, cb, F_ASYNC_READ); cb->f.fp->hdr.ref++; add_db_exec(db, (sp-1)->u.string, cb); pop_2_elems(); }
void f_async_db_exec(){ array_t *info; db_t *db; info = allocate_empty_array(1); info->item[0].type = T_STRING; info->item[0].subtype = STRING_MALLOC; info->item[0].u.string = string_copy((sp-1)->u.string, "f_db_exec"); int num_arg = st_num_arg; valid_database("exec", info); db = find_db_conn((sp-2)->u.number); if (!db) { error("Attempt to exec on an invalid database handle\n"); } if(!db_mut){ db_mut = (pthread_mutex_t *) malloc(sizeof(pthread_mutex_t)); pthread_mutex_init(db_mut, NULL); } st_num_arg = num_arg; function_to_call_t *cb = get_cb(); process_efun_callback(2, cb, F_ASYNC_DB_EXEC); cb->f.fp->hdr.ref++; add_db_exec((sp-2)->u.number, cb); pop_3_elems(); }