Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com X-Envelope-Sender-Is: Andrej DOT Borsenkow AT mow DOT siemens DOT ru (at relayer david.siemens.de) From: "Andrej Borsenkow" To: "Earnie Boyd" , "Egor Duda" Cc: Subject: RE: /bin/pwd (getcwd) and symlinks Date: Wed, 18 Oct 2000 18:09:25 +0400 Message-ID: <000c01c0390d$0591e760$21c9ca95@mow.siemens.ru> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2911.0) In-reply-To: <20001018134646.16601.qmail@web113.yahoomail.com> X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 Importance: Normal > > Ok. HP-UX /bin/pwd prints the actual directory. But, what does /bin/pwd on > Linux do? Where is any documentation for what it should do for symlink? I > haven't found anything useful that describes what happens for symlink. > It is not "what it should do" - it is how symlinks and getcwd are (typically) implemented. Symlinks are implemented by storing target name as symlink file content. When you open symlink, kernel implicitly opens target, giving you (dev,inode) - or vnode - of _target_. After this step, there is no way to recover the original name (or inode) of symlink. getcwd is implemented by fetching inode of current directory, scanning parent directory (..) and comparing inodes there with current inode. When it is found, directory entry gives you last part of absolute name. Than getcwd goes up (cd ..) and repeats it. It does it until it hits root (inode(.) == inode(..)). If you combine both, you see, that there is no way getcwd can actually find _symlink_ name. As stated - this is typical implementation. YMMV :-) But I'm really curious to see any Unix-like system that does it differently. -andrej -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com