1 #! /usr/bin/env perl 2 # Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. 3 # 4 # Licensed under the Apache License 2.0 (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); 54