diff options
author | Olivier Thauvin <nanardon@mandriva.org> | 2006-01-19 11:36:57 +0000 |
---|---|---|
committer | Olivier Thauvin <nanardon@mandriva.org> | 2006-01-19 11:36:57 +0000 |
commit | ea0efef5a8e321c5950b1c27f08966fe8ed19ecd (patch) | |
tree | e4cd8fcf9e1501d4faa6414b7c08af86fe9a46f2 /URPM.xs | |
parent | c15e844f1a386540669911b7155de90c8e705c13 (diff) | |
download | perl-URPM-ea0efef5a8e321c5950b1c27f08966fe8ed19ecd.tar perl-URPM-ea0efef5a8e321c5950b1c27f08966fe8ed19ecd.tar.gz perl-URPM-ea0efef5a8e321c5950b1c27f08966fe8ed19ecd.tar.bz2 perl-URPM-ea0efef5a8e321c5950b1c27f08966fe8ed19ecd.tar.xz perl-URPM-ea0efef5a8e321c5950b1c27f08966fe8ed19ecd.zip |
- add Urpm_spec2srcheader(): return header of src.rpm from a specfile
Diffstat (limited to 'URPM.xs')
-rw-r--r-- | URPM.xs | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -34,6 +34,7 @@ #include <rpm/rpmps.h> #include <rpm/rpmpgp.h> #include <rpm/rpmcli.h> +#include <rpm/rpmbuild.h> struct s_Package { char *info; @@ -3646,6 +3647,33 @@ Urpm_stream2header(fp) } void +Urpm_spec2srcheader(specfile) + char *specfile + PREINIT: + rpmts ts = rpmtsCreate(); + URPM__Package pkg; + Spec spec = NULL; + PPCODE: +#define SPEC_ANYARCH 1 +#define SPEC_FORCE 1 + if (!parseSpec(ts, specfile, "/", NULL, 0, NULL, NULL, SPEC_ANYARCH, SPEC_FORCE)) { + spec = rpmtsSetSpec(ts, NULL); + if ( ! spec->sourceHeader) + initSourceHeader(spec); + pkg = (URPM__Package)malloc(sizeof(struct s_Package)); + memset(pkg, 0, sizeof(struct s_Package)); + pkg->h = headerLink(spec->sourceHeader); + SV *sv_pkg; + EXTEND(SP, 1); + sv_pkg = sv_newmortal(); + sv_setref_pv(sv_pkg, "URPM::Package", (void*)pkg); + PUSHs(sv_pkg); + spec = freeSpec(spec); + } + ts = rpmtsFree(ts); + + +void expand(name) char * name PPCODE: |