static ERL_NIF_TERM evaluate_command(esqlite_command *cmd, esqlite_connection *conn) { switch(cmd->type) { case cmd_open: return do_open(cmd->env, conn, cmd->arg); case cmd_exec: return do_exec(cmd->env, conn, cmd->arg); case cmd_changes: return do_changes(cmd->env, conn, cmd->arg); case cmd_prepare: return do_prepare(cmd->env, conn, cmd->arg); case cmd_step: return do_step(cmd->env, conn->db, cmd->stmt); case cmd_reset: return do_reset(cmd->env, conn->db, cmd->stmt); case cmd_bind: return do_bind(cmd->env, conn->db, cmd->stmt, cmd->arg); case cmd_column_names: return do_column_names(cmd->env, cmd->stmt); case cmd_close: return do_close(cmd->env, conn, cmd->arg); case cmd_insert: return do_insert(cmd->env, conn, cmd->arg); default: return make_error_tuple(cmd->env, "invalid_command"); } }
int main(int argc, char *argv[]) { char *p; size_t len; Subrange *r; int (*fn)(Rune **r0, Rune **r1, Rune **r2, Rune **r3); p = strrchr(argv[0], '/'); p = p? p+1 : argv[0]; switch (*p) { case 'c' : fn = fn_c; break; case 'i' : fn = fn_i; break; case 'd' : fn = fn_d; break; case 'a' : fn = fn_a; break; default: fprintf(stderr,"Uknown program name!\n"); exit(1); } if (*p != 'd') { if (argc < 2) { fprintf(stderr,"%c: need text argument\n", *p); exit(1); } argtorune(argv[1]); } read_info(0); /* don't reverse ranges */ do_changes(fn); list_changes(); exit(0); }
static ERL_NIF_TERM evaluate_command(esqlite_command *cmd, esqlite_connection *conn) { esqlite_statement *stmt = NULL; if(cmd->stmt) { if(!enif_get_resource(cmd->env, cmd->stmt, esqlite_statement_type, (void **) &stmt)) { return make_error_tuple(cmd->env, "invalid_statement"); } } switch(cmd->type) { case cmd_open: return do_open(cmd->env, conn, cmd->arg); case cmd_update_hook_set: return do_set_update_hook(cmd->env, conn, cmd->arg); case cmd_exec: return do_exec(cmd->env, conn, cmd->arg); case cmd_changes: return do_changes(cmd->env, conn, cmd->arg); case cmd_prepare: return do_prepare(cmd->env, conn, cmd->arg); case cmd_multi_step: return do_multi_step(cmd->env, conn->db, stmt->statement, cmd->arg); case cmd_reset: return do_reset(cmd->env, conn->db, stmt->statement); case cmd_bind: return do_bind(cmd->env, conn->db, stmt->statement, cmd->arg); case cmd_column_names: return do_column_names(cmd->env, stmt->statement); case cmd_column_types: return do_column_types(cmd->env, stmt->statement); case cmd_close: return do_close(cmd->env, conn, cmd->arg); case cmd_insert: return do_insert(cmd->env, conn, cmd->arg); case cmd_get_autocommit: return do_get_autocommit(cmd->env, conn); default: return make_error_tuple(cmd->env, "invalid_command"); } }