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 lena, const void *a,
+ int lenb, const void *b) {
+ /* not sure what the ints are, possibly string lengths */
+ if (not_used != 0) fprintf(stderr, "sqlite vercmp not_used = %p\n",
+ not_used);
+ if (lena == 0 && lenb > 0) return 1;
+ 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;
/* didn't find a row */
sqlite3_finalize(ifile);
sqlite3_close(db);
- fprintf(stderr, "no such hash\n");
+ fprintf(stderr, "no such hash: %s\n", hash);
return 0;
}
/* either way we're done with this now */
int fd;
void *content;
struct stat sbuf;
- hash_state md;
+ struct sha256_state md;
int j;
unsigned char tmp[32];
void *content;
struct stat sbuf;
unsigned char tmp[32];
- hash_state md;
+ struct sha256_state md;
sqlite3_stmt *ifile;
int haverow = 0,havedata = 0;
int j,rc,type;
hash = hashbuf;
}
- flags = 0; /* suppress warning, probably use to follow symlinks */
+ if (flags) {
+ fprintf(stderr, "zpm_import unused flags = %d\n", flags);
+ }
/* mmap the file */
fd = open(path, O_RDONLY);
if (fd == -1) {