From: Michael Schroeder Date: Wed, 17 Apr 2013 09:32:14 +0000 (+0200) Subject: make sure releases start numeric for haiku X-Git-Tag: upstream/0.4.0~175 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=98171f702d71d884afcdc7f3a82a788a6442b8b6;p=platform%2Fupstream%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 72f9dc8..6c699e1 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 30dacfb..4351a6f 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));