diff options
author | Per Øyvind Karlsen <peroyvind@mandriva.org> | 2010-10-14 00:34:46 +0000 |
---|---|---|
committer | Per Øyvind Karlsen <peroyvind@mandriva.org> | 2010-10-14 00:34:46 +0000 |
commit | 49af15ba447b3ca44cc8eff65ead551e98138f57 (patch) | |
tree | 4e89324716d0b2f779c84b320a588b8f823d3d30 /URPM.xs | |
parent | 4e4e9d0c30c2927367d9e0694805284b9404d9c9 (diff) | |
download | perl-URPM-49af15ba447b3ca44cc8eff65ead551e98138f57.tar perl-URPM-49af15ba447b3ca44cc8eff65ead551e98138f57.tar.gz perl-URPM-49af15ba447b3ca44cc8eff65ead551e98138f57.tar.bz2 perl-URPM-49af15ba447b3ca44cc8eff65ead551e98138f57.tar.xz perl-URPM-49af15ba447b3ca44cc8eff65ead551e98138f57.zip |
refactorize Pkg_compare()
Diffstat (limited to 'URPM.xs')
-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: |