#include #include #include "sqlite3.h" #include "zpm.h" #define SQLERROR(x) fprintf(stderr, "%s %d: %s\n", __func__, __LINE__, (x)) sqlite3_stmt *zpm_dbquery(struct zpm *zpm, char *query, ...) { sqlite3 *db; char *sql; va_list args; sqlite3_stmt *st; int rv; if (!zpm || zpm->error || !zpm->db) { zpm->error = 1; return 0; } db = zpm->db; va_start(args, query); sql = sqlite3_vmprintf(query, args); va_end(args); if (!sql) { zpm->error = 1; return 0; } rv = sqlite3_prepare_v2(db, sql, strlen(sql), &st, NULL); if (rv != SQLITE_OK) { SQLERROR(sqlite3_errmsg(db)); zpm->error = rv; return 0; } return st; }