blob: 524fc3cf20eb8c3cca3064606c8daa9558d14d62 [file] [log] [blame]
#!/usr/bin/perl
my ($l1, $l2, @diffargs);
@diffargs = ();
foreach my $arg (@ARGV) {
if ($arg =~ /^-/) {
push @diffargs, $arg;
} elsif (defined $l1) {
$l2 = $arg;
} else {
$l1 = $arg;
}
}
my $tmp1 = "/tmp/logdiff.$$.1";
my $tmp2 = "/tmp/logdiff.$$.2";
fixfile($l1, $tmp1);
fixfile($l2, $tmp2);
system "diff", @diffargs, $tmp1, $tmp2;
unlink($tmp1);
unlink($tmp2);
exit;
sub fixfile {
my $inf = shift;
my $outf = shift;
die "cannot find $inf" unless -f $inf;
open (IN, "-|", "sort \"$inf\"") or die "cannot open $inf";
open (OUT, ">$outf") or die "cannot open $outf";
while (<IN>) {
if (!/^([\.Y]\s+\S+\s+\S+)\s+(\S+)\s+(.+)/) {
print OUT;
next;
}
my ($scorepath, $rules, $meta) = ($1,$2,$3);
my @rules;
foreach my $r (split(/,/, $rules)) {
my $hits = 1;
# Support compacted RULE(hitcount) format
if ($r =~ s/\((\d+)\)$//) {
$hits = $1;
}
push @rules, $r for (1 .. $hits);
}
@rules = sort grep {
$_ !~ /^AWL$/
} @rules;
$rules = join(',', @rules);
$meta =~ s/\bscantime=\d+/scantime=N/gs; # frequently different
print OUT "$scorepath $rules $meta\n";
}
close IN;
close OUT;
}