From 1e01976460c4e6b10de9a26e486ab2b2871cbff4 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Mon, 6 Apr 2020 16:25:35 +0200 Subject: add rpmaddtag() function --- package.xml | 6 ++-- php_rpminfo.h | 9 ++++-- rpminfo.c | 83 +++++++++++++++++++++++++++++++++++++++++------- tests/007-rpmdbinfo.phpt | 26 +++++++++++++++ 4 files changed, 106 insertions(+), 18 deletions(-) diff --git a/package.xml b/package.xml index b66dbf5..81ab508 100644 --- a/package.xml +++ b/package.xml @@ -18,8 +18,8 @@ Available functions: 2020-03-25 - 0.4.3dev - 0.4.0 + 0.5.0dev + 0.5.0 stable @@ -27,7 +27,7 @@ Available functions: PHP 3.01 -- +- add rpmaddtag() function diff --git a/php_rpminfo.h b/php_rpminfo.h index 85adeef..87db8e9 100644 --- a/php_rpminfo.h +++ b/php_rpminfo.h @@ -22,7 +22,7 @@ extern zend_module_entry rpminfo_module_entry; #define phpext_rpminfo_ptr &rpminfo_module_entry -#define PHP_RPMINFO_VERSION "0.4.3-dev" +#define PHP_RPMINFO_VERSION "0.5.0-dev" #ifdef PHP_WIN32 # define PHP_RPMINFO_API __declspec(dllexport) @@ -37,8 +37,11 @@ extern zend_module_entry rpminfo_module_entry; #endif ZEND_BEGIN_MODULE_GLOBALS(rpminfo) - rpmts ts; - rpmdb db; + rpmts ts; /* transaction set */ + rpmdb db; /* database */ + int nb_tags; /* stored tags */ + int max_tags; /* allocated tags */ + rpmTagVal *tags; /* tags storage */ ZEND_END_MODULE_GLOBALS(rpminfo) #define RPMINFO_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(rpminfo, v) diff --git a/rpminfo.c b/rpminfo.c index 03053d8..a076cf9 100644 --- a/rpminfo.c +++ b/rpminfo.c @@ -61,22 +61,32 @@ static void rpm_header_to_zval(zval *return_value, Header h, zend_bool full) rpmTagVal tag; rpmTagType type; const char *val; + int i; array_init(return_value); hi = headerInitIterator(h); while ((tag=headerNextTag(hi)) != RPMTAG_NOT_FOUND) { - switch (tag) { - case RPMTAG_NAME: - case RPMTAG_VERSION: - case RPMTAG_RELEASE: - case RPMTAG_EPOCH: - case RPMTAG_ARCH: - case RPMTAG_SUMMARY: - break; - default: - if (!full) { - continue; - } + if (!full) { + switch (tag) { + case RPMTAG_NAME: + case RPMTAG_VERSION: + case RPMTAG_RELEASE: + case RPMTAG_EPOCH: + case RPMTAG_ARCH: + case RPMTAG_SUMMARY: + /* Always present tags */ + break; + default: + /* Additional tags */ + for (i=0 ; i Done --EXPECTF-- @@ -25,4 +29,26 @@ array(1) { string(%d) "%s" } } +bool(true) +bool(true) +bool(false) +array(1) { + [0]=> + array(7) { + ["Name"]=> + string(4) "bash" + ["Version"]=> + string(%d) "%s" + ["Release"]=> + string(%d) "%s" + ["Summary"]=> + string(26) "The GNU Bourne Again shell" + ["Buildtime"]=> + int(%d) + ["Installtime"]=> + int(%d) + ["Arch"]=> + string(%d) "%s" + } +} Done -- cgit