diff options
author | Per Øyvind Karlsen <peroyvind@mandriva.org> | 2011-01-27 02:32:44 +0000 |
---|---|---|
committer | Per Øyvind Karlsen <peroyvind@mandriva.org> | 2011-01-27 02:32:44 +0000 |
commit | b31a304909fdb5cb2bb595f9f95d758098ee72a7 (patch) | |
tree | 1adceaadb6db16d6788bdf32f28b3e6318edaa2e | |
parent | fa20e40d31d0685cc25836fdb401a6002b9f3652 (diff) | |
download | perl-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.xs | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -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] = ':'; |