};
-int rpmdsRpmlib(rpmds * dsp, const void * tblp)
+int rpmdsRpmlibPool(rpmstrPool pool, rpmds * dsp, const void * tblp)
{
const struct rpmlibProvides_s * rltblp = tblp;
const struct rpmlibProvides_s * rlp;
rltblp = rpmlibProvides;
for (rlp = rltblp; rlp->featureName != NULL && rc == 0; rlp++) {
- rpmds ds = rpmdsSingle(RPMTAG_PROVIDENAME, rlp->featureName,
+ rpmds ds = rpmdsSinglePool(pool, RPMTAG_PROVIDENAME, rlp->featureName,
rlp->featureEVR, rlp->featureFlags);
rc = rpmdsMerge(dsp, ds);
rpmdsFree(ds);
}
- if (*dsp)
+ /* freeze the pool to save memory, but only if private pool */
+ if (*dsp && (*dsp)->pool != pool)
rpmstrPoolFreeze((*dsp)->pool, 0);
return rc;
}
+int rpmdsRpmlib(rpmds * dsp, const void * tblp)
+{
+ return rpmdsRpmlibPool(NULL, dsp, tblp);
+}
+
rpmstrPool rpmdsPool(rpmds ds)
{
return (ds != NULL) ? ds->pool : NULL;
*/
int rpmdsRpmlib(rpmds * dsp, const void * tblp);
+/**
+ * Load rpmlib provides into a dependency set.
+ * @param pool shared string pool (or NULL for private pool)
+ * @retval *dsp (loaded) depedency set
+ * @param tblp rpmlib provides table (NULL uses internal table)
+ * @return 0 on success
+ */
+int rpmdsRpmlibPool(rpmstrPool pool, rpmds * dsp, const void * tblp);
+
/** \ingroup rpmds
* Return dependency set string pool handle
* @param fi dependency set