die "$0: either -j or -s, not both\n"
if $opt_j && $opt_s;
-my $ctime_re = qr/(Sun|Mon|Tue|Wed|Thu|Fri|Sat) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [ 123][0-9] [0-2][0-9]:[0-5][0-9]:[0-6][0-9] [0-9][0-9][0-9][0-9]/;
+my $dow_re = qr/(Sun|Mon|Tue|Wed|Thu|Fri|Sat)/;
+my $mon_re = qr/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/;
+my $hm_re = qr/[0-2][0-9]:[0-5][0-9]/;
+my $hms_re = qr/$hm_re:[0-6][0-9]/;
+my $year_re = qr/[0-9][0-9][0-9][0-9]/;
+my $ctime16_re = qr/$dow_re $mon_re [ 123][0-9] $hm_re/;
+my $ctime19_re = qr/$dow_re $mon_re [ 123][0-9] $hms_re/;
+my $ctime_re = qr/$dow_re $mon_re [ 123][0-9] $hms_re $year_re/;
+my $fmttime2822_re = qr/$dow_re, [0123][0-9] $mon_re $year_re $hms_re [-+][0-9][0-9][0-9][0-9]/;
my $xdfld_re = qr/\([^)]*\)|[^ (][^ ]*/;
# Current dump, if any
sub norm_ctime {
my ($s) = @_;
$s =~ s/$ctime_re/Thu Jan 1 00:00:00 1970/g;
+ $s =~ s/$ctime19_re/Thu Jan 1 00:00:00/g;
+ $s =~ s/$ctime16_re/Thu Jan 1 00:00/g;
+ $s =~ s/$fmttime2822_re/Thu, 01 Jan 1970 00:00:00 +0000/g;
return $s;
}
$_ = substr($_, 25);
}
+ # Strip trailing white space
+ # We don't really care for it in test output, and git's pre-commit
+ # hook flags it, which is annoying.
+ s/\s+$//;
+
# Split off prefix that is not to be normalized
my $pfx = '';
if ($opt_j) {
$_ = norm_ctime($_);
### Host environment in logs
# getrusage() results in server.log
- s/(End update|done assembling paths) .* user .* system/$1 0.0 user 0.0 system/g;
+ s/(End update|done assembling paths) .* user .* system/$1 0.0 user 0.0 system/;
# PID in server.log
- s/(Empire server \(pid) [0-9]+(\) started)/$1 42$2/g;
+ s/(Empire server \(pid) [0-9]+(\) started)/$1 42$2/;
### Harmless races
# shutdown wins race with logout
next if /Waiting for player threads to terminate/;
and (/\: No (sector|ship|plane|unit|nuke)\(s\)|\: Nothing lost/
or /^[0-9]+ (sector|ship|plane|unit|nuke|lost item)/));
+ ### Version
+ s/(Wolfpack( |\\\\040)Empire( |\\\\040))(UNKNOWN-|[0-9])[^ "]*/${1}4.4.0/;
### Formatted time
# nat_timeused in prompt
- s/^\[[0-9]+(:[0-9]+\] Command \:)/[0$1/g;
+ s/^\[[0-9]+(:[0-9]+\] Command \:)/[0$1/;
+ $pfx =~ s/( output [^ ]* 6) [0-9]+ ([0-9]+$)/$1 0 $2/
+ if $opt_j;
# TODO command play column time
# result of ctime() in many commands
$_ = norm_ctime($_)
unless $dump;
### Time values in legacy dumps
- s/(DUMP (SECTOR|SHIPS|PLANES|LAND UNITS|NUKES|LOST ITEMS)) [0-9]+$/$1 0/g;
+ s/(DUMP (SECTOR|SHIPS|PLANES|LAND UNITS|NUKES|LOST ITEMS)) [0-9]+$/$1 0/;
s/ [0-9]+$/ 0/
if $dump eq 'LOST ITEMS';
### Time values in xdump
# duration in xdump news (column 4)
s/^(($xdfld_re ){4})([0-9]+) /${1}0 /
if $dump eq 'news';
- ### nsc_type values in xdump
- # Can vary between systems, because the width of enumeration types
- # is implementation-defined.
- # TODO type in xdump meta
### nrndx values in xdump
# Encoding depends on the host, see resources[]. Too clever by half;
# perhaps we should change it.