Announcing the release of mkdosfs version 0.3b (Yggdrasil)

It seems I didn't get the bug completely fixed in 0.3a.  Some
borderline cases would still allocate too many sectors for the FAT.
Again, nothing to worry about, just a nitpick -- this one would only
in certain cases add one sector per FAT.

Announcing the release of mkdosfs version 0.3a (Yggdrasil)

Fixed a bug which would cause too many sectors to be reserved for the
FAT (filesystem will still work fine, but have slightly less space
available).

Announcing the release of mkdosfs version 0.3 (Yggdrasil)

This version correctly handles even very large filesystems, and
properly supports the modern (3.3+) DOS bootsector format, including a
message printed on boot attempts.

Peter Anvin
Yggdrasil Computing, Inc.
hpa@yggdrasil.com

			    --------------

Announcing the release of mkdosfs version 0.2


I've just uploaded mkdosfs to sunsite.unc.edu.  It works in a similar way
to Remy Card's mke2fs, but creates an MS-DOS filesystem.

The filename is mkdosfs-0.2.tar.gz.

This second release should fix a small bug that could lead to FAT sizes that
Linux's dosfs would accept but MS-DOS wouldn't.

The archive contains a manual page, binary and source versions.


Dave Hudson
dave@humbug.demon.co.uk
