Subject: Re: kern/35675 (magiclinks implementation broken)
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: Christos Zoulas <christos@zoulas.com>
List: netbsd-bugs
Date: 04/02/2007 00:55:02
The following reply was made to PR kern/35675; it has been noted by GNATS.

From: christos@zoulas.com (Christos Zoulas)
To: yamt@mwd.biglobe.ne.jp (YAMAMOTO Takashi)
Cc: gnats-bugs@NetBSD.org, kern-bug-people@netbsd.org,
	netbsd-bugs@netbsd.org, gnats-admin@netbsd.org, xtraeme@netbsd.org,
	juan@xtrarom.org, core@netbsd.org
Subject: Re: kern/35675 (magiclinks implementation broken)
Date: Sun, 1 Apr 2007 20:50:16 -0400

 On Apr 2,  7:27am, yamt@mwd.biglobe.ne.jp (YAMAMOTO Takashi) wrote:
 -- Subject: Re: kern/35675 (magiclinks implementation broken)
 
 | > On Feb 18, 11:04am, xtraeme@netbsd.org (xtraeme@netbsd.org) wrote:
 | > -- Subject: Re: kern/35675 (magiclinks implementation broken)
 | > 
 | > | Synopsis: magiclinks implementation broken
 | > | 
 | > | State-Changed-From-To: open->closed
 | > | State-Changed-By: xtraeme@netbsd.org
 | > | State-Changed-When: Sun, 18 Feb 2007 11:04:13 +0000
 | > | State-Changed-Why:
 | > | Nobody thinks it's broken, so close it. I'll re-open
 | > | another PR about perusertmp.
 | > 
 | > I think it is broken. realpath(3) does not work with it, and programs
 | > that use readlink to do directory normalization (csh) are broken too.
 | 
 | are you talking about PR/30705?
 | 
 | > Ideally realpath should be a system call, readlink should return the
 | > expanded path, and there should be another system call to return the
 | > unexpanded pathname. This way userland programs will work like before.
 | > 
 | > christos
 | 
 | can you explain why realpath should be a system call?
 
 Because it is quite pointless to do string gymnastics in userland
 where the kernel has all the code to do this. Our code has been
 historically broken:
 
 - we had bugs where we forgot to NUL terminate
 - we had bugs where the code was not thread-safe
 
 And still:
 
 - it does not handle magiclinks (your PR 30664)
 
 I am looking for something like solaris' resolvepath(2) which can be
 used to implement the rest of realpath(3) in userland.
 
 christos