diff options
author | Guillaume Cottenceau <gc@mandriva.com> | 2003-11-21 22:23:41 +0000 |
---|---|---|
committer | Guillaume Cottenceau <gc@mandriva.com> | 2003-11-21 22:23:41 +0000 |
commit | 1c852901b124332c59277c13d315ea89eb59cc46 (patch) | |
tree | 7d4e69a00e9c4069fa5197ec046751c5dc7bd56a | |
parent | 827addd21daaf25826f1c3881862c7895b66f879 (diff) | |
download | drakx-1c852901b124332c59277c13d315ea89eb59cc46.tar drakx-1c852901b124332c59277c13d315ea89eb59cc46.tar.gz drakx-1c852901b124332c59277c13d315ea89eb59cc46.tar.bz2 drakx-1c852901b124332c59277c13d315ea89eb59cc46.tar.xz drakx-1c852901b124332c59277c13d315ea89eb59cc46.zip |
handle relative symlinks too
-rwxr-xr-x | move/etc-monitorer.pl | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/move/etc-monitorer.pl b/move/etc-monitorer.pl index 4bb8e06ec..ccbbfde00 100755 --- a/move/etc-monitorer.pl +++ b/move/etc-monitorer.pl @@ -12,14 +12,20 @@ foreach my $dir (@ARGV) { my $destdir = "/home/.sysconf/$machine_ident"; my @etcfiles = glob_("$dir/*"); foreach (@etcfiles) { - next if $_ eq '/etc/sudoers'; #- /etc/sudoers can't be a link - if (-f && !-l) { - my $dest = "$destdir$_"; - mkdir_p(dirname($dest)); #- case of newly created directories - logit("restoring broken symlink $_ -> $dest"); + if ($_ eq '/etc/sudoers' #- /etc/sudoers can't be a link + || !-f + || -l && readlink =~ m|^/|) { #- we want to trap relative symlinks only + next; + } + my $dest = "$destdir$_"; + mkdir_p(dirname($dest)); #- case of newly created directories + logit("restoring broken symlink $_ -> $dest"); + if (-l) { + system("cp $_ $dest 2>/dev/null"); + } else { system("mv $_ $dest 2>/dev/null"); - symlink($dest, $_); } + symlinkf($dest, $_); } foreach (difference2([ grep { -f && s/^\Q$destdir\E// } glob_("$destdir$dir/*") ], [ @etcfiles ])) { logit("removing $destdir$_ because of deleted $_"); |