aboutsummaryrefslogtreecommitdiffstats
path: root/URPM.xs
diff options
context:
space:
mode:
Diffstat (limited to 'URPM.xs')
-rw-r--r--URPM.xs12
1 files changed, 11 insertions, 1 deletions
diff --git a/URPM.xs b/URPM.xs
index 40e3c46..99af00a 100644
--- a/URPM.xs
+++ b/URPM.xs
@@ -70,6 +70,7 @@ struct s_TransactionData {
SV* callback_uninst;
SV* callback_inst;
SV* callback_error;
+ SV* callback_elem;
long min_delta;
SV *data; /* chain with another data user provided */
};
@@ -1257,6 +1258,10 @@ static void *rpmRunTransactions_callback(const void *arg,
callback = td->callback_error;
callback_type = "error";
break;
+ case RPMCALLBACK_ELEM_PROGRESS:
+ callback = td->callback_elem;
+ callback_type = "elem";
+ break;
default:
break;
}
@@ -1288,6 +1293,9 @@ static void *rpmRunTransactions_callback(const void *arg,
case RPMCALLBACK_CPIO_ERROR:
callback_subtype = "cpio";
break;
+ case RPMCALLBACK_ELEM_PROGRESS:
+ callback_subtype = "progress";
+ break;
case RPMCALLBACK_SCRIPT_ERROR:
callback_subtype = "script";
break;
@@ -2680,7 +2688,7 @@ Trans_run(trans, data, ...)
URPM::Transaction trans
SV *data
PREINIT:
- struct s_TransactionData td = { NULL, NULL, NULL, NULL, NULL, NULL, 100000, data };
+ struct s_TransactionData td = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, 100000, data };
rpmtransFlags transFlags = RPMTRANS_FLAG_NONE;
int probFilter = 0;
int translate_message = 0, raw_message = 0;
@@ -2729,6 +2737,8 @@ Trans_run(trans, data, ...)
if (SvROK(ST(i+1))) td.callback_open = ST(i+1);
} else if (len == 9+5 && !memcmp(s+9, "close", 5)) {
if (SvROK(ST(i+1))) td.callback_close = ST(i+1);
+ } else if (len == 9+4 && !memcmp(s+9, "elem", 4)) {
+ if (SvROK(ST(i+1))) td.callback_elem = ST(i+1);
} else if (len == 9+5 && !memcmp(s+9, "trans", 5)) {
if (SvROK(ST(i+1))) td.callback_trans = ST(i+1);
} else if (len == 9+6 && !memcmp(s+9, "uninst", 6)) {