summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ops.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/ops.rs b/src/ops.rs
index 53ed85b7f..d786dfa41 100644
--- a/src/ops.rs
+++ b/src/ops.rs
@@ -811,6 +811,16 @@ fn op_copy_file(
debug!("op_copy_file {} {}", from.display(), to.display());
blocking!(base.sync(), || {
+ // On *nix, Rust deem non-existent path as invalid input
+ // See https://github.com/rust-lang/rust/issues/54800
+ // Once the issue is reolved, we should remove this workaround.
+ if cfg!(unix) && !from.is_file() {
+ return Err(errors::new(
+ ErrorKind::NotFound,
+ "File not found".to_string(),
+ ));
+ }
+
fs::copy(&from, &to)?;
Ok(empty_buf())
})