Opened 8 years ago

Closed 8 years ago

#18 closed enhancement (invalid)

Ability to at least read Windows long filenames on FAT32

Reported by: Lewis Rosenthal Owned by:
Priority: major Milestone:
Component: IFS Version:
Severity: highest Keywords:
Cc:

Description

MS holds several FAT-related patents specific to the storage of long filenames (see http://en.swpat.org/wiki/Microsoft_FAT_patents for links). However, none of those should preclude us from reading the Windows LFNs so that they don't show up as blah~1.ext. As we store LFNs differently, we could at least read the Windows LFNs and when saving to a new LFN, then store using our method.

Change History (6)

comment:1 Changed 8 years ago by Valery V. Sedletski

Severity: highest

Windows LFN support works in fat32.ifs since the very early version. Maybe, you specified wrong cmdline switches for fat32.ifs, so it shows short filenames. There was /FS cmd line switch for short filenames, and /FL for long filenames, but now they are obsolete since version 0.98. The current version is 0.9.13.

PS: There is also the 0.10 branch (unstable) now, which supports 32-bits FORMAT and CHKDSK routines, it is more restructured and newer version.

Last edited 8 years ago by Valery V. Sedletski (previous) (diff)

comment:2 Changed 8 years ago by Lewis Rosenthal

Thanks for following up.

My IFS line is:

IFS=C:\OS2\BOOT\FAT32.IFS /CACHE:2048 /H /Q

I am currently running 0.9.13. I can re-test, but this is a common symptom for me with FAT32-formatted USB sticks (I can create a FAT32-formatted HDD and test that, too, and I can also eliminate the USBMSD driver as a possible issue by doing this on a SATA-attached drive.

Is there a binary available of the 0.10 branch, yet?

comment:3 Changed 8 years ago by Valery V. Sedletski

Maybe, you're missing cachef32.exe switches, or don't start it at all? It is responsible for Unicode to single-byte translation, and maybe, LFN will not work without it. I use these switches for both fat32.ifs and cachef32.exe:

ifs=d:\os2\boot\fat32.ifs /h /ac:h /monitor
call=d:\os2\cachef32.exe /l:off /p:2 /m:50000 /b:250 /d:5000

/monitor is for enabling the debug messages via f32mon.exe utility. Also, I switch lazy write off (/l:off), /p:2 is a priority for lazy writer, and "/m:50000 /b:250 /d:5000" are timings for cache.

I have tested these settings on many USB harddrives and flash disks, everywhere I see long filenames with national characters. Tested disk sizes from 64 MB to 1 Terabytes.

Version 0.10 is the development one, it was not publicly available, but I gave it for testing for interested people. The link is ftp://osfree.org/upload/fat32/fat32-0.10-alpha2.zip. It mostly works, but you need to enable "/monitor" switch in cachef32.exe, for now, otherwise, formatting will give a trap in REDETERMINEMEDIA ioctl after formatting (need to fix that, of course, but still not). It slows down the FS, of course. The svn link for version 0.10 is http://svn.netlabs.org/repos/fat32/branches/fat32-0.10

comment:4 Changed 8 years ago by Valery V. Sedletski

Hm, commented cachef32.exe line in config.sys -- LFN's still working...

comment:5 Changed 8 years ago by Lewis Rosenthal

Interesting.

I do load CACHEF32, but like so:

CALL=C:\ECS\BIN\CACHEF32.EXE /S /F

I'll change my lines to match yours and will test again. Thanks for the link, and for your work on this!

comment:6 Changed 8 years ago by Lewis Rosenthal

Resolution: invalid
Status: newclosed

I have the stick in question mounted in my system.

Never mind. I just discovered that this particular stick is FAT16 and not FAT32!

Note: See TracTickets for help on using tickets.