From owner-freebsd-current Fri Jun 15 21:36: 7 2001 Delivered-To: freebsd-current@freebsd.org Received: from mailman.zeta.org.au (mailman.zeta.org.au [203.26.10.16]) by hub.freebsd.org (Postfix) with ESMTP id 8737237B406 for ; Fri, 15 Jun 2001 21:36:04 -0700 (PDT) (envelope-from bde@zeta.org.au) Received: from bde.zeta.org.au (bde.zeta.org.au [203.2.228.102]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id OAA06275; Sat, 16 Jun 2001 14:35:53 +1000 Date: Sat, 16 Jun 2001 14:34:07 +1000 (EST) From: Bruce Evans X-Sender: bde@besplex.bde.org To: "Steve O'Hara-Smith" Cc: David Wolfskill , current@FreeBSD.ORG Subject: Re: symlink(2) [Was: Re: tcsh.cat] In-Reply-To: <20010615183515.36f81380.steveo@eircom.net> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Fri, 15 Jun 2001, Steve O'Hara-Smith wrote: > On Fri, 15 Jun 2001 06:31:12 -0700 (PDT) > David Wolfskill wrote: > > DW> Indeed: it is my understanding that the "path name" interpretation is > DW> an issue at the time of reference, not (necessarily) the time of > DW> creation. It has, to the best of my knowledge, been valid to create a > DW> symlink prior to a point when its target exists. > > It has been on evey platform I have ever used ln -s on. > > DW> One may well argue that this is "broken" in some way(s). Still, changing > DW> it at this point could well be considered a POLA violation, at best. > > I would argue loud and long that changing that *would* be broken. There > is never a guarantee (or even an implication) that a symlink points to a > valid directory entry (think unmounted filesystems, NFS ...). I find it hard > to imagine why creation time should be special in that regard. We are (or at least I am) talking about changing it to prevent links to a string that can _never_ be a valid pathname. Fortunately, in POSIX there is only one such string (the empty string). Here's an example of a standard utility being clueless about symlinks to nothing: $ ln -s '' foo $ cp foo bar cp: foo is a directory (not copied) foo is certainly not a directory. The bug seems to be in fts. cp is also broken for symlinks to valid pathnames for nonexistent files; $ rm -f foo $ ln -s /nonesuch foo $ cp foo bar This duplicates foo as a symlink, but should just fail. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message