return ds;
}
-static rpmds singleDS(rpmTagVal tagN, const char * N, const char * EVR,
+static rpmds singleDS(rpmstrPool pool, rpmTagVal tagN,
+ const char * N, const char * EVR,
rpmsenseFlags Flags, unsigned int instance,
rpm_color_t Color)
{
- rpmds ds = singleDSPool(NULL, tagN, 0, 0, Flags, instance, Color);
+ rpmds ds = singleDSPool(pool, tagN, 0, 0, Flags, instance, Color);
if (ds) {
/* now that we have a pool, we can insert our N & EVR strings */
ds->N[0] = rpmstrPoolId(ds->pool, N ? N : "", 1);
ds->EVR[0] = rpmstrPoolId(ds->pool, EVR ? EVR : "", 1);
- /* freeze the pool to save memory */
- rpmstrPoolFreeze(ds->pool, 0);
+ /* freeze the pool to save memory, but only if private pool */
+ if (ds->pool != pool)
+ rpmstrPoolFreeze(ds->pool, 0);
}
return ds;
}
-rpmds rpmdsThis(Header h, rpmTagVal tagN, rpmsenseFlags Flags)
+rpmds rpmdsThisPool(rpmstrPool pool,
+ Header h, rpmTagVal tagN, rpmsenseFlags Flags)
{
char *evr = headerGetAsString(h, RPMTAG_EVR);
- rpmds ds = singleDS(tagN, headerGetString(h, RPMTAG_NAME),
+ rpmds ds = singleDS(pool, tagN, headerGetString(h, RPMTAG_NAME),
evr, Flags, headerGetInstance(h), 0);
free(evr);
return ds;
}
+rpmds rpmdsThis(Header h, rpmTagVal tagN, rpmsenseFlags Flags)
+{
+ return rpmdsThisPool(NULL, h, tagN, Flags);
+}
+
+rpmds rpmdsSinglePool(rpmstrPool pool,rpmTagVal tagN,
+ const char * N, const char * EVR, rpmsenseFlags Flags)
+{
+ return singleDS(pool, tagN, N, EVR, Flags, 0, 0);
+}
+
rpmds rpmdsSingle(rpmTagVal tagN, const char * N, const char * EVR, rpmsenseFlags Flags)
{
- return singleDS(tagN, N, EVR, Flags, 0, 0);
+ return rpmdsSinglePool(NULL, tagN, N, EVR, Flags);
}
rpmds rpmdsCurrent(rpmds ds)
rpmds rpmdsThis(Header h, rpmTagVal tagN, rpmsenseFlags Flags);
/** \ingroup rpmds
+ * Create, load and initialize a dependency for this header.
+ * @param pool string pool (or NULL for private pool)
+ * @param h header
+ * @param tagN type of dependency
+ * @param Flags comparison flags
+ * @return new dependency set
+ */
+rpmds rpmdsThisPool(rpmstrPool pool,
+ Header h, rpmTagVal tagN, rpmsenseFlags Flags);
+
+/** \ingroup rpmds
* Create, load and initialize a dependency set of size 1.
* @param tagN type of dependency
* @param N name
rpmds rpmdsSingle(rpmTagVal tagN, const char * N, const char * EVR, rpmsenseFlags Flags);
/** \ingroup rpmds
+ * Create, load and initialize a dependency set of size 1.
+ * @param pool string pool (or NULL for private pool)
+ * @param tagN type of dependency
+ * @param N name
+ * @param EVR epoch:version-release
+ * @param Flags comparison flags
+ * @return new dependency set
+ */
+rpmds rpmdsSinglePool(rpmstrPool pool, rpmTagVal tagN,
+ const char * N, const char * EVR, rpmsenseFlags Flags);
+
+/** \ingroup rpmds
* Return a new dependency set of size 1 from the current iteration index
* @param ds dependency set
* @return new dependency set