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:   31-May-2008 20:59:07
  Branch: rpm-4_5                          Handle: 2008053118590501

  Modified files:           (Branch: rpm-4_5)
    rpm                     CHANGES
    rpm/rpmio               Makefile.am argv.c argv.h fts.c librpmio.vers
                            rpmio.c rpmio.h rpmio_internal.h rpmrpc.c rpmurl.h
                            strtolocale.c url.c

  Log:
    - jbj: backport assorted rpmio changes from HEAD to stay in sync.
    - jbj: make sure the open path is set when using [bgl]zdOpen vector too.
    - jbj: lzdio: rework the layering to be more similar to gzdio/bzdio.
    - jbj: rpmrepo: fix: --lzma segfault, lzdFdopen was not saving path.
    - jbj: splint: annotate argvAppend differently.
    - jbj: add _fdopen to FDIO_t, expose fdbg(), make lzdio.c standalone.
    - jbj: expose XfdLink/XfdFree/XfdNew, nuke the FDIO_t vectors.
    - jbj: eliminate unused FDIO_t vectors. XfdLink/XfdFree/XfdNew need nuking.
    - jbj: create lzdio.c to carry lzma comprssion, possibly w dlopen().
    - jbj: add --enable-build-gcov for CFLAGS -fprofile-arcs -ftest-coverage.

  Summary:
    Revision    Changes     Path
    1.1360.2.84 +10 -0      rpm/CHANGES
    1.77.2.3    +3  -4      rpm/rpmio/Makefile.am
    1.3.2.2     +2  -1      rpm/rpmio/argv.c
    1.3.2.1     +2  -2      rpm/rpmio/argv.h
    1.14.2.1    +18 -0      rpm/rpmio/fts.c
    2.2.2.2     +3  -0      rpm/rpmio/librpmio.vers
    1.79.2.8    +47 -400    rpm/rpmio/rpmio.c
    1.51.2.4    +27 -142    rpm/rpmio/rpmio.h
    2.73.2.3    +5  -0      rpm/rpmio/rpmio_internal.h
    2.49.2.3    +2  -0      rpm/rpmio/rpmrpc.c
    1.22.2.1    +2  -0      rpm/rpmio/rpmurl.h
    1.2.2.1     +2  -2      rpm/rpmio/strtolocale.c
    1.35.2.4    +6  -6      rpm/rpmio/url.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1360.2.83 -r1.1360.2.84 CHANGES
  --- rpm/CHANGES       29 May 2008 19:45:39 -0000      1.1360.2.83
  +++ rpm/CHANGES       31 May 2008 18:59:05 -0000      1.1360.2.84
  @@ -1,4 +1,14 @@
   4.4.9 -> 4.5:
  +     - jbj: backport assorted rpmio changes from HEAD to stay in sync.
  +     - jbj: make sure the open path is set when using [bgl]zdOpen vector too.
  +     - jbj: lzdio: rework the layering to be more similar to gzdio/bzdio.
  +     - jbj: rpmrepo: fix: --lzma segfault, lzdFdopen was not saving path.
  +     - jbj: splint: annotate argvAppend differently.
  +     - jbj: add _fdopen to FDIO_t, expose fdbg(), make lzdio.c standalone.
  +     - jbj: expose XfdLink/XfdFree/XfdNew, nuke the FDIO_t vectors.
  +     - jbj: eliminate unused FDIO_t vectors. XfdLink/XfdFree/XfdNew need 
nuking.
  +     - jbj: create lzdio.c to carry lzma comprssion, possibly w dlopen().
  +     - jbj: add --enable-build-gcov for CFLAGS -fprofile-arcs 
-ftest-coverage.
        - jbj: retrofit LCOV/GCOV same as other branches.
        - jbj: retrofit "make check" same as other branches.
        - jbj: rpmrepo: backport --yum:primary.xml et al popt aliases.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/Makefile.am
  ============================================================================
  $ cvs diff -u -r1.77.2.2 -r1.77.2.3 Makefile.am
  --- rpm/rpmio/Makefile.am     16 Jun 2007 18:14:07 -0000      1.77.2.2
  +++ rpm/rpmio/Makefile.am     31 May 2008 18:59:06 -0000      1.77.2.3
  @@ -4,7 +4,7 @@
   
   LINT = splint
   
  -EXTRA_DIST = tax.c tdir.c tficl.c tfts.c tget.c thkp.c tput.c tglob.c tinv.c 
tkey.c trpmio.c lookup3.c librpmio.vers
  +EXTRA_DIST = LzmaDecode.c tax.c tdir.c tficl.c tfts.c tget.c thkp.c tput.c 
tglob.c tinv.c tkey.c trpmio.c lookup3.c librpmio.vers
   
   EXTRA_PROGRAMS = tax tdir tfts tget thkp tput tglob tinv tkey trpmio tsw 
dumpasn1 lookup3
   
  @@ -35,13 +35,12 @@
   usrlibdir = $(libdir)@MARK64@
   usrlib_LTLIBRARIES = librpmio.la
   librpmio_la_SOURCES = \
  -     argv.c digest.c fts.c getpass.c macro.c mire.c \
  +     argv.c digest.c fts.c getpass.c lzdio.c macro.c mire.c \
        md2.c md4.c rmd128.c rmd160.c rmd256.c rmd320.c sha224.c \
        salsa10.c salsa20.c tiger.c \
        rpmdav.c rpmhash.c rpmhook.c rpmio.c rpmlog.c rpmlua.c rpmmalloc.c \
        rpmpgp.c rpmrpc.c rpmsq.c rpmsw.c strcasecmp.c strtolocale.c \
  -     stubs.c url.c ugid.c \
  -     LzmaDecode.c
  +     stubs.c url.c ugid.c
   librpmio_la_LDFLAGS = -no-undefined -release $(LT_CURRENT).$(LT_REVISION) 
$(LDFLAGS) \
        @WITH_BEECRYPT_LIB@ \
        @WITH_NEON_LIB@ \
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/argv.c
  ============================================================================
  $ cvs diff -u -r1.3.2.1 -r1.3.2.2 argv.c
  --- rpm/rpmio/argv.c  17 Jun 2007 14:41:58 -0000      1.3.2.1
  +++ rpm/rpmio/argv.c  31 May 2008 18:59:06 -0000      1.3.2.2
  @@ -234,7 +234,8 @@
        return -2;
       while (!rc && (b = fgets(buf, sizeof(buf), fp)) != NULL) {
        buf[sizeof(buf)-1] = '\0';
  -     be = b + strlen(buf) - 1;
  +     be = b + strlen(buf);
  +     if (be > b) be--;
        while (strchr("\r\n", *be) != NULL)
            *be-- = '\0';
        rc = argvAdd(&av, b);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/argv.h
  ============================================================================
  $ cvs diff -u -r1.3 -r1.3.2.1 argv.h
  --- rpm/rpmio/argv.h  25 May 2007 17:36:36 -0000      1.3
  +++ rpm/rpmio/argv.h  31 May 2008 18:59:06 -0000      1.3.2.1
  @@ -136,10 +136,10 @@
   /**
    * Append one argv array to another.
    * @retval *argvp    argv array
  - * @param av         argv array to append
  + * @param av         argv array to append (NULL does nothing)
    * @return           0 always
    */
  -int argvAppend(/[EMAIL PROTECTED]@*/ ARGV_t * argvp, const ARGV_t av)
  +int argvAppend(/[EMAIL PROTECTED]@*/ ARGV_t * argvp, /[EMAIL PROTECTED]@*/ 
const ARGV_t av)
        /[EMAIL PROTECTED] *argvp @*/;
   
   /**
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/fts.c
  ============================================================================
  $ cvs diff -u -r1.14 -r1.14.2.1 fts.c
  --- rpm/rpmio/fts.c   25 May 2007 17:36:36 -0000      1.14
  +++ rpm/rpmio/fts.c   31 May 2008 18:59:06 -0000      1.14.2.1
  @@ -100,6 +100,9 @@
   #define      ALIGN(p)        (((unsigned long int) (p) + ALIGNBYTES) & 
~ALIGNBYTES)
   #endif
   
  +/[EMAIL PROTECTED]@*/
  +static int _fts_debug = 0;
  +
   /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/
   static FTSENT *      fts_alloc(FTS * sp, const char * name, int namelen)
        /[EMAIL PROTECTED]/;
  @@ -150,6 +153,11 @@
        FTSENT *tmp = NULL;
        size_t len;
   
  +/[EMAIL PROTECTED] [EMAIL PROTECTED]/
  +if (_fts_debug)
  +fprintf(stderr, "*** Fts_open(%p, 0x%x, %p)\n", argv, options, compar);
  +/[EMAIL PROTECTED] [EMAIL PROTECTED]/
  +
        /* Options check. */
        if (options & ~FTS_OPTIONMASK) {
   /[EMAIL PROTECTED]@*/
  @@ -582,6 +590,11 @@
   int
   Fts_set(/[EMAIL PROTECTED]@*/ FTS * sp, FTSENT * p, int instr)
   {
  +/[EMAIL PROTECTED]@*/
  +if (_fts_debug)
  +fprintf(stderr, "*** Fts_set(%p, %p, 0x%x)\n", sp, p, instr);
  +/[EMAIL PROTECTED]@*/
  +
        if (instr != 0 && instr != FTS_AGAIN && instr != FTS_FOLLOW &&
            instr != FTS_NOINSTR && instr != FTS_SKIP) {
   /[EMAIL PROTECTED]@*/
  @@ -599,6 +612,11 @@
        register FTSENT *p;
        int fd;
   
  +/[EMAIL PROTECTED]@*/
  +if (_fts_debug)
  +fprintf(stderr, "*** Fts_children(%p, 0x%x)\n", sp, instr);
  +/[EMAIL PROTECTED]@*/
  +
        if (instr != 0 && instr != FTS_NAMEONLY) {
   /[EMAIL PROTECTED]@*/
                __set_errno (EINVAL);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/librpmio.vers
  ============================================================================
  $ cvs diff -u -r2.2.2.1 -r2.2.2.2 librpmio.vers
  --- rpm/rpmio/librpmio.vers   25 May 2007 19:00:39 -0000      2.2.2.1
  +++ rpm/rpmio/librpmio.vers   31 May 2008 18:59:06 -0000      2.2.2.2
  @@ -267,6 +267,9 @@
       xstrcasecmp;
       xstrncasecmp;
       xstrtolocale;
  +    XfdFree;
  +    XfdLink;
  +    XfdNew;
       XurlFree;
       XurlLink;
       XurlNew;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmio.c
  ============================================================================
  $ cvs diff -u -r1.79.2.7 -r1.79.2.8 rpmio.c
  --- rpm/rpmio/rpmio.c 9 Dec 2007 17:28:28 -0000       1.79.2.7
  +++ rpm/rpmio/rpmio.c 31 May 2008 18:59:06 -0000      1.79.2.8
  @@ -119,7 +119,6 @@
   #define      FDONLY(fd)      assert(fdGetIo(fd) == fdio)
   #define      GZDONLY(fd)     assert(fdGetIo(fd) == gzdio)
   #define      BZDONLY(fd)     assert(fdGetIo(fd) == bzdio)
  -#define      LZDONLY(fd)     assert(fdGetIo(fd) == lzdio)
   
   #define      UFDONLY(fd)     /* assert(fdGetIo(fd) == ufdio) */
   
  @@ -164,8 +163,7 @@
   /* =============================================================== */
   
   /[EMAIL PROTECTED]@*/
  -static /[EMAIL PROTECTED]@*/ const char * fdbg(/[EMAIL PROTECTED]@*/ FD_t fd)
  -     /[EMAIL PROTECTED]/
  +const char * fdbg(/[EMAIL PROTECTED]@*/ FD_t fd)
   {
       static char buf[BUFSIZ];
       char *be = buf;
  @@ -277,26 +275,10 @@
       return -2;
   }
   
  -#ifdef UNUSED
  -FILE *fdFdopen(void * cookie, const char *fmode)
  -{
  -    FD_t fd = c2f(cookie);
  -    int fdno;
  -    FILE * fp;
  -
  -    if (fmode == NULL) return NULL;
  -    fdno = fdFileno(fd);
  -    if (fdno < 0) return NULL;
  -    fp = fdopen(fdno, fmode);
  -DBGIO(fd, (stderr, "==> fdFdopen(%p,\"%s\") fdno %d -> fp %p fdno %d\n", 
cookie, fmode, fdno, fp, fileno(fp)));
  -    fd = fdFree(fd, "open (fdFdopen)");
  -    return fp;
  -}
  -#endif
  -
   /* =============================================================== */
   /[EMAIL PROTECTED]@*/ /* FIX: cookie is modified */
  -static inline /[EMAIL PROTECTED]@*/ FD_t XfdLink(void * cookie, const char * 
msg,
  +/[EMAIL PROTECTED]@*/
  +FD_t XfdLink(void * cookie, const char * msg,
                const char * file, unsigned line)
        /[EMAIL PROTECTED] *cookie @*/
   {
  @@ -314,7 +296,7 @@
   }
   /[EMAIL PROTECTED]@*/
   
  -static inline /[EMAIL PROTECTED]@*/
  +/[EMAIL PROTECTED]@*/
   FD_t XfdFree( /[EMAIL PROTECTED]@*/ FD_t fd, const char *msg,
                const char *file, unsigned line)
        /[EMAIL PROTECTED] fd @*/
  @@ -343,7 +325,7 @@
       return NULL;
   }
   
  -static inline /[EMAIL PROTECTED]@*/
  +/[EMAIL PROTECTED]@*/
   FD_t XfdNew(const char * msg, const char * file, unsigned line)
        /[EMAIL PROTECTED] internalState @*/
        /[EMAIL PROTECTED] internalState @*/
  @@ -524,12 +506,29 @@
       /[EMAIL PROTECTED]@*/ return fd; /[EMAIL PROTECTED]@*/
   }
   
  +#ifdef NOTUSED
  +FILE *fdFdopen(void * cookie, const char *fmode)
  +{
  +    FD_t fd = c2f(cookie);
  +    int fdno;
  +    FILE * fp;
  +
  +    if (fmode == NULL) return NULL;
  +    fdno = fdFileno(fd);
  +    if (fdno < 0) return NULL;
  +    fp = fdopen(fdno, fmode);
  +DBGIO(fd, (stderr, "==> fdFdopen(%p,\"%s\") fdno %d -> fp %p fdno %d\n", 
cookie, fmode, fdno, fp, fileno(fp)));
  +    fd = fdFree(fd, "open (fdFdopen)");
  +    return fp;
  +}
  +#endif
  +
   /[EMAIL PROTECTED]@*/ /* LCL: function typedefs */
   static struct FDIO_s fdio_s = {
  -  fdRead, fdWrite, fdSeek, fdClose, XfdLink, XfdFree, XfdNew, fdFileno,
  -  fdOpen, NULL, fdGetFp, NULL,       mkdir, chdir, rmdir, rename, unlink
  +  fdRead, fdWrite, fdSeek, fdClose, NULL, NULL,
   };
   /[EMAIL PROTECTED]@*/
  +
   FDIO_t fdio = /[EMAIL PROTECTED]@*/ &fdio_s /[EMAIL PROTECTED]@*/ ;
   
   int fdWritable(FD_t fd, int secs)
  @@ -2332,10 +2331,10 @@
   
   /[EMAIL PROTECTED]@*/ /* LCL: function typedefs */
   static struct FDIO_s ufdio_s = {
  -  ufdRead, ufdWrite, ufdSeek, ufdClose, XfdLink, XfdFree, XfdNew, fdFileno,
  -  ufdOpen, NULL, fdGetFp, NULL,      Mkdir, Chdir, Rmdir, Rename, Unlink
  +  ufdRead, ufdWrite, ufdSeek, ufdClose,      NULL, NULL,
   };
   /[EMAIL PROTECTED]@*/
  +
   FDIO_t ufdio = /[EMAIL PROTECTED]@*/ &ufdio_s /[EMAIL PROTECTED]@*/ ;
   
   /* =============================================================== */
  @@ -2375,10 +2374,13 @@
   {
       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");
  @@ -2559,10 +2561,10 @@
   
   /[EMAIL PROTECTED]@*/ /* LCL: function typedefs */
   static struct FDIO_s gzdio_s = {
  -  gzdRead, gzdWrite, gzdSeek, gzdClose, XfdLink, XfdFree, XfdNew, fdFileno,
  -  NULL, gzdOpen, gzdFileno, gzdFlush,        NULL, NULL, NULL, NULL, NULL
  +  gzdRead, gzdWrite, gzdSeek, gzdClose,      gzdOpen, gzdFdopen,
   };
   /[EMAIL PROTECTED]@*/
  +
   FDIO_t gzdio = /[EMAIL PROTECTED]@*/ &gzdio_s /[EMAIL PROTECTED]@*/ ;
   
   /[EMAIL PROTECTED]@*/
  @@ -2597,16 +2599,19 @@
   }
   
   /[EMAIL PROTECTED]@*/
  -static /[EMAIL PROTECTED]@*/ FD_t bzdOpen(const char * path, const char * 
mode)
  +static /[EMAIL PROTECTED]@*/ FD_t bzdOpen(const char * path, const char * 
fmode)
        /[EMAIL PROTECTED] fileSystem @*/
        /[EMAIL PROTECTED] fileSystem @*/
   {
       FD_t fd;
       BZFILE *bzfile;;
  -    if ((bzfile = BZ2_bzopen(path, mode)) == NULL)
  +    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]@*/
  @@ -2751,374 +2756,16 @@
   
   /[EMAIL PROTECTED]@*/ /* LCL: function typedefs */
   static struct FDIO_s bzdio_s = {
  -  bzdRead, bzdWrite, bzdSeek, bzdClose, XfdLink, XfdFree, XfdNew, fdFileno,
  -  NULL, bzdOpen, bzdFileno, bzdFlush,        NULL, NULL, NULL, NULL, NULL
  +  bzdRead, bzdWrite, bzdSeek, bzdClose,      bzdOpen, bzdFdopen,
   };
   /[EMAIL PROTECTED]@*/
  +
   FDIO_t bzdio = /[EMAIL PROTECTED]@*/ &bzdio_s /[EMAIL PROTECTED]@*/ ;
   
   /[EMAIL PROTECTED]@*/
   #endif       /* HAVE_BZLIB_H */
   
   /* =============================================================== */
  -/* Support for LZMA library.
  - */
  -#include "LzmaDecode.h"
  -
  -#define kInBufferSize (1 << 15)
  -typedef struct _CBuffer {
  -  ILzmaInCallback InCallback;
  -/[EMAIL PROTECTED]@*/
  -  FILE *File;
  -  unsigned char Buffer[kInBufferSize];
  -} CBuffer;
  -
  -typedef struct lzfile {
  -    CBuffer g_InBuffer;
  -    CLzmaDecoderState state;  /* it's about 24-80 bytes structure, if int is 
32-bit */
  -    unsigned char properties[LZMA_PROPERTIES_SIZE];
  -
  -#if 0
  -    FILE *file;
  -#endif
  -    int pid;
  -} LZFILE;
  -
  -static size_t MyReadFile(FILE *file, void *data, size_t size)
  -     /[EMAIL PROTECTED] fileSystem @*/
  -     /[EMAIL PROTECTED] *file, *data, fileSystem @*/
  -{ 
  -    if (size == 0) return 0;
  -    return fread(data, 1, size, file); 
  -}
  -
  -static int MyReadFileAndCheck(FILE *file, void *data, size_t size)
  -     /[EMAIL PROTECTED] fileSystem @*/
  -     /[EMAIL PROTECTED] *file, *data, fileSystem @*/
  -{
  -    return (MyReadFile(file, data, size) == size);
  -}
  -
  -static int LzmaReadCompressed(void *object, const unsigned char **buffer, 
SizeT *size)
  -     /[EMAIL PROTECTED] fileSystem @*/
  -     /[EMAIL PROTECTED] *buffer, *size, fileSystem @*/
  -{
  -    CBuffer *b = object;
  -    *buffer = b->Buffer;
  -    *size = MyReadFile(b->File, b->Buffer, kInBufferSize);
  -    return LZMA_RESULT_OK;
  -}
  -
  -static inline /[EMAIL PROTECTED]@*/ void * lzdFileno(FD_t fd)
  -     /[EMAIL PROTECTED]/
  -{
  -    void * rc = NULL;
  -    int i;
  -
  -    FDSANE(fd);
  -    for (i = fd->nfps; i >= 0; i--) {
  -/[EMAIL PROTECTED]@*/
  -         FDSTACK_t * fps = &fd->fps[i];
  -/[EMAIL PROTECTED]@*/
  -         if (fps->io != lzdio)
  -             continue;
  -         rc = fps->fp;
  -     break;
  -    }
  -    
  -    return rc;
  -}
  -
  -/[EMAIL PROTECTED]@*/     /* XXX hide rpmGlobalMacroContext mods for now. */
  -static FD_t lzdWriteOpen(int fdno, int fopen, const char * mode)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -{
  -    int pid;
  -    int p[2];
  -    int xx;
  -    const char *lzma;
  -    char l[3];
  -    const char *level;
  -
  -    /* revisit use of LZMA_Alone, when lzdRead supports new LZMA Utils */
  -    char *env[] = { "LZMA_OPT=--format=alone", NULL };
  -    
  -    if (isdigit(mode[1])) /* "w5" */
  -    {
  -     sprintf(l, "-%c", mode[1]);
  -     level = l;
  -    }
  -    else
  -        level = NULL;
  -
  -    if (fdno < 0) return NULL;
  -    if (pipe(p) < 0) {
  -        xx = close(fdno);
  -        return NULL;
  -    }
  -    pid = fork();
  -    if (pid < 0) {
  -        xx = close(fdno);
  -        return NULL;
  -    }
  -    if (pid) {
  -        FD_t fd;
  -        LZFILE * lzfile = xcalloc(1, sizeof(*lzfile));
  -
  -        xx = close(fdno);
  -        xx = close(p[0]);
  -        lzfile->pid = pid;
  -        lzfile->g_InBuffer.File = fdopen(p[1], "wb");
  -        if (lzfile->g_InBuffer.File == NULL) {
  -            xx = close(p[1]);
  -            lzfile = _free(lzfile);
  -            return NULL;
  -        }
  -        fd = fdNew("open (lzdOpen write)");
  -        if (fopen) fdPop(fd);
  -        fdPush(fd, lzdio, lzfile, -1);
  -        return fdLink(fd, "lzdOpen");
  -    } else {
  -        int i;
  -        /* lzma */
  -        xx = close(p[1]);
  -        xx = dup2(p[0], 0);
  -        xx = dup2(fdno, 1);
  -        for (i = 3; i < 1024; i++)
  -         xx = close(i);
  -     lzma = rpmGetPath("%{?__lzma}%{!?__lzma:/usr/bin/lzma}", NULL);
  -     if (execle(lzma, "lzma", level, NULL, env))
  -            _exit(1);
  -     lzma = _free(lzma);
  -    }
  -    return NULL; /* warning */
  -}
  -
  -static FD_t lzdReadOpen(int fdno, int fopen)
  -     /[EMAIL PROTECTED] fileSystem @*/
  -     /[EMAIL PROTECTED] fileSystem @*/
  -{
  -    LZFILE *lzfile;
  -    unsigned char ff[8];
  -    FD_t fd;
  -    size_t nb;
  -
  -    if (fdno < 0) return NULL;
  -    lzfile = xcalloc(1, sizeof(*lzfile));
  -    if (lzfile == NULL) return NULL;
  -    lzfile->g_InBuffer.File = fdopen(fdno, "rb");
  -    if (lzfile->g_InBuffer.File == NULL) goto error2;
  -
  -    if (!MyReadFileAndCheck(lzfile->g_InBuffer.File, lzfile->properties, 
sizeof(lzfile->properties)))
  -            goto error;
  -
  -    memset(ff, 0, sizeof(ff));
  -    if (!MyReadFileAndCheck(lzfile->g_InBuffer.File, ff, 8)) goto error;
  -    if (LzmaDecodeProperties(&lzfile->state.Properties, lzfile->properties, 
LZMA_PROPERTIES_SIZE) != LZMA_RESULT_OK)
  -        goto error;
  -    nb = LzmaGetNumProbs(&lzfile->state.Properties) * 
sizeof(*lzfile->state.Probs);
  -    lzfile->state.Probs = xmalloc(nb);
  -    if (lzfile->state.Probs == NULL) goto error;
  -
  -    if (lzfile->state.Properties.DictionarySize == 0)
  -        lzfile->state.Dictionary = 0;
  -    else {
  -        lzfile->state.Dictionary = 
xmalloc(lzfile->state.Properties.DictionarySize);
  -        if (lzfile->state.Dictionary == NULL) {
  -            lzfile->state.Probs = _free(lzfile->state.Probs);
  -            goto error;
  -        }
  -    }
  -    lzfile->g_InBuffer.InCallback.Read = LzmaReadCompressed;
  -    LzmaDecoderInit(&lzfile->state);
  -
  -    fd = fdNew("open (lzdOpen read)");
  -    if (fopen) fdPop(fd);
  -    fdPush(fd, lzdio, lzfile, -1);
  -    return fdLink(fd, "lzdOpen");
  -
  -error:
  -    (void) fclose(lzfile->g_InBuffer.File);
  -error2:
  -    lzfile = _free(lzfile);
  -    return NULL;
  -}
  -
  -/[EMAIL PROTECTED]@*/
  -static /[EMAIL PROTECTED]@*/ FD_t lzdOpen(const char * path, const char * 
mode)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -{
  -    if (mode == NULL)
  -        return NULL;
  -    if (mode[0] == 'w') {
  -        int fdno = open(path, O_WRONLY);
  -
  -        if (fdno < 0) return NULL;
  -        return lzdWriteOpen(fdno, 1, mode);
  -    } else {
  -        int fdno = open(path, O_RDONLY);
  -
  -        if (fdno < 0) return NULL;
  -        return lzdReadOpen(fdno, 1);
  -    }
  -}
  -/[EMAIL PROTECTED]@*/
  -
  -/[EMAIL PROTECTED]@*/
  -static /[EMAIL PROTECTED]@*/ FD_t lzdFdopen(void * cookie, const char * 
fmode)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -{
  -    FD_t fd = c2f(cookie);
  -    int fdno;
  -
  -    if (fmode == NULL) return NULL;
  -    fdno = fdFileno(fd);
  -    fdSetFdno(fd, -1);               /* XXX skip the fdio close */
  -    if (fdno < 0) return NULL;
  -    if (fmode[0] == 'w') {
  -        return lzdWriteOpen(fdno, 0, fmode);
  -    } else {
  -        return lzdReadOpen(fdno, 0);
  -    }
  -}
  -/[EMAIL PROTECTED]@*/
  -
  -/[EMAIL PROTECTED]@*/
  -static int lzdFlush(FD_t fd)
  -     /[EMAIL PROTECTED] fileSystem @*/
  -     /[EMAIL PROTECTED] fileSystem @*/
  -{
  -    LZFILE *lzfile = lzdFileno(fd);
  -
  -    if (lzfile == NULL || lzfile->g_InBuffer.File == NULL) return -2;
  -    return fflush(lzfile->g_InBuffer.File);
  -}
  -/[EMAIL PROTECTED]@*/
  -
  -/* =============================================================== */
  -/[EMAIL PROTECTED]@*/
  -/[EMAIL PROTECTED]@*/                /* LCL: *buf is modified */
  -static ssize_t lzdRead(void * cookie, /[EMAIL PROTECTED]@*/ char * buf, 
size_t count)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] buf, fileSystem, internalState @*/
  -{
  -    FD_t fd = c2f(cookie);
  -    LZFILE *lzfile;
  -    ssize_t rc = 0;
  -    int res = 0;
  -
  -    if (fd->bytesRemain == 0) return 0;      /* XXX simulate EOF */
  -    lzfile = lzdFileno(fd);
  -    fdstat_enter(fd, FDSTAT_READ);
  -    if (lzfile->g_InBuffer.File)
  -/[EMAIL PROTECTED]@*/
  -     res = LzmaDecode(&lzfile->state, &lzfile->g_InBuffer.InCallback, buf, 
count, &rc);
  -/[EMAIL PROTECTED]@*/
  -    if (res) {
  -     if (lzfile)
  -         fd->errcookie = "Lzma: decoding error";
  -    } 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 lzdWrite(void * cookie, const char * buf, size_t count)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -{
  -    FD_t fd = c2f(cookie);
  -    LZFILE *lzfile;
  -    ssize_t rc;
  -
  -    if (fd->bytesRemain == 0) return 0;      /* XXX simulate EOF */
  -
  -    if (fd->ndigests && count > 0) fdUpdateDigests(fd, (void *)buf, count);
  -
  -    lzfile = lzdFileno(fd);
  -    fdstat_enter(fd, FDSTAT_WRITE);
  -    rc = fwrite((void *)buf, 1, count, lzfile->g_InBuffer.File);
  -    if (rc == -1) {
  -     fd->errcookie = strerror(ferror(lzfile->g_InBuffer.File));
  -    } else if (rc > 0) {
  -     fdstat_exit(fd, FDSTAT_WRITE, rc);
  -    }
  -    return rc;
  -}
  -/[EMAIL PROTECTED]@*/
  -
  -static inline int lzdSeek(void * cookie, /[EMAIL PROTECTED]@*/ _libio_pos_t 
pos,
  -                     /[EMAIL PROTECTED]@*/ int whence)
  -     /[EMAIL PROTECTED]/
  -{
  -    FD_t fd = c2f(cookie);
  -
  -    LZDONLY(fd);
  -    return -2;
  -}
  -
  -static int lzdClose( /[EMAIL PROTECTED]@*/ void * cookie)
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] fileSystem, internalState @*/
  -{
  -    FD_t fd = c2f(cookie);
  -    LZFILE * lzfile = lzdFileno(fd);
  -    int rc;
  -
  -    if (lzfile == NULL) return -2;
  -    fdstat_enter(fd, FDSTAT_CLOSE);
  -/[EMAIL PROTECTED]@*/ /* FIX: check rc */
  -    rc = fclose(lzfile->g_InBuffer.File);
  -    if (lzfile->pid)
  -     rc = wait4(lzfile->pid, NULL, 0, NULL);
  -    else { /* reading */
  -        lzfile->state.Probs = _free(lzfile->state.Probs);
  -        lzfile->state.Dictionary = _free(lzfile->state.Dictionary);
  -    }
  -/[EMAIL PROTECTED]@*/
  -    lzfile = _free(lzfile);
  -/[EMAIL PROTECTED]@*/
  -/[EMAIL PROTECTED]@*/
  -    rc = 0;  /* XXX FIXME */
  -
  -    /* XXX TODO: preserve fd if errors */
  -
  -    if (fd) {
  -     if (rc == -1) {
  -         fd->errcookie = strerror(ferror(lzfile->g_InBuffer.File));
  -     } else if (rc >= 0) {
  -         fdstat_exit(fd, FDSTAT_CLOSE, rc);
  -     }
  -    }
  -
  -DBGIO(fd, (stderr, "==>\tlzdClose(%p) rc %lx %s\n", cookie, (unsigned 
long)rc, fdbg(fd)));
  -
  -    if (_rpmio_debug || rpmIsDebug()) fdstat_print(fd, "LZDIO", stderr);
  -    /[EMAIL PROTECTED]@*/
  -    if (rc == 0)
  -     fd = fdFree(fd, "open (lzdClose)");
  -    /[EMAIL PROTECTED]@*/
  -    return rc;
  -}
  -
  -/[EMAIL PROTECTED]@*/ /* LCL: function typedefs */
  -static struct FDIO_s lzdio_s = {
  -  lzdRead, lzdWrite, lzdSeek, lzdClose, XfdLink, XfdFree, XfdNew, fdFileno,
  -  NULL, lzdOpen, lzdFileno, lzdFlush,        NULL, NULL, NULL, NULL, NULL
  -};
  -/[EMAIL PROTECTED]@*/
  -FDIO_t lzdio = /[EMAIL PROTECTED]@*/ &lzdio_s /[EMAIL PROTECTED]@*/ ;
  -
  -/* =============================================================== */
   /[EMAIL PROTECTED]@*/
   static const char * getFdErrstr (FD_t fd)
        /[EMAIL PROTECTED]/
  @@ -3452,18 +3099,18 @@
        } else if (!strcmp(end, "gzdio")) {
            iof = gzdio;
            /[EMAIL PROTECTED]@*/
  -         fd = gzdFdopen(fd, zstdio);
  +         fd = iof->_fdopen(fd, zstdio);
            /[EMAIL PROTECTED]@*/
   #if HAVE_BZLIB_H
        } else if (!strcmp(end, "bzdio")) {
            iof = bzdio;
            /[EMAIL PROTECTED]@*/
  -         fd = bzdFdopen(fd, zstdio);
  +         fd = iof->_fdopen(fd, zstdio);
            /[EMAIL PROTECTED]@*/
   #endif
  -    } else if (!strcmp(end, "lzdio")) {
  -        iof = lzdio;
  -        fd = lzdFdopen(fd, zstdio);
  +     } else if (!strcmp(end, "lzdio")) {
  +         iof = lzdio;
  +         fd = iof->_fdopen(fd, zstdio);
        } else if (!strcmp(end, "ufdio")) {
            iof = ufdio;
        } else if (!strcmp(end, "fpio")) {
  @@ -3491,7 +3138,7 @@
        if (*end == '\0') {
            iof = gzdio;
            /[EMAIL PROTECTED]@*/
  -         fd = gzdFdopen(fd, zstdio);
  +         fd = iof->_fdopen(fd, zstdio);
            /[EMAIL PROTECTED]@*/
        }
       }
  @@ -3561,7 +3208,7 @@
        int fdno;
        int isHTTP = 0;
   
  -     /* XXX gzdio and bzdio here too */
  +     /* XXX gzdio/bzdio/lzdio through here too */
   
        switch (urlIsURL(path)) {
        case URL_IS_HTTPS:
  @@ -3940,8 +3587,8 @@
   
   /[EMAIL PROTECTED]@*/ /* LCL: function typedefs */
   static struct FDIO_s fpio_s = {
  -  ufdRead, ufdWrite, fdSeek, ufdClose, XfdLink, XfdFree, XfdNew, fdFileno,
  -  ufdOpen, NULL, fdGetFp, NULL,      Mkdir, Chdir, Rmdir, Rename, Unlink
  +  ufdRead, ufdWrite, fdSeek, ufdClose, NULL, NULL,
   };
   /[EMAIL PROTECTED]@*/
  +
   FDIO_t fpio = /[EMAIL PROTECTED]@*/ &fpio_s /[EMAIL PROTECTED]@*/ ;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmio.h
  ============================================================================
  $ cvs diff -u -r1.51.2.3 -r1.51.2.4 rpmio.h
  --- rpm/rpmio/rpmio.h 30 Jul 2007 02:37:50 -0000      1.51.2.3
  +++ rpm/rpmio/rpmio.h 31 May 2008 18:59:06 -0000      1.51.2.4
  @@ -85,117 +85,18 @@
        /[EMAIL PROTECTED] errno, fileSystem, systemState @*/
        /[EMAIL PROTECTED] *cookie, errno, fileSystem, systemState @*/;
   
  -
  -/**
  - */
  -typedef /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ FD_t 
(*fdio_ref_function_t) ( /[EMAIL PROTECTED]@*/ void * cookie,
  -             const char * msg, const char * file, unsigned line)
  -     /[EMAIL PROTECTED] fileSystem @*/
  -     /[EMAIL PROTECTED] fileSystem @*/;
  -
  -/**
  - */
  -typedef /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ FD_t 
(*fdio_deref_function_t) ( /[EMAIL PROTECTED]@*/ FD_t fd,
  -             const char * msg, const char * file, unsigned line)
  -     /[EMAIL PROTECTED] fileSystem @*/
  -     /[EMAIL PROTECTED] fd, fileSystem @*/;
  -
  -
  -/**
  - */
  -typedef /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ FD_t 
(*fdio_new_function_t) (const char * msg,
  -             const char * file, unsigned line)
  -     /[EMAIL PROTECTED] fileSystem @*/
  -     /[EMAIL PROTECTED] fileSystem @*/;
  -
  -
  -/**
  - */
  -typedef int (*fdio_fileno_function_t) (void * cookie)
  -     /[EMAIL PROTECTED] fileSystem @*/
  -     /[EMAIL PROTECTED] *cookie, fileSystem @*/;
  -
  -
  -/**
  - */
  -typedef FD_t (*fdio_open_function_t) (const char * path, int flags, mode_t 
mode)
  -     /[EMAIL PROTECTED] errno, fileSystem @*/
  -     /[EMAIL PROTECTED] errno, fileSystem @*/;
  -
   /**
    */
   typedef FD_t (*fdio_fopen_function_t) (const char * path, const char * fmode)
  -     /[EMAIL PROTECTED] fileSystem @*/
  -     /[EMAIL PROTECTED] fileSystem @*/;
  -
  -/**
  - */
  -typedef void * (*fdio_ffileno_function_t) (FD_t fd)
  -     /[EMAIL PROTECTED] fileSystem @*/
  -     /[EMAIL PROTECTED] fileSystem @*/;
  -
  -/**
  - */
  -typedef int (*fdio_fflush_function_t) (FD_t fd)
  -     /[EMAIL PROTECTED] fileSystem @*/
  -     /[EMAIL PROTECTED] fileSystem @*/;
  -/[EMAIL PROTECTED]/
  -
  -
  -/** \ingroup rpmrpc
  - * \name RPMRPC Vectors.
  - */
  -/[EMAIL PROTECTED]/
  -
  -/**
  - */
  -typedef int (*fdio_mkdir_function_t) (const char * path, mode_t mode)
  -     /[EMAIL PROTECTED] errno, fileSystem @*/
  -     /[EMAIL PROTECTED] errno, fileSystem @*/;
  -
  -/**
  - */
  -typedef int (*fdio_chdir_function_t) (const char * path)
  -     /[EMAIL PROTECTED] errno, fileSystem @*/
  -     /[EMAIL PROTECTED] errno, fileSystem @*/;
  -
  -/**
  - */
  -typedef int (*fdio_rmdir_function_t) (const char * path)
  -     /[EMAIL PROTECTED] errno, fileSystem @*/
  -     /[EMAIL PROTECTED] errno, fileSystem @*/;
  -
  -/**
  - */
  -typedef int (*fdio_rename_function_t) (const char * oldpath, const char * 
newpath)
        /[EMAIL PROTECTED] errno, fileSystem @*/
        /[EMAIL PROTECTED] errno, fileSystem @*/;
   
   /**
    */
  -typedef int (*fdio_unlink_function_t) (const char * path)
  +typedef FD_t (*fdio_fdopen_function_t) (void * cookie, const char * fmode)
        /[EMAIL PROTECTED] errno, fileSystem @*/
        /[EMAIL PROTECTED] errno, fileSystem @*/;
  -/[EMAIL PROTECTED]@*/
  -
  -/**
  - */
  -typedef int (*fdio_stat_function_t) (const char * path, /[EMAIL 
PROTECTED]@*/ struct stat * st)
  -     /[EMAIL PROTECTED] errno, fileSystem @*/
  -     /[EMAIL PROTECTED] *st, errno, fileSystem @*/;
  -
  -/**
  - */
  -typedef int (*fdio_lstat_function_t) (const char * path, /[EMAIL 
PROTECTED]@*/ struct stat * st)
  -     /[EMAIL PROTECTED] errno, fileSystem @*/
  -     /[EMAIL PROTECTED] *st, errno, fileSystem @*/;
   
  -/**
  - */
  -typedef int (*fdio_access_function_t) (const char * path, int amode)
  -     /[EMAIL PROTECTED] errno, fileSystem @*/
  -     /[EMAIL PROTECTED] errno, fileSystem @*/;
  -/[EMAIL PROTECTED]@*/
   /[EMAIL PROTECTED]/
   
   
  @@ -206,22 +107,8 @@
     fdio_write_function_t              write;
     fdio_seek_function_t               seek;
     fdio_close_function_t              close;
  -
  -  fdio_ref_function_t                _fdref;
  -  fdio_deref_function_t              _fdderef;
  -  fdio_new_function_t                _fdnew;
  -  fdio_fileno_function_t     _fileno;
  -
  -  fdio_open_function_t               _open;
     fdio_fopen_function_t              _fopen;
  -  fdio_ffileno_function_t    _ffileno;
  -  fdio_fflush_function_t     _fflush;
  -
  -  fdio_mkdir_function_t              _mkdir;
  -  fdio_chdir_function_t              _chdir;
  -  fdio_rmdir_function_t              _rmdir;
  -  fdio_rename_function_t     _rename;
  -  fdio_unlink_function_t     _unlink;
  +  fdio_fdopen_function_t     _fdopen;
   };
   
   
  @@ -549,30 +436,9 @@
        /[EMAIL PROTECTED] fileSystem, internalState @*/
        /[EMAIL PROTECTED] fileSystem, internalState @*/;
   
  -#ifdef UNUSED
  -/[EMAIL PROTECTED]@*/ FILE *fdFdopen( /[EMAIL PROTECTED]@*/ void * cookie, 
const char * mode);
  -#endif
  -
  -/* XXX Legacy interfaces needed by gnorpm, rpmfind et al */
  -
   /[EMAIL PROTECTED]@*/
   /**
    */
  -#ifndef H_RPMIO_INTERNAL     /* XXX avoid gcc warning */
  -/[EMAIL PROTECTED]@*/ int fdFileno(void * cookie)
  -     /[EMAIL PROTECTED]/;
  -#define      fdFileno(_fd)           fdio->_fileno(_fd)
  -#endif
  -
  -/**
  - */
  -/[EMAIL PROTECTED]@*/ FD_t fdOpen(const char *path, int flags, mode_t mode)
  -     /[EMAIL PROTECTED] errno, fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] errno, fileSystem, internalState @*/;
  -#define      fdOpen(_path, _flags, _mode)    fdio->_open((_path), (_flags), 
(_mode))
  -
  -/**
  - */
   /[EMAIL PROTECTED]@*/
   ssize_t fdRead(void * cookie, /[EMAIL PROTECTED]@*/ char * buf, size_t count)
        /[EMAIL PROTECTED] errno, fileSystem, internalState @*/
  @@ -598,12 +464,24 @@
   
   /**
    */
  +/[EMAIL PROTECTED]@*/ FD_t fdOpen(const char *path, int flags, mode_t mode)
  +     /[EMAIL PROTECTED] errno, fileSystem, internalState @*/
  +     /[EMAIL PROTECTED] errno, fileSystem, internalState @*/;
  +#define      fdOpen(_path, _flags, _mode)    fdio->_open((_path), (_flags), 
(_mode))
  +
  +/**
  + */
   /[EMAIL PROTECTED]@*/
   /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/
   FD_t fdLink (/[EMAIL PROTECTED]@*/ void * cookie, const char * msg)
        /[EMAIL PROTECTED] fileSystem @*/
        /[EMAIL PROTECTED] *cookie, fileSystem @*/;
  -#define      fdLink(_fd, _msg)       fdio->_fdref(_fd, _msg, __FILE__, 
__LINE__)
  +/[EMAIL PROTECTED]@*/
  +/[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/
  +FD_t XfdLink (/[EMAIL PROTECTED]@*/ void * cookie, const char * msg, const 
char * fn, unsigned ln)
  +     /[EMAIL PROTECTED] fileSystem @*/
  +     /[EMAIL PROTECTED] *cookie, fileSystem @*/;
  +#define      fdLink(_fd, _msg)       XfdLink(_fd, _msg, __FILE__, __LINE__)
   
   /**
    */
  @@ -612,7 +490,12 @@
   FD_t fdFree(/[EMAIL PROTECTED]@*/ FD_t fd, const char * msg)
        /[EMAIL PROTECTED] fileSystem @*/
        /[EMAIL PROTECTED] fd, fileSystem @*/;
  -#define      fdFree(_fd, _msg)       fdio->_fdderef(_fd, _msg, __FILE__, 
__LINE__)
  +/[EMAIL PROTECTED]@*/
  +/[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/
  +FD_t XfdFree(/[EMAIL PROTECTED]@*/ FD_t fd, const char * msg, const char * 
fn, unsigned ln)
  +     /[EMAIL PROTECTED] fileSystem @*/
  +     /[EMAIL PROTECTED] fd, fileSystem @*/;
  +#define      fdFree(_fd, _msg)       XfdFree(_fd, _msg, __FILE__, __LINE__)
   
   /**
    */
  @@ -621,7 +504,12 @@
   FD_t fdNew (const char * msg)
        /[EMAIL PROTECTED] fileSystem @*/
        /[EMAIL PROTECTED] fileSystem @*/;
  -#define      fdNew(_msg)             fdio->_fdnew(_msg, __FILE__, __LINE__)
  +/[EMAIL PROTECTED]@*/
  +/[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/
  +FD_t XfdNew (const char * msg, const char * fn, unsigned ln)
  +     /[EMAIL PROTECTED] fileSystem @*/
  +     /[EMAIL PROTECTED] fileSystem @*/;
  +#define      fdNew(_msg)             XfdNew(_msg, __FILE__, __LINE__)
   
   /**
    */
  @@ -769,9 +657,6 @@
    */
   /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ extern FDIO_t lzdio;
   
  -/**
  - */
  -/[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ extern FDIO_t fadio;
   /[EMAIL PROTECTED]@*/
   /[EMAIL PROTECTED]/
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmio_internal.h
  ============================================================================
  $ cvs diff -u -r2.73.2.2 -r2.73.2.3 rpmio_internal.h
  --- rpm/rpmio/rpmio_internal.h        9 Jun 2007 19:08:54 -0000       2.73.2.2
  +++ rpm/rpmio/rpmio_internal.h        31 May 2008 18:59:06 -0000      2.73.2.3
  @@ -251,6 +251,11 @@
   
   /** \ingroup rpmio
    */
  +/[EMAIL PROTECTED]@*/ const char * fdbg(/[EMAIL PROTECTED]@*/ FD_t fd)
  +        /[EMAIL PROTECTED]/;
  +
  +/** \ingroup rpmio
  + */
   int fdFgets(FD_t fd, char * buf, size_t len)
        /[EMAIL PROTECTED] errno, fileSystem @*/
        /[EMAIL PROTECTED] *buf, fd, errno, fileSystem @*/;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmrpc.c
  ============================================================================
  $ cvs diff -u -r2.49.2.2 -r2.49.2.3 rpmrpc.c
  --- rpm/rpmio/rpmrpc.c        17 Jun 2007 14:41:58 -0000      2.49.2.2
  +++ rpm/rpmio/rpmrpc.c        31 May 2008 18:59:06 -0000      2.49.2.3
  @@ -1567,6 +1567,8 @@
       const char * lpath;
       int ut = urlPath(path, &lpath);
   
  +if (_rpmio_debug)
  +fprintf(stderr, "*** Readlink(%s,%p[%u])\n", path, buf, (unsigned)bufsiz);
       switch (ut) {
       case URL_IS_FTP:
        return ftpReadlink(path, buf, bufsiz);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmurl.h
  ============================================================================
  $ cvs diff -u -r1.22 -r1.22.2.1 rpmurl.h
  --- rpm/rpmio/rpmurl.h        25 May 2007 17:36:37 -0000      1.22
  +++ rpm/rpmio/rpmurl.h        31 May 2008 18:59:06 -0000      1.22.2.1
  @@ -49,7 +49,9 @@
       int proxyp;                      /*!< FTP/HTTP: proxy port */
       int      port;                   /*!< URI port. */
       int urltype;             /*!< URI type. */
  +/[EMAIL PROTECTED]@*/
       FD_t ctrl;                       /*!< control channel */
  +/[EMAIL PROTECTED]@*/
       FD_t data;                       /*!< per-xfer data channel */
   
   /[EMAIL PROTECTED]@*/
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/strtolocale.c
  ============================================================================
  $ cvs diff -u -r1.2 -r1.2.2.1 strtolocale.c
  --- rpm/rpmio/strtolocale.c   25 May 2007 18:34:14 -0000      1.2
  +++ rpm/rpmio/strtolocale.c   31 May 2008 18:59:06 -0000      1.2.2.1
  @@ -41,7 +41,7 @@
            size_t dest_offset;
            if (errno != E2BIG) {
                free(result);
  -             iconv_close(cd);
  +             (void) iconv_close(cd);
                return str;
            }
            dest_offset = dest - result;
  @@ -53,7 +53,7 @@
            src = NULL;
        }
       }
  -    iconv_close(cd);
  +    (void) iconv_close(cd);
       free((void *)str);
       if (dest_size == 0) {
        size_t dest_offset = dest - result;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/url.c
  ============================================================================
  $ cvs diff -u -r1.35.2.3 -r1.35.2.4 url.c
  --- rpm/rpmio/url.c   17 Jun 2007 14:41:58 -0000      1.35.2.3
  +++ rpm/rpmio/url.c   31 May 2008 18:59:06 -0000      1.35.2.4
  @@ -99,14 +99,14 @@
        if (fp) {
            fdPush(u->ctrl, fpio, fp, -1);   /* Push fpio onto stack */
            (void) Fclose(u->ctrl);
  -     } else if (fdio->_fileno(u->ctrl) >= 0)
  +     } else if (fdFileno(u->ctrl) >= 0)
            xx = fdio->close(u->ctrl);
        /[EMAIL PROTECTED]@*/
   #else
  -     (void) Fclose(u->ctrl);
  +     xx = Fclose(u->ctrl);
   #endif
   
  -     u->ctrl = fdio->_fdderef(u->ctrl, "persist ctrl (urlFree)", file, line);
  +     u->ctrl = XfdFree(u->ctrl, "persist ctrl (urlFree)", file, line);
        /[EMAIL PROTECTED]@*/
        if (u->ctrl)
            fprintf(stderr, _("warning: u %p ctrl %p nrefs != 0 (%s %s)\n"),
  @@ -120,13 +120,13 @@
        if (fp) {
            fdPush(u->data, fpio, fp, -1);   /* Push fpio onto stack */
            (void) Fclose(u->data);
  -     } else if (fdio->_fileno(u->data) >= 0)
  +     } else if (fdFileno(u->data) >= 0)
            xx = fdio->close(u->data);
   #else
  -     (void) Fclose(u->ctrl);
  +     xx = Fclose(u->ctrl);
   #endif
   
  -     u->data = fdio->_fdderef(u->data, "persist data (urlFree)", file, line);
  +     u->data = XfdFree(u->data, "persist data (urlFree)", file, line);
        /[EMAIL PROTECTED]@*/
        if (u->data)
            fprintf(stderr, _("warning: u %p data %p nrefs != 0 (%s %s)\n"),
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                [email protected]

Reply via email to