dosfsck, version 1
==================

WARNING: This is ALPHA test software. Use at your own risk.

dosfsck is the Linux equivalent of PC/MS-DOS' CHKDSK. It checks the
consistency of PC/MS-DOS file systems and optionally tries to repair
them. The tests dosfsck performs are described in the man page.

dosfsck needs header files from dosfs.9 (or later) to compile.

Before using dosfsck to repair a file system that contains data of any
value, you should verify that dosfsck is able to correct all reported
errors. (Except fatal errors and those reported as unfixable, of
course.) In order to do this, run it with the -V option, e.g.

   dosfsck -V /dev/sda1		(automatic check)
or dosfsck -V -r /dev/sda1	(interactive check and repair)

dosfsck will perform two passes: in the first pass, inconsistencies are
detected and a list of changes to correct the problems is generated. In
the second pass, those changes are applied whenever dosfsck reads data
from disk. Hence no fixable errors should be reported in the second
pass if the first pass was successful.

Please notify the author if fixable errors are reported in the second
pass.

After verifying that dosfsck appears to be able to perform the desired
operations, either confirm that you want the changes to be performed
(if dosfsck was started with -r) or re-run dosfsck with the -a option
(if it was started without -r).

Please send bug reports, comments, flames, etc. to
almesber@nessie.cs.id.ethz.ch  or  almesber@bernina.ethz.ch

- Werner

FAT32 and LFN support
=====================

I've finally implemented some of the new features of MS-DOS
filesystems: FAT32 and long filenames.

FAT32 is automatically detected and of course the different FAT
structure is handled. (Internally many changes were needed, so 32 bit
variables for all cluster numbers and 64 bit vars for offsets inside
the filesystem.) New checks for FAT32 are most notably on the backup
boot sector and the new info sector. Also the possibility that the
root directory resides in a cluster chain (instead of in a static
area) on FAT32 is handled.

dosfscheck also knows about VFAT long filenames now. It parses those
names and uses them in listings etc. when available. There are also
some checks on the (cruel) structure of how LFNs are stored and some
attempts to fix problems.

- Roman <roman@hodek.net>

BTW, version 2 isn't ALPHA anymore :-)
