Fake callbacks on erasure for packages without files (rhbz#259961)
authorPanu Matilainen <pmatilai@redhat.com>
Tue, 11 Sep 2007 06:01:19 +0000 (09:01 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Tue, 11 Sep 2007 06:01:19 +0000 (09:01 +0300)
(transplanted from 136bf9db5c60bd994fbf4b13a0565f4323b4d254)

lib/psm.c

index 6517aca..a836608 100644 (file)
--- a/lib/psm.c
+++ b/lib/psm.c
@@ -1752,7 +1752,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. */