diff -up dosfstools-3.0.12/src/mkdosfs.c.old dosfstools-3.0.9/src/mkdosfs.c --- dosfstools-3.0.12/src/mkdosfs.c.old 2010-01-31 08:29:13.000000000 +0100 +++ dosfstools-3.0.12/src/mkdosfs.c 2011-06-02 12:02:40.525623995 +0200 @@ -1684,10 +1684,10 @@ main (int argc, char **argv) * the 'superfloppy' format. As I don't know how to find out if * this is a MO disk I introduce a -I (ignore) switch. -Joey */ - if (!ignore_full_disk && ((statbuf.st_rdev & 0xff3f) == 0x0300 || /* hda, hdb */ - (statbuf.st_rdev & 0xff0f) == 0x0800 || /* sd */ - (statbuf.st_rdev & 0xff3f) == 0x0d00 || /* xd */ - (statbuf.st_rdev & 0xff3f) == 0x1600) /* hdc, hdd */ + if (!ignore_full_disk && ((statbuf.st_rdev & 0xffffff3f) == 0x0300 || /* hda, hdb */ + (statbuf.st_rdev & 0xffffff0f) == 0x0800 || /* sd */ + (statbuf.st_rdev & 0xffffff3f) == 0x0d00 || /* xd */ + (statbuf.st_rdev & 0xffffff3f) == 0x1600) /* hdc, hdd */ ) die("Device partition expected, not making filesystem on entire device '%s' (use -I to override)");