aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rw-r--r--URPM.xs16
2 files changed, 12 insertions, 5 deletions
diff --git a/NEWS b/NEWS
index cc241b1..8eb2c7d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,5 @@
- drop import_pubkey function (dead for 5 years)
+- fix importing pubkeys with rpm-4.10.0 (eg: when adding media)
Version 4.0 - 8 June 2012
diff --git a/URPM.xs b/URPM.xs
index 60f0a6b..6c3917c 100644
--- a/URPM.xs
+++ b/URPM.xs
@@ -1231,9 +1231,9 @@ read_config_files(int force) {
return rc;
}
-static void
+static rpmVSFlags
ts_nosignature(rpmts ts) {
- rpmtsSetVSFlags(ts, _RPMVSF_NODIGESTS | _RPMVSF_NOSIGNATURES);
+ return rpmtsSetVSFlags(ts, _RPMVSF_NODIGESTS | _RPMVSF_NOSIGNATURES);
}
static void *rpmRunTransactions_callback(__attribute__((unused)) const void *h,
@@ -2518,10 +2518,11 @@ Db_traverse(db,callback)
PREINIT:
Header header;
rpmdbMatchIterator mi;
+ rpmVSFlags ovsflags;
int count = 0;
CODE:
db->ts = rpmtsLink(db->ts);
- ts_nosignature(db->ts);
+ ovsflags = ts_nosignature(db->ts);
mi = rpmtsInitIterator(db->ts, RPMDBI_PACKAGES, NULL, 0);
while ((header = rpmdbNextIterator(mi))) {
if (SvROK(callback)) {
@@ -2543,6 +2544,7 @@ Db_traverse(db,callback)
++count;
}
rpmdbFreeIterator(mi);
+ rpmtsSetVSFlags(db->ts, ovsflags);
(void)rpmtsFree(db->ts);
RETVAL = count;
OUTPUT:
@@ -2558,6 +2560,7 @@ Db_traverse_tag(db,tag,names,callback)
Header header;
rpmdbMatchIterator mi;
int count = 0;
+ rpmVSFlags ovsflags;
CODE:
if (SvROK(names) && SvTYPE(SvRV(names)) == SVt_PVAV) {
AV* names_av = (AV*)SvRV(names);
@@ -2571,7 +2574,7 @@ Db_traverse_tag(db,tag,names,callback)
SV **isv = av_fetch(names_av, i, 0);
char *name = SvPV(*isv, str_len);
db->ts = rpmtsLink(db->ts);
- ts_nosignature(db->ts);
+ ovsflags = ts_nosignature(db->ts);
mi = rpmtsInitIterator(db->ts, rpmtag, name, str_len);
while ((header = rpmdbNextIterator(mi))) {
if (SvROK(callback)) {
@@ -2593,6 +2596,7 @@ Db_traverse_tag(db,tag,names,callback)
++count;
}
(void)rpmdbFreeIterator(mi);
+ rpmtsSetVSFlags(db->ts, ovsflags);
(void)rpmtsFree(db->ts);
}
} else croak("bad arguments list");
@@ -2612,8 +2616,9 @@ Db_traverse_tag_find(db,tag,name,callback)
CODE:
int rpmtag = rpmtag_from_string(tag);
int found = 0;
+ rpmVSFlags ovsflags;
db->ts = rpmtsLink(db->ts);
- ts_nosignature(db->ts);
+ ovsflags = ts_nosignature(db->ts);
mi = rpmtsInitIterator(db->ts, rpmtag, name, 0);
while ((header = rpmdbNextIterator(mi))) {
dSP;
@@ -2636,6 +2641,7 @@ Db_traverse_tag_find(db,tag,name,callback)
break;
}
}
+ rpmtsSetVSFlags(db->ts, ovsflags);
(void)rpmdbFreeIterator(mi);
(void)rpmtsFree(db->ts);
RETVAL = found;