From 108d637d220d15a874849df25b3fe9fa4a34f983 Mon Sep 17 00:00:00 2001 From: ewt Date: Tue, 20 Aug 1996 16:29:19 +0000 Subject: [PATCH] allows - in dependency version strings CVS patchset: 979 CVS date: 1996/08/20 16:29:19 --- lib/depends.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/lib/depends.c b/lib/depends.c index 4bb9127..8776030 100644 --- a/lib/depends.c +++ b/lib/depends.c @@ -502,8 +502,10 @@ static int checkPackageDeps(rpmDependencies rpmdep, struct problemsSet * psp, return 0; } -static int headerMatchesDepFlags(Header h, char * reqVersion, int reqFlags) { - char * name, * version; +static int headerMatchesDepFlags(Header h, char * reqInfo, int reqFlags) { + char * name, * version, * release, * chptr; + char * reqVersion = reqInfo; + char * reqRelease = NULL; int type, count; int_32 serial; char buf[20]; @@ -523,10 +525,26 @@ static int headerMatchesDepFlags(Header h, char * reqVersion, int reqFlags) { } sprintf(buf, "%d", serial); version = buf; - } else + } else { getEntry(h, RPMTAG_VERSION, &type, (void *) &version, &count); + chptr = strrchr(reqInfo, '-'); + if (chptr) { + reqVersion = alloca(strlen(reqInfo) + 1); + strcpy(reqVersion, reqInfo); + reqVersion[chptr - reqInfo] = '\0'; + reqRelease = reqVersion + (chptr - reqInfo) + 1; + if (*reqRelease) + getEntry(h, RPMTAG_RELEASE, &type, (void *) &release, &count); + else + reqRelease = NULL; + } + } sense = vercmp(version, reqVersion); + if (!sense && reqRelease) { + /* if a release number is given, use it to break ties */ + sense = vercmp(release, reqRelease); + } if ((reqFlags & REQUIRE_LESS) && sense < 0) { result = 1; -- 2.7.4