From d80ca1bb5098a8ee32c642e28cda591b451d47c5 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 12 Mar 2020 14:45:49 +0100 Subject: fix search for various tags --- package.xml | 3 +- rpminfo.c | 75 ++++++++++++++++++++++++++++++++++++++++++---- tests/008-rpmdbsearch.phpt | 33 ++++++++++++++++++++ 3 files changed, 104 insertions(+), 7 deletions(-) diff --git a/package.xml b/package.xml index c6dc892..e684c9e 100644 --- a/package.xml +++ b/package.xml @@ -27,7 +27,8 @@ Available functions: PHP 3.01 -- +- allow search by Pkgid, Hdrid, Installtid with specific input +- fix search with various other tags (Version, ...) diff --git a/rpminfo.c b/rpminfo.c index a52ee6b..89353fa 100644 --- a/rpminfo.c +++ b/rpminfo.c @@ -286,6 +286,48 @@ PHP_FUNCTION(rpmdbinfo) } /* }}} */ +static unsigned char nibble(char c) { + if (c >= '0' && c <= '9') { + return (c - '0'); + } + if (c >= 'a' && c <= 'f') { + return (c - 'a') + 10; + } + if (c >= 'A' && c <= 'F') { + return (c - 'A') + 10; + } + return 0; +} + +static int hex2bin(const char *hex, char *bin, int len) { + int i; + + for (i=0 ; (i+1) --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 "Pkgid\n"; +$a = rpmdbsearch($p[0]['Sigmd5'], RPMTAG_PKGID); +var_dump($a[0]['Name'] == $phprpm); + +echo "Hdrid\n"; +$a = rpmdbsearch($p[0]['Sha1header'], RPMTAG_HDRID); +var_dump($a[0]['Name'] == $phprpm); + +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) +Pkgid +bool(true) +Hdrid bool(true) +Installtid bool(true) +Version bool(true) Done -- cgit