#!/mit/perl/perl
# ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
#  $atime,$mtime,$ctime,$blksize,$blocks) = stat($filename);

          select(STDERR); $| = 1;         # make unbuffered
          select(STDOUT); $| = 1;         # make unbuffered

@allfiles=("sum");
while($dir = shift) {
    $sub = ""; @subdirs=();
    do {
	print STDERR "Processing $dir/$sub\n";
        opendir(DIR,"$dir/$sub");
        @files=grep(!/^\.\.?$/,readdir(DIR));
        closedir(DIR);
        for $target (@files) {
            $filename = "$sub$target";
            if ( -d "$dir/$filename") {
                push(@subdirs,"$filename/");
            } else {
		push(@allfiles,"$dir/$filename");
            }
        }
    } while(defined($sub = shift(@subdirs)));
}

print STDERR "Files found: ",scalar(@allfiles),"\n";

##$cmd = "/usr/bin/sum";
##exec $cmd @allfiles;
##system("sum",@allfiles);

for $fi (@allfiles) {
    open(SUMIT,$fi);
    $checksum = 0; $blocks = 0; $block="";
    while(!eof(SUMIT)) {
	read(SUMIT,$block,1024);
	$checksum += unpack("%16C*",$block);
	$blocks++;
    }
    $checksum %= 65536;
    printf "%5d %5d %s\n",$checksum,$blocks,$fi;
}


1;


