]> pd.if.org Git - zpackage/blob - lib/dbquery.c
add vercmp at zpm open or init
[zpackage] / lib / dbquery.c
1 #include <stdarg.h>
2 #include <string.h>
3
4 #include "sqlite3.h"
5 #include "zpm.h"
6
7 #define SQLERROR(x) fprintf(stderr, "%s %d: %s\n", __func__, __LINE__, (x))
8 sqlite3_stmt *zpm_dbquery(struct zpm *zpm, char *query, ...) {
9         sqlite3 *db;
10         char *sql;
11         va_list args;
12         sqlite3_stmt *st;
13         int rv;
14
15         if (!zpm || zpm->error || !zpm->db) {
16                 zpm->error = 1;
17                 return 0;
18         }
19
20         db = zpm->db;
21
22         va_start(args, query);
23         sql = sqlite3_vmprintf(query, args);
24         va_end(args);
25
26         if (!sql) {
27                 zpm->error = 1;
28                 return 0;
29         }
30
31         rv = sqlite3_prepare_v2(db, sql, strlen(sql), &st, NULL);
32         if (rv != SQLITE_OK) {
33                 SQLERROR(sqlite3_errmsg(db));
34                 zpm->error = rv;
35                 return 0;
36         }
37
38         return st;
39 }