1 | #! /usr/bin/env perl
|
---|
2 | # Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
|
---|
3 | #
|
---|
4 | # Licensed under the OpenSSL license (the "License"). You may not use
|
---|
5 | # this file except in compliance with the License. You can obtain a copy
|
---|
6 | # in the file LICENSE in the source distribution or at
|
---|
7 | # https://www.openssl.org/source/license.html
|
---|
8 |
|
---|
9 | ($#ARGV == 1) || die "usage: cmp.pl <file1> <file2>\n";
|
---|
10 |
|
---|
11 | open(IN0,"<$ARGV[0]") || die "unable to open $ARGV[0]\n";
|
---|
12 | open(IN1,"<$ARGV[1]") || die "unable to open $ARGV[1]\n";
|
---|
13 | binmode IN0;
|
---|
14 | binmode IN1;
|
---|
15 |
|
---|
16 | $tot=0;
|
---|
17 | $ret=1;
|
---|
18 | for (;;)
|
---|
19 | {
|
---|
20 | $n1=sysread(IN0,$b1,4096);
|
---|
21 | $n2=sysread(IN1,$b2,4096);
|
---|
22 |
|
---|
23 | last if ($n1 != $n2);
|
---|
24 | last if ($b1 ne $b2);
|
---|
25 | last if ($n1 < 0);
|
---|
26 | if ($n1 == 0)
|
---|
27 | {
|
---|
28 | $ret=0;
|
---|
29 | last;
|
---|
30 | }
|
---|
31 | $tot+=$n1;
|
---|
32 | }
|
---|
33 |
|
---|
34 | close(IN0);
|
---|
35 | close(IN1);
|
---|
36 | if ($ret)
|
---|
37 | {
|
---|
38 | printf STDERR "$ARGV[0] and $ARGV[1] are different\n";
|
---|
39 | @a1=unpack("C*",$b1);
|
---|
40 | @a2=unpack("C*",$b2);
|
---|
41 | for ($i=0; $i<=$#a1; $i++)
|
---|
42 | {
|
---|
43 | if ($a1[$i] ne $a2[$i])
|
---|
44 | {
|
---|
45 | printf "%02X %02X <<\n",$a1[$i],$a2[$i];
|
---|
46 | last;
|
---|
47 | }
|
---|
48 | }
|
---|
49 | $nm=$tot+$n1;
|
---|
50 | $tot+=$i+1;
|
---|
51 | printf STDERR "diff at char $tot of $nm\n";
|
---|
52 | }
|
---|
53 | exit($ret);
|
---|