Unify rpmdbAdd/Remove() interfaces
authorPanu Matilainen <pmatilai@redhat.com>
Wed, 7 Apr 2010 09:28:02 +0000 (12:28 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Wed, 7 Apr 2010 09:28:02 +0000 (12:28 +0300)
- rpmdbRemove() takes now a header as argument too - we need both
  the header number and the header itself there anyway, so might as
  well use the header we already have instead of flipping through backwards
  hoops to get to it

lib/psm.c
lib/rpmdb.c
lib/rpmdb.h

index b3fe09d..20444ca 100644 (file)
--- a/lib/psm.c
+++ b/lib/psm.c
@@ -1087,12 +1087,17 @@ static rpmRC rpmpsmStage(rpmpsm psm, pkgStage stage)
     }   break;
 
     case PSM_RPMDB_REMOVE:
-       if (rpmtsFlags(ts) & RPMTRANS_FLAG_TEST)        break;
-       (void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_DBREMOVE), 0);
-       rc = rpmdbRemove(rpmtsGetRdb(ts), rpmteDBInstance(psm->te));
-       (void) rpmswExit(rpmtsOp(ts, RPMTS_OP_DBREMOVE), 0);
-       if (rc == RPMRC_OK)
-           rpmteSetDBInstance(psm->te, 0);
+       if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_TEST)) {
+           Header h = rpmteHeader(psm->te);
+
+           (void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_DBREMOVE), 0);
+           rc = rpmdbRemove(rpmtsGetRdb(ts), h);
+           (void) rpmswExit(rpmtsOp(ts, RPMTS_OP_DBREMOVE), 0);
+
+           if (rc == RPMRC_OK)
+               rpmteSetDBInstance(psm->te, 0);
+           headerFree(h);
+       }
        break;
 
     default:
index 8b70546..4740326 100644 (file)
@@ -2261,24 +2261,15 @@ static int updatePackages(dbiIndex dbi, unsigned int hdrNum, DBT *hdr)
     return rc;
 }
 
-int rpmdbRemove(rpmdb db, unsigned int hdrNum)
+int rpmdbRemove(rpmdb db, Header h)
 {
     dbiIndex dbi;
-    Header h;
     sigset_t signalMask;
     int ret = 0;
+    unsigned int hdrNum = headerGetInstance(h);
 
-    if (db == NULL)
-       return 0;
-
-
-    h = rpmdbGetHeaderAt(db, hdrNum);
-
-    if (h == NULL) {
-       rpmlog(RPMLOG_ERR, _("%s: cannot read header at 0x%x\n"),
-             "rpmdbRemove", hdrNum);
+    if (db == NULL || hdrNum == 0)
        return 1;
-    }
 
     {  
        char *nevra = headerGetAsString(h, RPMTAG_NEVRA);
@@ -2398,8 +2389,6 @@ cont:
 
     (void) unblockSignals(&signalMask);
 
-    h = headerFree(h);
-
     /* XXX return ret; */
     return 0;
 }
index 595a636..489bd4b 100644 (file)
@@ -244,10 +244,10 @@ int rpmdbAdd(rpmdb db, Header h);
 /** \ingroup rpmdb
  * Remove package header from rpm database and indices.
  * @param db           rpm database
- * @param hdrNum       package instance number in database
+ * @param h            header
  * @return             0 on success
  */
-int rpmdbRemove(rpmdb db, unsigned int hdrNum);
+int rpmdbRemove(rpmdb db, Header h);
 
 /** \ingroup rpmdb
  * Rebuild database indices from package headers.