diff options
author | Remi Collet <remi@remirepo.net> | 2024-12-19 11:33:42 +0100 |
---|---|---|
committer | Remi Collet <remi@php.net> | 2024-12-19 11:33:42 +0100 |
commit | 571e91a150b12569676fe4db55bbd94d1f9a673c (patch) | |
tree | c1433a6e03e736f0cff725361e4d6946b39ec95b | |
parent | 5f8816e2d1eb233f505f6e34a770230b4dc22167 (diff) |
close DB with macro change (can affect dbpath)
-rw-r--r-- | README.md | 6 | ||||
-rw-r--r-- | package.xml | 2 | ||||
-rw-r--r-- | rpminfo.c | 21 |
3 files changed, 17 insertions, 12 deletions
@@ -221,15 +221,13 @@ For example, can be used to set the Database path and backend $ mock -r almalinux-8-x86_64 init ... + $ mock -r fedora-41-x86_64 ini + ... $ php -a php > rpmdefine("_dbpath /var/lib/mock/almalinux-8-x86_64/root/var/lib/rpm"); php > rpmdefine("_db_backend bdb_ro"); php > var_dump(rpmdbinfo("almalinux-release")[0]["Summary"]); string(22) "AlmaLinux release file" - - $ mock -r fedora-41-x86_64 ini - ... - $ php -a php > rpmdefine("_dbpath /var/lib/mock/fedora-41-x86_64/root/usr/lib/sysimage/rpm"); php > rpmdefine("_db_backend sqlite"); php > var_dump(rpmdbinfo("fedora-release")[0]["Summary"]); diff --git a/package.xml b/package.xml index 172eba6..04a39be 100644 --- a/package.xml +++ b/package.xml @@ -13,7 +13,7 @@ Documentation: https://www.php.net/rpminfo <email>remi@php.net</email> <active>yes</active> </lead> - <date>2024-09-03</date> + <date>2024-12-19</date> <version> <release>1.2.0dev</release> <api>1.2.0</api> @@ -70,6 +70,13 @@ static rpmdb rpminfo_getdb(void) { return RPMINFO_G(db); } +static void rpminfo_closedb(void) { + if (RPMINFO_G(db)) { + rpmtsCloseDB(RPMINFO_G(ts)); + RPMINFO_G(db) = NULL; + } +} + static void rpm_header_to_zval(zval *return_value, Header h, zend_bool full) { HeaderIterator hi; @@ -879,7 +886,7 @@ PHP_FUNCTION(rpmexpand) RETURN_THROWS(); } - (void)rpminfo_getts(); // read config files + (void)rpminfo_getts(); /* read config files */ result = rpmExpand(text, NULL); RETVAL_STRING(result); @@ -899,7 +906,7 @@ PHP_FUNCTION(rpmexpandnumeric) RETURN_THROWS(); } - (void)rpminfo_getts(); // read config files + (void)rpminfo_getts(); /* read config files */ result = rpmExpandNumeric(text); @@ -919,7 +926,9 @@ PHP_FUNCTION(rpmdefine) RETURN_THROWS(); } - (void)rpminfo_getts(); // read config files + (void)rpminfo_getts(); /* read config files */ + + rpminfo_closedb(); /* Close the DB to allow path change */ result = rpmDefineMacro(NULL, macro, RMIL_GLOBAL); @@ -999,10 +1008,8 @@ PHP_RINIT_FUNCTION(rpminfo) PHP_RSHUTDOWN_FUNCTION(rpminfo) { if (RPMINFO_G(ts)) { - if (RPMINFO_G(db)) { - rpmtsCloseDB(RPMINFO_G(ts)); - RPMINFO_G(db) = NULL; - } + rpminfo_closedb(); + rpmtsFree(RPMINFO_G(ts)); RPMINFO_G(ts) = NULL; } |