]> pd.if.org Git - zpackage/blobdiff - lib/zpm.c
add vercmp functions to libzpm
[zpackage] / lib / zpm.c
index d9041ff33c6daf3b4510022fd6e7b2387ae983d9..8e0687542c290f49dbdf0298045a0bb67a158cd1 100644 (file)
--- a/lib/zpm.c
+++ b/lib/zpm.c
@@ -183,6 +183,11 @@ int zpm_commit(struct zpm *z) {
        return 1;
 }
 
+/* wrapper for sqlite3_exec */
+int zpm_exec(struct zpm *z, const char *sql, int(*callback)(void *, int, char **, char**), void *arg, char **errmsg) {
+       return sqlite3_exec(z->db, sql, callback, arg, errmsg);
+}
+
 int zpm_rollback(struct zpm *z) {
        char *errstr = 0;
        sqlite3_exec(z->db, "rollback;", NULL, NULL, &errstr);
@@ -349,6 +354,22 @@ int zpm_close(struct zpm *pkg) {
        return 1;
 }
 
+static int zpm_sqlite_vercmp(void *not_used, int unknown, const void *a,
+               int unk2, const void *b) {
+       /* not sure what the ints are, possibly string lengths */
+       not_used = 0; /* suppress warning */
+       unknown = 0; /* suppress warning */
+       unk2 = 0;
+       return zpm_vercmp(a, b);
+}
+
+int zpm_addvercmp(struct zpm *pkg) {
+       return sqlite3_create_collation(
+                       pkg->db, "vercmp", SQLITE_UTF8, NULL,
+                       zpm_sqlite_vercmp
+                       );
+}
+
 /* set package struct variables, database, environment, then command line */
 int zpm_readopts(struct zpm *pkg, int ac, char **av) {
        char *ev;