diff options
author | Erik Troan <ewt@redhat.com> | 1999-06-07 16:20:28 +0000 |
---|---|---|
committer | Erik Troan <ewt@redhat.com> | 1999-06-07 16:20:28 +0000 |
commit | b618b84a39b515482a1f6d91ddbf30fa95c424b4 (patch) | |
tree | 429a21e55a319d1243aef21c50fae3f451f0fe37 /isys/cpio.c | |
parent | 9eb6ae369c87516c13854e4c02f24e7f1f848e77 (diff) | |
download | anaconda-b618b84a39b515482a1f6d91ddbf30fa95c424b4.tar.gz anaconda-b618b84a39b515482a1f6d91ddbf30fa95c424b4.tar.xz anaconda-b618b84a39b515482a1f6d91ddbf30fa95c424b4.zip |
*** empty log message ***
Diffstat (limited to 'isys/cpio.c')
-rw-r--r-- | isys/cpio.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/isys/cpio.c b/isys/cpio.c new file mode 100644 index 000000000..06e41502f --- /dev/null +++ b/isys/cpio.c @@ -0,0 +1,34 @@ +#include <fcntl.h> +#include <newt.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <zlib.h> + +#include "cpio.h" + +int installCpioFile(FD_t fd, char * cpioName, char * outName, int inWin) { + struct cpioFileMapping map; + int rc; + char * failedFile; + CFD_t cfdbuf, *cfd = &cfdbuf; + + if (outName) { + map.archivePath = cpioName; + map.fsPath = outName; + map.mapFlags = CPIO_MAP_PATH; + } + + cfd->cpioIoType = cpioIoTypeGzFd; + cfd->cpioGzFd = gzdFdopen(fdDup(fdFileno(fd)), "r"); + + rc = cpioInstallArchive(cfd, outName ? &map : NULL, 1, NULL, NULL, + &failedFile); + gzdClose(cfd->cpioGzFd); + + if (rc || access(outName, R_OK)) { + return -1; + } + + return 0; +} |