Case sensitive file names

Moderator, John Quarterman std-unix at ut-sally.UUCP
Wed Nov 5 05:17:34 AEST 1986


From: campbell%maynard.UUCP at harvisr.harvard.edu (Larry Campbell)
Date: Tue, 4 Nov 86 10:19:11 EST
Organization: The Boston Software Works, Inc.

>From: @SUMEX-AIM.ARPA:MRC at PANDA (Mark Crispin)

>     What we are asking for is that if you try to access the ReadMe
>file by specifying "readme" or "Readme" or "README" or even "rEADmE"
>you should get the ReadMe file instead of a file not found error.
>Furthermore, if you open "readme", "Readme", etc. for write, it should
>supercede [sic] the ReadMe file and the resulting file should have the
>original case of ReadMe.
>
>     In other words, finding a file for read will match any case.
>Finding a file for write will match any case, supercede [sic] any such older
>file, and will preserve the case of that older file.  The only way to
>change the case would be with rename; the source name would be case
>independent but the destination case would be preserved.  Of course,
>you could also change the case by deleting ReadMe and then opening
>README for write...

>     There are filesystems that behave in this manner, and they are
>quite pleasant to use.  Please, if you support case-dependence, don't
>give the "mixed case filesystems" class of arguments.  The only two
>arguments you really have are (1) it is a "feature" (however dubious)
>that you can create Makefile and makefile as separate files in the
>same directory, and (2) Unix does it this way.

Sorry to keep beating this dead horse, but some people just haven't
yet caught on to one of the principle design fundamentals of UNIX.

	"Keep it small and simple."

As has already been pointed out, the system (I'm deliberately avoiding
the term "kernel") treats filenames as uninterpreted strings of bytes.
Adding case folding to the system adds complexity to the system that
provides only a tiny benefit (is it really that hard to type the correct
filename?).

I think everyone agrees that creating "Makefile" and "makefile" in the
same directory is braindamaged.  What I disagree with is the notion
that the system should be in the business of preventing this.  Should
the C compiler enforce a certain Hamming distance between identifiers?

Note also that case folding is only "simple" in some languages.  As has
already been pointed out, there are languages (like German) where case
folding is decidedly complex.  And in an international environment, the
case folding algorithm may need to be different for each user.

I wish I could remember who said this, but someone once pointed out
that "One of the reasons Dennis Ritchie is a genius is that whenever
someone says `Wouldn't it be nice if UNIX had feature X?', instead
of saying `Wow, yeah, I'll go hack that in', he says, `Yep, sure would.'"
-- 
Larry Campbell       MCI: LCAMPBELL          The Boston Software Works, Inc.
UUCP: {alliant,wjh12}!maynard!campbell      120 Fulton Street, Boston MA 02109
ARPA: campbell%maynard.uucp at harvisr.harvard.edu     (617) 367-6846

Volume-Number: Volume 8, Number 35



More information about the Mod.std.unix mailing list