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: 12-Oct-2009 21:03:49 Branch: HEAD Handle: 2009101219034800 Modified files: rpm/rpmdb librpmdb.vers logio.awk logio.h logio.src rpmdb.h Log: - dbi: stub-in a file id content pointer with creat/unlink/rename. Summary: Revision Changes Path 1.75 +1 -0 rpm/rpmdb/librpmdb.vers 1.4 +12 -32 rpm/rpmdb/logio.awk 1.7 +3 -3 rpm/rpmdb/logio.h 1.6 +10 -9 rpm/rpmdb/logio.src 1.116 +22 -17 rpm/rpmdb/rpmdb.h ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/rpmdb/librpmdb.vers ============================================================================ $ cvs diff -u -r1.74 -r1.75 librpmdb.vers --- rpm/rpmdb/librpmdb.vers 12 Oct 2009 17:07:26 -0000 1.74 +++ rpm/rpmdb/librpmdb.vers 12 Oct 2009 19:03:48 -0000 1.75 @@ -91,6 +91,7 @@ logio_Mkdir_recover; logio_Mkfifo_log; logio_Mknod_log; + logio_Rename_log; logio_Rmdir_log; logio_Rmdir_recover; logio_Symlink_log; @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/logio.awk ============================================================================ $ cvs diff -u -r1.3 -r1.4 logio.awk --- rpm/rpmdb/logio.awk 12 Oct 2009 17:07:26 -0000 1.3 +++ rpm/rpmdb/logio.awk 12 Oct 2009 19:03:48 -0000 1.4 @@ -4,7 +4,7 @@ # # Copyright (c) 1996-2009 Oracle. All rights reserved. # -# $Id: logio.awk,v 1.3 2009/10/12 17:07:26 jbj Exp $ +# $Id: logio.awk,v 1.4 2009/10/12 19:03:48 jbj Exp $ # # This awk script generates all the log, print, and read routines for the DB @@ -80,22 +80,18 @@ printf("/* Do not edit: automatically built by logio.awk. */\n\n")\ > CFILE printf("#include \"system.h\"\n\n") >> CFILE - printf("#include <rpmio.h>\n\n") >> CFILE if (!dbprivate) { printf("#include \"db.h\"\n") >> CFILE printf("#include \"db_int.h\"\n") >> CFILE printf("#include \"dbinc/db_swap.h\"\n\n") >> CFILE } - printf("#include \"debug.h\"\n") >> CFILE printf("/* Do not edit: automatically built by logio.awk. */\n\n")\ > PFILE printf("#include \"system.h\"\n\n") >> PFILE - printf("#include <rpmio.h>\n\n") >> PFILE if (!dbprivate) { printf("#include \"db.h\"\n\n") >> PFILE } - printf("#include \"debug.h\"\n\n") >> PFILE if (prefix == "__ham") printf("#ifdef HAVE_HASH\n") >> PFILE @@ -112,17 +108,13 @@ if (dbprivate) { # This assumes we're doing DB recovery. printf("#include \"system.h\"\n\n") >> TFILE - printf("#include <rpmio.h>\n\n") >> TFILE printf("#include \"db_int.h\"\n") >> TFILE printf("#include \"dbinc/db_page.h\"\n") >> TFILE printf("#include \"dbinc/%s.h\"\n", prefix) >> TFILE printf("#include \"dbinc/log.h\"\n\n") >> TFILE - printf("#include \"debug.h\"\n\n") >> TFILE } else { printf("#include \"system.h\"\n\n") >> TFILE - printf("#include <rpmio.h>\n\n") >> TFILE printf("#include <db.h>\n\n") >> TFILE - printf("#include \"debug.h\"\n\n") >> TFILE } } /^[ ]*INCLUDE/ { @@ -1055,10 +1047,10 @@ { # Function declaration if (has_dbp) { - printf("int\n%s_log(dbp, txnp, ret_lsnp, flags",\ + printf("int\n%s_log(DB *dbp, DB_TXN *txnp, DB_LSN *ret_lsnp, uint32_t flags",\ name) >> CFILE } else { - printf("int\n%s_log(%s, txnp, ret_lsnp, flags",\ + printf("int\n%s_log(DB_ENV *%s, DB_TXN *txnp, DB_LSN *ret_lsnp, uint32_t flags",\ name, env_var) >> CFILE } for (i = 0; i < nvars; i++) { @@ -1068,36 +1060,24 @@ continue; } printf(",") >> CFILE - if ((i % 6) == 0) - printf("\n ") >> CFILE + if ((i % 4) == 0) + printf("\n\t\t") >> CFILE else printf(" ") >> CFILE - printf("%s", vars[i]) >> CFILE - } - - if (withtype) - printf(", type") >> CFILE - - printf(")\n") >> CFILE - # Now print the parameters - if (has_dbp) { - printf("\tDB *dbp;\n") >> CFILE - } else { - printf("\t%s *%s;\n", env_type, env_var) >> CFILE - } - printf("\tDB_TXN *txnp;\n\tDB_LSN *ret_lsnp;\n") >> CFILE - printf("\tuint32_t flags;\n") >> CFILE - for (i = 0; i < nvars; i++) { # We just skip for modes == DB. if (modes[i] == "DBT" || modes[i] == "LOCKS" || modes[i] == "PGDBT" || modes[i] == "PGDDBT") - printf("\tconst %s *%s;\n", types[i], vars[i]) >> CFILE + printf("const %s *%s", types[i], vars[i]) >> CFILE else if (modes[i] != "DB") - printf("\t%s %s;\n", types[i], vars[i]) >> CFILE + printf("%s %s", types[i], vars[i]) >> CFILE } + if (withtype) - printf("\tuint32_t type;\n") >> CFILE + printf(", uint32_t type") >> CFILE + + printf(")\n") >> CFILE + } function log_callint(fname) @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/logio.h ============================================================================ $ cvs diff -u -r1.6 -r1.7 logio.h --- rpm/rpmdb/logio.h 10 Oct 2009 23:37:04 -0000 1.6 +++ rpm/rpmdb/logio.h 12 Oct 2009 19:03:48 -0000 1.7 @@ -12,15 +12,15 @@ __P((DB_ENV *, DBT *, DB_LSN *, db_recops)) int logio_Creat_log - __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *, unsigned, mode_t)); + __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *, mode_t)); _LOGIO_PROTO(Creat); int logio_Unlink_log - __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t)); + __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *, mode_t)); _LOGIO_PROTO(Unlink); int logio_Rename_log - __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *)); + __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *, const DBT *)); _LOGIO_PROTO(Rename); int logio_Mkdir_log @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/logio.src ============================================================================ $ cvs diff -u -r1.5 -r1.6 logio.src --- rpm/rpmdb/logio.src 10 Oct 2009 23:37:04 -0000 1.5 +++ rpm/rpmdb/logio.src 12 Oct 2009 19:03:48 -0000 1.6 @@ -1,5 +1,5 @@ PREFIX logio -INCLUDE #include "system.h" + INCLUDE #include <rpmio.h> INCLUDE #include "logio.h" INCLUDE #include "debug.h" @@ -14,20 +14,21 @@ /* Creat(2) */ BEGIN Creat 48 10000 +DBT fid DBT s DBT path DBT s -DBT digest DBT s -ARG dalgo unsigned u ARG mode mode_t o END /* Unlink(2) */ BEGIN Unlink 48 10001 +DBT fid DBT s DBT path DBT s ARG mode mode_t o END /* Rename(2) */ BEGIN Rename 48 10002 +DBT fid DBT s DBT oldpath DBT s DBT newpath DBT s END @@ -53,15 +54,15 @@ /* Chown(2) */ BEGIN Chown 48 10006 DBT path DBT s -ARG owner uid_t d -ARG group gid_t d +ARG owner uid_t lu +ARG group gid_t lu END /* Lchown(2) */ BEGIN Lchown 48 10007 DBT path DBT s -ARG owner uid_t d -ARG group gid_t d +ARG owner uid_t lu +ARG group gid_t lu END /* Chmod(2) */ @@ -73,8 +74,8 @@ /* Utime(2) */ BEGIN Utime 48 10009 DBT path DBT s -TIME actime time_t ld -TIME modtime time_t ld +TIME actime time_t lu +TIME modtime time_t lu END /* Symlink(2) */ @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/rpmdb.h ============================================================================ $ cvs diff -u -r1.115 -r1.116 rpmdb.h --- rpm/rpmdb/rpmdb.h 12 Oct 2009 01:34:42 -0000 1.115 +++ rpm/rpmdb/rpmdb.h 12 Oct 2009 19:03:48 -0000 1.116 @@ -1147,60 +1147,65 @@ } /*...@unused@*/ static inline -int rpmlioCreat(rpmdb rpmdb, const char * fn, mode_t mode, - const rpmuint8_t * d, size_t dlen, unsigned dalgo) +int rpmlioCreat(rpmdb rpmdb, void * fid, const char * fn, mode_t mode) { int rc = 0; extern int logio_Creat_log - __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *, unsigned, mode_t)); + __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *, mode_t)); DB_ENV * dbenv = rpmdb->db_dbenv; DB_TXN * _txn = rpmdb->db_txnid; DB_LSN _lsn = {0,0}; + DBT FIDdbt = {0}; DBT FNdbt = {0}; - DBT DIGESTdbt = {0}; + FIDdbt.data = ""; + FIDdbt.size = 1; FNdbt.data = (void *)fn; FNdbt.size = strlen(fn) + 1; /* trailing NUL too */ - DIGESTdbt.data = (void *)d; - DIGESTdbt.size = dlen; - rc = logio_Creat_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, &DIGESTdbt, dalgo, mode); -fprintf(stderr, "<== %s(%s, %p]%u], 0%o) rc %d\n", __FUNCTION__, fn, d, (unsigned)dlen, mode, rc); + rc = logio_Creat_log(dbenv, _txn, &_lsn, DB_FLUSH, &FIDdbt, &FNdbt, mode); +fprintf(stderr, "<== %s(%p, %s, 0%o) rc %d\n", __FUNCTION__, fid, fn, mode, rc); return rc; } /*...@unused@*/ static inline -int rpmlioUnlink(rpmdb rpmdb, const char * fn, mode_t mode) +int rpmlioUnlink(rpmdb rpmdb, void * fid, const char * fn, mode_t mode) { int rc = 0; extern int logio_Unlink_log - __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, mode_t)); + __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *, mode_t)); DB_ENV * dbenv = rpmdb->db_dbenv; DB_TXN * _txn = rpmdb->db_txnid; DB_LSN _lsn = {0,0}; + DBT FIDdbt = {0}; DBT FNdbt = {0}; + FIDdbt.data = ""; + FIDdbt.size = 1; FNdbt.data = (void *)fn; FNdbt.size = strlen(fn) + 1; /* trailing NUL too */ - rc = logio_Unlink_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode); -fprintf(stderr, "<== %s(%s, 0%o) rc %d\n", __FUNCTION__, fn, mode, rc); + rc = logio_Unlink_log(dbenv, _txn, &_lsn, DB_FLUSH, &FIDdbt, &FNdbt, mode); +fprintf(stderr, "<== %s(%p, %s, 0%o) rc %d\n", __FUNCTION__, fid, fn, mode, rc); return rc; } /*...@unused@*/ static inline -int rpmlioRename(rpmdb rpmdb, const char * oldname, const char * newname) +int rpmlioRename(rpmdb rpmdb, void * oldfid, const char * oldname, const char * newname) { int rc = 0; - extern int logio_Symlink_log - __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *)); + extern int logio_Rename_log + __P((DB_ENV *, DB_TXN *, DB_LSN *, uint32_t, const DBT *, const DBT *, const DBT *)); DB_ENV * dbenv = rpmdb->db_dbenv; DB_TXN * _txn = rpmdb->db_txnid; DB_LSN _lsn = {0,0}; + DBT FIDdbt = {0}; DBT ONdbt = {0}; DBT NNdbt = {0}; + FIDdbt.data = ""; + FIDdbt.size = 1; ONdbt.data = (void *)oldname; ONdbt.size = strlen(oldname) + 1; /* trailing NUL too */ NNdbt.data = (void *)newname; NNdbt.size = strlen(newname) + 1; /* trailing NUL too */ - rc = logio_Symlink_log(dbenv, _txn, &_lsn, DB_FLUSH, &ONdbt, &NNdbt); -fprintf(stderr, "<== %s(%s, %s) rc %d\n", __FUNCTION__, oldname, newname, rc); + rc = logio_Rename_log(dbenv, _txn, &_lsn, DB_FLUSH, &FIDdbt, &ONdbt, &NNdbt); +fprintf(stderr, "<== %s(%p, %s, %s) rc %d\n", __FUNCTION__, oldfid, oldname, newname, rc); return rc; } @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository [email protected]
