From: Hiltjo Posthuma Subject: Re: Question about cp -P (without -R) and POSIX compliance To: tech@openbsd.org Date: Sun, 6 Oct 2024 11:50:21 +0200 On Tue, Sep 17, 2024 at 12:28:45PM +0200, Hiltjo Posthuma wrote: > 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, > One more try: any thought about the above? -- Kind regards, Hiltjo