1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-29 12:07:46 +00:00

Merge pull request #3033 from water-ghosts/cp-lb

cp: Create backup before hardlink
This commit is contained in:
Sylvestre Ledru 2022-03-07 08:18:36 +01:00 committed by GitHub
commit 37a0a74c19
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 0 deletions

View file

@ -1327,6 +1327,15 @@ fn copy_file(
match options.copy_mode {
CopyMode::Link => {
if dest.exists() {
let backup_path =
backup_control::get_backup_path(options.backup, &dest, &options.backup_suffix);
if let Some(backup_path) = backup_path {
backup_dest(&dest, &backup_path)?;
fs::remove_file(&dest)?;
}
}
fs::hard_link(&source, &dest).context(context)?;
}
CopyMode::Copy => {

View file

@ -1463,6 +1463,20 @@ fn test_cp_archive_on_nonexistent_file() {
);
}
#[test]
fn test_cp_link_backup() {
let (at, mut ucmd) = at_and_ucmd!();
at.touch("file2");
ucmd.arg("-l")
.arg("-b")
.arg(TEST_HELLO_WORLD_SOURCE)
.arg("file2")
.succeeds();
assert!(at.file_exists("file2~"));
assert_eq!(at.read("file2"), "Hello, World!\n");
}
#[test]
#[cfg(unix)]
fn test_cp_fifo() {