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 11open(IN0,"<$ARGV[0]") || die "unable to open $ARGV[0]\n"; 12open(IN1,"<$ARGV[1]") || die "unable to open $ARGV[1]\n"; 13binmode IN0; 14binmode IN1; 15 16$tot=0; 17$ret=1; 18for (;;) 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 34close(IN0); 35close(IN1); 36if ($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} 53exit($ret); 54