From: Michael Schroeder Date: Wed, 17 Apr 2013 09:32:14 +0000 (+0200) Subject: make sure releases start numeric for haiku X-Git-Tag: BASE-SuSE-Code-12_3-Branch~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=98171f702d71d884afcdc7f3a82a788a6442b8b6;p=thirdparty%2Flibsolv.git make sure releases start numeric for haiku otherwise a pre_release might be interpreted as a revision --- diff --git a/ext/testcase.c b/ext/testcase.c index 72f9dc8b..6c699e19 100644 --- a/ext/testcase.c +++ b/ext/testcase.c @@ -981,6 +981,9 @@ testcase_write_testtags(Repo *repo, FILE *fp) evr = pool_id2str(pool, s->evr); arch = pool_id2str(pool, s->arch); release = strrchr(evr, '-'); + /* haikus releases start numeric */ + if (release && pool->disttype == DISTTYPE_HAIKU && (release[1] < '0' || release[1] > '9')) + release = evr + strlen(evr); if (!release) release = evr + strlen(evr); fprintf(fp, "=Pkg: %s %.*s %s %s\n", name, (int)(release - evr), evr, *release && release[1] ? release + 1 : "-", arch); diff --git a/src/evr.c b/src/evr.c index 30dacfb6..4351a6f9 100644 --- a/src/evr.c +++ b/src/evr.c @@ -390,7 +390,14 @@ pool_evrcmp_str(const Pool *pool, const char *evr1, const char *evr2, int mode) for (s2 = evr2, r2 = 0; *s2; s2++) if (*s2 == '-') r2 = s2; - + if (pool->disttype == DISTTYPE_HAIKU) + { + /* make sure it's really a release, releases always are numeric */ + if (r1 && (r1[1] < '0' || r1[1] > '9')) + r1 = 0; + if (r2 && (r2[1] < '0' || r2[1] > '9')) + r2 = 0; + } r = 0; if (mode != EVRCMP_MATCH || (evr1 != (r1 ? r1 : s1) && evr2 != (r2 ? r2 : s2))) r = solv_vercmp(evr1, r1 ? r1 : s1, evr2, r2 ? r2 : s2); @@ -490,6 +497,12 @@ pool_evrmatch(const Pool *pool, Id evrid, const char *epoch, const char *version for (s1 = evr1, r1 = 0; *s1; s1++) if (*s1 == '-') r1 = s1; + if (pool->disttype == DISTTYPE_HAIKU) + { + /* make sure it's really a release, releases always are numeric */ + if (r1 && (r1[1] < '0' || r1[1] > '9')) + r1 = 0; + } if (version) { r = solv_vercmp(evr1, r1 ? r1 : s1, version, version + strlen(version));