char *relstr;
};
-static void init_ver(struct ver *v, char *s) {
+static void init_ver(struct ver *v, const char *s) {
strncpy(v->str, s, 1023);
v->str[1023] = 0;
v->s = 0;
/*
* alphabetic less than numeric
*/
-int zpm_vercmp(char *vsa, char *vsb) {
+int zpm_vercmp(const char *vsa, const char *vsb) {
struct ver a, b;
int an, bn;
int cmp;
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);
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;
int zpm_hash(char *path, char *hash, uint32_t flags);
int zpm_readopts(struct zpm *pkg, int ac, char **av);
-int zpm_vercmp(char *a, char *b);
+int zpm_vercmp(const char *a, const char *b);
+
+/* add vercmp collation to db */
+int zpm_addvercmp(struct zpm *pkg);
+
+int zpm_exec(struct zpm *z, const char *sql, int(*callback)(void *, int, char **, char**), void *arg, char **errmsg);
+
+
#endif