Blame ms/cmp.pl

Packit c4476c
#! /usr/bin/env perl
Packit c4476c
# Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
Packit c4476c
#
Packit c4476c
# Licensed under the OpenSSL license (the "License").  You may not use
Packit c4476c
# this file except in compliance with the License.  You can obtain a copy
Packit c4476c
# in the file LICENSE in the source distribution or at
Packit c4476c
# https://www.openssl.org/source/license.html
Packit c4476c
Packit c4476c
($#ARGV == 1) || die "usage: cmp.pl <file1> <file2>\n";
Packit c4476c
Packit c4476c
open(IN0,"<$ARGV[0]") || die "unable to open $ARGV[0]\n";
Packit c4476c
open(IN1,"<$ARGV[1]") || die "unable to open $ARGV[1]\n";
Packit c4476c
binmode IN0;
Packit c4476c
binmode IN1;
Packit c4476c
Packit c4476c
$tot=0;
Packit c4476c
$ret=1;
Packit c4476c
for (;;)
Packit c4476c
{
Packit c4476c
    $n1=sysread(IN0,$b1,4096);
Packit c4476c
    $n2=sysread(IN1,$b2,4096);
Packit c4476c
Packit c4476c
    last if ($n1 != $n2);
Packit c4476c
    last if ($b1 ne $b2);
Packit c4476c
    last if ($n1 < 0);
Packit c4476c
    if ($n1 == 0)
Packit c4476c
    {
Packit c4476c
        $ret=0;
Packit c4476c
        last;
Packit c4476c
    }
Packit c4476c
    $tot+=$n1;
Packit c4476c
}
Packit c4476c
Packit c4476c
close(IN0);
Packit c4476c
close(IN1);
Packit c4476c
if ($ret)
Packit c4476c
{
Packit c4476c
    printf STDERR "$ARGV[0] and $ARGV[1] are different\n";
Packit c4476c
    @a1=unpack("C*",$b1);
Packit c4476c
    @a2=unpack("C*",$b2);
Packit c4476c
    for ($i=0; $i<=$#a1; $i++)
Packit c4476c
    {
Packit c4476c
        if ($a1[$i] ne $a2[$i])
Packit c4476c
        {
Packit c4476c
            printf "%02X %02X <<\n",$a1[$i],$a2[$i];
Packit c4476c
            last;
Packit c4476c
        }
Packit c4476c
    }
Packit c4476c
    $nm=$tot+$n1;
Packit c4476c
    $tot+=$i+1;
Packit c4476c
    printf STDERR "diff at char $tot of $nm\n";
Packit c4476c
}
Packit c4476c
exit($ret);