mirror of
https://github.com/berkeleydb/libdb.git
synced 2024-11-16 09:06:25 +00:00
83 lines
1.4 KiB
Awk
83 lines
1.4 KiB
Awk
# $Id$
|
|
#
|
|
# Take a comma-separated list of database names and spit out all the
|
|
# log records that affect those databases.
|
|
# Note: this will not start printing records until a dbreg_register
|
|
# record for that file is found.
|
|
|
|
NR == 1 {
|
|
nfiles = 0
|
|
while ((ndx = index(DBNAME, ",")) != 0) {
|
|
filenames[nfiles] = substr(DBNAME, 1, ndx - 1) "\\0";
|
|
DBNAME = substr(DBNAME, ndx + 1, length(DBNAME) - ndx);
|
|
files[nfiles] = -1
|
|
nfiles++
|
|
}
|
|
filenames[nfiles] = DBNAME "\\0";
|
|
files[nfiles] = -1
|
|
myfile = -1;
|
|
nreg = 0;
|
|
}
|
|
|
|
/^\[.*dbreg_register/ {
|
|
register = 1;
|
|
}
|
|
/opcode:/ {
|
|
if (register == 1) {
|
|
if ($2 == "CHKPNT" || $2 == "OPEN" || $2 == "PREOPEN" || $2 == "REOPEN")
|
|
register = 3;
|
|
}
|
|
}
|
|
/name:/ {
|
|
if (register >= 2) {
|
|
myfile = -2;
|
|
for (i = 0; i <= nfiles; i++) {
|
|
if ($5 == filenames[i]) {
|
|
if (register == 2) {
|
|
printme = 0;
|
|
myfile = -2;
|
|
} else {
|
|
myfile = i;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
register = 0;
|
|
}
|
|
/fileid:/{
|
|
if (myfile == -2)
|
|
files[$2] = 0;
|
|
else if (myfile != -1) {
|
|
files[$2] = 1;
|
|
if ($2 > nreg)
|
|
nreg = $2;
|
|
printme = 1;
|
|
register = 0;
|
|
myfile = -1;
|
|
} else if ($2 <= nreg && files[$2] == 1) {
|
|
printme = 1
|
|
}
|
|
myfile = -1;
|
|
}
|
|
|
|
/^\[/{
|
|
if (printme == 1) {
|
|
printf("%s\n", rec);
|
|
printme = 0
|
|
}
|
|
rec = "";
|
|
|
|
rec = $0
|
|
}
|
|
|
|
TXN == 1 && /txn_regop/ {printme = 1}
|
|
/^ /{
|
|
if (length(rec) + length($0) < 2040)
|
|
rec = sprintf("%s\n%s", rec, $0);
|
|
}
|
|
|
|
END {
|
|
if (printme == 1)
|
|
printf("%s\n", rec);
|
|
}
|