RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  [EMAIL PROTECTED]
  Module: rpm                              Date:   07-Jul-2008 23:44:07
  Branch: HEAD                             Handle: 2008070721440600

  Added files:
    rpm/rpmio               gzdio.c
  Modified files:
    rpm                     CHANGES Doxyfile.in
    rpm/po                  POTFILES.in
    rpm/rpmio               Makefile.am bzdio.c lzdio.c rpmio.c

  Log:
    - make gzdio.c standalone.

  Summary:
    Revision    Changes     Path
    1.2473      +1  -0      rpm/CHANGES
    2.93        +1  -0      rpm/Doxyfile.in
    1.72        +2  -0      rpm/po/POTFILES.in
    1.184       +1  -1      rpm/rpmio/Makefile.am
    2.2         +3  -1      rpm/rpmio/bzdio.c
    2.1         +244 -0     rpm/rpmio/gzdio.c
    1.9         +3  -1      rpm/rpmio/lzdio.c
    1.141       +2  -233    rpm/rpmio/rpmio.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.2472 -r1.2473 CHANGES
  --- rpm/CHANGES       7 Jul 2008 21:23:09 -0000       1.2472
  +++ rpm/CHANGES       7 Jul 2008 21:44:06 -0000       1.2473
  @@ -1,5 +1,6 @@
   
   5.1.0 -> 5.2a0:
  +    - jbj: make gzdio.c standalone.
       - rpm.org: Make verifyAttrs and virtualFileAttributes static.
       - rpm.org: Teach Fflush about lzdio.
       - jbj: add _flush to FDIO_t, make bzdio.c standalone.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/Doxyfile.in
  ============================================================================
  $ cvs diff -u -r2.92 -r2.93 Doxyfile.in
  --- rpm/Doxyfile.in   7 Jul 2008 21:16:53 -0000       2.92
  +++ rpm/Doxyfile.in   7 Jul 2008 21:44:06 -0000       2.93
  @@ -590,6 +590,7 @@
                            @top_srcdir@/rpmio/fts.c \
                            @top_srcdir@/rpmio/fts.h \
                            @top_srcdir@/rpmio/getpass.c \
  +                         @top_srcdir@/rpmio/gzdio.c \
                            @top_srcdir@/rpmio/iosm.c \
                            @top_srcdir@/rpmio/iosm.h \
                            @top_srcdir@/rpmio/lookup3.c \
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/po/POTFILES.in
  ============================================================================
  $ cvs diff -u -r1.71 -r1.72 POTFILES.in
  --- rpm/po/POTFILES.in        7 Jul 2008 21:16:54 -0000       1.71
  +++ rpm/po/POTFILES.in        7 Jul 2008 21:44:06 -0000       1.72
  @@ -75,6 +75,8 @@
   rpmio/digest.c
   rpmio/fts.c
   rpmio/getpass.c
  +rpmio/gzdio.c
  +rpmio/iosm.c
   rpmio/lookup3.c
   rpmio/lzdio.c
   rpmio/macro.c
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/Makefile.am
  ============================================================================
  $ cvs diff -u -r1.183 -r1.184 Makefile.am
  --- rpm/rpmio/Makefile.am     7 Jul 2008 21:16:54 -0000       1.183
  +++ rpm/rpmio/Makefile.am     7 Jul 2008 21:44:06 -0000       1.184
  @@ -70,7 +70,7 @@
   usrlib_LTLIBRARIES = librpmio.la
   librpmio_la_SOURCES = \
        ar.c argv.c bzdio.c cpio.c digest.c fts.c getdate.c getpass.c \
  -     iosm.c lzdio.c macro.c mire.c mount.c \
  +     gzdio.c iosm.c lzdio.c macro.c mire.c mount.c \
        md2.c md4.c poptIO.c rmd128.c rmd160.c rmd256.c rmd320.c sha224.c \
        salsa10.c salsa20.c tiger.c \
        rpmbc.c rpmdav.c rpmgc.c rpmhash.c rpmhook.c rpmio.c rpmio-stub.c \
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/bzdio.c
  ============================================================================
  $ cvs diff -u -r2.1 -r2.2 bzdio.c
  --- rpm/rpmio/bzdio.c 7 Jul 2008 21:16:54 -0000       2.1
  +++ rpm/rpmio/bzdio.c 7 Jul 2008 21:44:06 -0000       2.2
  @@ -1,4 +1,6 @@
  -/* Support for BZIP2 compression library.
  +/** \ingroup rpmio
  + * \file rpmio/bzdio.c
  + * Support for BZIP2 compression library.
    */
   
   #include "system.h"
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/gzdio.c
  ============================================================================
  $ cvs diff -u -r0 -r2.1 gzdio.c
  --- /dev/null 2008-07-07 23:44:00 +0200
  +++ gzdio.c   2008-07-07 23:44:07 +0200
  @@ -0,0 +1,244 @@
  +/** \ingroup rpmio
  + * \file rpmio/gzdio.c
  + * Support for ZLIB compression library.
  + */
  +
  +#include "system.h"
  +#include "rpmio_internal.h"
  +#include <rpmmacro.h>
  +#include <rpmcb.h>
  +
  +#ifdef       HAVE_ZLIB_H
  +
  +/[EMAIL PROTECTED]@*/
  +#include <zlib.h>
  +/[EMAIL PROTECTED]@*/
  +
  +#include "debug.h"
  +
  +/[EMAIL PROTECTED] FD_t @*/
  +
  +#define      GZDONLY(fd)     assert(fdGetIo(fd) == gzdio)
  +
  +/* =============================================================== */
  +/[EMAIL PROTECTED]@*/
  +
  +static inline /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ void * 
gzdFileno(FD_t fd)
  +     /[EMAIL PROTECTED]/
  +{
  +    void * rc = NULL;
  +    int i;
  +
  +    FDSANE(fd);
  +    for (i = fd->nfps; i >= 0; i--) {
  +     FDSTACK_t * fps = &fd->fps[i];
  +     if (fps->io != gzdio)
  +         continue;
  +     rc = fps->fp;
  +     break;
  +    }
  +
  +    return rc;
  +}
  +
  +static /[EMAIL PROTECTED]@*/
  +FD_t gzdOpen(const char * path, const char * fmode)
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +{
  +    FD_t fd;
  +    gzFile gzfile;
  +    mode_t mode = (fmode && fmode[0] == 'w' ? O_WRONLY : O_RDONLY);
  +
  +    if ((gzfile = gzopen(path, fmode)) == NULL)
  +     return NULL;
  +    fd = fdNew("open (gzdOpen)");
  +    fdPop(fd); fdPush(fd, gzdio, gzfile, -1);
  +    fdSetOpen(fd, path, -1, mode);
  +
  +DBGIO(fd, (stderr, "==>\tgzdOpen(\"%s\", \"%s\") fd %p %s\n", path, fmode, 
(fd ? fd : NULL), fdbg(fd)));
  +    return fdLink(fd, "gzdOpen");
  +}
  +
  +static /[EMAIL PROTECTED]@*/ FD_t gzdFdopen(void * cookie, const char *fmode)
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +{
  +    FD_t fd = c2f(cookie);
  +    int fdno;
  +    gzFile gzfile;
  +
  +    if (fmode == NULL) return NULL;
  +    fdno = fdFileno(fd);
  +    fdSetFdno(fd, -1);               /* XXX skip the fdio close */
  +    if (fdno < 0) return NULL;
  +    gzfile = gzdopen(fdno, fmode);
  +    if (gzfile == NULL) return NULL;
  +
  +    fdPush(fd, gzdio, gzfile, fdno);         /* Push gzdio onto stack */
  +
  +    return fdLink(fd, "gzdFdopen");
  +}
  +
  +static int gzdFlush(void * cookie)
  +     /[EMAIL PROTECTED] fileSystem @*/
  +     /[EMAIL PROTECTED] fileSystem @*/
  +{
  +    FD_t fd = c2f(cookie);
  +    gzFile gzfile = gzdFileno(fd);
  +    if (gzfile == NULL) return -2;
  +    return gzflush(gzfile, Z_SYNC_FLUSH);    /* XXX W2DO? */
  +}
  +
  +/* =============================================================== */
  +static ssize_t gzdRead(void * cookie, /[EMAIL PROTECTED]@*/ char * buf, 
size_t count)
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +     /[EMAIL PROTECTED] buf, fileSystem, internalState @*/
  +{
  +    FD_t fd = c2f(cookie);
  +    gzFile gzfile;
  +    ssize_t rc;
  +
  +    if (fd == NULL || fd->bytesRemain == 0) return 0;        /* XXX simulate 
EOF */
  +
  +    gzfile = gzdFileno(fd);
  +    if (gzfile == NULL) return -2;   /* XXX can't happen */
  +
  +    fdstat_enter(fd, FDSTAT_READ);
  +    rc = gzread(gzfile, buf, (unsigned)count);
  +DBGIO(fd, (stderr, "==>\tgzdRead(%p,%p,%u) rc %lx %s\n", cookie, buf, 
(unsigned)count, (unsigned long)rc, fdbg(fd)));
  +    if (rc < 0) {
  +     int zerror = 0;
  +     fd->errcookie = gzerror(gzfile, &zerror);
  +     if (zerror == Z_ERRNO) {
  +         fd->syserrno = errno;
  +         fd->errcookie = strerror(fd->syserrno);
  +     }
  +    } else if (rc >= 0) {
  +     fdstat_exit(fd, FDSTAT_READ, rc);
  +     if (fd->ndigests && rc > 0) fdUpdateDigests(fd, (void *)buf, rc);
  +    }
  +    return rc;
  +}
  +
  +static ssize_t gzdWrite(void * cookie, const char * buf, size_t count)
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +{
  +    FD_t fd = c2f(cookie);
  +    gzFile gzfile;
  +    ssize_t rc;
  +
  +    if (fd == NULL || fd->bytesRemain == 0) return 0;        /* XXX simulate 
EOF */
  +
  +    if (fd->ndigests && count > 0) fdUpdateDigests(fd, (void *)buf, count);
  +
  +    gzfile = gzdFileno(fd);
  +    if (gzfile == NULL) return -2;   /* XXX can't happen */
  +
  +    fdstat_enter(fd, FDSTAT_WRITE);
  +    rc = gzwrite(gzfile, (void *)buf, (unsigned)count);
  +DBGIO(fd, (stderr, "==>\tgzdWrite(%p,%p,%u) rc %lx %s\n", cookie, buf, 
(unsigned)count, (unsigned long)rc, fdbg(fd)));
  +    if (rc < 0) {
  +     int zerror = 0;
  +     fd->errcookie = gzerror(gzfile, &zerror);
  +     if (zerror == Z_ERRNO) {
  +         fd->syserrno = errno;
  +         fd->errcookie = strerror(fd->syserrno);
  +     }
  +    } else if (rc > 0) {
  +     fdstat_exit(fd, FDSTAT_WRITE, rc);
  +    }
  +    return rc;
  +}
  +
  +/* XXX zlib-1.0.4 has not */
  +#define      HAVE_GZSEEK     /* XXX autoFu doesn't set this anymore. */
  +static inline int gzdSeek(void * cookie, _libio_pos_t pos, int whence)
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +{
  +    int rc;
  +#if defined(HAVE_GZSEEK)
  +#ifdef USE_COOKIE_SEEK_POINTER
  +    _IO_off64_t p = *pos;
  +#else
  +    off_t p = pos;
  +#endif
  +    FD_t fd = c2f(cookie);
  +    gzFile gzfile;
  +
  +    if (fd == NULL) return -2;
  +    assert(fd->bytesRemain == -1);   /* XXX FIXME */
  +
  +    gzfile = gzdFileno(fd);
  +    if (gzfile == NULL) return -2;   /* XXX can't happen */
  +
  +    fdstat_enter(fd, FDSTAT_SEEK);
  +    rc = gzseek(gzfile, (long)p, whence);
  +DBGIO(fd, (stderr, "==>\tgzdSeek(%p,%ld,%d) rc %lx %s\n", cookie, (long)p, 
whence, (unsigned long)rc, fdbg(fd)));
  +    if (rc < 0) {
  +     int zerror = 0;
  +     fd->errcookie = gzerror(gzfile, &zerror);
  +     if (zerror == Z_ERRNO) {
  +         fd->syserrno = errno;
  +         fd->errcookie = strerror(fd->syserrno);
  +     }
  +    } else if (rc >= 0) {
  +     fdstat_exit(fd, FDSTAT_SEEK, rc);
  +    }
  +#else
  +    rc = -2;
  +#endif
  +    return rc;
  +}
  +
  +static int gzdClose( /[EMAIL PROTECTED]@*/ void * cookie)
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +{
  +    FD_t fd = c2f(cookie);
  +    gzFile gzfile;
  +    int rc;
  +
  +    gzfile = gzdFileno(fd);
  +    if (gzfile == NULL) return -2;   /* XXX can't happen */
  +
  +    fdstat_enter(fd, FDSTAT_CLOSE);
  +    /[EMAIL PROTECTED]@*/
  +    rc = gzclose(gzfile);
  +    /[EMAIL PROTECTED]@*/
  +
  +    /* XXX TODO: preserve fd if errors */
  +
  +    if (fd) {
  +DBGIO(fd, (stderr, "==>\tgzdClose(%p) zerror %d %s\n", cookie, rc, 
fdbg(fd)));
  +     if (rc < 0) {
  +         fd->errcookie = "gzclose error";
  +         if (rc == Z_ERRNO) {
  +             fd->syserrno = errno;
  +             fd->errcookie = strerror(fd->syserrno);
  +         }
  +     } else if (rc >= 0) {
  +         fdstat_exit(fd, FDSTAT_CLOSE, rc);
  +     }
  +    }
  +
  +DBGIO(fd, (stderr, "==>\tgzdClose(%p) rc %lx %s\n", cookie, (unsigned 
long)rc, fdbg(fd)));
  +
  +    if (_rpmio_debug || rpmIsDebug()) fdstat_print(fd, "GZDIO", stderr);
  +    if (rc == 0)
  +     fd = fdFree(fd, "open (gzdClose)");
  +    return rc;
  +}
  +
  +/[EMAIL PROTECTED]@*/ /* LCL: function typedefs */
  +static struct FDIO_s gzdio_s = {
  +  gzdRead, gzdWrite, gzdSeek, gzdClose,      gzdOpen, gzdFdopen, gzdFlush,
  +};
  +/[EMAIL PROTECTED]@*/
  +
  +FDIO_t gzdio = /[EMAIL PROTECTED]@*/ &gzdio_s /[EMAIL PROTECTED]@*/ ;
  +
  +/[EMAIL PROTECTED]@*/
  +#endif       /* HAVE_ZLIB_H */
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/lzdio.c
  ============================================================================
  $ cvs diff -u -r1.8 -r1.9 lzdio.c
  --- rpm/rpmio/lzdio.c 7 Jul 2008 21:16:54 -0000       1.8
  +++ rpm/rpmio/lzdio.c 7 Jul 2008 21:44:06 -0000       1.9
  @@ -1,4 +1,6 @@
  -/* Support for LZMA library.
  +/** \ingroup rpmio
  + * \file rpmio/lzdio.c
  + * Support for LZMA compression library.
    */
   
   #include "system.h"
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmio.c
  ============================================================================
  $ cvs diff -u -r1.140 -r1.141 rpmio.c
  --- rpm/rpmio/rpmio.c 7 Jul 2008 21:16:54 -0000       1.140
  +++ rpm/rpmio/rpmio.c 7 Jul 2008 21:44:06 -0000       1.141
  @@ -123,7 +123,6 @@
   #define FDCPIOPOS(fd)        (fd ? ((FD_t)fd)->fd_cpioPos : -99)
   
   #define      FDONLY(fd)      assert(fdGetIo(fd) == fdio)
  -#define      GZDONLY(fd)     assert(fdGetIo(fd) == gzdio)
   
   #define      UFDONLY(fd)     /* assert(fdGetIo(fd) == ufdio) */
   
  @@ -2305,236 +2304,6 @@
   FDIO_t ufdio = /[EMAIL PROTECTED]@*/ &ufdio_s /[EMAIL PROTECTED]@*/ ;
   
   /* =============================================================== */
  -/* Support for GZIP library.
  - */
  -#ifdef       HAVE_ZLIB_H
  -/[EMAIL PROTECTED]@*/
  -
  -/[EMAIL PROTECTED]@*/
  -#include <zlib.h>
  -/[EMAIL PROTECTED]@*/
  -
  -static inline /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ void * 
gzdFileno(FD_t fd)
  -     /[EMAIL PROTECTED]/
  -{
  -    void * rc = NULL;
  -    int i;
  -
  -    FDSANE(fd);
  -    for (i = fd->nfps; i >= 0; i--) {
  -     FDSTACK_t * fps = &fd->fps[i];
  -     if (fps->io != gzdio)
  -         continue;
  -     rc = fps->fp;
  -     break;
  -    }
  -
  -    return rc;
  -}
  -
  -static /[EMAIL PROTECTED]@*/
  -FD_t gzdOpen(const char * path, const char * fmode)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -{
  -    FD_t fd;
  -    gzFile gzfile;
  -    mode_t mode = (fmode && fmode[0] == 'w' ? O_WRONLY : O_RDONLY);
  -
  -    if ((gzfile = gzopen(path, fmode)) == NULL)
  -     return NULL;
  -    fd = fdNew("open (gzdOpen)");
  -    fdPop(fd); fdPush(fd, gzdio, gzfile, -1);
  -    fdSetOpen(fd, path, -1, mode);
  -
  -DBGIO(fd, (stderr, "==>\tgzdOpen(\"%s\", \"%s\") fd %p %s\n", path, fmode, 
(fd ? fd : NULL), fdbg(fd)));
  -    return fdLink(fd, "gzdOpen");
  -}
  -
  -static /[EMAIL PROTECTED]@*/ FD_t gzdFdopen(void * cookie, const char *fmode)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -{
  -    FD_t fd = c2f(cookie);
  -    int fdno;
  -    gzFile gzfile;
  -
  -    if (fmode == NULL) return NULL;
  -    fdno = fdFileno(fd);
  -    fdSetFdno(fd, -1);               /* XXX skip the fdio close */
  -    if (fdno < 0) return NULL;
  -    gzfile = gzdopen(fdno, fmode);
  -    if (gzfile == NULL) return NULL;
  -
  -    fdPush(fd, gzdio, gzfile, fdno);         /* Push gzdio onto stack */
  -
  -    return fdLink(fd, "gzdFdopen");
  -}
  -
  -static int gzdFlush(void * cookie)
  -     /[EMAIL PROTECTED] fileSystem @*/
  -     /[EMAIL PROTECTED] fileSystem @*/
  -{
  -    FD_t fd = c2f(cookie);
  -    gzFile gzfile = gzdFileno(fd);
  -    if (gzfile == NULL) return -2;
  -    return gzflush(gzfile, Z_SYNC_FLUSH);    /* XXX W2DO? */
  -}
  -
  -/* =============================================================== */
  -static ssize_t gzdRead(void * cookie, /[EMAIL PROTECTED]@*/ char * buf, 
size_t count)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] buf, fileSystem, internalState @*/
  -{
  -    FD_t fd = c2f(cookie);
  -    gzFile gzfile;
  -    ssize_t rc;
  -
  -    if (fd == NULL || fd->bytesRemain == 0) return 0;        /* XXX simulate 
EOF */
  -
  -    gzfile = gzdFileno(fd);
  -    if (gzfile == NULL) return -2;   /* XXX can't happen */
  -
  -    fdstat_enter(fd, FDSTAT_READ);
  -    rc = gzread(gzfile, buf, (unsigned)count);
  -DBGIO(fd, (stderr, "==>\tgzdRead(%p,%p,%u) rc %lx %s\n", cookie, buf, 
(unsigned)count, (unsigned long)rc, fdbg(fd)));
  -    if (rc < 0) {
  -     int zerror = 0;
  -     fd->errcookie = gzerror(gzfile, &zerror);
  -     if (zerror == Z_ERRNO) {
  -         fd->syserrno = errno;
  -         fd->errcookie = strerror(fd->syserrno);
  -     }
  -    } else if (rc >= 0) {
  -     fdstat_exit(fd, FDSTAT_READ, rc);
  -     if (fd->ndigests && rc > 0) fdUpdateDigests(fd, (void *)buf, rc);
  -    }
  -    return rc;
  -}
  -
  -static ssize_t gzdWrite(void * cookie, const char * buf, size_t count)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -{
  -    FD_t fd = c2f(cookie);
  -    gzFile gzfile;
  -    ssize_t rc;
  -
  -    if (fd == NULL || fd->bytesRemain == 0) return 0;        /* XXX simulate 
EOF */
  -
  -    if (fd->ndigests && count > 0) fdUpdateDigests(fd, (void *)buf, count);
  -
  -    gzfile = gzdFileno(fd);
  -    if (gzfile == NULL) return -2;   /* XXX can't happen */
  -
  -    fdstat_enter(fd, FDSTAT_WRITE);
  -    rc = gzwrite(gzfile, (void *)buf, (unsigned)count);
  -DBGIO(fd, (stderr, "==>\tgzdWrite(%p,%p,%u) rc %lx %s\n", cookie, buf, 
(unsigned)count, (unsigned long)rc, fdbg(fd)));
  -    if (rc < 0) {
  -     int zerror = 0;
  -     fd->errcookie = gzerror(gzfile, &zerror);
  -     if (zerror == Z_ERRNO) {
  -         fd->syserrno = errno;
  -         fd->errcookie = strerror(fd->syserrno);
  -     }
  -    } else if (rc > 0) {
  -     fdstat_exit(fd, FDSTAT_WRITE, rc);
  -    }
  -    return rc;
  -}
  -
  -/* XXX zlib-1.0.4 has not */
  -#define      HAVE_GZSEEK     /* XXX autoFu doesn't set this anymore. */
  -static inline int gzdSeek(void * cookie, _libio_pos_t pos, int whence)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -{
  -    int rc;
  -#if defined(HAVE_GZSEEK)
  -#ifdef USE_COOKIE_SEEK_POINTER
  -    _IO_off64_t p = *pos;
  -#else
  -    off_t p = pos;
  -#endif
  -    FD_t fd = c2f(cookie);
  -    gzFile gzfile;
  -
  -    if (fd == NULL) return -2;
  -    assert(fd->bytesRemain == -1);   /* XXX FIXME */
  -
  -    gzfile = gzdFileno(fd);
  -    if (gzfile == NULL) return -2;   /* XXX can't happen */
  -
  -    fdstat_enter(fd, FDSTAT_SEEK);
  -    rc = gzseek(gzfile, (long)p, whence);
  -DBGIO(fd, (stderr, "==>\tgzdSeek(%p,%ld,%d) rc %lx %s\n", cookie, (long)p, 
whence, (unsigned long)rc, fdbg(fd)));
  -    if (rc < 0) {
  -     int zerror = 0;
  -     fd->errcookie = gzerror(gzfile, &zerror);
  -     if (zerror == Z_ERRNO) {
  -         fd->syserrno = errno;
  -         fd->errcookie = strerror(fd->syserrno);
  -     }
  -    } else if (rc >= 0) {
  -     fdstat_exit(fd, FDSTAT_SEEK, rc);
  -    }
  -#else
  -    rc = -2;
  -#endif
  -    return rc;
  -}
  -
  -static int gzdClose( /[EMAIL PROTECTED]@*/ void * cookie)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -{
  -    FD_t fd = c2f(cookie);
  -    gzFile gzfile;
  -    int rc;
  -
  -    gzfile = gzdFileno(fd);
  -    if (gzfile == NULL) return -2;   /* XXX can't happen */
  -
  -    fdstat_enter(fd, FDSTAT_CLOSE);
  -    /[EMAIL PROTECTED]@*/
  -    rc = gzclose(gzfile);
  -    /[EMAIL PROTECTED]@*/
  -
  -    /* XXX TODO: preserve fd if errors */
  -
  -    if (fd) {
  -DBGIO(fd, (stderr, "==>\tgzdClose(%p) zerror %d %s\n", cookie, rc, 
fdbg(fd)));
  -     if (rc < 0) {
  -         fd->errcookie = "gzclose error";
  -         if (rc == Z_ERRNO) {
  -             fd->syserrno = errno;
  -             fd->errcookie = strerror(fd->syserrno);
  -         }
  -     } else if (rc >= 0) {
  -         fdstat_exit(fd, FDSTAT_CLOSE, rc);
  -     }
  -    }
  -
  -DBGIO(fd, (stderr, "==>\tgzdClose(%p) rc %lx %s\n", cookie, (unsigned 
long)rc, fdbg(fd)));
  -
  -    if (_rpmio_debug || rpmIsDebug()) fdstat_print(fd, "GZDIO", stderr);
  -    if (rc == 0)
  -     fd = fdFree(fd, "open (gzdClose)");
  -    return rc;
  -}
  -
  -/[EMAIL PROTECTED]@*/ /* LCL: function typedefs */
  -static struct FDIO_s gzdio_s = {
  -  gzdRead, gzdWrite, gzdSeek, gzdClose,      gzdOpen, gzdFdopen, gzdFlush,
  -};
  -/[EMAIL PROTECTED]@*/
  -
  -FDIO_t gzdio = /[EMAIL PROTECTED]@*/ &gzdio_s /[EMAIL PROTECTED]@*/ ;
  -
  -/[EMAIL PROTECTED]@*/
  -#endif       /* HAVE_ZLIB_H */
  -
  -/* =============================================================== */
   /[EMAIL PROTECTED]@*/
   static const char * getFdErrstr (FD_t fd)
        /[EMAIL PROTECTED]/
  @@ -3043,8 +2812,8 @@
   
       vh = fdGetFp(fd);
   #if defined(HAVE_ZLIB_H)
  -    if (vh && fdGetIo(fd) == gzdio)
  -     return gzdFlush(vh);
  +    if (vh && fdGetIo(fd) == gzdio && gzdio->_flush != NULL)
  +     return (*gzdio->_flush) ((void *)fd);
   #endif
   #if defined(HAVE_BZLIB_H)
       if (vh && fdGetIo(fd) == bzdio && bzdio->_flush != NULL)
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                [email protected]

Reply via email to