goto exit;
}
+ { rpmdbMatchIterator mi;
+ Header oh;
+
+ mi = rpmtsInitIterator(ts, RPMTAG_PROVIDENAME, rpmteN(p), 0);
+ while((oh = rpmdbNextIterator(mi)) != NULL) {
+ if (rpmVersionCompare(h, oh))
+ xx = removePackage(ts, oh, rpmdbGetIteratorOffset(mi), pkgKey);
+ }
+ mi = rpmdbFreeIterator(mi);
+ }
+
obsoletes = rpmdsLink(rpmteDS(p, RPMTAG_OBSOLETENAME), "Obsoletes");
obsoletes = rpmdsInit(obsoletes);
if (obsoletes != NULL)
const rpmts ts = psm->ts;
rpmfi fi = psm->fi;
HGE_t hge = fi->hge;
-#ifdef DYING
- HME_t hme = fi->hme;
-#endif
HFD_t hfd = (fi->hfd ? fi->hfd : headerFreeData);
rpmRC rc = psm->rc;
int saveerrno;
while ((psm->oh = rpmdbNextIterator(psm->mi))) {
fi->record = rpmdbGetIteratorOffset(psm->mi);
- psm->oh = NULL;
+ psm->oh = NULL;
/*@loopbreak@*/ break;
}
psm->mi = rpmdbFreeIterator(psm->mi);
/*@*/;
/**
+ * Return current dependency color.
+ * @param ds dependency set
+ * @return current dependency color
+ */
+uint_32 rpmdsColor(/*@null@*/ const rpmds ds)
+ /*@*/;
+
+/**
+ * Return current dependency color.
+ * @param ds dependency set
+ * @param color new dependency color
+ * @return previous dependency color
+ */
+uint_32 rpmdsSetColor(/*@null@*/ const rpmds ds, uint_32 color)
+ /*@modifies ds @*/;
+
+/**
+ * Return current dependency file refs.
+ * @param ds dependency set
+ * @return current dependency file refs, -1 on global
+ */
+int_32 rpmdsRefs(/*@null@*/ const rpmds ds)
+ /*@*/;
+
+/**
+ * Return current dependency color.
+ * @param ds dependency set
+ * @param refs new dependency refs
+ * @return previous dependency refs
+ */
+int_32 rpmdsSetRefs(/*@null@*/ const rpmds ds, int_32 refs)
+ /*@modifies ds @*/;
+
+/**
* Set "Don't promote Epoch:" flag.
* @param ds dependency set
* @param nopromote Should an unspecified Epoch: be treated as Epoch: 0?
(void) rpmdsSetRefs(ds, val);
}
}
+
int rpmtsiOc(rpmtsi tsi)
{
return tsi->ocsave;
/*@refcounted@*/ /*@null@*/
rpmfi fi; /*!< File information. */
- uint_32 color; /*!< Bit(s) from package dependencies */
+ uint_32 color; /*!< Color bit(s) from package dependencies */
/*@exposed@*/ /*@dependent@*/ /*@null@*/
fnpyKey key; /*!< (TR_ADDED) Retrieval key. */
rpmte rpmtsRelocateElement(rpmts ts)
/*@*/;
+/**
+ * Retrieve color bits of transaction set.
+ * @param ts transaction set
+ * @return color bits
+ */
+uint_32 rpmtsColor(rpmts ts)
+ /*@*/;
+
+/**
+ * Set color bits of transaction set.
+ * @param ts transaction set
+ * @param color new color bits
+ * @return previous color bits
+ */
+uint_32 rpmtsSetColor(rpmts ts, uint_32 color)
+ /*@modifies ts @*/;
+
/** \ingroup rpmts
* Set current relocate transaction element.
* @param ts transaction set
mi = rpmdbFreeIterator(mi);
}
-#ifdef DYING
- /* XXX multilib should not display "already installed" problems */
- if (!(rpmtsFilterFlags(ts) & RPMPROB_FILTER_REPLACEPKG) && !rpmteColor(p))
-#else
- if (!(rpmtsFilterFlags(ts) & RPMPROB_FILTER_REPLACEPKG) && !tscolor)
-#endif
- {
+ if (!(rpmtsFilterFlags(ts) & RPMPROB_FILTER_REPLACEPKG)) {
mi = rpmtsInitIterator(ts, RPMTAG_NAME, rpmteN(p), 0);
xx = rpmdbSetIteratorRE(mi, RPMTAG_EPOCH, RPMMIRE_DEFAULT,
rpmteE(p));
prevoff = offset;
i++;
- offset = dbiIndexRecordOffset(allMatches, i);
- } while (i < allMatches->count &&
- (i == 0 || offset == prevoff));
+ if (i < allMatches->count)
+ offset = dbiIndexRecordOffset(allMatches, i);
+ } while (i < allMatches->count && offset == prevoff);
baseNames = hfd(baseNames, bnt);
dirNames = hfd(dirNames, dnt);