]> pd.if.org Git - zpackage/blob - lib/db.c
rework zpm-note
[zpackage] / lib / db.c
1 /*
2  * add a file/files to an sqlite db
3  * in the 'files' table.
4  */
5
6 #include <stdio.h>
7 #include <sys/types.h>
8 #include <sys/stat.h>
9 #include <fcntl.h>
10 #include <unistd.h>
11
12 #include <sys/mman.h>
13
14 #include "sqlite3.h"
15 #include "sha256.h"
16
17 static int callback(void *NotUsed, int argc, char **argv, char **azColName){
18         int i;
19         if (NotUsed) {
20                 fprintf(stderr, "sqlite3 callback unused = %p\n", NotUsed);
21         }
22         for(i=0; i<argc; i++){
23                 printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
24         }
25         printf("\n");
26         return 0;
27 }
28
29 struct dbh {
30         sqlite3 *db;
31         char *errmsg;
32         int rc;
33 };
34
35 #define SQLERROR(x) fprintf(stderr, "%s %d: %s\n", __func__, __LINE__, (x))
36 int begin(sqlite3 *db) {
37         int rc;
38         char *err;
39
40         rc = sqlite3_exec(db, "begin;", callback, 0, &err);
41         if (rc != SQLITE_OK) {
42                 SQLERROR(err);
43                 sqlite3_free(err);
44         }
45         return rc;
46 }
47
48 int commit(sqlite3 *db) {
49         int rc;
50         char *err;
51
52         rc = sqlite3_exec(db, "commit;", callback, 0, &err);
53         if (rc != SQLITE_OK) {
54                 SQLERROR(err);
55                 sqlite3_free(err);
56         }
57         return rc;
58 }
59
60 int rollback(sqlite3 *db) {
61         int rc;
62         char *err;
63
64         rc = sqlite3_exec(db, "rollback;", callback, 0, &err);
65         if (rc != SQLITE_OK) {
66                 SQLERROR(err);
67                 sqlite3_free(err);
68         }
69         return rc;
70 }