Fix cp not to give chflags error on NFS
Eitan Adler
lists at eitanadler.com
Sat Apr 1 16:50:52 UTC 2017
+freebsd-standards for folks that know more than I do
On 1 April 2017 at 08:54, Lewis Donzis <lew at perftech.com> wrote:
> It's fairly annoying that cp has no way to suppress the chflags error when the destination file is on an NFS mount. A bigger problem than the error message is that it returns exit status 1, which causes things like make to fail when there really was no error.
>
> What do you think about the following change to /usr/src/bin/cp/utils.c:
>
> 398c398
> < if (fdval ?
> ---
>> if ((fdval ?
> 401c401
> < chflags(to.p_path, fs->st_flags))) {
> ---
>> chflags(to.p_path, fs->st_flags))) && errno != ENOTSUP) {
>
> which simply ignores the error if the destination filesystem doesn't support chflags?
I believe POSIX requires this error:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cp.html
===
The file permission bits and the S_ISUID and S_ISGID bits. Other,
implementation-defined, bits may be duplicated as well. If this
duplication fails for any reason, cp shall write a diagnostic message
to standard error.
===
We can possibly define "implementation defined bits" to not include
other flags if the flags are unsupported on the destination filesystem
but this seems weird to me.
--
Eitan Adler
More information about the freebsd-standards
mailing list