aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPer Øyvind Karlsen <peroyvind@mandriva.org>2010-10-14 01:23:42 +0000
committerPer Øyvind Karlsen <peroyvind@mandriva.org>2010-10-14 01:23:42 +0000
commitdcd657cd1aca51741fb29f325aa1120557e39907 (patch)
tree8d6246bb762afdf6ff62139058dad228e2868503
parent0eae00d29128a2dbda34ee64c3198a598bc93203 (diff)
downloadperl-URPM-dcd657cd1aca51741fb29f325aa1120557e39907.tar
perl-URPM-dcd657cd1aca51741fb29f325aa1120557e39907.tar.gz
perl-URPM-dcd657cd1aca51741fb29f325aa1120557e39907.tar.bz2
perl-URPM-dcd657cd1aca51741fb29f325aa1120557e39907.tar.xz
perl-URPM-dcd657cd1aca51741fb29f325aa1120557e39907.zip
we don't have to modify pkg->info just to get epoch...
-rw-r--r--URPM.xs53
1 files changed, 27 insertions, 26 deletions
diff --git a/URPM.xs b/URPM.xs
index 4cf3928..80741b6 100644
--- a/URPM.xs
+++ b/URPM.xs
@@ -256,32 +256,34 @@ get_fullname_parts(URPM__Package pkg, char **name, int *epoch, char **version, c
if(pkg->info) {
if ((_eos = strchr(pkg->info, '@')) != NULL) {
- backup_char(_eos);
- if (eos != NULL) *eos = _eos+1;
if (epoch != NULL) *epoch = isdigit(_eos[1]) ? atoi(_eos+1) : 0;
- if ((_arch = strrchr(pkg->info, '.')) != NULL) {
- backup_char(_arch);
- if (arch != NULL) *arch = _arch + 1;
- if (distepoch != NULL || disttag != NULL || release != NULL || version != NULL || name != NULL) {
- if((_distepoch = strchr(strrchr(pkg->provides, '-'), ':')) != NULL) {
- tmp = strrchr(_distepoch+1, ']');
- backup_char(tmp);
- tmp = strstr(pkg->info, _distepoch+1);
- backup_char(tmp);
- }
- if(distepoch != NULL) *distepoch = _distepoch ? _distepoch+1 : NULL;
- if (disttag != NULL || release != NULL || version != NULL || name != NULL) {
- if ((_disttag = strrchr(pkg->info, '-')) != NULL && (strstr(pkg->provides, _disttag)) == NULL) {
- backup_char(_disttag);
- } else _disttag = NULL;
- if (disttag != NULL) *disttag = _disttag ? _disttag + 1: NULL;
- if ((release != NULL || version != NULL || name != NULL) && (_release = strrchr(pkg->info, '-')) != NULL) {
- backup_char(_release);
- if (release != NULL) *release = _release + 1;
- if ((version != NULL || name != NULL) && (_version = strrchr(pkg->info, '-')) != NULL) {
- backup_char(_version);
- if (version != NULL) *version = _version + 1;
- if (name != NULL) *name = pkg->info;
+ if(name != NULL || version != NULL || release != NULL || disttag != NULL || distepoch != NULL || arch != NULL) {
+ backup_char(_eos);
+ if (eos != NULL) *eos = _eos+1;
+ if ((_arch = strrchr(pkg->info, '.')) != NULL) {
+ backup_char(_arch);
+ if (arch != NULL) *arch = _arch + 1;
+ if (distepoch != NULL || disttag != NULL || release != NULL || version != NULL || name != NULL) {
+ if((_distepoch = strchr(strrchr(pkg->provides, '-'), ':')) != NULL) {
+ tmp = strrchr(_distepoch+1, ']');
+ backup_char(tmp);
+ tmp = strstr(pkg->info, _distepoch+1);
+ backup_char(tmp);
+ }
+ if(distepoch != NULL) *distepoch = _distepoch ? _distepoch+1 : NULL;
+ if (disttag != NULL || release != NULL || version != NULL || name != NULL) {
+ if ((_disttag = strrchr(pkg->info, '-')) != NULL && (strstr(pkg->provides, _disttag)) == NULL) {
+ backup_char(_disttag);
+ } else _disttag = NULL;
+ if (disttag != NULL) *disttag = _disttag ? _disttag + 1: NULL;
+ if ((release != NULL || version != NULL || name != NULL) && (_release = strrchr(pkg->info, '-')) != NULL) {
+ backup_char(_release);
+ if (release != NULL) *release = _release + 1;
+ if ((version != NULL || name != NULL) && (_version = strrchr(pkg->info, '-')) != NULL) {
+ backup_char(_version);
+ if (version != NULL) *version = _version + 1;
+ if (name != NULL) *name = pkg->info;
+ }
}
}
}
@@ -1872,7 +1874,6 @@ Pkg_epoch(pkg)
int epoch;
CODE:
get_fullname_parts(pkg, NULL, &epoch, NULL, NULL, NULL, NULL, NULL, NULL);
- restore_chars();
RETVAL = epoch;
OUTPUT:
RETVAL