From 6f92494506e97d8e347eb1064977d79251f10a79 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Fri, 18 Jul 2025 14:41:27 +0200 Subject: RPMTAG_PKGID and RPMTAG_HDRID removed in RPM 6 --- rpminfo.c | 14 +++++++++----- tests/008-rpmdbsearch.phpt | 6 +++++- tests/016-rpmdbsearch2.phpt | 46 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 6 deletions(-) create mode 100644 tests/016-rpmdbsearch2.phpt diff --git a/rpminfo.c b/rpminfo.c index ae8b8e7..0d17abf 100644 --- a/rpminfo.c +++ b/rpminfo.c @@ -399,22 +399,26 @@ PHP_FUNCTION(rpmdbsearch) RETURN_THROWS(); } - if (crit == RPMTAG_PKGID) { + if (crit == RPMTAG_INSTALLTID) { + tid = atol(name); + name = (char *)&tid; + len = sizeof(tid); +#ifdef RPMTAG_PKGID + } else if (crit == RPMTAG_PKGID) { if (len != 32) { zend_argument_value_error(1, "Bad length for PKGID, 32 expected"); RETURN_THROWS(); } len = hex2bin(name, MD5, len); name = MD5; +#endif +#ifdef RPMTAG_HDRID } else if (crit == RPMTAG_HDRID) { if (len != 40) { zend_argument_value_error(1, "Bad length for HDRID, 40 expected"); RETURN_THROWS(); } - } else if (crit == RPMTAG_INSTALLTID) { - tid = atol(name); - name = (char *)&tid; - len = sizeof(tid); +#endif } else if (crit == RPMTAG_INSTFILENAMES) { /* use input parameters */ } else { diff --git a/tests/008-rpmdbsearch.phpt b/tests/008-rpmdbsearch.phpt index f348b92..bd927ec 100644 --- a/tests/008-rpmdbsearch.phpt +++ b/tests/008-rpmdbsearch.phpt @@ -1,7 +1,11 @@ --TEST-- Check for rpmdbinfo function --SKIPIF-- - +=')) die("skip for RPM 4.x"); +?> + --FILE-- +--FILE-- + 1); + +echo "Name / regex\n"; +$a = rpmdbsearch('^php', RPMTAG_NAME, RPMMIRE_REGEX); +var_dump(count($a) > 1); + +echo "Installed file\n"; +$a = rpmdbsearch(PHP_BINARY, RPMTAG_INSTFILENAMES); +var_dump(count($a) == 1); + +$phprpm = $a[0]['Name']; +$p = rpmdbinfo($phprpm, 1); + +echo "Installtid\n"; +$a = rpmdbsearch($p[0]['Installtid'], RPMTAG_INSTALLTID); +var_dump(count($a) >= 1); + +echo "Version\n"; +$a = rpmdbsearch($p[0]['Version'], RPMTAG_VERSION); +var_dump(count($a) > 1); + +?> +Done +--EXPECTF-- +Name / glob +bool(true) +Name / regex +bool(true) +Installed file +bool(true) +Installtid +bool(true) +Version +bool(true) +Done -- cgit