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