diff options
-rw-r--r-- | URPM.xs | 37 | ||||
-rw-r--r-- | t/parse.t | 5 |
2 files changed, 35 insertions, 7 deletions
@@ -294,6 +294,26 @@ get_nvra(Header h) { } static int +do_rpmEVRcmp(const char *a, const char *b) { + int compare; +#ifdef RPM_ORG + /* TODO: implement EVR_t & friends locally? */ + compare = rpmvercmp(a, b); +#else + EVR_t lEVR, + rEVR; + lEVR = rpmEVRnew(RPMSENSE_EQUAL, 0), + rEVR = rpmEVRnew(RPMSENSE_EQUAL, 0); + rpmEVRparse(a, lEVR); + rpmEVRparse(b, rEVR); + compare = rpmEVRcompare(lEVR, rEVR); + lEVR = rpmEVRfree(lEVR), + rEVR = rpmEVRfree(rEVR); +#endif + return compare; +} + +static int sigsize_to_filesize(int sigsize) { return sigsize + 440; /* 440 is the rpm header size (?) empirical, but works */ } @@ -1885,7 +1905,7 @@ Pkg_compare_pkg(lpkg, rpkg) croak("undefined package"); } - compare = rpmvercmp(levr, revr); + compare = do_rpmEVRcmp(levr, revr); if (!compare) { int lscore, rscore; get_fullname_parts(lpkg, NULL, NULL, NULL, NULL, NULL, &larch, NULL); @@ -1938,7 +1958,7 @@ Pkg_compare(pkg, evr) if((tmp = strrchr(_evr, *seps)) != NULL && strrchr(evr, *seps) == NULL) backup_char(tmp); - compare = rpmvercmp(_evr, evr); + compare = do_rpmEVRcmp(_evr, evr); /* restore provides string modified */ restore_chars(); } @@ -3341,9 +3361,16 @@ Urpm_list_rpm_tag(urpm=Nullsv) int rpmvercmp(one, two) - char *one - char *two - + char *one + char *two + PREINIT: + int compare; + CODE: + compare = do_rpmEVRcmp(one, two); + RETVAL = compare; + OUTPUT: + RETVAL + int Urpm_ranges_overlap(a, b, b_nopromote=1) char *a @@ -4,7 +4,7 @@ use strict; use warnings; -use Test::More tests => 39; +use Test::More tests => 40; use MDV::Packdrakeng; use URPM; use URPM::Build; @@ -82,10 +82,11 @@ is("$start $end", "2 2", 'parse_headers'); # Version comparison ok(URPM::rpmvercmp("1-1mdk", "1-1mdk") == 0, "Same value = 0"); -ok(URPM::rpmvercmp("0:1-1mdk", "1-1mdk") == -1, "Same value, epoch 0 on left = 1"); +ok(URPM::rpmvercmp("0:1-1mdk", "1-1mdk") == 0, "Same value, epoch 0 on left = 0"); ok(URPM::rpmvercmp("1-1mdk", "1-2mdk") == -1, "Right value win = -1"); ok(URPM::rpmvercmp("1-2mdk", "1-1mdk") == 1, "Left value win = 1"); ok(URPM::rpmvercmp("1:1-1mdk", "2:1-1mdk") == -1, "epoch 1 vs 2 = -1"); +ok(URPM::rpmvercmp("1.1-5.0", "1.1.1-1") == -1, "Right value win = -1"); { open(my $hdfh, "zcat hdlist.cz 2>/dev/null |") or die $!; |