Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 31 Aug 2001 10:43:07 -0400
From:      "Brian F. Feldman" <green@FreeBSD.ORG>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        "Steve O'Hara-Smith" <steveo@eircom.net>, David Wolfskill <david@catwhisker.org>, current@FreeBSD.ORG
Subject:   Re: symlink(2) [Was: Re: tcsh.cat] 
Message-ID:  <200108311443.f7VEh8h14038@green.bikeshed.org>
In-Reply-To: Your message of "Sat, 16 Jun 2001 14:34:07 %2B1000." <Pine.BSF.4.21.0106161355360.89789-100000@besplex.bde.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
Bruce Evans <bde@zeta.org.au> wrote:
> On Fri, 15 Jun 2001, Steve O'Hara-Smith wrote:
> 
> > On Fri, 15 Jun 2001 06:31:12 -0700 (PDT)
> > David Wolfskill <david@catwhisker.org> 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.

No, "foo" certainly _is_ a directory.  It is precisely the same thing as 
".".

> 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

-- 
 Brian Fundakowski Feldman           \  FreeBSD: The Power to Serve!  /
 green@FreeBSD.org                    `------------------------------'



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200108311443.f7VEh8h14038>