Problem with B19 (at least) thru B20.1

Larry Hall lhall@rfk.com
Sun Jan 31 23:52:00 GMT 1999


At 12:34 PM 1/8/99 +0200, Juha Jäykkä wrote:
>I have a problem with directories: they both exist and don't exist at
>the same time. I have the following setup:
>  c:\cygnus\bash-root is mounted binary as /
>  c:\home is mounted non-binary as /home
>The directory c:\cygnus\bash-root contains directories bin, tmp and
>home, created with NT (version4, SP3) cmd, not bash. Now /bin exists,
>just like /tmp and /home. /bin contains symbolic links to
>C:\cygnus\cygwin-b20\H-i586-cygwin32\bin\*, in effect giving me a fully
>operational /bin without the need to refer to DOS paths in my PATH
>variable.
>Now, when I try to 'find /', all I get is the contents of the /bin
>directory and its subdirectories, the root directory, /home and /tmp (no
>subdirs since there are none). Now my problem is in the following line
>from find (run from /) output:
>  find: ./home/dummy: No such file or directory
>Obviously this directory exists (at least in the 'NT' sense it does).
>When I try to 'ls /home/dummy' I get the correct result whereas when I
>try (working dir is still /) 'ls home/dummy', I get:
>  ls: home/juhaj: No such file or directory.
>The same behaviour occurs with mkdir: when I try to 'mkdir /home/juhaj',
>I get "directory already exists" and when I try 'mkdir home/juhaj' I get
>success. All this is done from the root directory. Obviously if I create
>directories with mkdir, they can be seen by find
>and it does not matter whether I append the first directory with a slash
>or not; thus:
>  bash-2.02$ mkdir tmp/foobar
>  bash-2.02$ mkdir /tmp/foobar
>  mkdir: cannot make directory `/tmp/foobar': File exists
>Now if I reverse the process, I still get the error. I can see both
>directories with find and with cmd. No problem there. Only directories
>that "come from the mount" seem to be a problem. The same behaviour
>occurs with all mounted directories. Always, when a directory within a
>mount is not created by cygwin, it cannot be seen by find and it can be
>"duplicated" by omitting the leading / from a mkdir clause.
>Further, if I do 'mkdir home/foobar' the resulting directory cannot be
>seen - not by find, not by ls (which thus far has been working correctly
>in all cases) and not by cmd! Only rmdir seems to see it now. Note that
>with /tmp, mkdir worked correctly and cmd and ls could see the directory
>whether I did 'mkdir /tmp/foobar' or 'mkdir tmp/foobar'! This behaviour
>occurs only with mounted directories.
>Does anyone have any clue what produces this and/or how to correct it? I
>would like to get personal answers (in addition to list replies) since
>it's a horror to read the list postings due to the amount of traffic
>there...
>
>//juhaj, Juha Jäykkä, juhaj@iki.fi


Be careful with mount.  It only half follows the semantics of its UNIX 
counterpart, which requires you create the directory to mount to before
doing the mount.  This accounts for your problem, since Cygwin only looks
for matching directories in the mount table when the path is rooted (i.e.
/...)  If you want to see the directory always show up in the file system
and be visible to all the tools, you must either create the directory first
or create some other place holder (symbolic links work for this too)...


Larry Hall                              lhall@rfk.com
RFK Partners, Inc.                      (781) 239-1053
8 Grove Street                          (781) 239-1655 - FAX
Wellesley, MA  02482-7797               http://www.rfk.com
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".



More information about the Cygwin mailing list