aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPer Øyvind Karlsen <peroyvind@mandriva.org>2011-01-27 02:32:44 +0000
committerPer Øyvind Karlsen <peroyvind@mandriva.org>2011-01-27 02:32:44 +0000
commitb31a304909fdb5cb2bb595f9f95d758098ee72a7 (patch)
tree1adceaadb6db16d6788bdf32f28b3e6318edaa2e
parentfa20e40d31d0685cc25836fdb401a6002b9f3652 (diff)
downloadperl-URPM-b31a304909fdb5cb2bb595f9f95d758098ee72a7.tar
perl-URPM-b31a304909fdb5cb2bb595f9f95d758098ee72a7.tar.gz
perl-URPM-b31a304909fdb5cb2bb595f9f95d758098ee72a7.tar.bz2
perl-URPM-b31a304909fdb5cb2bb595f9f95d758098ee72a7.tar.xz
perl-URPM-b31a304909fdb5cb2bb595f9f95d758098ee72a7.zip
eliminate distepoch from EVR used in version comparision
-rw-r--r--URPM.xs9
1 files changed, 8 insertions, 1 deletions
diff --git a/URPM.xs b/URPM.xs
index 869a68d..6a4039a 100644
--- a/URPM.xs
+++ b/URPM.xs
@@ -269,7 +269,7 @@ ranges_overlap(uint32_t aflags, char *sa, uint32_t bflags, char *sb, int b_nopro
int sense = 0;
char *eosa = strchr(sa, ']');
char *eosb = strchr(sb, ']');
- char *ea, *va, *ra, *eb, *vb, *rb;
+ char *ea, *va, *ra, *da, *eb, *vb, *rb, *db;
if (eosa) *eosa = 0;
if (eosb) *eosb = 0;
@@ -283,6 +283,9 @@ ranges_overlap(uint32_t aflags, char *sa, uint32_t bflags, char *sb, int b_nopro
ea = NULL;
}
if ((ra = strrchr(sa, '-'))) *ra++ = 0;
+ if (ra && (da = strchr(ra, ':'))) *da++ = 0;
+ else da = NULL;
+
/* parse sb as an [epoch:]version[-release] */
for (eb = sb; *sb >= '0' && *sb <= '9'; ++sb);
if (*sb == ':') {
@@ -293,6 +296,8 @@ ranges_overlap(uint32_t aflags, char *sa, uint32_t bflags, char *sb, int b_nopro
eb = NULL;
}
if ((rb = strrchr(sb, '-'))) *rb++ = 0;
+ if (rb && (db = strchr(rb, ':'))) *db++ = 0;
+ else db = NULL;
/* now compare epoch */
if (ea && eb)
sense = rpmvercmp(*ea ? ea : "0", *eb ? eb : "0");
@@ -307,6 +312,8 @@ ranges_overlap(uint32_t aflags, char *sa, uint32_t bflags, char *sb, int b_nopro
sense = rpmvercmp(ra, rb);
}
/* restore all character that have been modified inline */
+ if (db) db[-1] = ':';
+ if (da) da[-1] = ':';
if (rb) rb[-1] = '-';
if (ra) ra[-1] = '-';
if (eb) vb[-1] = ':';