6 |
|
|
7 |
while (@dirs) { |
while (@dirs) { |
8 |
my $curr_dir=shift @dirs; |
my $curr_dir=shift @dirs; |
9 |
opendir(DIR,$curr_dir) || die "opendir: $!"; |
opendir(DIR,$curr_dir) || warn "opendir: $!"; |
10 |
my @ignore = ('.', '..', 'CVS'); |
my @ignore = ('.', '..', 'CVS'); |
11 |
if (-f "$curr_dir/.cvsignore") { |
if (-f "$curr_dir/.cvsignore") { |
12 |
open(I,"$curr_dir/.cvsignore"); |
open(I,"$curr_dir/.cvsignore"); |
19 |
print STDERR "ignore: ",join("|",@ignore); |
print STDERR "ignore: ",join("|",@ignore); |
20 |
@clutter = readdir(DIR); |
@clutter = readdir(DIR); |
21 |
foreach my $file (@clutter) { |
foreach my $file (@clutter) { |
22 |
if (-f "$curr_dir/$file" && grep(/^\Q$file\E$/,@ignore) == 0) { |
if (-l "$curr_dir/$file" && grep(/^\Q$file\E$/,@ignore) == 0) { |
23 |
|
my $dest=readlink("$curr_dir/$file"); |
24 |
|
$dest="$curr_dir/$dest" if (substr($dest,0,1) ne "/"); |
25 |
|
print "ln -sf $dest $curr_dir/$file\n"; |
26 |
|
} elsif ((-f "$curr_dir/$file" || -d "$curr_dir/$file") && grep(/^\Q$file\E$/,@ignore) == 0) { |
27 |
my (undef,undef,$mode,undef,$uid,$gid) = stat("$curr_dir/$file"); |
my (undef,undef,$mode,undef,$uid,$gid) = stat("$curr_dir/$file"); |
28 |
if ($uid != $UID || $gid != $GID) { |
if ($uid != $UID || $gid != $GID) { |
29 |
print "chown ",scalar(getpwuid($uid)),":",scalar(getpwuid($gid))," $curr_dir/$file\n"; |
print "chown ",scalar(getpwuid($uid)),":",scalar(getpwuid($gid))," $curr_dir/$file\n"; |
30 |
printf "chmod %04o %s\n", ($mode & 07777), "$curr_dir/$file"; |
printf "chmod %04o %s\n", ($mode & 07777), "$curr_dir/$file"; |
31 |
} |
} |
32 |
} elsif (-d "$curr_dir/$file" && grep(/^\Q$file\E$/,@ignore) == 0) { |
push @dirs,"$curr_dir/$file" if (-d "$curr_dir/$file"); |
|
push @dirs,"$curr_dir/$file"; |
|
33 |
} else { |
} else { |
34 |
print STDERR "skip: $curr_dir/$file\n"; |
print STDERR "skip: $curr_dir/$file\n"; |
35 |
} |
} |