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

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
  Module: rpm                              Date:   01-Dec-2009 17:48:33
  Branch: HEAD                             Handle: 2009120116483201

  Added files:
    rpm/rpmdb               rpmlio.c rpmlio.h
  Modified files:
    rpm                     CHANGES
    rpm/rpmdb               Makefile.am librpmdb.vers poptDB.c rpmdb.h

  Log:
    - rpmlio: add --rpmliodebug spewage valve.
    - rpmlio: add syscall/scriplet logging to -lrpmdb API for rework.

  Summary:
    Revision    Changes     Path
    1.3169      +2  -0      rpm/CHANGES
    1.118       +2  -2      rpm/rpmdb/Makefile.am
    1.80        +19 -0      rpm/rpmdb/librpmdb.vers
    1.15        +3  -0      rpm/rpmdb/poptDB.c
    1.127       +3  -384    rpm/rpmdb/rpmdb.h
    1.1         +400 -0     rpm/rpmdb/rpmlio.c
    1.1         +67 -0      rpm/rpmdb/rpmlio.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.3168 -r1.3169 CHANGES
  --- rpm/CHANGES       1 Dec 2009 16:21:02 -0000       1.3168
  +++ rpm/CHANGES       1 Dec 2009 16:48:32 -0000       1.3169
  @@ -1,5 +1,7 @@
   
   5.2b1 -> 5.3a1
  +    - jbj: rpmlio: add --rpmliodebug spewage valve.
  +    - jbj: rpmlio: add syscall/scriplet logging to -lrpmdb API for rework.
       - jbj: revert the change for autoconf-2.65, breaks w autoconf-2.63.
       - devzero2000: complete changing db2offset data type to uint32_t 
everywhere
       - bero: Fix generation of configure script with autoconf 2.65
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/Makefile.am
  ============================================================================
  $ cvs diff -u -r1.117 -r1.118 Makefile.am
  --- rpm/rpmdb/Makefile.am     22 Oct 2009 16:37:11 -0000      1.117
  +++ rpm/rpmdb/Makefile.am     1 Dec 2009 16:48:33 -0000       1.118
  @@ -36,7 +36,7 @@
   pkgincdir = $(pkgincludedir)$(WITH_PATH_VERSIONED_SUFFIX)
   pkginc_HEADERS = pkgio.h rpmdb.h rpmevr.h rpmns.h rpmtag.h rpmtypes.h
   noinst_HEADERS = \
  -     fprint.h header_internal.h legacy.h rpmdpkg.h \
  +     fprint.h header_internal.h legacy.h rpmdpkg.h rpmlio.h \
        rpmtd.h rpmtxn.h rpmwf.h signature.h
   
   pkglibdir =          @USRLIBRPM@
  @@ -53,7 +53,7 @@
   librpmdb_la_SOURCES = \
        dbconfig.c fprint.c \
        hdrfmt.c hdrNVR.c header.c header_internal.c legacy.c merge.c \
  -     pkgio.c poptDB.c rpmdb.c rpmdpkg.c rpmevr.c rpmns.c rpmtd.c \
  +     pkgio.c poptDB.c rpmdb.c rpmdpkg.c rpmevr.c rpmlio.c rpmns.c rpmtd.c \
        rpmtxn.c rpmwf.c signature.c tagname.c tagtbl.c $(logio_LSOURCES)
   librpmdb_la_LDFLAGS = -release $(LT_CURRENT).$(LT_REVISION)
   if HAVE_LD_VERSION_SCRIPT
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/librpmdb.vers
  ============================================================================
  $ cvs diff -u -r1.79 -r1.80 librpmdb.vers
  --- rpm/rpmdb/librpmdb.vers   13 Nov 2009 18:54:34 -0000      1.79
  +++ rpm/rpmdb/librpmdb.vers   1 Dec 2009 16:48:33 -0000       1.80
  @@ -139,6 +139,25 @@
       rpmEVRnew;
       rpmEVRoverlap;
       rpmEVRparse;
  +    _rpmlio_debug;
  +    rpmlioCreat;
  +    rpmlioUnlink;
  +    rpmlioRename;
  +    rpmlioMkdir;
  +    rpmlioRmdir;
  +    rpmlioLsetfilecon;
  +    rpmlioChown;
  +    rpmlioLchown;
  +    rpmlioChmod;
  +    rpmlioUtime;
  +    rpmlioSymlink;
  +    rpmlioLink;
  +    rpmlioMknod;
  +    rpmlioMkfifo;
  +    rpmlioPrein;
  +    rpmlioPostin;
  +    rpmlioPreun;
  +    rpmlioPostun;
       _rpmmi_debug;
       _rpmmiPool;
       rpmmiAddPattern;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/poptDB.c
  ============================================================================
  $ cvs diff -u -r1.14 -r1.15 poptDB.c
  --- rpm/rpmdb/poptDB.c        13 Nov 2009 18:54:34 -0000      1.14
  +++ rpm/rpmdb/poptDB.c        1 Dec 2009 16:48:33 -0000       1.15
  @@ -10,6 +10,7 @@
   #include <rpmtypes.h>
   #include <rpmtag.h>
   #include <rpmdb.h>
  +#include <rpmlio.h>
   #include <rpmtxn.h>
   
   #include <rpmcli.h>  /* XXX rpmQVKArguments_s, <popt.h> */
  @@ -33,6 +34,8 @@
        N_("Debug rpmdb DataBase"), NULL},
    { "rpmdbidebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_dbi_debug, 
-1,
        N_("Debug dbiIndex DataBase Index"), NULL},
  + { "rpmliodebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, 
&_rpmlio_debug, -1,
  +     N_("Debug rpmlio database Log I/O"), NULL},
    { "rpmtxndebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, 
&_rpmtxn_debug, -1,
        N_("Debug rpmtxn database Transaction"), NULL},
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.h
  ============================================================================
  $ cvs diff -u -r1.126 -r1.127 rpmdb.h
  --- rpm/rpmdb/rpmdb.h 17 Nov 2009 00:19:30 -0000      1.126
  +++ rpm/rpmdb/rpmdb.h 1 Dec 2009 16:48:33 -0000       1.127
  @@ -866,6 +866,9 @@
   }
   
   #if defined(_RPMDB_INTERNAL)
  +
  +#include <rpmlio.h>  /* XXX add to psm.c/fsm.c */
  +
   /*...@unused@*/ static inline
   int rpmlkId(rpmdb rpmdb, uint32_t *_idp)
   {
  @@ -992,390 +995,6 @@
   }
   
   /*...@unused@*/ static inline
  -int rpmlioCreat(rpmdb rpmdb, const char * fn, mode_t mode,
  -             const uint8_t * b, size_t blen,
  -             const uint8_t * d, size_t dlen, uint32_t dalgo)
  -{
  -    int rc = 0;
  -    extern int logio_Creat_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t, 
const DBT *, const DBT *, uint32_t));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT FNdbt = {0};
  -    DBT Bdbt = {0};
  -    DBT Ddbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    FNdbt.data = (void *)fn;
  -    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  -    Bdbt.data = (void *)b;
  -    Bdbt.size = blen;
  -    Ddbt.data = (void *)d;
  -    Ddbt.size = dlen;
  -    rc = logio_Creat_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode, &Bdbt, 
&Ddbt, dalgo);
  -fprintf(stderr, "<== %s(%s, 0%o, %p[%u], %p[%u], %u) rc %d\n", __FUNCTION__, 
fn, mode, b, (unsigned)blen, d, (unsigned)dlen, dalgo, rc);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
  -int rpmlioUnlink(rpmdb rpmdb, const char * fn, mode_t mode,
  -             const uint8_t * b, size_t blen,
  -             const uint8_t * d, size_t dlen, uint32_t dalgo)
  -{
  -    int rc = 0;
  -    extern int logio_Unlink_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t, 
const DBT *, const DBT *, uint32_t));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT FNdbt = {0};
  -    DBT Bdbt = {0};
  -    DBT Ddbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    FNdbt.data = (void *)fn;
  -    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  -    Bdbt.data = (void *)b;
  -    Bdbt.size = blen;
  -    Ddbt.data = (void *)d;
  -    Ddbt.size = dlen;
  -    rc = logio_Unlink_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode, &Bdbt, 
&Ddbt, dalgo);
  -fprintf(stderr, "<== %s(%s, 0%o, %p[%u], %p[%u], %u) rc %d\n", __FUNCTION__, 
fn, mode, b, (unsigned)blen, d, (unsigned)dlen, dalgo, rc);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
  -int rpmlioRename(rpmdb rpmdb, const char * oldname, const char * newname,
  -             mode_t mode,
  -             const uint8_t * b, size_t blen,
  -             const uint8_t * d, size_t dlen, uint32_t dalgo)
  -{
  -    int rc = 0;
  -    extern int logio_Rename_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT 
*, mode_t, const DBT *, const DBT *, uint32_t));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT ONdbt = {0};
  -    DBT NNdbt = {0};
  -    DBT Bdbt = {0};
  -    DBT Ddbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    ONdbt.data = (void *)oldname;
  -    ONdbt.size = strlen(oldname) + 1;        /* trailing NUL too */
  -    NNdbt.data = (void *)newname;
  -    NNdbt.size = strlen(newname) + 1;        /* trailing NUL too */
  -    Bdbt.data = (void *)b;
  -    Bdbt.size = blen;
  -    Ddbt.data = (void *)d;
  -    Ddbt.size = dlen;
  -    rc = logio_Rename_log(dbenv, _txn, &_lsn, DB_FLUSH, &ONdbt, &NNdbt, 
mode, &Bdbt, &Ddbt, dalgo);
  -fprintf(stderr, "<== %s(%s, %s, 0%o, %p[%u], %p[%u], %u) rc %d\n", 
__FUNCTION__, oldname, newname, mode, b, (unsigned)blen, d, (unsigned)dlen, 
dalgo, rc);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
  -int rpmlioMkdir(rpmdb rpmdb, const char * dn, mode_t mode)
  -{
  -    int rc = 0;
  -    extern int logio_Mkdir_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT DNdbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    DNdbt.data = (void *)dn;
  -    DNdbt.size = strlen(dn) + 1;     /* trailing NUL too */
  -    rc = logio_Mkdir_log(dbenv, _txn, &_lsn, DB_FLUSH, &DNdbt, mode);
  -fprintf(stderr, "<== %s(%s, 0%o) rc %d\n", __FUNCTION__, dn, mode, rc);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
  -int rpmlioRmdir(rpmdb rpmdb, const char * dn, mode_t mode)
  -{
  -    int rc = 0;
  -    extern int logio_Rmdir_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT DNdbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    DNdbt.data = (void *)dn;
  -    DNdbt.size = strlen(dn) + 1;     /* trailing NUL too */
  -    rc = logio_Rmdir_log(dbenv, _txn, &_lsn, DB_FLUSH, &DNdbt, mode);
  -fprintf(stderr, "<== %s(%s, 0%o) rc %d\n", __FUNCTION__, dn, mode, rc);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
  -int rpmlioLsetfilecon(rpmdb rpmdb, const char * fn, const char * context)
  -{
  -    int rc = 0;
  -    extern int logio_Lsetfilecon_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT 
*));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT FNdbt = {0};
  -    DBT CONTEXTdbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    FNdbt.data = (void *)fn;
  -    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  -    if (context == NULL) context = "";       /* XXX prevent segfaults */
  -    CONTEXTdbt.data = (void *)context;
  -    CONTEXTdbt.size = strlen(context) + 1;   /* trailing NUL too */
  -    rc = logio_Lsetfilecon_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, 
&CONTEXTdbt);
  -fprintf(stderr, "<== %s(%s, \"%s\") rc %d\n", __FUNCTION__, fn, context, rc);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
  -int rpmlioChown(rpmdb rpmdb, const char * fn, uid_t uid, gid_t gid)
  -{
  -    int rc = 0;
  -    extern int logio_Chown_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, uid_t, 
gid_t));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT FNdbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    FNdbt.data = (void *)fn;
  -    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  -    rc = logio_Chown_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, uid, gid);
  -fprintf(stderr, "<== %s(%s, %u, %u) rc %d\n", __FUNCTION__, fn, 
(unsigned)uid, (unsigned)gid, rc);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
  -int rpmlioLchown(rpmdb rpmdb, const char * fn, uid_t uid, gid_t gid)
  -{
  -    int rc = 0;
  -    extern int logio_Lchown_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, uid_t, 
gid_t));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT FNdbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    FNdbt.data = (void *)fn;
  -    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  -    rc = logio_Lchown_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, uid, gid);
  -fprintf(stderr, "<== %s(%s, %u, %u) rc %d\n", __FUNCTION__, fn, 
(unsigned)uid, (unsigned)gid, rc);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
  -int rpmlioChmod(rpmdb rpmdb, const char * fn, mode_t mode)
  -{
  -    int rc = 0;
  -    extern int logio_Chmod_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT FNdbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    FNdbt.data = (void *)fn;
  -    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  -    rc = logio_Chmod_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode);
  -fprintf(stderr, "<== %s(%s, 0%o) rc %d\n", __FUNCTION__, fn, mode, rc);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
  -int rpmlioUtime(rpmdb rpmdb, const char * fn, time_t actime, time_t modtime)
  -{
  -    int rc = 0;
  -    extern int logio_Utime_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, time_t, 
time_t));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT FNdbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    FNdbt.data = (void *)fn;
  -    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  -    rc = logio_Utime_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, actime, 
modtime);
  -fprintf(stderr, "<== %s(%s, 0x%x, 0x%x) rc %d\n", __FUNCTION__, fn, 
(unsigned)actime, (unsigned)modtime, rc);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
  -int rpmlioSymlink(rpmdb rpmdb, const char * ln, const char * fn)
  -{
  -    int rc = 0;
  -    extern int logio_Symlink_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT 
*));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT LNdbt = {0};
  -    DBT FNdbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    LNdbt.data = (void *)ln;
  -    LNdbt.size = strlen(ln) + 1;     /* trailing NUL too */
  -    FNdbt.data = (void *)fn;
  -    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  -    rc = logio_Symlink_log(dbenv, _txn, &_lsn, DB_FLUSH, &LNdbt, &FNdbt);
  -fprintf(stderr, "<== %s(%s, %s) rc %d\n", __FUNCTION__, ln, fn, rc);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
  -int rpmlioLink(rpmdb rpmdb, const char * ln, const char * fn)
  -{
  -    int rc = 0;
  -    extern int logio_Link_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT 
*));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT LNdbt = {0};
  -    DBT FNdbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    LNdbt.data = (void *)ln;
  -    LNdbt.size = strlen(ln) + 1;     /* trailing NUL too */
  -    FNdbt.data = (void *)fn;
  -    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  -    rc = logio_Link_log(dbenv, _txn, &_lsn, DB_FLUSH, &LNdbt, &FNdbt);
  -fprintf(stderr, "<== %s(%s, %s) rc %d\n", __FUNCTION__, ln, fn, rc);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
  -int rpmlioMknod(rpmdb rpmdb, const char * fn, mode_t mode, dev_t dev)
  -{
  -    int rc = 0;
  -    extern int logio_Mknod_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t, 
dev_t));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT FNdbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    FNdbt.data = (void *)fn;
  -    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  -    rc = logio_Mknod_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode, dev);
  -fprintf(stderr, "<== %s(%s, 0%o, 0x%x) rc %d\n", __FUNCTION__, fn, mode, 
(unsigned)dev, rc);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
  -int rpmlioMkfifo(rpmdb rpmdb, const char * fn, mode_t mode)
  -{
  -    int rc = 0;
  -    extern int logio_Mkfifo_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT FNdbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    FNdbt.data = (void *)fn;
  -    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  -    rc = logio_Mkfifo_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode);
  -fprintf(stderr, "<== %s(%s, 0%o) rc %d\n", __FUNCTION__, fn, mode, rc);
  -    return rc;
  -}
  -
  -#include <argv.h>
  -
  -/*...@unused@*/ static inline
  -int rpmlioPrein(rpmdb rpmdb, const char ** av, const char * body)
  -{
  -    const char * cmd = argvJoin(av, ' ');
  -    int rc = 0;
  -    extern int logio_Prein_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT 
*));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT AVdbt = {0};
  -    DBT BODYdbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    AVdbt.data = (void *)cmd;
  -    AVdbt.size = strlen(cmd) + 1;    /* trailing NUL too */
  -    BODYdbt.data = (void *)body;
  -    BODYdbt.size = strlen(body) + 1; /* trailing NUL too */
  -    rc = logio_Prein_log(dbenv, _txn, &_lsn, DB_FLUSH, &AVdbt, &BODYdbt);
  -fprintf(stderr, "<== %s(%p,%p) rc %d\n", __FUNCTION__, av, body, rc);
  -    cmd = _free(cmd);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
  -int rpmlioPostin(rpmdb rpmdb, const char ** av, const char * body)
  -{
  -    const char * cmd = argvJoin(av, ' ');
  -    int rc = 0;
  -    extern int logio_Postin_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT 
*));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT AVdbt = {0};
  -    DBT BODYdbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    AVdbt.data = (void *)cmd;
  -    AVdbt.size = strlen(cmd) + 1;    /* trailing NUL too */
  -    BODYdbt.data = (void *)body;
  -    BODYdbt.size = strlen(body) + 1; /* trailing NUL too */
  -    rc = logio_Postin_log(dbenv, _txn, &_lsn, DB_FLUSH, &AVdbt, &BODYdbt);
  -fprintf(stderr, "<== %s(%p,%p) rc %d\n", __FUNCTION__, av, body, rc);
  -    cmd = _free(cmd);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
  -int rpmlioPreun(rpmdb rpmdb, const char ** av, const char * body)
  -{
  -    const char * cmd = argvJoin(av, ' ');
  -    int rc = 0;
  -    extern int logio_Preun_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT 
*));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT AVdbt = {0};
  -    DBT BODYdbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    AVdbt.data = (void *)cmd;
  -    AVdbt.size = strlen(cmd) + 1;    /* trailing NUL too */
  -    BODYdbt.data = (void *)body;
  -    BODYdbt.size = strlen(body) + 1; /* trailing NUL too */
  -    rc = logio_Preun_log(dbenv, _txn, &_lsn, DB_FLUSH, &AVdbt, &BODYdbt);
  -fprintf(stderr, "<== %s(%p,%p) rc %d\n", __FUNCTION__, av, body, rc);
  -    cmd = _free(cmd);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
  -int rpmlioPostun(rpmdb rpmdb, const char ** av, const char * body)
  -{
  -    const char * cmd = argvJoin(av, ' ');
  -    int rc = 0;
  -    extern int logio_Postun_log
  -        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT 
*));
  -    DB_ENV * dbenv = rpmdb->db_dbenv;
  -    DB_TXN * _txn = rpmdb->db_txn;
  -    DB_LSN _lsn = {0,0};
  -    DBT AVdbt = {0};
  -    DBT BODYdbt = {0};
  -    if (!(dbenv && _txn)) return 0;
  -    AVdbt.data = (void *)cmd;
  -    AVdbt.size = strlen(cmd) + 1;    /* trailing NUL too */
  -    BODYdbt.data = (void *)body;
  -    BODYdbt.size = strlen(body) + 1; /* trailing NUL too */
  -    rc = logio_Postun_log(dbenv, _txn, &_lsn, DB_FLUSH, &AVdbt, &BODYdbt);
  -fprintf(stderr, "<== %s(%p,%p) rc %d\n", __FUNCTION__, av, body, rc);
  -    cmd = _free(cmd);
  -    return rc;
  -}
  -
  -/*...@unused@*/ static inline
   int rpmmpfSyncAll(rpmdb rpmdb)
   {
       DB_ENV * dbenv = rpmdb->db_dbenv;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmlio.c
  ============================================================================
  $ cvs diff -u -r0 -r1.1 rpmlio.c
  --- /dev/null 2009-12-01 17:48:33 +0100
  +++ rpmlio.c  2009-12-01 17:48:33 +0100
  @@ -0,0 +1,400 @@
  +/** \ingroup rpmdb
  + * \file rpmdb/rpmlio.c
  + */
  +
  +#include "system.h"
  +
  +#include <rpmiotypes.h>
  +#include <rpmtypes.h>
  +#include <argv.h>
  +
  +#include <rpmtag.h>
  +#define _RPMDB_INTERNAL
  +#include <rpmdb.h>
  +#include <rpmlio.h>
  +
  +#include "debug.h"
  +
  +int _rpmlio_debug = 0;
  +
  +int rpmlioCreat(rpmdb rpmdb, const char * fn, mode_t mode,
  +             const uint8_t * b, size_t blen,
  +             const uint8_t * d, size_t dlen, uint32_t dalgo)
  +{
  +    int rc = 0;
  +    extern int logio_Creat_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t, 
const DBT *, const DBT *, uint32_t));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT FNdbt = {0};
  +    DBT Bdbt = {0};
  +    DBT Ddbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    FNdbt.data = (void *)fn;
  +    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  +    Bdbt.data = (void *)b;
  +    Bdbt.size = blen;
  +    Ddbt.data = (void *)d;
  +    Ddbt.size = dlen;
  +    rc = logio_Creat_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode, &Bdbt, 
&Ddbt, dalgo);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%s, 0%o, %p[%u], %p[%u], %u) rc %d\n", __FUNCTION__, 
fn, mode, b, (unsigned)blen, d, (unsigned)dlen, dalgo, rc);
  +    return rc;
  +}
  +
  +int rpmlioUnlink(rpmdb rpmdb, const char * fn, mode_t mode,
  +             const uint8_t * b, size_t blen,
  +             const uint8_t * d, size_t dlen, uint32_t dalgo)
  +{
  +    int rc = 0;
  +    extern int logio_Unlink_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t, 
const DBT *, const DBT *, uint32_t));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT FNdbt = {0};
  +    DBT Bdbt = {0};
  +    DBT Ddbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    FNdbt.data = (void *)fn;
  +    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  +    Bdbt.data = (void *)b;
  +    Bdbt.size = blen;
  +    Ddbt.data = (void *)d;
  +    Ddbt.size = dlen;
  +    rc = logio_Unlink_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode, &Bdbt, 
&Ddbt, dalgo);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%s, 0%o, %p[%u], %p[%u], %u) rc %d\n", __FUNCTION__, 
fn, mode, b, (unsigned)blen, d, (unsigned)dlen, dalgo, rc);
  +    return rc;
  +}
  +
  +int rpmlioRename(rpmdb rpmdb, const char * oldname, const char * newname,
  +             mode_t mode,
  +             const uint8_t * b, size_t blen,
  +             const uint8_t * d, size_t dlen, uint32_t dalgo)
  +{
  +    int rc = 0;
  +    extern int logio_Rename_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT 
*, mode_t, const DBT *, const DBT *, uint32_t));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT ONdbt = {0};
  +    DBT NNdbt = {0};
  +    DBT Bdbt = {0};
  +    DBT Ddbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    ONdbt.data = (void *)oldname;
  +    ONdbt.size = strlen(oldname) + 1;        /* trailing NUL too */
  +    NNdbt.data = (void *)newname;
  +    NNdbt.size = strlen(newname) + 1;        /* trailing NUL too */
  +    Bdbt.data = (void *)b;
  +    Bdbt.size = blen;
  +    Ddbt.data = (void *)d;
  +    Ddbt.size = dlen;
  +    rc = logio_Rename_log(dbenv, _txn, &_lsn, DB_FLUSH, &ONdbt, &NNdbt, 
mode, &Bdbt, &Ddbt, dalgo);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%s, %s, 0%o, %p[%u], %p[%u], %u) rc %d\n", 
__FUNCTION__, oldname, newname, mode, b, (unsigned)blen, d, (unsigned)dlen, 
dalgo, rc);
  +    return rc;
  +}
  +
  +int rpmlioMkdir(rpmdb rpmdb, const char * dn, mode_t mode)
  +{
  +    int rc = 0;
  +    extern int logio_Mkdir_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT DNdbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    DNdbt.data = (void *)dn;
  +    DNdbt.size = strlen(dn) + 1;     /* trailing NUL too */
  +    rc = logio_Mkdir_log(dbenv, _txn, &_lsn, DB_FLUSH, &DNdbt, mode);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%s, 0%o) rc %d\n", __FUNCTION__, dn, mode, rc);
  +    return rc;
  +}
  +
  +int rpmlioRmdir(rpmdb rpmdb, const char * dn, mode_t mode)
  +{
  +    int rc = 0;
  +    extern int logio_Rmdir_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT DNdbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    DNdbt.data = (void *)dn;
  +    DNdbt.size = strlen(dn) + 1;     /* trailing NUL too */
  +    rc = logio_Rmdir_log(dbenv, _txn, &_lsn, DB_FLUSH, &DNdbt, mode);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%s, 0%o) rc %d\n", __FUNCTION__, dn, mode, rc);
  +    return rc;
  +}
  +
  +int rpmlioLsetfilecon(rpmdb rpmdb, const char * fn, const char * context)
  +{
  +    int rc = 0;
  +    extern int logio_Lsetfilecon_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT 
*));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT FNdbt = {0};
  +    DBT CONTEXTdbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    FNdbt.data = (void *)fn;
  +    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  +    if (context == NULL) context = "";       /* XXX prevent segfaults */
  +    CONTEXTdbt.data = (void *)context;
  +    CONTEXTdbt.size = strlen(context) + 1;   /* trailing NUL too */
  +    rc = logio_Lsetfilecon_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, 
&CONTEXTdbt);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%s, \"%s\") rc %d\n", __FUNCTION__, fn, context, rc);
  +    return rc;
  +}
  +
  +int rpmlioChown(rpmdb rpmdb, const char * fn, uid_t uid, gid_t gid)
  +{
  +    int rc = 0;
  +    extern int logio_Chown_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, uid_t, 
gid_t));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT FNdbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    FNdbt.data = (void *)fn;
  +    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  +    rc = logio_Chown_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, uid, gid);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%s, %u, %u) rc %d\n", __FUNCTION__, fn, 
(unsigned)uid, (unsigned)gid, rc);
  +    return rc;
  +}
  +
  +int rpmlioLchown(rpmdb rpmdb, const char * fn, uid_t uid, gid_t gid)
  +{
  +    int rc = 0;
  +    extern int logio_Lchown_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, uid_t, 
gid_t));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT FNdbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    FNdbt.data = (void *)fn;
  +    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  +    rc = logio_Lchown_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, uid, gid);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%s, %u, %u) rc %d\n", __FUNCTION__, fn, 
(unsigned)uid, (unsigned)gid, rc);
  +    return rc;
  +}
  +
  +int rpmlioChmod(rpmdb rpmdb, const char * fn, mode_t mode)
  +{
  +    int rc = 0;
  +    extern int logio_Chmod_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT FNdbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    FNdbt.data = (void *)fn;
  +    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  +    rc = logio_Chmod_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%s, 0%o) rc %d\n", __FUNCTION__, fn, mode, rc);
  +    return rc;
  +}
  +
  +int rpmlioUtime(rpmdb rpmdb, const char * fn, time_t actime, time_t modtime)
  +{
  +    int rc = 0;
  +    extern int logio_Utime_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, time_t, 
time_t));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT FNdbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    FNdbt.data = (void *)fn;
  +    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  +    rc = logio_Utime_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, actime, 
modtime);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%s, 0x%x, 0x%x) rc %d\n", __FUNCTION__, fn, 
(unsigned)actime, (unsigned)modtime, rc);
  +    return rc;
  +}
  +
  +int rpmlioSymlink(rpmdb rpmdb, const char * ln, const char * fn)
  +{
  +    int rc = 0;
  +    extern int logio_Symlink_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT 
*));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT LNdbt = {0};
  +    DBT FNdbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    LNdbt.data = (void *)ln;
  +    LNdbt.size = strlen(ln) + 1;     /* trailing NUL too */
  +    FNdbt.data = (void *)fn;
  +    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  +    rc = logio_Symlink_log(dbenv, _txn, &_lsn, DB_FLUSH, &LNdbt, &FNdbt);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%s, %s) rc %d\n", __FUNCTION__, ln, fn, rc);
  +    return rc;
  +}
  +
  +int rpmlioLink(rpmdb rpmdb, const char * ln, const char * fn)
  +{
  +    int rc = 0;
  +    extern int logio_Link_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT 
*));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT LNdbt = {0};
  +    DBT FNdbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    LNdbt.data = (void *)ln;
  +    LNdbt.size = strlen(ln) + 1;     /* trailing NUL too */
  +    FNdbt.data = (void *)fn;
  +    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  +    rc = logio_Link_log(dbenv, _txn, &_lsn, DB_FLUSH, &LNdbt, &FNdbt);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%s, %s) rc %d\n", __FUNCTION__, ln, fn, rc);
  +    return rc;
  +}
  +
  +int rpmlioMknod(rpmdb rpmdb, const char * fn, mode_t mode, dev_t dev)
  +{
  +    int rc = 0;
  +    extern int logio_Mknod_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t, 
dev_t));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT FNdbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    FNdbt.data = (void *)fn;
  +    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  +    rc = logio_Mknod_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode, dev);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%s, 0%o, 0x%x) rc %d\n", __FUNCTION__, fn, mode, 
(unsigned)dev, rc);
  +    return rc;
  +}
  +
  +int rpmlioMkfifo(rpmdb rpmdb, const char * fn, mode_t mode)
  +{
  +    int rc = 0;
  +    extern int logio_Mkfifo_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT FNdbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    FNdbt.data = (void *)fn;
  +    FNdbt.size = strlen(fn) + 1;     /* trailing NUL too */
  +    rc = logio_Mkfifo_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%s, 0%o) rc %d\n", __FUNCTION__, fn, mode, rc);
  +    return rc;
  +}
  +
  +int rpmlioPrein(rpmdb rpmdb, const char ** av, const char * body)
  +{
  +    const char * cmd = argvJoin(av, ' ');
  +    int rc = 0;
  +    extern int logio_Prein_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT 
*));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT AVdbt = {0};
  +    DBT BODYdbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    AVdbt.data = (void *)cmd;
  +    AVdbt.size = strlen(cmd) + 1;    /* trailing NUL too */
  +    BODYdbt.data = (void *)body;
  +    BODYdbt.size = strlen(body) + 1; /* trailing NUL too */
  +    rc = logio_Prein_log(dbenv, _txn, &_lsn, DB_FLUSH, &AVdbt, &BODYdbt);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%p,%p) rc %d\n", __FUNCTION__, av, body, rc);
  +    cmd = _free(cmd);
  +    return rc;
  +}
  +
  +int rpmlioPostin(rpmdb rpmdb, const char ** av, const char * body)
  +{
  +    const char * cmd = argvJoin(av, ' ');
  +    int rc = 0;
  +    extern int logio_Postin_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT 
*));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT AVdbt = {0};
  +    DBT BODYdbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    AVdbt.data = (void *)cmd;
  +    AVdbt.size = strlen(cmd) + 1;    /* trailing NUL too */
  +    BODYdbt.data = (void *)body;
  +    BODYdbt.size = strlen(body) + 1; /* trailing NUL too */
  +    rc = logio_Postin_log(dbenv, _txn, &_lsn, DB_FLUSH, &AVdbt, &BODYdbt);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%p,%p) rc %d\n", __FUNCTION__, av, body, rc);
  +    cmd = _free(cmd);
  +    return rc;
  +}
  +
  +int rpmlioPreun(rpmdb rpmdb, const char ** av, const char * body)
  +{
  +    const char * cmd = argvJoin(av, ' ');
  +    int rc = 0;
  +    extern int logio_Preun_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT 
*));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT AVdbt = {0};
  +    DBT BODYdbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    AVdbt.data = (void *)cmd;
  +    AVdbt.size = strlen(cmd) + 1;    /* trailing NUL too */
  +    BODYdbt.data = (void *)body;
  +    BODYdbt.size = strlen(body) + 1; /* trailing NUL too */
  +    rc = logio_Preun_log(dbenv, _txn, &_lsn, DB_FLUSH, &AVdbt, &BODYdbt);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%p,%p) rc %d\n", __FUNCTION__, av, body, rc);
  +    cmd = _free(cmd);
  +    return rc;
  +}
  +
  +int rpmlioPostun(rpmdb rpmdb, const char ** av, const char * body)
  +{
  +    const char * cmd = argvJoin(av, ' ');
  +    int rc = 0;
  +    extern int logio_Postun_log
  +        __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT 
*));
  +    DB_ENV * dbenv = rpmdb->db_dbenv;
  +    DB_TXN * _txn = rpmdb->db_txn;
  +    DB_LSN _lsn = {0,0};
  +    DBT AVdbt = {0};
  +    DBT BODYdbt = {0};
  +    if (!(dbenv && _txn)) return 0;
  +    AVdbt.data = (void *)cmd;
  +    AVdbt.size = strlen(cmd) + 1;    /* trailing NUL too */
  +    BODYdbt.data = (void *)body;
  +    BODYdbt.size = strlen(body) + 1; /* trailing NUL too */
  +    rc = logio_Postun_log(dbenv, _txn, &_lsn, DB_FLUSH, &AVdbt, &BODYdbt);
  +if (_rpmlio_debug)
  +fprintf(stderr, "<== %s(%p,%p) rc %d\n", __FUNCTION__, av, body, rc);
  +    cmd = _free(cmd);
  +    return rc;
  +}
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmlio.h
  ============================================================================
  $ cvs diff -u -r0 -r1.1 rpmlio.h
  --- /dev/null 2009-12-01 17:48:33 +0100
  +++ rpmlio.h  2009-12-01 17:48:33 +0100
  @@ -0,0 +1,67 @@
  +#ifndef H_RPMLIO
  +#define H_RPMLIO
  +
  +extern int _rpmlio_debug;
  +
  +int rpmlioCreat(rpmdb rpmdb, const char * fn, mode_t mode,
  +             const uint8_t * b, size_t blen,
  +             const uint8_t * d, size_t dlen, uint32_t dalgo)
  +     /*...@*/;
  +
  +int rpmlioUnlink(rpmdb rpmdb, const char * fn, mode_t mode,
  +             const uint8_t * b, size_t blen,
  +             const uint8_t * d, size_t dlen, uint32_t dalgo)
  +     /*...@*/;
  +
  +int rpmlioRename(rpmdb rpmdb, const char * oldname, const char * newname,
  +             mode_t mode,
  +             const uint8_t * b, size_t blen,
  +             const uint8_t * d, size_t dlen, uint32_t dalgo)
  +     /*...@*/;
  +
  +int rpmlioMkdir(rpmdb rpmdb, const char * dn, mode_t mode)
  +     /*...@*/;
  +
  +int rpmlioRmdir(rpmdb rpmdb, const char * dn, mode_t mode)
  +     /*...@*/;
  +
  +int rpmlioLsetfilecon(rpmdb rpmdb, const char * fn, const char * context)
  +     /*...@*/;
  +
  +int rpmlioChown(rpmdb rpmdb, const char * fn, uid_t uid, gid_t gid)
  +     /*...@*/;
  +
  +int rpmlioLchown(rpmdb rpmdb, const char * fn, uid_t uid, gid_t gid)
  +     /*...@*/;
  +
  +int rpmlioChmod(rpmdb rpmdb, const char * fn, mode_t mode)
  +     /*...@*/;
  +
  +int rpmlioUtime(rpmdb rpmdb, const char * fn, time_t actime, time_t modtime)
  +     /*...@*/;
  +
  +int rpmlioSymlink(rpmdb rpmdb, const char * ln, const char * fn)
  +     /*...@*/;
  +
  +int rpmlioLink(rpmdb rpmdb, const char * ln, const char * fn)
  +     /*...@*/;
  +
  +int rpmlioMknod(rpmdb rpmdb, const char * fn, mode_t mode, dev_t dev)
  +     /*...@*/;
  +
  +int rpmlioMkfifo(rpmdb rpmdb, const char * fn, mode_t mode)
  +     /*...@*/;
  +
  +int rpmlioPrein(rpmdb rpmdb, const char ** av, const char * body)
  +     /*...@*/;
  +
  +int rpmlioPostin(rpmdb rpmdb, const char ** av, const char * body)
  +     /*...@*/;
  +
  +int rpmlioPreun(rpmdb rpmdb, const char ** av, const char * body)
  +     /*...@*/;
  +
  +int rpmlioPostun(rpmdb rpmdb, const char ** av, const char * body)
  +     /*...@*/;
  +
  +#endif       /* H_RPMLIO */
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to