## Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).# All rights reserved.# This component and the accompanying materials are made available# under the terms of the License "Eclipse Public License v1.0"# which accompanies this distribution, and is available# at the URL "http://www.eclipse.org/legal/epl-v10.html".## Initial Contributors:# Nokia Corporation - initial contribution.## Contributors:## Description: # fcw.pl - compare two files as 32-bit words#use strict;if (@ARGV!=2) {#........1.........2.........3.........4.........5.........6.........7..... print <<USAGE_EOF;Usage: fcw file1 file2 -- compare two filesUSAGE_EOF exit 1; }my $left=@ARGV[0];my $right=@ARGV[1];open LEFT, $left or problem("Cannot open $left") and return;open RIGHT, $right or problem("Cannot open $right") and return;binmode LEFT;binmode RIGHT;if (compare_streams()) { print "Files are identical\n"; }sub compare_streams { my $same = 1; my $offset = 0; my $leftbuf; my $rightbuf; BINARY_COMPARISON: while (1) { my $leftlen = read LEFT, $leftbuf, 4096; my $rightlen= read RIGHT, $rightbuf, 4096; if ($rightlen == 0 && $leftlen == 0) { return $same; } if ($leftbuf eq $rightbuf) { $offset += $leftlen; } else { my @leftwords = unpack "V*", $leftbuf; my @rightwords = unpack "V*", $rightbuf; foreach $_ (@leftwords) { if ($_ != @rightwords[0]) { printf "%06x: %08x != %08x\n", $offset, $_, @rightwords[0]; } shift @rightwords; $offset+=4; } $same=0; } } }