diff options
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | URPM.pm | 2 | ||||
-rw-r--r-- | URPM.xs | 30 |
3 files changed, 34 insertions, 0 deletions
@@ -1,3 +1,5 @@ +- API: add EVR method + Version 4.14 - 21 September 2012 - API: add resolve_requested_suggests() @@ -532,6 +532,8 @@ This is only used when faking a URPM::DB: $urpm can be used as-a $db =item $package->epoch() +=item $package->EVR() + =item $package->excludearchs() =item $package->exclusivearchs() @@ -1437,6 +1437,36 @@ Pkg_release(pkg) } void +Pkg_EVR(pkg) + URPM::Package pkg + PPCODE: + if (pkg->info) { + char *s, *eos; + char *version, *arch; + int epoch; + + if ((s = strchr(pkg->info, '@')) != NULL) { + if ((eos = strchr(s+1, '@')) != NULL) + *eos = 0; /* mark end of string to enable searching backwards */ + epoch = atoi(s+1); + if (eos != NULL) *eos = '@'; + } else + epoch = 0; + get_fullname_parts(pkg, NULL, &version, NULL, &arch, &eos); + if (epoch == 0) + mXPUSHs(newSVpv(version, arch-version-1)); + else { + char *res; + arch--; + *arch = '\0'; + asprintf(&res, "%d:%s", epoch, version); + mXPUSHs(newSVpv(res, 0)); + *arch = '.'; /* restore info string modified */ + } + } else if (pkg->h) + mXPUSHs(newSVpv(get_name(pkg->h, RPMTAG_EVR), 0)); + +void Pkg_arch(pkg) URPM::Package pkg PPCODE: |