--- .data/save_perm.pl 2002/03/21 09:43:52 1.1 +++ .data/save_perm.pl 2002/03/21 09:57:40 1.2 @@ -1,8 +1,9 @@ #!/usr/local/bin/perl -w use English; +use strict; -my @dirs = ("/data/corp_html"); +my @dirs = @ARGV; while (@dirs) { my $curr_dir=shift @dirs; @@ -17,16 +18,16 @@ close(I); } print STDERR "ignore: ",join("|",@ignore); - @clutter = readdir(DIR); + my @clutter = readdir(DIR); foreach my $file (@clutter) { if (-l "$curr_dir/$file" && grep(/^\Q$file\E$/,@ignore) == 0) { my $dest=readlink("$curr_dir/$file"); $dest="$curr_dir/$dest" if (substr($dest,0,1) ne "/"); print "ln -sf $dest $curr_dir/$file\n"; - } elsif ((-f "$curr_dir/$file" || -d "$curr_dir/$file") && grep(/^\Q$file\E$/,@ignore) == 0) { + } elsif ((-f "$curr_dir/$file" || -d "$curr_dir/$file") && grep(/^\Q$file\E$/,@ignore) == 0 && -r "$curr_dir/$file") { my (undef,undef,$mode,undef,$uid,$gid) = stat("$curr_dir/$file"); - if ($uid != $UID || $gid != $GID) { - print "chown ",scalar(getpwuid($uid)),":",scalar(getpwuid($gid))," $curr_dir/$file\n"; + if ( $uid != $UID || $gid != $GID ) { + print "chown ",(scalar(getpwuid($uid)) || $uid),":",(scalar(getgrgid($gid)) || $gid)," $curr_dir/$file\n"; printf "chmod %04o %s\n", ($mode & 07777), "$curr_dir/$file"; } push @dirs,"$curr_dir/$file" if (-d "$curr_dir/$file");