Download raw body.
Question about cp -P (without -R) and POSIX compliance
On Thu, Sep 05, 2024 at 09:44:45PM +0200, Hiltjo Posthuma wrote:
> Hi,
>
> I have a question about cp on OpenBSD and the -P flag.
>
> It seems cp -P (without the -R option) to copy a symlink behaves differently
> for single files on OpenBSD than POSIX specifies and compared to NetBSD,
> FreeBSD, Linux (GNU, busybox, toybox, etc).
>
> Test-case to reproduce it:
>
> touch file
> ln -s file link
> cp -P link link2
> ls -l link link2
>
> NetBSD and FreeBSD changed the check a while ago (Feb 23, 2022), for example:
>
> https://github.com/freebsd/freebsd-src/commit/97e13037915c22162f199461f56951793d669f57
>
> Snippet:
>
> } else if (!Pflag) {
> fts_options &= ~FTS_PHYSICAL;
> fts_options |= FTS_LOGICAL | FTS_COMFOLLOW;
>
> The OpenBSD man page specifies:
>
> "if the -R option is also specified, no symbolic links are followed".
>
> and:
>
> "Symbolic links are always followed unless the -R flag is set, in which case
> symbolic links are not followed, by default. The -H or -L flags (in conjunction
> with the -R flag) cause symbolic links to be followed as described above. The
> -H, -L, and -P options are ignored unless the -R option is specified. In
> addition, these options override each other and the command's actions are
> determined by the last one specified."
>
>
> But POSIX specifies:
>
> "If the -R option was not specified, cp shall take actions based on the type
> and contents of the file referenced by the symbolic link, and not by the
> symbolic link itself, unless the -P option was specified."
>
> Reference: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/cp.html
>
> Should this be changed?
>
> Thank you,
>
Hi,
Any thoughts about the above? Feedback would be appreciated.
If the proposed change looks good I can write a full patch and documentation
update.
Thank you,
--
Kind regards,
Hiltjo
Question about cp -P (without -R) and POSIX compliance