return zpm;
}
+static void zpm_set_db_errmsg(struct zpm *zpm, const char *msg) {
+ if (zpm) {
+ if (zpm->dberrmsg) {
+ free(zpm->dberrmsg);
+ }
+ if (msg) {
+ zpm->dberrmsg = strdup(msg);
+ if (!zpm->dberrmsg) {
+ zpm->error = 1;
+ }
+ }
+ }
+}
+
int zpm_init(struct zpm *pkg, char *path) {
int rc;
sqlite3 *db = 0;
rc = sqlite3_open_v2(path, &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
if (rc) {
- SQLERROR(sqlite3_errmsg(db));
- sqlite3_close(db);
+ pkg->error = 1;
+ pkg->dbresult = rc;
+ zpm_set_db_errmsg(pkg, sqlite3_errstr(rc));
+ if (db) {
+ sqlite3_close(db);
+ }
+ fprintf(stderr, "error (%d): %s: %s\n", rc,
+ pkg->dberrmsg, path);
+
return 0;
}
pkg->db = db;