# Apart from this, this script should be able to handle even the most
# pathological cases.
+my $pwd;
+eval 'use Cwd;';
+if ($@)
+ {
+ $pwd = `pwd`;
+ }
+else
+ {
+ $pwd = getcwd();
+ }
+
my $from = shift;
my @files = @ARGV;
-my @from_path = split(/\//, $from);
-my $pwd = `pwd`;
-chop($pwd);
-my @pwd_path = split(/\//, $pwd);
+my @from_path = split(/[\\\/]/, $from);
+chomp($pwd);
+my @pwd_path = split(/[\\\/]/, $pwd);
my @to_path = ();
foreach $file (@files) {
my $err = "";
if ($symlink_exists) {
+ unlink "$from/$file";
symlink("$to/$file", "$from/$file") or $err = " [$!]";
} else {
- system ("cp", "$file", "$from/$file") and $err = " [$!]";
+ unlink "$from/$file";
+ open (OLD, "<$file") or die "Can't open $file: $!";
+ open (NEW, ">$from/$file") or die "Can't open $from/$file: $!";
+ binmode(OLD);
+ binmode(NEW);
+ while (<OLD>) {
+ print NEW $_;
+ }
+ close (OLD) or die "Can't close $file: $!";
+ close (NEW) or die "Can't close $from/$file: $!";
}
print $file . " => $from/$file$err\n";
}