1 diff -dur rpm-5.4.12.orig/lib/rpmal.c rpm-5.4.12/lib/rpmal.c
2 --- rpm-5.4.12.orig/lib/rpmal.c 2012-04-15 23:20:57.000000000 +0200
3 +++ rpm-5.4.12/lib/rpmal.c 2013-08-13 13:46:28.000000000 +0200
6 #include <rpmiotypes.h> /* XXX fnpyKey */
10 +#define _RPMFI_INTERNAL
16 rpmds provides; /*!< Provides: dependencies. */
17 /*@refcounted@*/ /*@null@*/
18 rpmbf bf; /*!< File name Bloom filter. */
19 + rpmfi fi; /*!< File name Bloom filter. */
21 rpmuint32_t tscolor; /*!< Transaction color bits. */
25 (void)rpmbfFree(alp->bf);
27 + (void)rpmfiFree(alp->fi);
31 al->list = _free(al->list);
34 (void)rpmbfFree(alp->bf);
36 + (void)rpmfiFree(alp->fi);
39 memset(alp, 0, sizeof(*alp)); /* XXX trash and burn */
42 /*@-assignexpose -castexpose @*/
43 alp->provides = rpmdsLink(provides, "Provides (rpmalAdd)");
44 alp->bf = rpmbfLink(rpmfiFNBF(fi));
45 + alp->fi = rpmfiLink(fi, "file list (rpmalAdd)");
46 /*@=assignexpose =castexpose @*/
50 rpmalAllFileSatisfiesDepend(const rpmal al, const rpmds ds, alKey * keyp)
54 + int found = 0, verified = 0;
60 if (keyp) *keyp = RPMAL_NOMATCH;
62 if (al == NULL || (fn = rpmdsN(ds)) == NULL || *fn != '/')
67 if (al->list != NULL) /* XXX always true */
68 for (i = 0; i < al->size; i++) {
69 availablePackage alp = al->list + i;
71 if (!rpmbfChk(alp->bf, fn, nfn))
75 + char * fifn = (char *) malloc(alp->fi->fnlen + 1);
76 + for(j=0; j<(int)alp->fi->fc; j++) {
77 + const char * dn = NULL;
78 + (void) urlPath(alp->fi->dnl[alp->fi->dil[j]], &dn);
79 + strcpy(stpcpy(fifn, dn), alp->fi->bnl[j]);
80 + if (!strcmp(fn, fifn)) {
88 + rpmlog(RPMLOG_DEBUG, " False positive: '%s'\n", fn);
92 rpmdsNotify(ds, _("(added files)"), 0);
94 ret = (fnpyKey *) xrealloc(ret, (found + 2) * sizeof(*ret));