diff options
author | Panu Matilainen <pmatilai@redhat.com> | 2009-10-17 12:15:29 +0300 |
---|---|---|
committer | Panu Matilainen <pmatilai@redhat.com> | 2009-10-17 12:15:29 +0300 |
commit | 9707b5478bbad7251810247b2383f91b5bbabc16 (patch) | |
tree | 49541e9ff7def15fc2bd20f5ce962ccef01b6320 /rpmio | |
parent | 98cd707af0f284eeb4cf5864fbb14445d529bf31 (diff) | |
download | rpm-9707b5478bbad7251810247b2383f91b5bbabc16.tar.gz rpm-9707b5478bbad7251810247b2383f91b5bbabc16.tar.bz2 rpm-9707b5478bbad7251810247b2383f91b5bbabc16.zip |
Unbreak lzdio/xzdio
- revert part of b0d1038190be5cb4b45e2c2c7c84ee7022164ba2 which broke
the split-personality lzdio/xzdio
Diffstat (limited to 'rpmio')
-rw-r--r-- | rpmio/rpmio.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/rpmio/rpmio.c b/rpmio/rpmio.c index e9306dd0d..6473d5577 100644 --- a/rpmio/rpmio.c +++ b/rpmio/rpmio.c @@ -1323,12 +1323,16 @@ static ssize_t lzwrite(LZFILE *lzfile, void *buf, size_t len) static void * lzdFileno(FD_t fd) { - return iotFileno(fd, lzdio); -} - -static void * xzdFileno(FD_t fd) -{ - return iotFileno(fd, xzdio); + void * rc = NULL; + FDSANE(fd); + for (int i = fd->nfps; i >= 0; i--) { + FDSTACK_t * fps = &fd->fps[i]; + if (fps->io != xzdio && fps->io != lzdio) + continue; + rc = fps->fp; + break; + } + return rc; } static FD_t xzdOpen(const char * path, const char * mode) @@ -1465,7 +1469,7 @@ DBGIO(fd, (stderr, "==>\tlzdClose(%p) rc %lx %s\n", cookie, (unsigned long)rc, f static struct FDIO_s xzdio_s = { lzdRead, lzdWrite, fdSeekNot, lzdClose, NULL, NULL, NULL, fdFileno, - NULL, xzdOpen, xzdFileno, lzdFlush + NULL, xzdOpen, lzdFileno, lzdFlush }; static const FDIO_t xzdio = &xzdio_s; |