# 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 = ();
my $to = join('/', @to_path);
my $file;
+$symlink_exists=eval {symlink("",""); 1};
foreach $file (@files) {
my $err = "";
- symlink("$to/$file", "$from/$file") or $err = " [$!]";
+ if ($symlink_exists) {
+ unlink "$from/$file";
+ symlink("$to/$file", "$from/$file") or $err = " [$!]";
+ } else {
+ 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";
}