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 file system.

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
