From 18f3fae42ec6c7feaafc65bf222a2b020760646b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20=C3=98yvind=20Karlsen?= Date: Tue, 1 Feb 2011 21:33:30 +0000 Subject: strip distepoch from %PROVIDEVERSION & %PROVIDEREQUIRES of rpm headers --- URPM.xs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/URPM.xs b/URPM.xs index 588b675..7d6e7c6 100644 --- a/URPM.xs +++ b/URPM.xs @@ -225,6 +225,22 @@ get_int(Header header, int32_t tag) { return ep ? *ep : 0; } +static void +strip_distepoch(Header header, int32_t tag) { + struct rpmtd_s val; + + headerGet(header, tag, &val, HEADERGET_DEFAULT); + char **list = val.data; + for (val.ix = 0; val.ix < (int)val.count; val.ix++) { + char *tmp = strchr(list[val.ix], '-'); + if(tmp) { + tmp = strchr(tmp, ':'); + if(tmp) { + memset(tmp, 0, strlen(tmp)); + } + } + } +} static int sigsize_to_filesize(int sigsize) { return sigsize + 440; /* 440 is the rpm header size (?) empirical, but works */ @@ -3129,6 +3145,8 @@ Trans_add(trans, pkg, ...) } } } + strip_distepoch(pkg->h, RPMTAG_PROVIDEVERSION); + strip_distepoch(pkg->h, RPMTAG_REQUIREVERSION); RETVAL = rpmtsAddInstallElement(trans->ts, pkg->h, (fnpyKey)(1+(long)(pkg->flag & FLAG_ID)), update, relocations) == 0; /* free allocated memory, check rpm is copying it just above, at least in 4.0.4 */ #ifndef RPM_ORG -- cgit v1.2.1