diff options
-rw-r--r-- | URPM.xs | 23 |
1 files changed, 12 insertions, 11 deletions
@@ -1945,24 +1945,25 @@ Pkg_compare(pkg, evr) char *evr PREINIT: int compare = 0; - char *_evr; + EVR_t lEVR = rpmEVRnew(RPMSENSE_EQUAL, 0), + rEVR = rpmEVRnew(RPMSENSE_EQUAL, 0); CODE: if (!compare) { - const char *seps; - char *tmp; + int i; - _evr = (char*)get_evr(pkg); /* This will remove fields from _evr (from the right) that evr is missing * so that ie. if only version is given as an argument, it won't compare * release etc. */ - for(seps = ":-:"; *seps != 0; seps++) - if((tmp = strrchr(_evr, *seps)) != NULL && strrchr(evr, *seps) == NULL) - backup_char(tmp); - - compare = do_rpmEVRcompare(_evr, evr); - /* restore provides string modified */ - restore_chars(); + rpmEVRparse(get_evr(pkg), lEVR); + rpmEVRparse(evr, rEVR); + for(i = RPMEVR_V; i <= RPMEVR_D; i++) + if(!*(rEVR->F[i])) + lEVR->F[i] = ""; + + compare = rpmEVRcompare(lEVR, rEVR); + rpmEVRfree(lEVR); + rpmEVRfree(rEVR); } RETVAL = compare; OUTPUT: |