diff options
author | Thierry Vignaud <thierry.vignaud@gmail.com> | 2015-02-23 10:58:56 +0100 |
---|---|---|
committer | Thierry Vignaud <thierry.vignaud@gmail.com> | 2015-02-26 19:02:12 +0100 |
commit | b0cd1853933d8c68610c9e173721525c6a17e8ce (patch) | |
tree | 0791961522b6af3060b4a75fe88800ec144cd2b7 /URPM.xs | |
parent | e1143e85b339f28c00f2682c326a1ff8d92a91e7 (diff) | |
download | perl-URPM-b0cd1853933d8c68610c9e173721525c6a17e8ce.tar perl-URPM-b0cd1853933d8c68610c9e173721525c6a17e8ce.tar.gz perl-URPM-b0cd1853933d8c68610c9e173721525c6a17e8ce.tar.bz2 perl-URPM-b0cd1853933d8c68610c9e173721525c6a17e8ce.tar.xz perl-URPM-b0cd1853933d8c68610c9e173721525c6a17e8ce.zip |
callbacks now get pkg name instead of just pkg id
thus fixing unknown package name on erases (mga#15032)
Diffstat (limited to 'URPM.xs')
-rw-r--r-- | URPM.xs | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -1199,7 +1199,7 @@ ts_nosignature(rpmts ts) { return rpmtsSetVSFlags(ts, _RPMVSF_NODIGESTS | _RPMVSF_NOSIGNATURES); } -static void *rpmRunTransactions_callback(__attribute__((unused)) const void *h, +static void *rpmRunTransactions_callback(const void *arg, const rpmCallbackType what, const rpm_loff_t amount, const rpm_loff_t total, @@ -1214,6 +1214,7 @@ static void *rpmRunTransactions_callback(__attribute__((unused)) const void *h, SV *callback = NULL; char *callback_type = NULL; char *callback_subtype = NULL; + Header h = (Header) arg; if (!td) return NULL; @@ -1303,7 +1304,7 @@ static void *rpmRunTransactions_callback(__attribute__((unused)) const void *h, ENTER; SAVETMPS; PUSHMARK(SP); - EXTEND(SP, callback_subtype == NULL ? 2 : 5); + EXTEND(SP, callback_subtype == NULL ? 3 : 6); PUSHs(td->data); mPUSHs(newSVpv(callback_type, 0)); PUSHs(pkgKey != NULL ? sv_2mortal(newSViv((long)pkgKey - 1)) : &PL_sv_undef); @@ -1312,6 +1313,9 @@ static void *rpmRunTransactions_callback(__attribute__((unused)) const void *h, mPUSHs(newSViv(amount)); mPUSHs(newSViv(total)); } + // for erasures, the key provided by librpm is always 0, so let's add another parameter (fullname): + char *s = headerGetAsString(h, RPMTAG_NVR); + mPUSHs(newSVpv(s, 0)); PUTBACK; i = call_sv(callback, callback == td->callback_open ? G_SCALAR : G_DISCARD); SPAGAIN; |