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:16:55
  Branch: HEAD                             Handle: 2008070721165301

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

  Log:
    - rpm.org: Teach Fflush about lzdio.
    - jbj: add _flush to FDIO_t, make bzdio.c standalone.

  Summary:
    Revision    Changes     Path
    1.2471      +2  -0      rpm/CHANGES
    2.92        +1  -0      rpm/Doxyfile.in
    1.71        +1  -0      rpm/po/POTFILES.in
    1.183       +1  -1      rpm/rpmio/Makefile.am
    2.1         +206 -0     rpm/rpmio/bzdio.c
    1.8         +3  -6      rpm/rpmio/lzdio.c
    1.140       +13 -201    rpm/rpmio/rpmio.c
    1.76        +7  -0      rpm/rpmio/rpmio.h
    1.29        +1  -1      rpm/rpmio/rpmurl.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.2470 -r1.2471 CHANGES
  --- rpm/CHANGES       7 Jul 2008 20:02:31 -0000       1.2470
  +++ rpm/CHANGES       7 Jul 2008 21:16:53 -0000       1.2471
  @@ -1,5 +1,7 @@
   
   5.1.0 -> 5.2a0:
  +    - rpm.org: Teach Fflush about lzdio.
  +    - jbj: add _flush to FDIO_t, make bzdio.c standalone.
       - jbj: rpmio: start deconstructing the ancient URL callback.
       - jbj: rpmwget: ... display connection state in wgetNotify.
       - jbj: rpmdav: pass the neon callback thru (*u->notify) to ...
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/Doxyfile.in
  ============================================================================
  $ cvs diff -u -r2.91 -r2.92 Doxyfile.in
  --- rpm/Doxyfile.in   4 Jun 2008 23:07:59 -0000       2.91
  +++ rpm/Doxyfile.in   7 Jul 2008 21:16:53 -0000       2.92
  @@ -583,6 +583,7 @@
                            @top_srcdir@/rpmio/ar.h \
                            @top_srcdir@/rpmio/argv.c \
                            @top_srcdir@/rpmio/argv.h \
  +                         @top_srcdir@/rpmio/bzdio.c \
                            @top_srcdir@/rpmio/cpio.c \
                            @top_srcdir@/rpmio/cpio.h \
                            @top_srcdir@/rpmio/digest.c \
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/po/POTFILES.in
  ============================================================================
  $ cvs diff -u -r1.70 -r1.71 POTFILES.in
  --- rpm/po/POTFILES.in        4 Jun 2008 23:08:00 -0000       1.70
  +++ rpm/po/POTFILES.in        7 Jul 2008 21:16:54 -0000       1.71
  @@ -70,6 +70,7 @@
   rpmdb/tagname.c
   rpmio/ar.c
   rpmio/argv.c
  +rpmio/bzdio.c
   rpmio/cpio.c
   rpmio/digest.c
   rpmio/fts.c
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/Makefile.am
  ============================================================================
  $ cvs diff -u -r1.182 -r1.183 Makefile.am
  --- rpm/rpmio/Makefile.am     2 Jul 2008 17:59:10 -0000       1.182
  +++ rpm/rpmio/Makefile.am     7 Jul 2008 21:16:54 -0000       1.183
  @@ -69,7 +69,7 @@
   usrlibdir = $(libdir)
   usrlib_LTLIBRARIES = librpmio.la
   librpmio_la_SOURCES = \
  -     ar.c argv.c cpio.c digest.c fts.c getdate.c getpass.c \
  +     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 \
        md2.c md4.c poptIO.c rmd128.c rmd160.c rmd256.c rmd320.c sha224.c \
        salsa10.c salsa20.c tiger.c \
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/bzdio.c
  ============================================================================
  $ cvs diff -u -r0 -r2.1 bzdio.c
  --- /dev/null 2008-07-07 23:11:00 +0200
  +++ bzdio.c   2008-07-07 23:16:54 +0200
  @@ -0,0 +1,206 @@
  +/* Support for BZIP2 compression library.
  + */
  +
  +#include "system.h"
  +#include "rpmio_internal.h"
  +#include <rpmmacro.h>
  +#include <rpmcb.h>
  +
  +#if defined(HAVE_BZLIB_H)
  +
  +#include <bzlib.h>
  +
  +#include "debug.h"
  +
  +/[EMAIL PROTECTED] FD_t @*/
  +
  +#define      BZDONLY(fd)     assert(fdGetIo(fd) == bzdio)
  +
  +/* =============================================================== */
  +
  +/[EMAIL PROTECTED]@*/
  +
  +static inline /[EMAIL PROTECTED]@*/ void * bzdFileno(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 != bzdio)
  +         continue;
  +     rc = fps->fp;
  +     break;
  +    }
  +
  +    return rc;
  +}
  +
  +/[EMAIL PROTECTED]@*/
  +static /[EMAIL PROTECTED]@*/ FD_t bzdOpen(const char * path, const char * 
fmode)
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +{
  +    FD_t fd;
  +    BZFILE *bzfile;
  +    mode_t mode = (fmode && fmode[0] == 'w' ? O_WRONLY : O_RDONLY);
  +
  +    if ((bzfile = BZ2_bzopen(path, fmode)) == NULL)
  +     return NULL;
  +    fd = fdNew("open (bzdOpen)");
  +    fdPop(fd); fdPush(fd, bzdio, bzfile, -1);
  +    fdSetOpen(fd, path, -1, mode);
  +    return fdLink(fd, "bzdOpen");
  +}
  +/[EMAIL PROTECTED]@*/
  +
  +/[EMAIL PROTECTED]@*/
  +static /[EMAIL PROTECTED]@*/ FD_t bzdFdopen(void * cookie, const char * 
fmode)
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +{
  +    FD_t fd = c2f(cookie);
  +    int fdno;
  +    BZFILE *bzfile;
  +
  +    if (fmode == NULL) return NULL;
  +    fdno = fdFileno(fd);
  +    fdSetFdno(fd, -1);               /* XXX skip the fdio close */
  +    if (fdno < 0) return NULL;
  +    bzfile = BZ2_bzdopen(fdno, fmode);
  +    if (bzfile == NULL) return NULL;
  +
  +    fdPush(fd, bzdio, bzfile, fdno);         /* Push bzdio onto stack */
  +
  +    return fdLink(fd, "bzdFdopen");
  +}
  +/[EMAIL PROTECTED]@*/
  +
  +/[EMAIL PROTECTED]@*/
  +static int bzdFlush(void * cookie)
  +     /[EMAIL PROTECTED] fileSystem @*/
  +     /[EMAIL PROTECTED] fileSystem @*/
  +{
  +    FD_t fd = c2f(cookie);
  +    return BZ2_bzflush(bzdFileno(fd));
  +}
  +/[EMAIL PROTECTED]@*/
  +
  +/* =============================================================== */
  +/[EMAIL PROTECTED]@*/
  +/[EMAIL PROTECTED]@*/                /* LCL: *buf is modified */
  +static ssize_t bzdRead(void * cookie, /[EMAIL PROTECTED]@*/ char * buf, 
size_t count)
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +     /[EMAIL PROTECTED] *buf, fileSystem, internalState @*/
  +{
  +    FD_t fd = c2f(cookie);
  +    BZFILE *bzfile;
  +    ssize_t rc = 0;
  +
  +    if (fd->bytesRemain == 0) return 0;      /* XXX simulate EOF */
  +    bzfile = bzdFileno(fd);
  +    fdstat_enter(fd, FDSTAT_READ);
  +    if (bzfile)
  +     /[EMAIL PROTECTED]@*/
  +     rc = BZ2_bzread(bzfile, buf, (int)count);
  +     /[EMAIL PROTECTED]@*/
  +    if (rc == -1) {
  +     int zerror = 0;
  +     if (bzfile)
  +         fd->errcookie = BZ2_bzerror(bzfile, &zerror);
  +    } else if (rc >= 0) {
  +     fdstat_exit(fd, FDSTAT_READ, rc);
  +     /[EMAIL PROTECTED]@*/
  +     if (fd->ndigests && rc > 0) fdUpdateDigests(fd, (void *)buf, rc);
  +     /[EMAIL PROTECTED]@*/
  +    }
  +    return rc;
  +}
  +/[EMAIL PROTECTED]@*/
  +/[EMAIL PROTECTED]@*/
  +
  +/[EMAIL PROTECTED]@*/
  +static ssize_t bzdWrite(void * cookie, const char * buf, size_t count)
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +{
  +    FD_t fd = c2f(cookie);
  +    BZFILE *bzfile;
  +    ssize_t rc;
  +
  +    if (fd->bytesRemain == 0) return 0;      /* XXX simulate EOF */
  +
  +    if (fd->ndigests && count > 0) fdUpdateDigests(fd, (void *)buf, count);
  +
  +    bzfile = bzdFileno(fd);
  +    fdstat_enter(fd, FDSTAT_WRITE);
  +    rc = BZ2_bzwrite(bzfile, (void *)buf, (int)count);
  +    if (rc == -1) {
  +     int zerror = 0;
  +     fd->errcookie = BZ2_bzerror(bzfile, &zerror);
  +    } else if (rc > 0) {
  +     fdstat_exit(fd, FDSTAT_WRITE, rc);
  +    }
  +    return rc;
  +}
  +/[EMAIL PROTECTED]@*/
  +
  +static inline int bzdSeek(void * cookie, /[EMAIL PROTECTED]@*/ _libio_pos_t 
pos,
  +                     /[EMAIL PROTECTED]@*/ int whence)
  +     /[EMAIL PROTECTED]/
  +{
  +    FD_t fd = c2f(cookie);
  +
  +    BZDONLY(fd);
  +    return -2;
  +}
  +
  +static int bzdClose( /[EMAIL PROTECTED]@*/ void * cookie)
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +     /[EMAIL PROTECTED] fileSystem, internalState @*/
  +{
  +    FD_t fd = c2f(cookie);
  +    BZFILE *bzfile;
  +    int rc;
  +
  +    bzfile = bzdFileno(fd);
  +
  +    if (bzfile == NULL) return -2;
  +    fdstat_enter(fd, FDSTAT_CLOSE);
  +    /[EMAIL PROTECTED]@*/ /* FIX: check rc */
  +    BZ2_bzclose(bzfile);
  +    /[EMAIL PROTECTED]@*/
  +    rc = 0;  /* XXX FIXME */
  +
  +    /* XXX TODO: preserve fd if errors */
  +
  +    if (fd) {
  +     if (rc == -1) {
  +         int zerror = 0;
  +         fd->errcookie = BZ2_bzerror(bzfile, &zerror);
  +     } else if (rc >= 0) {
  +         fdstat_exit(fd, FDSTAT_CLOSE, rc);
  +     }
  +    }
  +
  +DBGIO(fd, (stderr, "==>\tbzdClose(%p) rc %lx %s\n", cookie, (unsigned 
long)rc, fdbg(fd)));
  +
  +    if (_rpmio_debug || rpmIsDebug()) fdstat_print(fd, "BZDIO", stderr);
  +    if (rc == 0)
  +     fd = fdFree(fd, "open (bzdClose)");
  +    return rc;
  +}
  +
  +/[EMAIL PROTECTED]@*/ /* LCL: function typedefs */
  +static struct FDIO_s bzdio_s = {
  +  bzdRead, bzdWrite, bzdSeek, bzdClose,      bzdOpen, bzdFdopen, bzdFlush,
  +};
  +/[EMAIL PROTECTED]@*/
  +
  +FDIO_t bzdio = /[EMAIL PROTECTED]@*/ &bzdio_s /[EMAIL PROTECTED]@*/ ;
  +
  +/[EMAIL PROTECTED]@*/
  +#endif
  +
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/lzdio.c
  ============================================================================
  $ cvs diff -u -r1.7 -r1.8 lzdio.c
  --- rpm/rpmio/lzdio.c 3 Jul 2008 20:52:10 -0000       1.7
  +++ rpm/rpmio/lzdio.c 7 Jul 2008 21:16:54 -0000       1.8
  @@ -101,13 +101,11 @@
       return lzopen_internal(0, mode, fd);
   }
   
  -#ifdef       UNUSED
   static int lzflush(LZFILE *lzfile)
        /[EMAIL PROTECTED] lzfile @*/
   {
       return fflush(lzfile->fp);
   }
  -#endif
   
   static int lzclose(/[EMAIL PROTECTED]@*/ LZFILE *lzfile)
        /[EMAIL PROTECTED] fileSystem @*/
  @@ -266,16 +264,15 @@
   }
   /[EMAIL PROTECTED]@*/
   
  -#ifdef       UNUSED
   /[EMAIL PROTECTED]@*/
  -static int lzdFlush(FD_t fd)
  +static int lzdFlush(void * cookie)
        /[EMAIL PROTECTED] fileSystem @*/
        /[EMAIL PROTECTED] fileSystem @*/
   {
  +    FD_t fd = c2f(cookie);
       return lzflush(lzdFileno(fd));
   }
   /[EMAIL PROTECTED]@*/
  -#endif
   
   /* =============================================================== */
   /[EMAIL PROTECTED]@*/
  @@ -381,7 +378,7 @@
   
   /[EMAIL PROTECTED]@*/ /* LCL: function typedefs */
   static struct FDIO_s lzdio_s = {
  -  lzdRead, lzdWrite, lzdSeek, lzdClose, lzdOpen, lzdFdopen,
  +  lzdRead, lzdWrite, lzdSeek, lzdClose, lzdOpen, lzdFdopen, lzdFlush,
   };
   /[EMAIL PROTECTED]@*/
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmio.c
  ============================================================================
  $ cvs diff -u -r1.139 -r1.140 rpmio.c
  --- rpm/rpmio/rpmio.c 7 Jul 2008 20:02:31 -0000       1.139
  +++ rpm/rpmio/rpmio.c 7 Jul 2008 21:16:54 -0000       1.140
  @@ -124,7 +124,6 @@
   
   #define      FDONLY(fd)      assert(fdGetIo(fd) == fdio)
   #define      GZDONLY(fd)     assert(fdGetIo(fd) == gzdio)
  -#define      BZDONLY(fd)     assert(fdGetIo(fd) == bzdio)
   
   #define      UFDONLY(fd)     /* assert(fdGetIo(fd) == ufdio) */
   
  @@ -536,7 +535,7 @@
   
   /[EMAIL PROTECTED]@*/ /* LCL: function typedefs */
   static struct FDIO_s fdio_s = {
  -  fdRead, fdWrite, fdSeek, fdClose, NULL, NULL,
  +  fdRead, fdWrite, fdSeek, fdClose, NULL, NULL, NULL,
   };
   /[EMAIL PROTECTED]@*/
   
  @@ -2299,7 +2298,7 @@
   
   /[EMAIL PROTECTED]@*/ /* LCL: function typedefs */
   static struct FDIO_s ufdio_s = {
  -  ufdRead, ufdWrite, ufdSeek, ufdClose,      NULL, NULL,
  +  ufdRead, ufdWrite, ufdSeek, ufdClose,      NULL, NULL, NULL,
   };
   /[EMAIL PROTECTED]@*/
   
  @@ -2372,12 +2371,12 @@
       return fdLink(fd, "gzdFdopen");
   }
   
  -static int gzdFlush(FD_t fd)
  +static int gzdFlush(void * cookie)
        /[EMAIL PROTECTED] fileSystem @*/
        /[EMAIL PROTECTED] fileSystem @*/
   {
  -    gzFile gzfile;
  -    gzfile = gzdFileno(fd);
  +    FD_t fd = c2f(cookie);
  +    gzFile gzfile = gzdFileno(fd);
       if (gzfile == NULL) return -2;
       return gzflush(gzfile, Z_SYNC_FLUSH);    /* XXX W2DO? */
   }
  @@ -2526,7 +2525,7 @@
   
   /[EMAIL PROTECTED]@*/ /* LCL: function typedefs */
   static struct FDIO_s gzdio_s = {
  -  gzdRead, gzdWrite, gzdSeek, gzdClose,      gzdOpen, gzdFdopen,
  +  gzdRead, gzdWrite, gzdSeek, gzdClose,      gzdOpen, gzdFdopen, gzdFlush,
   };
   /[EMAIL PROTECTED]@*/
   
  @@ -2536,197 +2535,6 @@
   #endif       /* HAVE_ZLIB_H */
   
   /* =============================================================== */
  -/* Support for BZIP2 library.
  - */
  -#if defined(HAVE_BZLIB_H)
  -/[EMAIL PROTECTED]@*/
  -
  -#include <bzlib.h>
  -
  -static inline /[EMAIL PROTECTED]@*/ void * bzdFileno(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 != bzdio)
  -         continue;
  -     rc = fps->fp;
  -     break;
  -    }
  -
  -    return rc;
  -}
  -
  -/[EMAIL PROTECTED]@*/
  -static /[EMAIL PROTECTED]@*/ FD_t bzdOpen(const char * path, const char * 
fmode)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -{
  -    FD_t fd;
  -    BZFILE *bzfile;
  -    mode_t mode = (fmode && fmode[0] == 'w' ? O_WRONLY : O_RDONLY);
  -
  -    if ((bzfile = BZ2_bzopen(path, fmode)) == NULL)
  -     return NULL;
  -    fd = fdNew("open (bzdOpen)");
  -    fdPop(fd); fdPush(fd, bzdio, bzfile, -1);
  -    fdSetOpen(fd, path, -1, mode);
  -    return fdLink(fd, "bzdOpen");
  -}
  -/[EMAIL PROTECTED]@*/
  -
  -/[EMAIL PROTECTED]@*/
  -static /[EMAIL PROTECTED]@*/ FD_t bzdFdopen(void * cookie, const char * 
fmode)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -{
  -    FD_t fd = c2f(cookie);
  -    int fdno;
  -    BZFILE *bzfile;
  -
  -    if (fmode == NULL) return NULL;
  -    fdno = fdFileno(fd);
  -    fdSetFdno(fd, -1);               /* XXX skip the fdio close */
  -    if (fdno < 0) return NULL;
  -    bzfile = BZ2_bzdopen(fdno, fmode);
  -    if (bzfile == NULL) return NULL;
  -
  -    fdPush(fd, bzdio, bzfile, fdno);         /* Push bzdio onto stack */
  -
  -    return fdLink(fd, "bzdFdopen");
  -}
  -/[EMAIL PROTECTED]@*/
  -
  -/[EMAIL PROTECTED]@*/
  -static int bzdFlush(FD_t fd)
  -     /[EMAIL PROTECTED] fileSystem @*/
  -     /[EMAIL PROTECTED] fileSystem @*/
  -{
  -    return BZ2_bzflush(bzdFileno(fd));
  -}
  -/[EMAIL PROTECTED]@*/
  -
  -/* =============================================================== */
  -/[EMAIL PROTECTED]@*/
  -/[EMAIL PROTECTED]@*/                /* LCL: *buf is modified */
  -static ssize_t bzdRead(void * cookie, /[EMAIL PROTECTED]@*/ char * buf, 
size_t count)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] *buf, fileSystem, internalState @*/
  -{
  -    FD_t fd = c2f(cookie);
  -    BZFILE *bzfile;
  -    ssize_t rc = 0;
  -
  -    if (fd->bytesRemain == 0) return 0;      /* XXX simulate EOF */
  -    bzfile = bzdFileno(fd);
  -    fdstat_enter(fd, FDSTAT_READ);
  -    if (bzfile)
  -     /[EMAIL PROTECTED]@*/
  -     rc = BZ2_bzread(bzfile, buf, (int)count);
  -     /[EMAIL PROTECTED]@*/
  -    if (rc == -1) {
  -     int zerror = 0;
  -     if (bzfile)
  -         fd->errcookie = BZ2_bzerror(bzfile, &zerror);
  -    } else if (rc >= 0) {
  -     fdstat_exit(fd, FDSTAT_READ, rc);
  -     /[EMAIL PROTECTED]@*/
  -     if (fd->ndigests && rc > 0) fdUpdateDigests(fd, (void *)buf, rc);
  -     /[EMAIL PROTECTED]@*/
  -    }
  -    return rc;
  -}
  -/[EMAIL PROTECTED]@*/
  -/[EMAIL PROTECTED]@*/
  -
  -/[EMAIL PROTECTED]@*/
  -static ssize_t bzdWrite(void * cookie, const char * buf, size_t count)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -{
  -    FD_t fd = c2f(cookie);
  -    BZFILE *bzfile;
  -    ssize_t rc;
  -
  -    if (fd->bytesRemain == 0) return 0;      /* XXX simulate EOF */
  -
  -    if (fd->ndigests && count > 0) fdUpdateDigests(fd, (void *)buf, count);
  -
  -    bzfile = bzdFileno(fd);
  -    fdstat_enter(fd, FDSTAT_WRITE);
  -    rc = BZ2_bzwrite(bzfile, (void *)buf, (int)count);
  -    if (rc == -1) {
  -     int zerror = 0;
  -     fd->errcookie = BZ2_bzerror(bzfile, &zerror);
  -    } else if (rc > 0) {
  -     fdstat_exit(fd, FDSTAT_WRITE, rc);
  -    }
  -    return rc;
  -}
  -/[EMAIL PROTECTED]@*/
  -
  -static inline int bzdSeek(void * cookie, /[EMAIL PROTECTED]@*/ _libio_pos_t 
pos,
  -                     /[EMAIL PROTECTED]@*/ int whence)
  -     /[EMAIL PROTECTED]/
  -{
  -    FD_t fd = c2f(cookie);
  -
  -    BZDONLY(fd);
  -    return -2;
  -}
  -
  -static int bzdClose( /[EMAIL PROTECTED]@*/ void * cookie)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -{
  -    FD_t fd = c2f(cookie);
  -    BZFILE *bzfile;
  -    int rc;
  -
  -    bzfile = bzdFileno(fd);
  -
  -    if (bzfile == NULL) return -2;
  -    fdstat_enter(fd, FDSTAT_CLOSE);
  -    /[EMAIL PROTECTED]@*/ /* FIX: check rc */
  -    BZ2_bzclose(bzfile);
  -    /[EMAIL PROTECTED]@*/
  -    rc = 0;  /* XXX FIXME */
  -
  -    /* XXX TODO: preserve fd if errors */
  -
  -    if (fd) {
  -     if (rc == -1) {
  -         int zerror = 0;
  -         fd->errcookie = BZ2_bzerror(bzfile, &zerror);
  -     } else if (rc >= 0) {
  -         fdstat_exit(fd, FDSTAT_CLOSE, rc);
  -     }
  -    }
  -
  -DBGIO(fd, (stderr, "==>\tbzdClose(%p) rc %lx %s\n", cookie, (unsigned 
long)rc, fdbg(fd)));
  -
  -    if (_rpmio_debug || rpmIsDebug()) fdstat_print(fd, "BZDIO", stderr);
  -    if (rc == 0)
  -     fd = fdFree(fd, "open (bzdClose)");
  -    return rc;
  -}
  -
  -/[EMAIL PROTECTED]@*/ /* LCL: function typedefs */
  -static struct FDIO_s bzdio_s = {
  -  bzdRead, bzdWrite, bzdSeek, bzdClose,      bzdOpen, bzdFdopen,
  -};
  -/[EMAIL PROTECTED]@*/
  -
  -FDIO_t bzdio = /[EMAIL PROTECTED]@*/ &bzdio_s /[EMAIL PROTECTED]@*/ ;
  -
  -/[EMAIL PROTECTED]@*/
  -#endif       /* HAVE_BZLIB_H */
  -
  -/* =============================================================== */
   /[EMAIL PROTECTED]@*/
   static const char * getFdErrstr (FD_t fd)
        /[EMAIL PROTECTED]/
  @@ -3239,8 +3047,12 @@
        return gzdFlush(vh);
   #endif
   #if defined(HAVE_BZLIB_H)
  -    if (vh && fdGetIo(fd) == bzdio)
  -     return bzdFlush(vh);
  +    if (vh && fdGetIo(fd) == bzdio && bzdio->_flush != NULL)
  +     return (*bzdio->_flush) ((void *)fd);
  +#endif
  +#if defined(HAVE_LZMA_H)
  +    if (vh && fdGetIo(fd) == lzdio && lzdio->_flush != NULL)
  +     return (*lzdio->_flush) ((void *)fd);
   #endif
   
       return 0;
  @@ -3592,7 +3404,7 @@
   
   /[EMAIL PROTECTED]@*/ /* LCL: function typedefs */
   static struct FDIO_s fpio_s = {
  -  ufdRead, ufdWrite, fdSeek, ufdClose, NULL, NULL,
  +  ufdRead, ufdWrite, fdSeek, ufdClose, NULL, NULL, NULL,
   };
   /[EMAIL PROTECTED]@*/
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmio.h
  ============================================================================
  $ cvs diff -u -r1.75 -r1.76 rpmio.h
  --- rpm/rpmio/rpmio.h 5 Jul 2008 23:35:12 -0000       1.75
  +++ rpm/rpmio/rpmio.h 7 Jul 2008 21:16:54 -0000       1.76
  @@ -100,6 +100,12 @@
        /[EMAIL PROTECTED] errno, fileSystem @*/
        /[EMAIL PROTECTED] errno, fileSystem @*/;
   
  +/**
  + */
  +typedef int (*fdio_flush_function_t) (void * cookie)
  +     /[EMAIL PROTECTED] errno, fileSystem @*/
  +     /[EMAIL PROTECTED] errno, fileSystem @*/;
  +
   /[EMAIL PROTECTED]/
   
   
  @@ -112,6 +118,7 @@
     fdio_close_function_t              close;
     fdio_fopen_function_t              _fopen;
     fdio_fdopen_function_t     _fdopen;
  +  fdio_flush_function_t              _flush;
   };
   
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmurl.h
  ============================================================================
  $ cvs diff -u -r1.28 -r1.29 rpmurl.h
  --- rpm/rpmio/rpmurl.h        7 Jul 2008 20:02:31 -0000       1.28
  +++ rpm/rpmio/rpmurl.h        7 Jul 2008 21:16:54 -0000       1.29
  @@ -29,7 +29,7 @@
   
   /**
    */
  -int (*urlNotify) (const urlinfo u, unsigned status)
  +extern int (*urlNotify) (const urlinfo u, unsigned status)
        /[EMAIL PROTECTED]/;
   
   /**
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                [email protected]

Reply via email to