delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/1997/01/01/14:36:55

From: flitterio AT amulet DOT com (Fran Litterio)
Subject: RE: Observations and suggestions
1 Jan 1997 14:36:55 -0800 :
Sender: daemon AT cygnus DOT com
Approved: cygnus DOT gnu-win32 AT cygnus DOT com
Distribution: cygnus
Message-ID: <c=US%a=_%p=Amulet._Inc.%l=JAGUAR-970101223221Z-1928.cygnus.gnu-win32@jaguar.amulet.com>
Mime-Version: 1.0
Original-To: "'gnu-win32 AT cygnus DOT com'" <gnu-win32 AT cygnus DOT com>
X-Mailer: Microsoft Exchange Server Internet Mail Connector Version 4.0.994.63
Original-Sender: owner-gnu-win32 AT cygnus DOT com

Blake McBride (blake AT edge DOT net) writes:

>Unfortunately, the NT OS does not distinguish between file name case
....
>I therefore recommend that we default to ignoring case
>and allow case differentiation be again setting an environment variable
>or 'set' option.

An environment variable would be preferable to using the shell's set
command.  More than one shell will eventually be ported to the cygwin32
environment (zsh anyone?).

>[...] it would probably be best if
>'ls' would integrate case names as opposed to displaying files which
>start in caps separate from those that start in lower case.

The right way to implement this is in the low-level file-name
manipulation routines (opendir(), readdir(), open(), creat(), etc.) in
cygwin.dll.  The default behavior could be for those functions to
downcase all filenames all the time.  The whole world will look like
only lowercase filenames are allowed (even "touch FOO" will create a
file named "foo"), and consistent behavior will ensue (for instance, you
would type "ls *.c" instead of "ls *.c *.C" to see all C source files).

Yes, a small minority of tools want to manipulate files such as
"makefile" and "Makefile" at the same time _and_ have them be different
files.  To allow those tools to compile without changes, has anyone
considered doing something similar to the Win95 long-filename-trick: map
mixed-case filenames to a mangled form (e.g., "Makefile" is stored in
disk as "^M^akefile") and a hidden file in the same directory stores the
mapping from mangled to demangled name ("^M^akefile" -> "Makefile").  If
a process has the magic environment variable set, the cygwin.dll file
manipulation functions would test for the existance of the mapping file,
and bingo -- mixed-case filenames in a single-case file-system.  Of
course, those mangled names would be visible to any non-cygwin32
appliaton, but that's no different than the current mixed case solution
(and probably is completely unavoidable).

Comments?

>BTW, the mixed case mode of mount doesn't work on NT 4.0.  I think this
>may be due to NT 4.0 not allowing ^ in a file name.

NT 4.0 workstation does allow that character in a filename.  I just
tried it: touch 'foo^bar'.
--
Francis Litterio
franl AT amulet DOT com
franl AT world DOT std DOT com
>
-
For help on using this list, send a message to
"gnu-win32-request AT cygnus DOT com" with one line of text: "help".

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019