From: Michael Tremer Date: Wed, 20 Jan 2021 21:39:32 +0000 (+0000) Subject: libpakfire: db: Add flags to decide whether we need write access X-Git-Tag: 0.9.28~1285^2~833 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=77a4b3a3e46b76522cc0e8653bd3a127d9aed5c6;p=pakfire.git libpakfire: db: Add flags to decide whether we need write access Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/db.c b/src/libpakfire/db.c index 0086404a8..d40fb212d 100644 --- a/src/libpakfire/db.c +++ b/src/libpakfire/db.c @@ -33,9 +33,11 @@ struct pakfire_db { Pakfire pakfire; int nrefs; + + int mode; }; -PAKFIRE_EXPORT int pakfire_db_open(struct pakfire_db** db, Pakfire pakfire) { +PAKFIRE_EXPORT int pakfire_db_open(struct pakfire_db** db, Pakfire pakfire, int flags) { struct pakfire_db* o = pakfire_calloc(1, sizeof(*o)); if (!o) return -ENOMEM; @@ -45,6 +47,12 @@ PAKFIRE_EXPORT int pakfire_db_open(struct pakfire_db** db, Pakfire pakfire) { o->pakfire = pakfire_ref(pakfire); o->nrefs = 1; + // Store mode + if (flags & PAKFIRE_DB_READWRITE) + o->mode = PAKFIRE_DB_READWRITE; + else + o->mode = PAKFIRE_DB_READONLY; + *db = o; return 0; diff --git a/src/libpakfire/include/pakfire/db.h b/src/libpakfire/include/pakfire/db.h index c4eb363fa..bc0f890df 100644 --- a/src/libpakfire/include/pakfire/db.h +++ b/src/libpakfire/include/pakfire/db.h @@ -25,7 +25,12 @@ struct pakfire_db; -int pakfire_db_open(struct pakfire_db** db, Pakfire pakfire); +enum { + PAKFIRE_DB_READONLY = 0, + PAKFIRE_DB_READWRITE = (1 << 0), +}; + +int pakfire_db_open(struct pakfire_db** db, Pakfire pakfire, int flags); struct pakfire_db* pakfire_db_ref(struct pakfire_db* db); struct pakfire_db* pakfire_db_unref(struct pakfire_db* db); diff --git a/src/libpakfire/transaction.c b/src/libpakfire/transaction.c index 208d72566..77355e92c 100644 --- a/src/libpakfire/transaction.c +++ b/src/libpakfire/transaction.c @@ -340,7 +340,7 @@ PAKFIRE_EXPORT int pakfire_transaction_run(PakfireTransaction transaction) { DEBUG(transaction->pakfire, "Running Transaction %p\n", transaction); // Open the database - r = pakfire_db_open(&db, transaction->pakfire); + r = pakfire_db_open(&db, transaction->pakfire, PAKFIRE_DB_READWRITE); if (r) { ERROR(transaction->pakfire, "Could not open the database\n"); return r;