return 1;
}
+int zpm_readonly(struct zpm *z) {
+ if (z->db && sqlite3_db_readonly(z->db, "main")) {
+ return 1;
+ }
+ return 0;
+}
+
int zpm_db_set_pragma(struct zpm *db, int pragma, int value) {
int rc;
char *sql;
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 */
+ int rv;
+ char *bufa, *bufb;
+
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);
+ if (lenb == 0 && lena > 0) return -1;
+
+ bufa = sqlite3_malloc(lena+1);
+ bufb = sqlite3_malloc(lenb+1);
+
+ strncpy(bufa, a, lena);
+ strncpy(bufb, b, lenb);
+ bufa[lena] = 0;
+ bufb[lenb] = 0;
+
+ rv = zpm_vercmp(bufa, bufb);
+ sqlite3_free(bufa);
+ sqlite3_free(bufb);
+ return rv;
}
int zpm_addvercmp(struct zpm *pkg) {
if (zpm->error) {
return 0;
}
- } else {
- fprintf(stderr, "can't find soname\n");
}
+ /* some dyn don't have an soname, so we don't
+ * need to warn */
}
/* if exe, set neededs */
int fd;
void *content = 0;
struct stat sbuf;
- unsigned char tmp[32];
- struct sha256_state md;
sqlite3_stmt *ifile = 0;
int haverow = 0,havedata = 0;
- int j,rc,type;
+ int rc,type;
char hashbuf[65];
/* xz compress it */
return 0;
}
- /* get hash */
- sha256_init(&md);
- sha256_process(&md, content, sbuf.st_size);
- sha256_done(&md, tmp);
- for (j=0;j<32;j++) {
- sprintf(hash+j*2, "%02x", (unsigned)tmp[j]);
- }
+ zpm_hash_mem(content, sbuf.st_size, hash);
hash[64] = 0;
/* TODO check null */