diff options
Diffstat (limited to 'Master/tlpkg/tlperl/bin/crc32')
-rwxr-xr-x | Master/tlpkg/tlperl/bin/crc32 | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/bin/crc32 b/Master/tlpkg/tlperl/bin/crc32 new file mode 100755 index 00000000000..aa7da02a8ad --- /dev/null +++ b/Master/tlpkg/tlperl/bin/crc32 @@ -0,0 +1,31 @@ +#!/usr/bin/perl + +# Computes and prints to stdout the CRC-32 values of the given files + +use strict; +use lib qw( blib/lib lib ); +use Archive::Zip; +use FileHandle; + +my $totalFiles = scalar(@ARGV); +foreach my $file (@ARGV) { + if ( -d $file ) { + warn "$0: ${file}: Is a directory\n"; + next; + } + my $fh = FileHandle->new(); + if ( !$fh->open( $file, 'r' ) ) { + warn "$0: $!\n"; + next; + } + binmode($fh); + my $buffer; + my $bytesRead; + my $crc = 0; + while ( $bytesRead = $fh->read( $buffer, 32768 ) ) { + $crc = Archive::Zip::computeCRC32( $buffer, $crc ); + } + printf( "%08x", $crc ); + print("\t$file") if ( $totalFiles > 1 ); + print("\n"); +} |