This is the mail archive of the cygwin@sources.redhat.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: /bin/pwd (getcwd) and symlinks


Earnie Boyd wrote:
> 
> --- Andrej Borsenkow <Andrej.Borsenkow@mow.siemens.ru> wrote:
> > If a current directory is symlink, getcwd() on Unix returns directory, to
> > which this symlink points, while on Cygwin it returns directory itself:
> >
> > mw1g017@MW1G17C% ls -l . sub
> > .:
> > total 0
> > drwxr-xr-x   2 mw1g017  ITS             0 Oct 18 15:40 real
> > drwxr-xr-x   2 mw1g017  ITS             0 Oct 18 15:40 sub
> >
> > sub:
> > total 1
> > lrw-r--r--   1 mw1g017  ITS            18 Oct 18 15:40 fake -> ../real
> > mw1g017@MW1G17C% cd sub/fake
> > mw1g017@MW1G17C% /bin/pwd
> > /tmp/sub/fake
> >
> > while on Unix this returns /tmp/real.
> >
> > Is it intentional?
> >
> 
> It's implementation depedant.  On my HP-UX system it returns the symbolic link
> name.  I could find no documentation stating that it should return the actual
> directory.

And it's intentional as well. In earlier versions we had problems with
`find' if you had a structure like that:

	/
	/etc
	/usr
	/usr/etc -> linked to /etc
	/usr/lib

A find in /usr resulted in some senseless warning messages due to
the way `find' examines and changes thru the directory structure.

This is solved by the current implementation of chdir()/getcwd().

Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Developer                        mailto:cygwin@sources.redhat.com
Red Hat, Inc.
mailto:vinschen@cygnus.com

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]