summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <remi@remirepo.net>2025-07-18 14:41:27 +0200
committerRemi Collet <remi@php.net>2025-07-18 14:50:46 +0200
commit6f92494506e97d8e347eb1064977d79251f10a79 (patch)
treef003db71cd28495ed01011c1feedf36da977d4f5
parent7c3b8d70e6aae14ed8031d5790f912387b7bce89 (diff)
RPMTAG_PKGID and RPMTAG_HDRID removed in RPM 6
-rw-r--r--rpminfo.c14
-rw-r--r--tests/008-rpmdbsearch.phpt6
-rw-r--r--tests/016-rpmdbsearch2.phpt46
3 files changed, 60 insertions, 6 deletions
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--
-<?php if (!extension_loaded("rpminfo")) print "skip"; ?>
+<?php
+if (!extension_loaded("rpminfo")) print "skip";
+if (version_compare(RPMVERSION, '5', '>=')) die("skip for RPM 4.x");
+?>
+
--FILE--
<?php
echo "Name / glob\n";
diff --git a/tests/016-rpmdbsearch2.phpt b/tests/016-rpmdbsearch2.phpt
new file mode 100644
index 0000000..350807f
--- /dev/null
+++ b/tests/016-rpmdbsearch2.phpt
@@ -0,0 +1,46 @@
+--TEST--
+Check for rpmdbinfo function
+--SKIPIF--
+<?php
+if (!extension_loaded("rpminfo")) print "skip";
+if (version_compare(RPMVERSION, '5', '<')) die("skip for RPM 6.x");
+?>
+--FILE--
+<?php
+echo "Name / glob\n";
+$a = rpmdbsearch('php*', RPMTAG_NAME , RPMMIRE_GLOB);
+var_dump(count($a) > 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