+
+sqlite3_stmt *zpm_dbquery(struct zpm *zpm, char *query, ...) {
+ va_list args;
+ sqlite3_stmt *st;
+
+ if (!zpm || zpm->error) {
+ return 0;
+ }
+
+ if (!zpm->db) {
+ zpm->error = 1;
+ return 0;
+ }
+
+ va_start(args, query);
+ st = zpm_dbqueryv(zpm, query, args);
+ va_end(args);
+
+ return st;
+}
+
+char *zpm_db_string(struct zpm *zpm, char *query, ...) {
+ sqlite3_stmt *st;
+ va_list args;
+ int rv;
+ char *result = 0;
+
+ va_start(args, query);
+ st = zpm_dbqueryv(zpm, query, args);
+ va_end(args);
+
+ rv = sqlite3_step(st);
+
+ if (rv == SQLITE_ROW) {
+ result = (char *)sqlite3_column_text(st, 0);
+ if (result) {
+ result = strdup(result);
+ }
+ }
+
+ sqlite3_finalize(st);
+ return result;
+}