diff options
-rw-r--r-- | rpmtools.pm | 5 | ||||
-rw-r--r-- | rpmtools.spec | 5 | ||||
-rw-r--r-- | rpmtools.xs | 10 |
3 files changed, 14 insertions, 6 deletions
diff --git a/rpmtools.pm b/rpmtools.pm index 1f29563..891321a 100644 --- a/rpmtools.pm +++ b/rpmtools.pm @@ -150,10 +150,7 @@ sub build_hdlist { sub read_rpms { my ($params, @rpms) = @_; - foreach (@rpms) { - rpmtools::_parse_($_, $params->{flags}, $params->{info}, $params->{provides}); - } - 1; + map { rpmtools::_parse_($_, $params->{flags}, $params->{info}, $params->{provides}) } @rpms; } #- compute dependancies, result in stored in info values of params. diff --git a/rpmtools.spec b/rpmtools.spec index 13b7d1f..0c1492f 100644 --- a/rpmtools.spec +++ b/rpmtools.spec @@ -1,5 +1,5 @@ %define name rpmtools -%define release 3mdk +%define release 4mdk # do not modify here, see Makefile in the CVS %define version 2.3 @@ -51,6 +51,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/perl5/man/*/* %changelog +* Mon Feb 19 2001 François Pons <fpons@mandrakesoft.com> 2.3-4mdk +- _parse_ returns now fullname of package read. + * Mon Feb 19 2001 François Pons <fpons@mandrakesoft.com> 2.3-3mdk - fixed version_compare to return number. - fixed relocate_depslist for package with source to keep. diff --git a/rpmtools.xs b/rpmtools.xs index dac839b..4aeebd1 100644 --- a/rpmtools.xs +++ b/rpmtools.xs @@ -428,7 +428,7 @@ _parse_(fileno_or_rpmfile, flag, info, ...) SV* info PREINIT: SV* provides = &PL_sv_undef; - CODE: + PPCODE: if (items > 3) provides = ST(3); if (SvROK(flag) && SvROK(info) && (provides == &PL_sv_undef || SvROK(provides))) { @@ -473,6 +473,10 @@ _parse_(fileno_or_rpmfile, flag, info, ...) ((header=headerRead(fd, HEADER_MAGIC_YES)) != 0) : ((fd_is_hdlist = -1), rpmReadPackageHeader(fd, &header, &i, NULL, NULL) == 0)) : 0) { char *name = get_name(header, RPMTAG_NAME); + char *version = get_name(header, RPMTAG_VERSION); + char *release = get_name(header, RPMTAG_RELEASE); + char *fullname = (char*)alloca(strlen(name)+strlen(version)+strlen(release)+3); + STRLEN fullname_len = sprintf(fullname, "%s-%s-%s", name, version, release); HV* header_info = get_info(header, bflag, iprovides); /* once the hash header_info is built, store a reference to it @@ -480,6 +484,10 @@ _parse_(fileno_or_rpmfile, flag, info, ...) note sv_name is not incremented here, it has the default value of before. */ hv_store(iinfo, name, strlen(name), newRV_noinc((SV*)header_info), 0); + /* return fullname on stack */ + EXTEND(SP, 1); + PUSHs(sv_2mortal(newSVpv(fullname, fullname_len))); + /* dispose of some memory */ headerFree(header); } |