aboutsummaryrefslogtreecommitdiffstats
path: root/URPM.xs
diff options
context:
space:
mode:
authorPer Øyvind Karlsen <peroyvind@mandriva.org>2010-10-14 00:34:46 +0000
committerPer Øyvind Karlsen <peroyvind@mandriva.org>2010-10-14 00:34:46 +0000
commit49af15ba447b3ca44cc8eff65ead551e98138f57 (patch)
tree4e89324716d0b2f779c84b320a588b8f823d3d30 /URPM.xs
parent4e4e9d0c30c2927367d9e0694805284b9404d9c9 (diff)
downloadperl-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.xs23
1 files changed, 12 insertions, 11 deletions
diff --git a/URPM.xs b/URPM.xs
index 46cf931..0b3f9ad 100644
--- a/URPM.xs
+++ b/URPM.xs
@@ -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: