#!/usr/bin/perl -w
=head1 NAME Verify Your Debian Potatoe
=head1 AUTHOR crazyinsomniac
If it keeps on rainin',
=head1 LICENSE the same as that of perl itself (`perl -v')
=cut
use strict;
use Getopt::Std;
use Digest::MD5;
$|= {on => 'nope'};
use vars qw/ %Opt %Dsp $Vv/;
getopts('?hvd:', \%Opt);
$Vv = 1 if exists $Opt{v}; # verbosity (errors and bad sums reported b
+y default)
if( exists $Opt{h} or exists $Opt{'?'} )
{
goto FIRST_HELP
}
elsif( exists $Opt{d} )
{
die " Where is your cd !!??\n"
unless defined $Opt{d}; # missing arg, you ape
chdir $Opt{d}
or die "Dang, does the directory '$Opt{d}' really exist?\n";
die "hmm, can't read md5sums.txt for some reason \n"
unless -d $Opt{d} and -r $Opt{d};
&loop_it();
goto THEEND
}
FIRST_HELP:
{
print<<"#||#";
Hello and welcome to Verify Your Debian Potatoe.
This tool relies on the md5sum.txt file
being in the root "directory" of said cd,
and the sums there being correct.
Usage: perl $0 [-?hvd]
-? same as below
-h prints out this message
-v bees verbose (FAILED sums are reported by default)
-d /path/to/cd/a/must
#||#
}
sub loop_it
{
open(FE,'md5sum.txt') or die "Impossible!!! $!";
my %MD5Sums = map { chomp; reverse split /\s\s/; } <FE>;
close(FE);
for my $file(sort keys %MD5Sums)
{
print "processing $file \n", if $Vv;
open(MDFH,$file) or warn "shit, couldn't open $file, neext\n"
+and next;
binmode MDFH; # cause I don't know what kind of shit u runnin
select undef, undef, undef, 0.45; # cause a lot of cdr(w)s cho
+ke up
my $md5 = Digest::MD5->new()->addfile(*MDFH)->hexdigest();
if ( $md5 ne $MD5Sums{$file} )
{
printf "Oh CRIKEY!! -- it's back to the bakery.\n%s\n%s **
+\n%s\n\n",
$file, $MD5Sums{$file}, $md5
}
elsif($Vv)
{
printf "G.oo00OOD!! -- no problem here\n%s\n%s **\n%s\n\n"
+,
$file, $MD5Sums{$file}, $md5
}
}
}
THEEND: die q{ levee's goin' to break }
|