1 |
dpavlin |
1.1 |
#!/usr/local/bin/perl -w |
2 |
|
|
|
3 |
|
|
use English; |
4 |
|
|
|
5 |
|
|
my @dirs = ("/data/pliva-si"); |
6 |
|
|
|
7 |
|
|
while (@dirs) { |
8 |
|
|
my $curr_dir=shift @dirs; |
9 |
|
|
opendir(DIR,$curr_dir) || die "opendir: $!"; |
10 |
|
|
my @ignore = ('.', '..', 'CVS'); |
11 |
|
|
if (-f "$curr_dir/.cvsignore") { |
12 |
|
|
open(I,"$curr_dir/.cvsignore"); |
13 |
|
|
while(<I>) { |
14 |
|
|
chomp; |
15 |
|
|
push @ignore,$_; |
16 |
|
|
} |
17 |
|
|
close(I); |
18 |
|
|
} |
19 |
|
|
print STDERR "ignore: ",join("|",@ignore); |
20 |
|
|
@clutter = readdir(DIR); |
21 |
|
|
foreach my $file (@clutter) { |
22 |
dpavlin |
1.2 |
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 -s $dest $curr_dir/$file\n"; |
26 |
|
|
} elsif (-f "$curr_dir/$file" && grep(/^\Q$file\E$/,@ignore) == 0) { |
27 |
dpavlin |
1.1 |
my (undef,undef,$mode,undef,$uid,$gid) = stat("$curr_dir/$file"); |
28 |
|
|
if ($uid != $UID || $gid != $GID) { |
29 |
|
|
print "chown ",scalar(getpwuid($uid)),":",scalar(getpwuid($gid))," $curr_dir/$file\n"; |
30 |
|
|
printf "chmod %04o %s\n", ($mode & 07777), "$curr_dir/$file"; |
31 |
|
|
} |
32 |
|
|
} elsif (-d "$curr_dir/$file" && grep(/^\Q$file\E$/,@ignore) == 0) { |
33 |
|
|
push @dirs,"$curr_dir/$file"; |
34 |
|
|
} else { |
35 |
|
|
print STDERR "skip: $curr_dir/$file\n"; |
36 |
|
|
} |
37 |
|
|
} |
38 |
|
|
} |