aboutsummaryrefslogtreecommitdiffstats
path: root/URPM.xs
diff options
context:
space:
mode:
Diffstat (limited to 'URPM.xs')
-rw-r--r--URPM.xs34
1 files changed, 33 insertions, 1 deletions
diff --git a/URPM.xs b/URPM.xs
index 2cdf386..307512f 100644
--- a/URPM.xs
+++ b/URPM.xs
@@ -2305,6 +2305,18 @@ Pkg_changelog_text(pkg)
SPAGAIN;
void
+Pkg_queryformat(pkg, fmt)
+ URPM::Package pkg;
+ char *fmt
+ PPCODE:
+ char *s;
+ if (pkg->h) {
+ s = headerSprintf(pkg->h, fmt,
+ rpmTagTable, rpmHeaderFormats, NULL);
+ XPUSHs(sv_2mortal(newSVpv(s,0)));
+ }
+
+void
Pkg_get_tag(pkg, tagname)
URPM::Package pkg
int tagname;
@@ -3185,13 +3197,33 @@ Urpm_list_rpm_tag(urpm=Nullsv)
SV *urpm
PREINIT:
int i = 0;
+ const struct headerSprintfExtension_s * ext = rpmHeaderFormats;
PPCODE:
read_config_files(0);
+
+
+
for (i = 0; i < rpmTagTableSize; i++) {
- XPUSHs(sv_2mortal(newSVpv(rpmTagTable[i].name, 0)));
+ XPUSHs(sv_2mortal(newSVpv(rpmTagTable[i].name + 7, 0)));
XPUSHs(sv_2mortal(newSViv(rpmTagTable[i].val)));
}
+ while (ext->name != NULL) {
+ if (ext->type == HEADER_EXT_MORE) {
+ ext = ext->u.more;
+ continue;
+ }
+ for (i = 0; i < rpmTagTableSize; i++) {
+ if (!strcmp(rpmTagTable[i].name, ext->name))
+ break;
+ }
+ if (i >= rpmTagTableSize && ext->type == HEADER_EXT_TAG) {
+ XPUSHs(sv_2mortal(newSVpv(ext->name + 7, 0)));
+ XPUSHs(sv_newmortal());
+ }
+ ext++;
+ }
+
int
Urpm_ranges_overlap(a, b, b_nopromote=0)
char *a