#!/usr/bin/perl
# SalvageLog.prune <filename>
# Written by John Myers of Carnegie Mellon University ([EMAIL PROTECTED])
# Minor updates for AFS 3.2 by Joseph Jackson of Transarc, Corp.
# ([EMAIL PROTECTED])
# This Perl script processes salvager log files, removing all the
# "uninteresting" lines from it. Sections that have been elided are
# replaced by ellipsis (...). Provide the name of the log file as an
# argument to the script.
# Groups of lines are deemed "uninteresting" if they appear similar to the
# results of a successful volume salvage, that is, if they have the form:
# CHECKING CLONED VOLUME 536873867.
# user.jackson.backup (536873867) updated 10/27/92 15:25
# SALVAGING VOLUME 536873865.
# user.jackson (536873865) updated 11/03/92 14:34
# Salvaged user.jackson (536873865): 63 files, 864 blocks
# Any non-conforming or extra lines are presumed to be errors, causing the
# unusual line to be printed along with the surrounding block of lines.
$history = '';
while (<>) {
if (/CHECKING CLONED VOLUME (\d+)\.$/) {
$oldhistory = '';
$history .= $_;
$vid = $1;
$_ = <ARGV>;
if (/(\S+)\.(backup|readonly) \($vid\) updated / &&
(!$volname || $volname == $1)) {
$history .= $_;
$volname = $1;
}
else {
print $history;
print $_;
$history = $volname = '';
}
}
elsif (/SALVAGING VOLUME (\d+)\.$/) {
$oldhistory = '';
$history .= $_;
$vid = $1;
$_ = <ARGV>;
if (/(\S+) \($vid\) updated / &&
(!$volname || $volname == $1)) {
$history .= $_;
$volname = $1;
}
else {
print $history;
print $_;
$history = $volname = '';
}
}
elsif (/Salvaged $volname \($vid\): /) {
$oldhistory = $history . $_;
$volname = '';
$history = "...\n";
}
elsif (/SALVAGING OF PARTITION \/vicep[a-z] COMPLETED$/) {
print $history;
print $_;
$history = $volname = $vid = $oldhistory = '';
}
else {
print $oldhistory ? $oldhistory : $history;
print $_;
$history = $volname = $vid = $oldhistory = '';
}
}