aboutsummaryrefslogtreecommitdiffstats
path: root/URPM.xs
diff options
context:
space:
mode:
Diffstat (limited to 'URPM.xs')
-rw-r--r--URPM.xs23
1 files changed, 23 insertions, 0 deletions
diff --git a/URPM.xs b/URPM.xs
index 6db9d48..1f384d7 100644
--- a/URPM.xs
+++ b/URPM.xs
@@ -4064,3 +4064,26 @@ Urpm_import_pubkey(...)
#endif
OUTPUT:
RETVAL
+
+void
+Urpm_stream2header(pio)
+ PerlIO *pio;
+ PREINIT:
+ FILE *fp;
+ FD_t fd;
+ URPM__Package pkg;
+ PPCODE:
+ if (!(fp = PerlIO_findFILE(pio))) croak("Can't get perlio");
+ if ((fd = fdDup(fileno(fp)))) {
+ pkg = (URPM__Package)malloc(sizeof(struct s_Package));
+ memset(pkg, 0, sizeof(struct s_Package));
+ pkg->h = headerRead(fd, HEADER_MAGIC_YES);
+ if (pkg->h) {
+ SV *sv_pkg;
+ EXTEND(SP, 1);
+ sv_pkg = sv_newmortal();
+ sv_setref_pv(sv_pkg, "URPM::Package", (void*)pkg);
+ PUSHs(sv_pkg);
+ }
+ Fclose(fd);
+ }