From 35cb65b449feb3ac7533576b0c588de8f3d8a303 Mon Sep 17 00:00:00 2001 From: ewt Date: Tue, 2 Feb 1999 19:43:35 +0000 Subject: [PATCH] handle spec file which Provide filenames CVS patchset: 2770 CVS date: 1999/02/02 19:43:35 --- CHANGES | 1 + build/parseReqs.c | 19 +++++------------- lib/depends.c | 58 +++++++++++++++++++++++++++---------------------------- 3 files changed, 35 insertions(+), 43 deletions(-) diff --git a/CHANGES b/CHANGES index eb0e2bd..34632a3 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,6 @@ 2.90 -> 2.91 - create rpmbzio.c to avoid implicit dependence on libbz2 for installer. + - spec files can provide /filename now 2.5.x -> 2.90 - added --excludepath diff --git a/build/parseReqs.c b/build/parseReqs.c index 9a31fe3..a4412af 100644 --- a/build/parseReqs.c +++ b/build/parseReqs.c @@ -118,15 +118,14 @@ int parseProvidesObsoletes(Spec spec, Package pkg, char *field, int tag) line = buf; while ((prov = strtok(line, " ,\t\n"))) { - if (prov[0] == '/') { + if (prov[0] == '/' && tag != RPMTAG_PROVIDES) { rpmError(RPMERR_BADSPEC, - _("line %d: No file names in %s: %s"), - spec->lineNum, - (tag == RPMTAG_PROVIDES) ? "Provides" : "Obsoletes", - spec->line); + _("line %d: No file names in Obsoletes: %s"), + spec->lineNum, spec->line); return RPMERR_BADSPEC; } - if (!(isalnum(prov[0]) || prov[0] == '_')) { + if (!(isalnum(prov[0]) || prov[0] == '_') && + (tag == RPMTAG_OBSOLETES || prov[0] != '/')) { rpmError(RPMERR_BADSPEC, _("line %d: %s: tokens must begin with alpha-numeric: %s"), spec->lineNum, @@ -134,14 +133,6 @@ int parseProvidesObsoletes(Spec spec, Package pkg, char *field, int tag) spec->line); return RPMERR_BADSPEC; } - if (!(isalnum(prov[0]) || prov[0] == '_')) { - rpmError(RPMERR_BADSPEC, - "line %d: %s: tokens must begin with alpha-numeric: %s", - spec->lineNum, - (tag == RPMTAG_PROVIDES) ? "Provides" : "Obsoletes", - spec->line); - return RPMERR_BADSPEC; - } addReqProv(spec, pkg->header, flags, prov, NULL, 0); line = NULL; } diff --git a/lib/depends.c b/lib/depends.c index 5c4b24c..09667d3 100644 --- a/lib/depends.c +++ b/lib/depends.c @@ -468,41 +468,41 @@ static int unsatisfiedDepend(rpmTransactionSet rpmdep, char * reqName, dbiFreeIndexRecord(matches); if (i < dbiIndexSetCount(matches)) return 0; } - } else { - if (!reqFlags && !rpmdbFindByProvides(rpmdep->db, reqName, - &matches)) { - for (i = 0; i < dbiIndexSetCount(matches); i++) { - unsigned int recOffset = dbiIndexRecordOffset(matches, i); - if (bsearch(&recOffset, - rpmdep->removedPackages, - rpmdep->numRemovedPackages, - sizeof(int), intcmp)) - continue; - break; - } + } - dbiFreeIndexRecord(matches); - if (i < dbiIndexSetCount(matches)) return 0; + if (!reqFlags && !rpmdbFindByProvides(rpmdep->db, reqName, + &matches)) { + for (i = 0; i < dbiIndexSetCount(matches); i++) { + unsigned int recOffset = dbiIndexRecordOffset(matches, i); + if (bsearch(&recOffset, + rpmdep->removedPackages, + rpmdep->numRemovedPackages, + sizeof(int), intcmp)) + continue; + break; } - if (!rpmdbFindPackage(rpmdep->db, reqName, &matches)) { - for (i = 0; i < dbiIndexSetCount(matches); i++) { - unsigned int recOffset = dbiIndexRecordOffset(matches, i); - if (bsearch(&recOffset, - rpmdep->removedPackages, - rpmdep->numRemovedPackages, - sizeof(int), intcmp)) - continue; + dbiFreeIndexRecord(matches); + if (i < dbiIndexSetCount(matches)) return 0; + } - if (dbrecMatchesDepFlags(rpmdep, recOffset, - reqVersion, reqFlags)) { - break; - } - } + if (!rpmdbFindPackage(rpmdep->db, reqName, &matches)) { + for (i = 0; i < dbiIndexSetCount(matches); i++) { + unsigned int recOffset = dbiIndexRecordOffset(matches, i); + if (bsearch(&recOffset, + rpmdep->removedPackages, + rpmdep->numRemovedPackages, + sizeof(int), intcmp)) + continue; - dbiFreeIndexRecord(matches); - if (i < dbiIndexSetCount(matches)) return 0; + if (dbrecMatchesDepFlags(rpmdep, recOffset, + reqVersion, reqFlags)) { + break; + } } + + dbiFreeIndexRecord(matches); + if (i < dbiIndexSetCount(matches)) return 0; } } -- 2.7.4