static rpmRC rpmPackageErase(rpmts ts, rpmpsm psm) { rpmRC rc = RPMRC_OK; int once = 1; rpmswEnter(rpmtsOp(psm->ts, RPMTS_OP_ERASE), 0); while (once--) { if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOTRIGGERUN)) { /* Run triggers in this package other package(s) set off. */ rc = runImmedTriggers(psm, RPMSENSE_TRIGGERUN); if (rc) break; /* Run triggers in other package(s) this package sets off. */ rc = runTriggers(psm, RPMSENSE_TRIGGERUN); if (rc) break; } if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOPREUN)) rc = runInstScript(psm, RPMTAG_PREUN); rc = rpmpsmRemove(psm); if (rc) break; if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOPOSTUN)) { rc = runInstScript(psm, RPMTAG_POSTUN); if (rc) break; } if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOTRIGGERPOSTUN)) { /* Run triggers in other package(s) this package sets off. */ rc = runTriggers(psm, RPMSENSE_TRIGGERPOSTUN); if (rc) break; } rc = dbRemove(ts, psm->te); } rpmswExit(rpmtsOp(psm->ts, RPMTS_OP_ERASE), 0); return rc; }
static rpmRC rpmPackageErase(rpmts ts, rpmpsm psm) { rpmRC rc = RPMRC_OK; int once = 1; rpmswEnter(rpmtsOp(psm->ts, RPMTS_OP_ERASE), 0); while (once--) { /* Run file triggers in this package other package(s) set off. */ rc = runImmedFileTriggers(psm->ts, psm->te, RPMSENSE_TRIGGERUN, RPMSCRIPT_FILETRIGGER, 1); if (rc) break; /* Run file triggers in other package(s) this package sets off. */ rc = runFileTriggers(psm->ts, psm->te, RPMSENSE_TRIGGERUN, RPMSCRIPT_FILETRIGGER, 1); if (rc) break; if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOTRIGGERUN)) { /* Run triggers in this package other package(s) set off. */ rc = runImmedTriggers(psm, RPMSENSE_TRIGGERUN); if (rc) break; /* Run triggers in other package(s) this package sets off. */ rc = runTriggers(psm, RPMSENSE_TRIGGERUN); if (rc) break; } if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOPREUN)) rc = runInstScript(psm, RPMTAG_PREUN); /* Run file triggers in this package other package(s) set off. */ rc = runImmedFileTriggers(psm->ts, psm->te, RPMSENSE_TRIGGERUN, RPMSCRIPT_FILETRIGGER, 2); if (rc) break; /* Run file triggers in other package(s) this package sets off. */ rc = runFileTriggers(psm->ts, psm->te, RPMSENSE_TRIGGERUN, RPMSCRIPT_FILETRIGGER, 2); if (rc) break; rc = rpmpsmRemove(psm); if (rc) break; /* Run file triggers in other package(s) this package sets off. */ rc = runFileTriggers(psm->ts, psm->te, RPMSENSE_TRIGGERPOSTUN, RPMSCRIPT_FILETRIGGER, 1); if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOPOSTUN)) { rc = runInstScript(psm, RPMTAG_POSTUN); if (rc) break; } if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOTRIGGERPOSTUN)) { /* Run triggers in other package(s) this package sets off. */ rc = runTriggers(psm, RPMSENSE_TRIGGERPOSTUN); if (rc) break; } /* Run file triggers in other package(s) this package sets off. */ rc = runFileTriggers(psm->ts, psm->te, RPMSENSE_TRIGGERPOSTUN, RPMSCRIPT_FILETRIGGER, 2); if (rc) break; /* Prepare post transaction uninstall triggers */ rpmtriggersPrepPostUnTransFileTrigs(psm->ts, psm->te); rc = dbRemove(ts, psm->te); } rpmswExit(rpmtsOp(psm->ts, RPMTS_OP_ERASE), 0); return rc; }