view bin/cek.pl @ 415:e47f64f0dec0

[rc/bashrc] 0paste gzip alias
author Edho Arief <edho@myconan.net>
date Wed, 28 Nov 2012 23:00:57 +0700
parents 5bafb912837e
children 1a996b35eaab
line wrap: on
line source

#!/usr/bin/env perl

use strict;
use warnings;
use String::CRC32;
use File::Basename;

my @files = @ARGV or print("Usage: ",basename($0)," file1 file2 ... fileN\n") && exit(1);
my $num_ok=0;
my $num_err=0;
my $num_nf=0;
my $num_na=@files;

foreach(@files) {
	my $filename = $_;
	my ($name_crc,$real_crc);
	unless (-f $filename) {
		$num_nf++;$num_na--;
		print(qq(Could not find "$filename", skipping\n));
		next();
	}
	if(/(\[|\()([0-9A-F]{8})(\]|\))/i){
		$name_crc=uc($2);
	}
	open(FILE,"<",$filename);
	binmode(FILE);
	$real_crc=sprintf("%08X",crc32(*FILE));
	close(FILE);
	if($name_crc) {
		$num_na--;
		if($name_crc eq $real_crc) {
			$num_ok++;
			print("$filename: OK - $real_crc\n");
		} else {
			$num_err++;
			print("$filename: NOT OK - $real_crc, should be $name_crc\n");
		}
	} else {
		print("$filename: $real_crc\n");
	}
}

printf("%s\n","-"x40);
if($num_ok > 0) { print("Files OK: $num_ok\n"); }
if($num_err > 0) { print("Files error: $num_err\n"); }
if($num_nf > 0) { print("Files not found: $num_nf\n"); }
if($num_na > 0) { print("Files without crc information: $num_na\n"); }

exit(0);