xref: /minix/crypto/external/bsd/openssl/dist/ms/cmp.pl (revision 0a6a1f1d)
1#!/usr/local/bin/perl
2
3($#ARGV == 1) || die "usage: cmp.pl <file1> <file2>\n";
4
5open(IN0,"<$ARGV[0]") || die "unable to open $ARGV[0]\n";
6open(IN1,"<$ARGV[1]") || die "unable to open $ARGV[1]\n";
7binmode IN0;
8binmode IN1;
9
10$tot=0;
11$ret=1;
12for (;;)
13	{
14	$n1=sysread(IN0,$b1,4096);
15	$n2=sysread(IN1,$b2,4096);
16
17	last if ($n1 != $n2);
18	last if ($b1 ne $b2);
19	last if ($n1 < 0);
20	if ($n1 == 0)
21		{
22		$ret=0;
23		last;
24		}
25	$tot+=$n1;
26	}
27
28close(IN0);
29close(IN1);
30if ($ret)
31	{
32	printf STDERR "$ARGV[0] and $ARGV[1] are different\n";
33	@a1=unpack("C*",$b1);
34	@a2=unpack("C*",$b2);
35	for ($i=0; $i<=$#a1; $i++)
36		{
37		if ($a1[$i] ne $a2[$i])
38			{
39			printf "%02X %02X <<\n",$a1[$i],$a2[$i];
40			last;
41			}
42		}
43	$nm=$tot+$n1;
44	$tot+=$i+1;
45	printf STDERR "diff at char $tot of $nm\n";
46	}
47exit($ret);
48