summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build/rpmfc.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/build/rpmfc.c b/build/rpmfc.c
index 83e4e535b..cd77301d9 100644
--- a/build/rpmfc.c
+++ b/build/rpmfc.c
@@ -52,9 +52,9 @@ struct rpmfc_s {
ARGI_t fcdictx; /*!< (no. files) file class dictionary indices */
ARGI_t fddictx; /*!< (no. files) file depends dictionary start */
ARGI_t fddictn; /*!< (no. files) file depends dictionary no. entries */
- ARGV_t ddict; /*!< (no. dependencies) file depends dictionary */
ARGI_t ddictx; /*!< (no. dependencies) file->dependency mapping */
rpmstrPool cdict; /*!< file class dictionary */
+ rpmstrPool ddict; /*!< file depends dictionary */
rpmds provides; /*!< (no. provides) package provides */
rpmds requires; /*!< (no. requires) package requires */
@@ -396,13 +396,13 @@ static void argvAddUniq(ARGV_t * argvp, const char * key)
#define hasAttr(_a, _n) (argvSearch((_a), (_n), NULL) != NULL)
-static void rpmfcAddFileDep(ARGV_t * argvp, int ix, rpmds ds, char deptype)
+static void rpmfcAddFileDep(rpmstrPool ddict, int ix, rpmds ds, char deptype)
{
if (ds) {
char *key = NULL;
rasprintf(&key, "%08d%c %s %s 0x%08x", ix, deptype,
rpmdsN(ds), rpmdsEVR(ds), rpmdsFlags(ds));
- argvAddUniq(argvp, key);
+ rpmstrPoolId(ddict, key, 1);
free(key);
}
}
@@ -499,7 +499,7 @@ static int rpmfcHelper(rpmfc fc, const char *nsdep, const char *depname,
/* Add to package and file dependencies unless filtered */
if (regMatch(exclude, rpmdsDNEVR(ds)+2) == 0) {
(void) rpmdsMerge(depsp, ds);
- rpmfcAddFileDep(&fc->ddict, fc->ix, ds, tagN == RPMTAG_PROVIDENAME ? 'P' : 'R');
+ rpmfcAddFileDep(fc->ddict, fc->ix, ds, tagN == RPMTAG_PROVIDENAME ? 'P' : 'R');
}
rpmdsFree(ds);
@@ -757,9 +757,9 @@ rpmfc rpmfcFree(rpmfc fc)
argiFree(fc->fcdictx);
argiFree(fc->fddictx);
argiFree(fc->fddictn);
- argvFree(fc->ddict);
argiFree(fc->ddictx);
+ rpmstrPoolFree(fc->ddict);
rpmstrPoolFree(fc->cdict);
rpmdsFree(fc->provides);
@@ -809,7 +809,6 @@ rpmRC rpmfcApply(rpmfc fc)
unsigned int val;
int dix;
int ix;
- int i;
/* Generate package and per-file dependencies. */
for (fc->ix = 0; fc->fn != NULL && fc->fn[fc->ix] != NULL; fc->ix++) {
@@ -820,10 +819,10 @@ rpmRC rpmfcApply(rpmfc fc)
}
/* Generate per-file indices into package dependencies. */
- nddict = argvCount(fc->ddict);
+ nddict = rpmstrPoolNumStr(fc->ddict);
previx = -1;
- for (i = 0; i < nddict; i++) {
- s = fc->ddict[i];
+ for (rpmsid id = 1; id <= nddict; id++) {
+ s = rpmstrPoolStr(fc->ddict, id);
/* Parse out (file#,deptype,N,EVR,Flags) */
ix = strtol(s, &se, 10);
@@ -928,6 +927,7 @@ rpmRC rpmfcClassify(rpmfc fc, ARGV_t argv, rpm_mode_t * fmode)
/* Build (sorted) file class dictionary. */
fc->cdict = rpmstrPoolCreate();
+ fc->ddict = rpmstrPoolCreate();
ms = magic_open(msflags);
if (ms == NULL) {