} 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:
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);
(void) unblockSignals(&signalMask);
- h = headerFree(h);
-
/* XXX return ret; */
return 0;
}
/** \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.