summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorPanu Matilainen <pmatilai@redhat.com>2007-09-11 09:01:19 +0300
committerPanu Matilainen <pmatilai@redhat.com>2007-09-11 09:01:19 +0300
commite1e43cefedad0f1aea0bc1476a891d72c4b2295c (patch)
treea8b59496e7c27686fc4f6f41cc1c0c67193f43c0 /lib
parent39e601dac901f82c6ba5c2474bec7bbd3b69b3e4 (diff)
downloadrpm-e1e43cefedad0f1aea0bc1476a891d72c4b2295c.tar.gz
rpm-e1e43cefedad0f1aea0bc1476a891d72c4b2295c.tar.bz2
rpm-e1e43cefedad0f1aea0bc1476a891d72c4b2295c.zip
Fake callbacks on erasure for packages without files (rhbz#259961)
Diffstat (limited to 'lib')
-rw-r--r--lib/psm.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/psm.c b/lib/psm.c
index 8366a3434..a47c08f3d 100644
--- a/lib/psm.c
+++ b/lib/psm.c
@@ -1753,7 +1753,14 @@ psm->te->h = headerLink(fi->h);
if (rpmtsFlags(ts) & RPMTRANS_FLAG_JUSTDB) break;
if (rpmtsFlags(ts) & RPMTRANS_FLAG_APPLYONLY) break;
- if (fc <= 0) break;
+
+ /* XXX Synthesize callbacks for packages with no files. */
+ if (rpmfiFC(fi) <= 0) {
+ void * ptr;
+ ptr = rpmtsNotify(ts, fi->te, RPMCALLBACK_UNINST_START, 0, 100);
+ ptr = rpmtsNotify(ts, fi->te, RPMCALLBACK_UNINST_STOP, 0, 100);
+ break;
+ }
psm->what = RPMCALLBACK_UNINST_START;
psm->amount = fc; /* XXX W2DO? looks wrong. */