| Revision 621 (by dpavlin, 2005/01/01 18:35:23) |
small tool to compare to files which are produced for swish-e -S prog
|
#!/usr/bin/perl -w
use strict;
use XML::Simple;
use Data::Diff;
use Data::Dumper;
die "usage: $0 swish-prog-input-1 swish-prog-input-2" if ($#ARGV < 1);
my ($file1, $file2) = @ARGV;
my ($in1, $in2);
open($in1, $file1) || die "$file1: $!";
open($in2, $file2) || die "$file2: $!";
sub read_record {
my $fh = shift || die;
my $header = 1;
my ($path, $size);
while(<$fh>) {
chomp;
$path = $1 if (/^Path-Name:\s*(.+)$/i);
$size = $1 if (/^Content-Length:\s*(.+)$/);
if (/^$/) {
$header = 0;
}
next if ($header);
print STDERR "$path [$size]\n";
my $xml;
my $s = read *{$fh}, $xml, $size;
warn "read differs from decleared size! $s != $size" if ($s != $size);
$xml =~ s/md5=[a-zA-Z0-9]{32}//gs;
$xml =~ s/_userid=\d+//gs;
return $xml;
}
}
while(! eof($in1) && ! eof($in2)) {
my $a = read_record($in1);
my $b = read_record($in2);
next if ($a eq $b);
my $diff = Data::Diff->new( XMLin($a), XMLin($b) );
my $raw = $diff->raw;
print Dumper($raw->{diff}) if ($raw->{diff});
}