Index | Thread | Search

From:
Hiltjo Posthuma <hiltjo@codemadness.org>
Subject:
Re: Question about cp -P (without -R) and POSIX compliance
To:
tech@openbsd.org
Date:
Sun, 6 Oct 2024 11:50:21 +0200

Download raw body.

Thread
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