From: Bill Todd on
Bill Todd wrote:

....

don't
> worry about things like collating sequences at all (i.e., just treat the
> mess as a simple byte string) - let the GUI handle appropriate sorting
> if it wants to for presentation purposes.
>
> I've almost managed to convince myself that case-sensitive file names
> make sense today even though they emphatically did not a couple of
> decades ago: please, please disabuse me of that seductive notion if I'm
> not being objective.

I'll start the ball rolling on that myself: if names that differ only
in case are widely-separated in the collating sequence of a humongous
directory, any confusing case-only differences can be found only by an
exhaustive search (one which might not even be possible via the GUI - or
other intermediary - process interface, if that process cannot
accommodate the entire directory contents at once). Does this suggest
that the file system should collate case-insensitive even while it
addresses case-sensitive, so that such potential collisions can be
easily found?

- bill
From: robertwessel2@yahoo.com on

Terje Mathisen wrote:
> Even 'regular FAT' is an extension of the original FAT (FAT-12), which
> used just 12 bits for cluster numbers, thereby limiting it to 4096 blocks.
>
> This was enough for the original floppies, but had to be extended to
> 16-bit cluster numbers to handle the 10 MB hard drive on the IBM XT.
>
> FAT-32 was a _much_ more significant upgrade, retrofitting lots of new
> stuff onto the old file system:
>
> a) As the name implies, 32-bit cluster/block numbers.


Yes.


> b) Long filenames. These were implemented with a huge hack, in the form
> of multiple Hidden/System Volume labels. Since regular (sub-)directory
> scanning code ignored the volume label, this made it possible to stuff
> the missing info into the existing directory data structures.


No. Long file name support is orthogonal to FAT32, and is/was
implemented on FAT16 and FAT12 volumes as well. FAT32 was added with
Win98 OSR2, but LFN support was in all version of Win95 (and the base
Win98 release), and was also in WinNT. I verified that it was in WinNT
3.51 (I still have an old 486 with that installed for testing purposes
- this gave me an excuse to power it on), which predates Win95, and I'm
pretty sure that LFN on FAT support was in the first version of NT
(3.1).

It certainly is a huge hack.

FWIW, FAT32 support got added to WinNT well after it was added to
Win9x.


> c) 10-ms file update timestamps, instead of the 2-sec resolution of
> previous iterations.


The extended fields (the write and accessed times, as well as the extra
resolution on create time) in the directory entry were also added by
NT, and again, date back to at least NT 3.51 although I believe
earlier). These aren't significant changes, since they just use an 14
byte area in the directory entry that was unused.

Probably the biggest "new" thing in FAT32 (excepting the 32 bit cluster
numbers) is that the root directory is now a file, like any other
directory (instead of a fixed area like in FAT12/16).

Beyond that, there are a few new fields in the BPB (and the
interpretations of a few of the old ones changed), and there's a
trivial additional sector containing the "FSInfo" structure which holds
some hints about the state of the FAT32 volume. in fact, the only two
fields of significance are the free cluster count - which allows an OS
to display a free space number without reading the entire FAT, and the
last cluster allocated, which is used as a starting point for the next
free cluster. Both fields may be ignored, and are code in such a way
that there's no hard if the FSInfo sector is not updated (the
filesystem just has to actually scan the FAT when it mounts the volume
if the "hint" items are not valid).

All in all, its remarkable how little FAT32 changed FAT12/16.

From: Terje Mathisen on
robertwessel2(a)yahoo.com wrote:
> Terje Mathisen wrote:
>> b) Long filenames. These were implemented with a huge hack, in the form
>> of multiple Hidden/System Volume labels. Since regular (sub-)directory
>> scanning code ignored the volume label, this made it possible to stuff
>> the missing info into the existing directory data structures.
>
>
> No. Long file name support is orthogonal to FAT32, and is/was
> implemented on FAT16 and FAT12 volumes as well. FAT32 was added with

OK, thanks! I had forgotten that particular piece of history.

> FWIW, FAT32 support got added to WinNT well after it was added to
> Win9x.

Yeah, I remember that quite well: It meant that regular FAT was the only
way to to have a common file system for a dual boot machine. :-(

> All in all, its remarkable how little FAT32 changed FAT12/16.

:-)

Terje

--
- <Terje.Mathisen(a)hda.hydro.com>
"almost all programming can be viewed as an exercise in caching"
From: Benny Amorsen on
>>>>> "BT" == Bill Todd <billtodd(a)metrocast.net> writes:

BT> Does this suggest that the file system should collate
BT> case-insensitive even while it addresses case-sensitive, so that
BT> such potential collisions can be easily found?

What do you mean by collate here? If you say that the results of
readdir() or equivalent should be returned in proper alphabetical
order, you really have to make that order per-user. My girlfriend and
I expect different collations.


/Benny

From: Jan Vorbrüggen on
> Since the source code of the language in question is case sensitive,

....which is already a massive design failure, of course, ...

> two of those three are just wrong,

Really? Is there anything in the C ISO standard that says that the
statement "include stdio.h" must lead to a file names "stdio.h", and not
"STDIO.H", or even an entry "STDIO" in a text-library file?

Jan