aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2023-12-07 19:32:30 +0000
committerWarner Losh <imp@FreeBSD.org>2023-12-07 20:36:44 +0000
commit3e7e3b5bdf902a375decc11b95179fd2fbc0da2a (patch)
treefa44b6b3ef048a6bffd5874035ed73bee11d2887
parent5a52e3d00dd5e0209f6fcb1e41b5985191e6f4e7 (diff)
downloadsrc-3e7e3b5bdf902a375decc11b95179fd2fbc0da2a.tar.gz
src-3e7e3b5bdf902a375decc11b95179fd2fbc0da2a.zip
cp: Don't warn for chflags() failing with EOPNOTSUPP if flags == 0
From NetBSD's utils.c 1.5 importing importing BSDI change, with light formatting changes: Author: cgd <cgd@NetBSD.org> Date: Wed Feb 26 14:40:51 1997 +0000 Patch from BSDI (via Keith Bostic): >NFS doesn't support chflags; ignore errors unless there's reason >to believe we're losing bits. (Note, this still won't be right >if the server supports flags and we were trying to *remove* flags >on a file that we copied, i.e., that we didn't create.) CVS Info: utils.c 1.6 Obtained from: NetBSD Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D42674
-rw-r--r--bin/cp/utils.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/bin/cp/utils.c b/bin/cp/utils.c
index 686db13ef0cf..3621c89dd2f2 100644
--- a/bin/cp/utils.c
+++ b/bin/cp/utils.c
@@ -354,8 +354,17 @@ setfile(struct stat *fs, int fd)
fchflags(fd, fs->st_flags) :
(islink ? lchflags(to.p_path, fs->st_flags) :
chflags(to.p_path, fs->st_flags))) {
- warn("chflags: %s", to.p_path);
- rval = 1;
+ /*
+ * NFS doesn't support chflags; ignore errors unless
+ * there's reason to believe we're losing bits. (Note,
+ * this still won't be right if the server supports
+ * flags and we were trying to *remove* flags on a file
+ * that we copied, i.e., that we didn't create.)
+ */
+ if (errno != EOPNOTSUPP || fs->st_flags != 0) {
+ warn("chflags: %s", to.p_path);
+ rval = 1;
+ }
}
return (rval);