cp: don't abort when src and dest file are the same

The POSIX spec gives many options on how to handle this case, but it
also states that cp (and mv) should continue with remaining operands
regardless. We used to exit immediately, which violates the spec.

This change makes cp/mv not exit immediately in this case and
also won't cause the return value to be non-zero.

From `man 1p cp`:
   If source_file references the same file as dest_file, cp may write
   a diagnostic message to standard error; it shall do nothing more
   with source_file and shall go on to any remaining files.
This commit is contained in:
Arthur Williams 2022-03-06 04:14:01 -08:00 committed by Michael Forney
parent 499c3b1227
commit 8dfcbf23b0
1 changed files with 2 additions and 1 deletions

View File

@ -13,7 +13,8 @@ fnck(const char *a, const char *b,
&& !stat(b, &stb)
&& sta.st_dev == stb.st_dev
&& sta.st_ino == stb.st_ino) {
eprintf("%s -> %s: same file\n", a, b);
weprintf("%s -> %s: same file\n", a, b);
return;
}
if (fn(a, b, depth) < 0)