summaryrefslogtreecommitdiff
path: root/rpmio
diff options
context:
space:
mode:
authorPanu Matilainen <pmatilai@redhat.com>2009-10-17 12:15:29 +0300
committerPanu Matilainen <pmatilai@redhat.com>2009-10-17 12:15:29 +0300
commit9707b5478bbad7251810247b2383f91b5bbabc16 (patch)
tree49541e9ff7def15fc2bd20f5ce962ccef01b6320 /rpmio
parent98cd707af0f284eeb4cf5864fbb14445d529bf31 (diff)
downloadrpm-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.c18
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;