}
-/**
- */
-static int archOkay(const char * pkgArch)
-{
- if (pkgArch == NULL) return 0;
- return (rpmMachineScore(RPM_MACHTABLE_INSTARCH, pkgArch) ? 1 : 0);
-}
-
-/**
- */
-static int osOkay(const char * pkgOs)
-{
- if (pkgOs == NULL) return 0;
- return (rpmMachineScore(RPM_MACHTABLE_INSTOS, pkgOs) ? 1 : 0);
-}
-
/* Calculate total number of files involved in transaction */
static uint64_t countFiles(rpmts ts)
{
mi = rpmdbFreeIterator(mi);
}
+#define badArch(_a) (rpmMachineScore(RPM_MACHTABLE_INSTARCH, (_a)) == 0)
+#define badOs(_a) (rpmMachineScore(RPM_MACHTABLE_INSTOS, (_a)) == 0)
+
/*
* For packages being installed:
* - verify package arch/os.
static rpmps checkProblems(rpmts ts)
{
rpm_color_t tscolor = rpmtsColor(ts);
+ rpmprobFilterFlags probFilter = rpmtsFilterFlags(ts);
rpmps ps = rpmpsCreate();
rpmtsi pi = rpmtsiInit(ts);
rpmte p;
rpmdbMatchIterator mi;
rpmpsi psi;
- if (!(rpmtsFilterFlags(ts) & RPMPROB_FILTER_IGNOREARCH))
- if (!archOkay(rpmteA(p)))
- rpmpsAppend(ps, RPMPROB_BADARCH,
- rpmteNEVRA(p), rpmteKey(p),
- rpmteA(p), NULL,
- NULL, 0);
+ if (!(probFilter & RPMPROB_FILTER_IGNOREARCH) && badArch(rpmteA(p)))
+ rpmpsAppend(ps, RPMPROB_BADARCH, rpmteNEVRA(p), rpmteKey(p),
+ rpmteA(p), NULL, NULL, 0);
- if (!(rpmtsFilterFlags(ts) & RPMPROB_FILTER_IGNOREOS))
- if (!osOkay(rpmteO(p)))
- rpmpsAppend(ps, RPMPROB_BADOS,
- rpmteNEVRA(p), rpmteKey(p),
- rpmteO(p), NULL,
- NULL, 0);
+ if (!(probFilter & RPMPROB_FILTER_IGNOREOS) && badOs(rpmteO(p)))
+ rpmpsAppend(ps, RPMPROB_BADOS, rpmteNEVRA(p), rpmteKey(p),
+ rpmteO(p), NULL, NULL, 0);
- if (!(rpmtsFilterFlags(ts) & RPMPROB_FILTER_OLDPACKAGE)) {
+ if (!(probFilter & RPMPROB_FILTER_OLDPACKAGE)) {
Header h;
mi = rpmtsInitIterator(ts, RPMTAG_NAME, rpmteN(p), 0);
while ((h = rpmdbNextIterator(mi)) != NULL)
mi = rpmdbFreeIterator(mi);
}
- if (!(rpmtsFilterFlags(ts) & RPMPROB_FILTER_REPLACEPKG)) {
+ if (!(probFilter & RPMPROB_FILTER_REPLACEPKG)) {
mi = rpmtsInitIterator(ts, RPMTAG_NAME, rpmteN(p), 0);
rpmdbSetIteratorRE(mi, RPMTAG_EPOCH, RPMMIRE_STRCMP, rpmteE(p));
rpmdbSetIteratorRE(mi, RPMTAG_VERSION, RPMMIRE_STRCMP, rpmteV(p));
}
/* XXX rpmte problems can only be relocation problems atm */
- if (!(rpmtsFilterFlags(ts) & RPMPROB_FILTER_FORCERELOCATE)) {
+ if (!(probFilter & RPMPROB_FILTER_FORCERELOCATE)) {
psi = rpmpsInitIterator(rpmteProblems(p));
while (rpmpsNextIterator(psi) >= 0) {
rpmpsAppendProblem(ps, rpmpsGetProblem(psi));