|
Packit |
0bf95d |
#!/usr/bin/perl
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# Computes and prints to stdout the CRC-32 values of the given files
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use 5.006;
|
|
Packit |
0bf95d |
use strict;
|
|
Packit |
0bf95d |
use lib qw( blib/lib lib );
|
|
Packit |
0bf95d |
use Archive::Zip;
|
|
Packit |
0bf95d |
use FileHandle;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use vars qw( $VERSION );
|
|
Packit |
0bf95d |
BEGIN {
|
|
Packit |
0bf95d |
$VERSION = '1.51';
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $totalFiles = scalar(@ARGV);
|
|
Packit |
0bf95d |
foreach my $file (@ARGV) {
|
|
Packit |
0bf95d |
if ( -d $file ) {
|
|
Packit |
0bf95d |
warn "$0: ${file}: Is a directory\n";
|
|
Packit |
0bf95d |
next;
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
my $fh = FileHandle->new();
|
|
Packit |
0bf95d |
if ( !$fh->open( $file, 'r' ) ) {
|
|
Packit |
0bf95d |
warn "$0: $!\n";
|
|
Packit |
0bf95d |
next;
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
binmode($fh);
|
|
Packit |
0bf95d |
my $buffer;
|
|
Packit |
0bf95d |
my $bytesRead;
|
|
Packit |
0bf95d |
my $crc = 0;
|
|
Packit |
0bf95d |
while ( $bytesRead = $fh->read( $buffer, 32768 ) ) {
|
|
Packit |
0bf95d |
$crc = Archive::Zip::computeCRC32( $buffer, $crc );
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
my $fileCrc = sprintf("%08x", $crc);
|
|
Packit |
0bf95d |
printf("$fileCrc");
|
|
Packit |
0bf95d |
print("\t$file") if ( $totalFiles > 1 );
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
if ( $file =~ /[^[:xdigit:]]([[:xdigit:]]{8})[^[:xdigit:]]/ ) {
|
|
Packit |
0bf95d |
my $filenameCrc = $1;
|
|
Packit |
0bf95d |
if ( lc($filenameCrc) eq lc($fileCrc) ) {
|
|
Packit |
0bf95d |
print("\tOK")
|
|
Packit |
0bf95d |
} else {
|
|
Packit |
0bf95d |
print("\tBAD $fileCrc != $filenameCrc");
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
print("\n");
|
|
Packit |
0bf95d |
}
|