aboutsummaryrefslogtreecommitdiff
path: root/lib/File/BackupCopy.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/File/BackupCopy.pm')
-rw-r--r--lib/File/BackupCopy.pm12
1 files changed, 5 insertions, 7 deletions
diff --git a/lib/File/BackupCopy.pm b/lib/File/BackupCopy.pm
index 226e8ce..43ce150 100644
--- a/lib/File/BackupCopy.pm
+++ b/lib/File/BackupCopy.pm
@@ -89,7 +89,7 @@ sub backup_copy_simple {
croak "unrecognized keyword arguments" if keys %_;
my $backup_name = $file_name . '~';
if ($dir) {
- $backup_name = File::Spec->catfile($dir, $backup_name);
+ $backup_name = File::Spec->catfile($dir, basename($backup_name));
}
copy($file_name, $backup_name)
or return _backup_copy_error($error,
@@ -122,8 +122,9 @@ sub backup_copy_internal {
or return _backup_copy_error($error,
"failed to make a temporary copy of $file_name: $!");
- my $pat = $dir ? File::Spec->catfile($dir, "$file_name.~*~")
- : "$file_name.~*~";
+ my $backup_stub = $dir ? File::Spec->catfile($dir, basename($file_name))
+ : $file_name;
+ my $pat = "$backup_stub.~*~";
my $num = (sort { $b <=> $a }
map {
if (/.+\.~(\d+)~$/) {
@@ -141,10 +142,7 @@ sub backup_copy_internal {
my $backup_name;
while (1) {
- $backup_name = "$file_name.~$num~";
- if ($dir) {
- $backup_name = File::Spec->catfile($dir, $backup_name);
- }
+ $backup_name = "$backup_stub.~$num~";
last if symlink($fh->filename, $backup_name);
unless ($!{EEXIST}) {
return _backup_copy_error("can't link "

Return to:

Send suggestions and report system problems to the System administrator.