diff --git a/src/uu/cp/src/platform/linux.rs b/src/uu/cp/src/platform/linux.rs index 7508ac28b..d4450114e 100644 --- a/src/uu/cp/src/platform/linux.rs +++ b/src/uu/cp/src/platform/linux.rs @@ -24,14 +24,14 @@ use crate::{ // only applies `O_NOFOLLOW` to the *source* open. The destination is // followed if it is a pre-existing symlink, matching GNU cp -d/-P which // only forbid dereferencing on the source side. -fn fs_copy(source: P, dest: Q, source_nofollow: bool) -> std::io::Result +fn fs_copy(source: P, dest: Q, source_nofollow: bool) -> std::io::Result<()> where P: AsRef, Q: AsRef, { let mut src = open_source(source, source_nofollow)?; let mut dst = create_dest_restrictive(dest, false)?; - std::io::copy(&mut src, &mut dst) + std::io::copy(&mut src, &mut dst).map(|_| ()) } /// The fallback behavior for [`clone`] on failed system call. @@ -76,7 +76,7 @@ where if ioctl_ficlone(dst_file, src_file).is_err() { return match fallback { CloneFallback::Error => Err(std::io::Error::last_os_error()), - CloneFallback::FSCopy => fs_copy(source, dest, nofollow).map(|_| ()), + CloneFallback::FSCopy => fs_copy(source, dest, nofollow), CloneFallback::SparseCopy => sparse_copy(source, dest, nofollow), CloneFallback::SparseCopyWithoutHole => { sparse_copy_without_hole(source, dest, nofollow) @@ -256,7 +256,7 @@ pub(crate) fn copy_on_write( copy_debug.reflink = OffloadReflinkDebug::No; if source_is_stream { copy_debug.offload = OffloadReflinkDebug::Avoided; - copy_stream(source, dest, nofollow).map(|_| ()) + copy_stream(source, dest, nofollow) } else { let mut copy_method = CopyMethod::Default; let result = handle_reflink_never_sparse_always(source, dest, nofollow); @@ -266,7 +266,7 @@ pub(crate) fn copy_on_write( } match copy_method { - CopyMethod::FSCopy => fs_copy(source, dest, nofollow).map(|_| ()), + CopyMethod::FSCopy => fs_copy(source, dest, nofollow), _ => sparse_copy(source, dest, nofollow), } } @@ -276,13 +276,13 @@ pub(crate) fn copy_on_write( if source_is_stream { copy_debug.offload = OffloadReflinkDebug::Avoided; - copy_stream(source, dest, nofollow).map(|_| ()) + copy_stream(source, dest, nofollow) } else { let result = handle_reflink_never_sparse_never(source, nofollow); if let Ok(debug) = result { copy_debug = debug; } - fs_copy(source, dest, nofollow).map(|_| ()) + fs_copy(source, dest, nofollow) } } (ReflinkMode::Never, SparseMode::Auto) => { @@ -290,7 +290,7 @@ pub(crate) fn copy_on_write( if source_is_stream { copy_debug.offload = OffloadReflinkDebug::Avoided; - copy_stream(source, dest, nofollow).map(|_| ()) + copy_stream(source, dest, nofollow) } else { let mut copy_method = CopyMethod::Default; let result = handle_reflink_never_sparse_auto(source, dest, nofollow); @@ -303,7 +303,7 @@ pub(crate) fn copy_on_write( CopyMethod::SparseCopyWithoutHole => { sparse_copy_without_hole(source, dest, nofollow) } - _ => fs_copy(source, dest, nofollow).map(|_| ()), + _ => fs_copy(source, dest, nofollow), } } } @@ -312,7 +312,7 @@ pub(crate) fn copy_on_write( // SparseMode::Always if source_is_stream { copy_debug.offload = OffloadReflinkDebug::Avoided; - copy_stream(source, dest, nofollow).map(|_| ()) + copy_stream(source, dest, nofollow) } else { let mut copy_method = CopyMethod::Default; let result = handle_reflink_auto_sparse_always(source, dest, nofollow); @@ -332,7 +332,7 @@ pub(crate) fn copy_on_write( copy_debug.reflink = OffloadReflinkDebug::No; if source_is_stream { copy_debug.offload = OffloadReflinkDebug::Avoided; - copy_stream(source, dest, nofollow).map(|_| ()) + copy_stream(source, dest, nofollow) } else { let result = handle_reflink_auto_sparse_never(source, nofollow); if let Ok(debug) = result { @@ -345,7 +345,7 @@ pub(crate) fn copy_on_write( (ReflinkMode::Auto, SparseMode::Auto) => { if source_is_stream { copy_debug.offload = OffloadReflinkDebug::Unsupported; - copy_stream(source, dest, nofollow).map(|_| ()) + copy_stream(source, dest, nofollow) } else { let mut copy_method = CopyMethod::Default; let result = handle_reflink_auto_sparse_auto(source, dest, nofollow);