#!/usr/bin/perl -w # # Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation. # # This program is distributed in the hope that it would be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write the Free Software Foundation, # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # # # traverse the entire filesystem dumping info. # # dxm 5/10/00 use MD5; use Getopt::Std; my %opt; sub scan($) { my ($file)=@_; my ($md5)=new MD5; my (@stat); unless (@stat=lstat("$file")) { printf("%-" . ($opt{v}?65:32) . "s $file\n", "!!! could not lstat"); return; } $stat[0]=$stat[8]=""; # wipe the device and access time $md5->reset; $md5->add(join(" ",@stat)); print join(" ",@stat), "\n"; if ($opt{v}) { print $md5->hexdigest . " "; $md5->reset; } if (-l "$file") { if (!defined($link = readlink $file)) { printf("%-32s $file\n", "!!! could not readlink"); return; } $md5->add($link); } elsif (-f "$file") { if (!open(FILE, "$file")) { printf("%-32s $file\n", "!!! could not read"); return; } $md5->addfile(FILE); close (FILE); } print $md5->hexdigest . " $file\n"; } getopts('vs', \%opt); die "Usage: $0