summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore7
-rw-r--r--ChangeLog314
-rw-r--r--Makefile10
-rw-r--r--VERSION2
-rw-r--r--manpages/Makefile3
-rw-r--r--manpages/de/fatlabel.de.840
-rw-r--r--manpages/de/fsck.fat.de.8150
-rw-r--r--manpages/de/mkfs.fat.de.8192
-rw-r--r--manpages/en/fatlabel.837
-rw-r--r--manpages/en/fsck.fat.8175
-rw-r--r--manpages/en/mkfs.fat.8183
-rw-r--r--manpages/po/de/fatlabel.8.po81
-rw-r--r--manpages/po/de/fsck.fat.8.po317
-rw-r--r--manpages/po/de/mkfs.fat.8.po344
-rw-r--r--manpages/pot/fatlabel.8.pot81
-rw-r--r--manpages/pot/fsck.fat.8.pot317
-rw-r--r--manpages/pot/mkfs.fat.8.pot344
-rw-r--r--src/boot.c20
-rw-r--r--src/check.c73
-rw-r--r--src/common.c6
-rw-r--r--src/common.h8
-rw-r--r--src/fat.c14
-rw-r--r--src/file.c9
-rw-r--r--src/file.h2
-rw-r--r--src/fsck.fat.c10
-rw-r--r--src/fsck.fat.h156
-rw-r--r--src/io.c1
-rw-r--r--src/lfn.c23
-rw-r--r--src/mkfs.fat.c235
-rw-r--r--src/msdos_fs.h61
-rw-r--r--src/version.h4
31 files changed, 1979 insertions, 1240 deletions
diff --git a/.gitignore b/.gitignore
index 384f131..2dc4ca9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,10 @@
/fatlabel
/fsck.fat
/mkfs.fat
+
+tags
+*~
+.*.sw[a-p]
+*.orig
+*.rej
+*.DS_Store
diff --git a/ChangeLog b/ChangeLog
index 8616201..f6a1e3d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,316 @@
-commit e2c8f06 (HEAD, origin/master, master)
+commit ad1342e
+Author: Andreas Bombe <aeb@debian.org>
+Date: Sat May 16 02:10:18 2015 +0200
+
+ manpages: Mark MT and ME tags as untranslated for po4a
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 3ed9ec2
+Author: Andreas Bombe <aeb@debian.org>
+Date: Sun May 10 19:59:02 2015 +0200
+
+ mkfs: Small changes to FAT32 cluster size selection
+
+ Put the cluster size selection back in line with the table used in
+ Microsoft's fatgen103.pdf and fix the comment. This only involved
+ changing some comparison operators, all values stayed the same.
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 9984552
+Author: Andreas Bombe <aeb@debian.org>
+Date: Mon Apr 20 23:41:34 2015 +0200
+
+ fsck: Mention -r is default in usage message
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 3eaca68
+Author: Andreas Bombe <aeb@debian.org>
+Date: Mon Apr 20 23:30:56 2015 +0200
+
+ manpages: Remove obsolete information about Linux FAT support
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit a5e34de
+Author: Andreas Bombe <aeb@debian.org>
+Date: Thu Apr 16 23:16:08 2015 +0200
+
+ manpages: Convert the rest of argument placeholders to upper case
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 2303765
+Author: Andreas Bombe <aeb@debian.org>
+Date: Thu Apr 16 22:51:20 2015 +0200
+
+ manpages: Fix formatting
+
+ Make the manpages conform to the rules for groff sources. First,
+ eliminate empty lines because these create vertical spaces where it
+ isn't desired. Man page sources should not contain empty lines. Second,
+ put a line break between sentences in a paragraph. A period is
+ recognized and formatted as a full stop period only when a line break
+ comes right after it.
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit d3969b8
+Author: Andreas Bombe <aeb@debian.org>
+Date: Fri Apr 10 20:32:50 2015 +0200
+
+ fsck: Verify first cluster of a file is not 1
+
+ Previously the FAT was checked for any out of bounds entries which were
+ cleared. However the first cluster of a file, as specified in its
+ directory entry, was not verified to not be 1.
+
+ In addition to missing this filesystem error, code that correctly
+ assumes the FAT contained no bad entries anymore could still look up
+ invalid table indices depending on the value stored in entry 1. With
+ the right values and FAT size this can lead to a segfault by accessing
+ unallocated memory.
+
+ Now test_file() will ignore files where the first cluster equals 1 and
+ an additional check in check_file() will truncate them.
+
+ This bug was reported in http://bugs.debian.org/773885 by Jakub Wilk.
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 2a56575
+Author: Andreas Bombe <aeb@debian.org>
+Date: Thu Apr 2 23:35:00 2015 +0200
+
+ Simplify synopses of man pages
+
+ Since there is only one mode of invocation for the tools, it is
+ somewhat pointless to list every possible option in the synopsis.
+
+ Fix a few style inconsistencies in addition, specifically that
+ placeholders for option arguments are in capital letters and should be
+ shown where the option is described.
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 40f1436
+Author: Andreas Bombe <aeb@debian.org>
+Date: Wed Apr 1 20:55:58 2015 +0200
+
+ Update homepage and maintainer sections of man pages
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 0169db8
+Author: Andreas Bombe <aeb@debian.org>
+Date: Wed Apr 1 20:05:01 2015 +0200
+
+ mkfs: Show a clearer message that file already exists with -C
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 2967e27
+Author: Andreas Bombe <aeb@debian.org>
+Date: Mon Mar 30 21:12:51 2015 +0200
+
+ mkfs: Remove O_TRUNC from file creation call
+
+ open() is called with O_EXCL | O_CREAT, so it will definitely create a
+ new, empty file or error out. O_TRUNC is superfluous and may be harmless
+ in practice but its effect under these circumstances is unspecified.
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 90612df
+Author: Andreas Bombe <aeb@debian.org>
+Date: Mon Mar 30 21:09:51 2015 +0200
+
+ mkfs: Use ftruncate() for expanding created file
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 58e8e09
+Author: Andreas Bombe <aeb@debian.org>
+Date: Tue Mar 24 21:32:40 2015 +0100
+
+ mkfs: Add --invariant option
+
+ The --invariant option is designed to prevent random or time based
+ differences to end up in generated filesystems so that multiple runs
+ generate on the same file or device create completely identical results.
+
+ This is intended for debugging or regression testing of mkfs.fat.
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 354feaf
+Author: Andreas Bombe <aeb@debian.org>
+Date: Thu Mar 19 21:35:21 2015 +0100
+
+ mkfs: Add long option parsing
+
+ Add long option parsing with getopt_long() to mkfs and define --help as
+ the first long option. The usage() function now takes an exit code
+ parameter so that the --help option handling can exit the program with
+ a success exit code.
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit b611549
+Author: Andreas Bombe <aeb@debian.org>
+Date: Mon Mar 16 21:08:35 2015 +0100
+
+ Do not expect EOF as return value of getopt()
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit a41fc32
+Author: Andreas Bombe <aeb@debian.org>
+Date: Wed Mar 11 21:45:04 2015 +0100
+
+ fsck.fat: Fix read beyond end of array on FAT12
+
+ When a FAT12 filesystem contains an odd number of clusters, setting the
+ last cluster with set_fat() will trigger a read of the next entry,
+ which does not exist in the fat array allocated for this.
+
+ Round up the allocation to an even number of FAT entries for FAT12 so
+ that this is fixed without introducing special casing in get_fat().
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit e18d72f
+Author: Álvaro Fernández Rojas <noltari@gmail.com>
+Date: Sat Mar 7 13:23:23 2015 +0100
+
+ Remove linux/msdos_fs.h includes
+
+ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 245d0cc
+Author: Álvaro Fernández Rojas <noltari@gmail.com>
+Date: Thu Feb 26 19:22:54 2015 +0100
+
+ Remove non standard int types
+
+ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 628b3ec
+Author: Álvaro Fernández Rojas <noltari@gmail.com>
+Date: Thu Feb 26 19:41:19 2015 +0100
+
+ Improve .gitignore
+
+ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 02b5a6d
+Author: Álvaro Fernández Rojas <noltari@gmail.com>
+Date: Thu Feb 26 12:51:23 2015 +0100
+
+ Makefile: avoid using install -D
+
+ OS X and FreeBSD are not compatible with this option
+
+ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit fb6aea6
+Author: Álvaro Fernández Rojas <noltari@gmail.com>
+Date: Thu Feb 26 12:50:57 2015 +0100
+
+ Makefile: fix typo in uninstall-man
+
+ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 357ab07
+Author: Andreas Bombe <aeb@debian.org>
+Date: Thu Feb 19 21:22:54 2015 +0100
+
+ fsck.fat: Make -r option default
+
+ Default mode is now to interactively repair with the option to write
+ the changes back at the end (like the -r option) instead of the previous
+ default mode of interactively correcting but never writing back the
+ changes.
+
+ The -r option continues to be recognized by fsck.fat.
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 266a5fc
+Author: Andreas Bombe <aeb@debian.org>
+Date: Fri Feb 20 03:19:28 2015 +0100
+
+ mkfs.fat: Allow 0xF0 to be specified as media byte
+
+ Let the -M option accept 0xF0, which should be the proper descriptor
+ byte for 3.5" 1.44 MB and 2.88 MB floppies.
+
+ Also split the error reporting for -M between badly formatted and
+ invalid numbers.
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 16e97e9
+Author: Andreas Bombe <aeb@debian.org>
+Date: Wed Jan 28 15:07:18 2015 +0100
+
+ Make all char* that may take literals const
+
+ Every char* variable or function argument that may be given a literal
+ string is now made const. Additionally add -Wwrite-strings to CFLAGS to
+ enable a warning where const would be missing.
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 8b8948c
+Author: Andreas Bombe <aeb@debian.org>
+Date: Mon Dec 29 18:24:54 2014 +0100
+
+ mkfs.fat.c: Use unsigned char for binary data
+
+ Simple char technically works for the dummy_boot_jump variables, but
+ some compiler warning settings would give a warning over a signed char
+ overflowing with the values given as initializers.
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 45aeed0
+Author: Andreas Bombe <aeb@debian.org>
+Date: Sun Nov 16 19:49:22 2014 +0100
+
+ Fix indentation of "fix power loss damage" commit
+
+ I fixed the (sometimes misleading) indentation of the code introduced in
+ commit 6893c45 to be in line with the reset of the code and also removed
+ the /* PATCH ED+DL */ comments which are quite meaningless to the wider
+ world.
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit 75c5446
+Author: Andreas Bombe <aeb@debian.org>
+Date: Sat Nov 15 16:48:48 2014 +0100
+
+ Add tags and editor backup files to .gitignore
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit cb98ae2 (tag: v3.0.27)
+Author: Andreas Bombe <aeb@debian.org>
+Date: Wed Nov 12 01:10:23 2014 +0100
+
+ Releasing version 3.0.27.
+
+ Signed-off-by: Andreas Bombe <aeb@debian.org>
+
+commit e2c8f06
Author: Andreas Bombe <aeb@debian.org>
Date: Wed Nov 12 00:22:17 2014 +0100
diff --git a/Makefile b/Makefile
index 81256ef..1593f3d 100644
--- a/Makefile
+++ b/Makefile
@@ -30,7 +30,7 @@ MANDIR = $(PREFIX)/share/man
#OPTFLAGS = -O2 -fomit-frame-pointer -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
OPTFLAGS = -O2 -fomit-frame-pointer -D_GNU_SOURCE $(shell getconf LFS_CFLAGS)
#WARNFLAGS = -Wall -pedantic -std=c99
-WARNFLAGS = -Wall -Wextra -Wno-sign-compare -Wno-missing-field-initializers -Wmissing-prototypes -Wstrict-prototypes
+WARNFLAGS = -Wall -Wextra -Wno-sign-compare -Wno-missing-field-initializers -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings
DEBUGFLAGS = -g
CFLAGS += $(OPTFLAGS) $(WARNFLAGS) $(DEBUGFLAGS)
@@ -62,7 +62,8 @@ install-man:
for MANPAGE in manpages/en/*; \
do \
SECTION="8"; \
- install -D -m 0644 $${MANPAGE} $(DESTDIR)/$(MANDIR)/man$${SECTION}/$$(basename $${MANPAGE}); \
+ mkdir -p $(DESTDIR)/$(MANDIR)/man$${SECTION}/; \
+ install -m 0644 $${MANPAGE} $(DESTDIR)/$(MANDIR)/man$${SECTION}/$$(basename $${MANPAGE}); \
done
for LANGUAGE in $(LANGUAGES); \
@@ -70,7 +71,8 @@ install-man:
for MANPAGE in manpages/$${LANGUAGE}/*; \
do \
SECTION="8"; \
- install -D -m 0644 $${MANPAGE} $(DESTDIR)/$(MANDIR)/$${LANGUAGE}/man$${SECTION}/$$(basename $${MANPAGE} .$${LANGUAGE}.$${SECTION}).$${SECTION}; \
+ mkdir -p $(DESTDIR)/$(MANDIR)/$${LANGUAGE}/man$${SECTION}/; \
+ install -m 0644 $${MANPAGE} $(DESTDIR)/$(MANDIR)/$${LANGUAGE}/man$${SECTION}/$$(basename $${MANPAGE} .$${LANGUAGE}.$${SECTION}).$${SECTION}; \
done; \
done
install-symlinks: install-bin install-man
@@ -127,7 +129,7 @@ uninstall-man:
for MANPAGE in manpages/en/*; \
do \
SECTION="8"; \
- rm -f $(DESTDIR)/$(MANDIR}/man$${SECTION}/$$(basename $${MANPAGE} .en.$${SECTION}).$${SECTION}; \
+ rm -f $(DESTDIR)/$(MANDIR)/man$${SECTION}/$$(basename $${MANPAGE} .en.$${SECTION}).$${SECTION}; \
done
for LANGUAGE in $(LANGUAGES); \
diff --git a/VERSION b/VERSION
index d0ecf17..0baec4d 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-3.0.27
+3.0.28
diff --git a/manpages/Makefile b/manpages/Makefile
index 28b29fa..ee8a478 100644
--- a/manpages/Makefile
+++ b/manpages/Makefile
@@ -38,7 +38,8 @@ build: po4a.cfg
exit 1; \
fi
- po4a --keep 0 --no-backups --package-name dosfstools po4a.cfg
+ po4a --keep 0 --no-backups -o untranslated=MT,ME \
+ --package-name dosfstools po4a.cfg
clean:
rm -rf $(LANGUAGES)
diff --git a/manpages/de/fatlabel.de.8 b/manpages/de/fatlabel.de.8
index d819a13..53f5515 100644
--- a/manpages/de/fatlabel.de.8
+++ b/manpages/de/fatlabel.de.8
@@ -24,37 +24,45 @@
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH FATLABEL 8 2014\-11\-12 3.0.27 dosfstools
-
+.TH FATLABEL 8 2015\-05\-16 3.0.28 dosfstools
.SH NAME
+.\" ----------------------------------------------------------------------------
\fBfatlabel\fP \- set or get MS\-DOS filesystem label
-
.SH SYNOPSIS
+.\" ----------------------------------------------------------------------------
\fBfatlabel\fP \fIDEVICE\fP [\fILABEL\fP]
-
.SH DESCRIPTION
\fBfatlabel\fP set or gets a MS\-DOS filesystem label from a given device.
.PP
-If the label is omitted, then the label name of the specified device is
-written on the standard output. A label can't be longer than 11 bytes.
-
+.\" ----------------------------------------------------------------------------
+If \fILABEL\fP is omitted, then the label name of the specified device is
+written on the standard output. A label can't be longer than 11 bytes.
.SH OPTIONS
.IP "\fB\-h\fP, \fB\-\-help\fP" 4
Displays a help message.
.IP "\fB\-V\fP, \fB\-\-version\fP" 4
+.\" ----------------------------------------------------------------------------
Shows version.
-
.SH "SEE ALSO"
\fBfsck.fat\fP(8)
.br
+.\" ----------------------------------------------------------------------------
\fBmkfs.fat\fP(8)
-
.SH HOMEPAGE
-More information about \fBfatlabel\fP and \fBdosfstools\fP can be found at
-<\fIhttp://daniel\-baumann.ch/software/dosfstools/\fP>.
-
+.\" ----------------------------------------------------------------------------
+The home for the \fBdosfstools\fP project is its
+.UR https://github.com/dosfstools/dosfstools
+GitHub project page
+.UE .
.SH AUTHORS
-\fBdosfstools\fP were written by Werner Almesberger
-<\fIwerner.almesberger@lrc.di.epfl.ch\fP>, Roman Hodek
-<\fIRoman.Hodek@informatik.uni\-erlangen.de\fP>, and others. The current
-maintainer is Daniel Baumann <\fImail@daniel\-baumann.ch\fP>.
+\fBdosfstools\fP were written by
+.MT werner.almesberger@\:lrc.di.epfl.ch
+Werner Almesberger
+.ME ,
+.MT Roman.Hodek@\:informatik.\:uni-erlangen.de
+Roman Hodek
+.ME ,
+and others. The current maintainer is
+.MT aeb@\:debian.org
+Andreas Bombe
+.ME .
diff --git a/manpages/de/fsck.fat.de.8 b/manpages/de/fsck.fat.de.8
index 1d96e23..869b806 100644
--- a/manpages/de/fsck.fat.de.8
+++ b/manpages/de/fsck.fat.de.8
@@ -24,95 +24,94 @@
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH FSCK.FAT 8 2014\-11\-12 3.0.27 dosfstools
-
+.TH FSCK.FAT 8 2015\-05\-16 3.0.28 dosfstools
.SH NAME
+.\" ----------------------------------------------------------------------------
\fBfsck.fat\fP \- check and repair MS\-DOS filesystems
-
.SH SYNOPSIS
-\fBfsck.fat\fP|\fBfsck.msdos\fP|\fBfsck.vfat\fP [\-aAflnprtvVwy] [\-d \fIPATH\fP \-d\ \&\fI...\fP] [\-u\ \fIPATH\fP \-u \fI...\fP] \fIDEVICE\fP
-
+.\" ----------------------------------------------------------------------------
+\fBfsck.fat\fP [\fIOPTIONS\fP] \fIDEVICE\fP
.SH DESCRIPTION
\fBfsck.fat\fP verifies the consistency of MS\-DOS filesystems and optionally
tries to repair them.
.PP
The following filesystem problems can be corrected (in this order):
.IP * 4
-FAT contains invalid cluster numbers. Cluster is changed to EOF.
+FAT contains invalid cluster numbers. Cluster is changed to EOF.
.IP * 4
-File's cluster chain contains a loop. The loop is broken.
+File's cluster chain contains a loop. The loop is broken.
.IP * 4
-Bad clusters (read errors). The clusters are marked bad and they are removed
-from files owning them. This check is optional.
+Bad clusters (read errors). The clusters are marked bad and they are
+removed from files owning them. This check is optional.
.IP * 4
-Directories with a large number of bad entries (probably corrupt). The
+Directories with a large number of bad entries (probably corrupt). The
directory can be deleted.
.IP * 4
-Files . and .. are non\-directories. They can be deleted or renamed.
+Files . and .. are non\-directories. They can be deleted or renamed.
.IP * 4
-Directories . and .. in root directory. They are deleted.
+Directories . and .. in root directory. They are deleted.
.IP * 4
-Bad filenames. They can be renamed.
+Bad filenames. They can be renamed.
.IP * 4
-Duplicate directory entries. They can be deleted or renamed.
+Duplicate directory entries. They can be deleted or renamed.
.IP * 4
-Directories with non\-zero size field. Size is set to zero.
+Directories with non\-zero size field. Size is set to zero.
.IP * 4
-Directory . does not point to parent directory. The start pointer is
+Directory . does not point to parent directory. The start pointer is
adjusted.
.IP * 4
-Directory .. does not point to parent of parent directory. The start pointer
-is adjusted.
+Directory .. does not point to parent of parent directory. The start
+pointer is adjusted.
.IP * 4
-Start cluster number of a file is invalid. The file is truncated.
+Start cluster number of a file is invalid. The file is truncated.
.IP * 4
-File contains bad or free clusters. The file is truncated.
+File contains bad or free clusters. The file is truncated.
.IP * 4
-File's cluster chain is longer than indicated by the size fields. The file
+File's cluster chain is longer than indicated by the size fields. The file
is truncated.
.IP * 4
-Two or more files share the same cluster(s). All but one of the files are
-truncated. If the file being truncated is a directory file that has already
+Two or more files share the same cluster(s). All but one of the files are
+truncated. If the file being truncated is a directory file that has already
been read, the filesystem check is restarted after truncation.
.IP * 4
-File's cluster chain is shorter than indicated by the size fields. The file
+File's cluster chain is shorter than indicated by the size fields. The file
is truncated.
.IP * 4
-Clusters are marked as used but are not owned by a file. They are marked as
+Clusters are marked as used but are not owned by a file. They are marked as
free.
.PP
Additionally, the following problems are detected, but not repaired:
.IP * 4
-Invalid parameters in boot sector.
+Invalid parameters in boot sector
.IP * 4
Absence of . and .. entries in non\-root directories
.PP
+.\" ----------------------------------------------------------------------------
When \fBfsck.fat\fP checks a filesystem, it accumulates all changes in memory
-and performs them only after all checks are complete. This can be disabled
+and performs them only after all checks are complete. This can be disabled
with the \fB\-w\fP option.
-
.SH OPTIONS
.IP \fB\-a\fP 4
-Automatically repair the filesystem. No user intervention is
-necessary. Whenever there is more than one method to solve a problem, the
-least destructive approach is used.
+Automatically repair the filesystem. No user intervention is necessary.
+Whenever there is more than one method to solve a problem, the least
+destructive approach is used.
.IP \fB\-A\fP 4
-Use Atari variation of the MS\-DOS filesystem. This is default if \fBfsck.fat\fP
-is run on an Atari, then this option turns off Atari format. There are some
-minor differences in Atari format: Some boot sector fields are interpreted
-slightly different, and the special FAT entries for end\-of\-file and bad
-cluster can be different. Under MS\-DOS 0xfff8 is used for EOF and Atari
-employs 0xffff by default, but both systems recognize all values from
-0xfff8...0xffff as end\-of\-file. MS\-DOS uses only 0xfff7 for bad clusters,
-where on Atari values 0xfff0...0xfff7 are for this purpose (but the standard
-value is still 0xfff7).
+Use Atari variation of the MS\-DOS filesystem. This is default if
+\fBfsck.fat\fP is run on an Atari, then this option turns off Atari format.
+There are some minor differences in Atari format: Some boot sector fields
+are interpreted slightly different, and the special FAT entries for
+end\-of\-file and bad cluster can be different. Under MS\-DOS 0xfff8 is used
+for EOF and Atari employs 0xffff by default, but both systems recognize all
+values from 0xfff8...0xffff as end\-of\-file. MS\-DOS uses only 0xfff7 for bad
+clusters, where on Atari values 0xfff0...0xfff7 are for this purpose (but
+the standard value is still 0xfff7).
.IP \fB\-b\fP 4
Make read\-only boot sector check.
-.IP \fB\-d\fP 4
-Delete the specified file. If more that one file with that name exists, the
-first one is deleted.
+.IP "\fB\-d\fP \fIPATH\fP" 4
+Delete the specified file. If more than one file with that name exist, the
+first one is deleted. This option can be given more than once.
.IP \fB\-f\fP 4
-Salvage unused cluster chains to files. By default, unused clusters are
+Salvage unused cluster chains to files. By default, unused clusters are
added to the free disk space except in auto mode (\fB\-a\fP).
.IP \fB\-l\fP 4
List path names of files being processed.
@@ -120,33 +119,31 @@ List path names of files being processed.
No\-operation mode: non\-interactively check for errors, but don't write
anything to the filesystem.
.IP \fB\-p\fP 4
-Same as (\fB\-a\fP), for compatibility with other *fsck.
+Same as \fB\-a\fP, for compatibility with other *fsck.
.IP \fB\-r\fP 4
-Interactively repair the filesystem. The user is asked for advice whenever
-there is more than one approach to fix an inconsistency.
+Interactively repair the filesystem. The user is asked for advice whenever
+there is more than one approach to fix an inconsistency. This is the
+default mode and the option is only retained for backwards compatibility.
.IP \fB\-t\fP 4
Mark unreadable clusters as bad.
-.IP \fB\-u\fP 4
-Try to undelete the specified file. \fBfsck.fat\fP tries to allocate a chain of
-contiguous unallocated clusters beginning with the start cluster of the
-undeleted file.
+.IP "\fB\-u\fP \fIPATH\fP" 4
+Try to undelete the specified file. \fBfsck.fat\fP tries to allocate a chain
+of contiguous unallocated clusters beginning with the start cluster of the
+undeleted file. This option can be given more than once.
.IP \fB\-v\fP 4
-Verbose mode. Generates slightly more output.
+Verbose mode. Generates slightly more output.
.IP \fB\-V\fP 4
-Perform a verification pass. The filesystem check is repeated after the
-first run. The second pass should never report any fixable errors. It may
+Perform a verification pass. The filesystem check is repeated after the
+first run. The second pass should never report any fixable errors. It may
take considerably longer than the first pass, because the first pass may
have generated long list of modifications that have to be scanned for each
disk read.
.IP \fB\-w\fP 4
Write changes to disk immediately.
.IP \fB\-y\fP 4
+.\" ----------------------------------------------------------------------------
Same as \fB\-a\fP (automatically repair filesystem) for compatibility with other
fsck tools.
-.PP
-\fBNote:\fP If \fB\-a\fP and \fB\-r\fP are absent, the filesystem is only checked, but
-not repaired.
-
.SH "EXIT STATUS"
.IP 0 4
No recoverable errors have been detected.
@@ -154,30 +151,39 @@ No recoverable errors have been detected.
Recoverable errors have been detected or \fBfsck.fat\fP has discovered an
internal inconsistency.
.IP 2 4
-Usage error. \fBfsck.fat\fP did not access the filesystem.
-
+.\" ----------------------------------------------------------------------------
+Usage error. \fBfsck.fat\fP did not access the filesystem.
.SH FILES
.IP "fsck0000.rec, fsck0001.rec, ..." 4
+.\" ----------------------------------------------------------------------------
When recovering from a corrupted filesystem, \fBfsck.fat\fP dumps recovered
data into files named 'fsckNNNN.rec' in the top level directory of the
filesystem.
-
.SH BUGS
-Does not create . and .. files where necessary. Does not remove entirely
-empty directories. Should give more diagnostic messages. Undeleting files
+.\" ----------------------------------------------------------------------------
+Does not create . and .. files where necessary. Does not remove entirely
+empty directories. Should give more diagnostic messages. Undeleting files
should use a more sophisticated algorithm.
-
.SH "SEE ALSO"
\fBfatlabel\fP(8)
.br
+.\" ----------------------------------------------------------------------------
\fBmkfs.fat\fP(8)
-
.SH HOMEPAGE
-More information about \fBfsck.fat\fP and \fBdosfstools\fP can be found at
-<\fIhttp://daniel\-baumann.ch/software/dosfstools/\fP>.
-
+.\" ----------------------------------------------------------------------------
+The home for the \fBdosfstools\fP project is its
+.UR https://github.com/dosfstools/dosfstools
+GitHub project page
+.UE .
.SH AUTHORS
-\fBdosfstools\fP were written by Werner Almesberger
-<\fIwerner.almesberger@lrc.di.epfl.ch\fP>, Roman Hodek
-<\fIRoman.Hodek@informatik.uni\-erlangen.de\fP>, and others. The current
-maintainer is Daniel Baumann <\fImail@daniel\-baumann.ch\fP>.
+\fBdosfstools\fP were written by
+.MT werner.almesberger@\:lrc.di.epfl.ch
+Werner Almesberger
+.ME ,
+.MT Roman.Hodek@\:informatik.\:uni-erlangen.de
+Roman Hodek
+.ME ,
+and others. The current maintainer is
+.MT aeb@\:debian.org
+Andreas Bombe
+.ME .
diff --git a/manpages/de/mkfs.fat.de.8 b/manpages/de/mkfs.fat.de.8
index 5a6eb1a..a1b51d4 100644
--- a/manpages/de/mkfs.fat.de.8
+++ b/manpages/de/mkfs.fat.de.8
@@ -24,141 +24,149 @@
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH MKFS.FAT 8 2014\-11\-12 3.0.27 dosfstools
-
+.TH MKFS.FAT 8 2015\-05\-16 3.0.28 dosfstools
.SH NAME
+.\" ----------------------------------------------------------------------------
\fBmkfs.fat\fP \- create an MS\-DOS filesystem under Linux
-
.SH SYNOPSIS
-\fBmkfs.fat\fP [\fB\-a\fP] [\fB\-A\fP] [\fB\-b\fP \fIsector\-of\-backup\fP] [\fB\-c\fP] [\fB\-l\fP
-\fIfilename\fP] [\fB\-C\fP] [\fB\-f\fP \fInumber\-of\-FATs\fP] [\fB\-F\fP \fIFAT\-size] [\fP\fB\-h\fP
-\fInumber\-of\-hidden\-sectors\fP] [\fB\-i\fP \fIvolume\-id\fP] [\fB\-I\fP] [\fB\-m\fP
-\fImessage\-file\fP] [\fB\-n\fP \fIvolume\-name\fP] [\fB\-r\fP \fIroot\-dir\-entries\fP] [\fB\-R\fP
-\fInumber\-of\-reserved\-sectors\fP] [\fB\-s\fP \fIsectors\-per\-cluster\fP] [\fB\-S
-\fP\fIlogical\-sector\-size\fP] [\fB\-D\fP \fIdrive\-number\fP] [\fB\-M \fP\fIFAT\-media\-type\fP]
-[\fB\-v\fP] \fIdevice\fP [\fIblock\-count\fP]
-
+.\" ----------------------------------------------------------------------------
+\fBmkfs.fat\fP [\fIOPTIONS\fP] \fIDEVICE\fP [\fIBLOCK\-COUNT\fP]
.SH DESCRIPTION
+.\" ----------------------------------------------------------------------------
\fBmkfs.fat\fP is used to create an MS\-DOS filesystem under Linux on a device
-(usually a disk partition). \fIdevice\fP is the special file corresponding to
-the device (e.g /dev/sdXX). \fIblock\-count\fP is the number of blocks on the
-device. If omitted, \fBmkfs.fat\fP automatically determines the filesystem
+(usually a disk partition). \fIDEVICE\fP is the special file corresponding to
+the device (e.g. /dev/sdXX). \fIBLOCK\-COUNT\fP is the number of blocks on the
+device. If omitted, \fBmkfs.fat\fP automatically determines the filesystem
size.
-
.SH OPTIONS
.IP \fB\-a\fP 4
Normally, for any filesystem except very small ones, \fBmkfs.fat\fP will align
all the data structures to cluster size, to make sure that as long as the
partition is properly aligned, so will all the data structures in the
-filesystem. This option disables alignment; this may provide a handful of
+filesystem. This option disables alignment; this may provide a handful of
additional clusters of storage at the expense of a significant performance
degradation on RAIDs, flash media or large\-sector hard disks.
.IP "\fB \-A\fP" 4
-Use Atari variation of the MS\-DOS filesystem. This is default if \fBmkfs.fat\fP
-is run on an Atari, then this option turns off Atari format. There are some
-differences when using Atari format: If not directed otherwise by the user,
-\fBmkfs.fat\fP will always use 2 sectors per cluster, since GEMDOS doesn't like
-other values very much. It will also obey the maximum number of sectors
-GEMDOS can handle. Larger filesystems are managed by raising the logical
-sector size. Under Atari format, an Atari\-compatible serial number for the
-filesystem is generated, and a 12 bit FAT is used only for filesystems that
-have one of the usual floppy sizes (720k, 1.2M, 1.44M, 2.88M), a 16 bit FAT
-otherwise. This can be overridden with the \fB\-F\fP option. Some PC\-specific
-boot sector fields aren't written, and a boot message (option \fB\-m\fP) is
-ignored.
-.IP "\fB\-b\fP \fIsector\-of\-backup\fP" 4
-Selects the location of the backup boot sector for FAT32. Default depends on
-number of reserved sectors, but usually is sector 6. The backup must be
+Use Atari variation of the MS\-DOS filesystem. This is default if
+\fBmkfs.fat\fP is run on an Atari, then this option turns off Atari format.
+There are some differences when using Atari format: If not directed
+otherwise by the user, \fBmkfs.fat\fP will always use 2 sectors per cluster,
+since GEMDOS doesn't like other values very much. It will also obey the
+maximum number of sectors GEMDOS can handle. Larger filesystems are managed
+by raising the logical sector size. Under Atari format, an Atari\-compatible
+serial number for the filesystem is generated, and a 12 bit FAT is used only
+for filesystems that have one of the usual floppy sizes (720k, 1.2M, 1.44M,
+2.88M), a 16 bit FAT otherwise. This can be overridden with the \fB\-F\fP
+option. Some PC\-specific boot sector fields aren't written, and a boot
+message (option \fB\-m\fP) is ignored.
+.IP "\fB\-b\fP \fISECTOR\-OF\-BACKUP\fP" 4
+Selects the location of the backup boot sector for FAT32. Default depends
+on number of reserved sectors, but usually is sector 6. The backup must be
within the range of reserved sectors.
.IP \fB\-c\fP 4
Check the device for bad blocks before creating the filesystem.
.IP \fB\-C\fP 4
-Create the file given as \fIdevice\fP on the command line, and write the
-to\-be\-created filesystem to it. This can be used to create the new
+Create the file given as \fIDEVICE\fP on the command line, and write the
+to\-be\-created filesystem to it. This can be used to create the new
filesystem in a file instead of on a real device, and to avoid using \fBdd\fP
-in advance to create a file of appropriate size. With this option, the
-\fIblock\-count\fP must be given, because otherwise the intended size of the
-filesystem wouldn't be known. The file created is a sparse file, which
+in advance to create a file of appropriate size. With this option, the
+\fIBLOCK\-COUNT\fP must be given, because otherwise the intended size of the
+filesystem wouldn't be known. The file created is a sparse file, which
actually only contains the meta\-data areas (boot sector, FATs, and root
-directory). The data portions won't be stored on the disk, but the file
-nevertheless will have the correct size. The resulting file can be copied
+directory). The data portions won't be stored on the disk, but the file
+nevertheless will have the correct size. The resulting file can be copied
later to a floppy disk or other device, or mounted through a loop device.
-.IP "\fB\-D\fP \fIdrive\-number\fP" 4
-Specify the BIOS drive number to be stored in the FAT boot sector. This
+.IP "\fB\-D\fP \fIDRIVE\-NUMBER\fP" 4
+Specify the BIOS drive number to be stored in the FAT boot sector. This
value is usually 0x80 for hard disks and 0x00 for floppy devices or
partitions to be used for floppy emulation.
-.IP "\fB\-f\fP \fInumber\-of\-FATs\fP" 4
-Specify the number of file allocation tables in the filesystem. The default
-is 2. Currently the Linux MS\-DOS filesystem does not support more than 2
-FATs.
-.IP "\fB\-F\fP \fIFAT\-size\fP" 4
-Specifies the type of file allocation tables used (12, 16 or 32 bit). If
+.IP "\fB\-f\fP \fINUMBER\-OF\-FATS\fP" 4
+Specify the number of file allocation tables in the filesystem. The default
+is 2.
+.IP "\fB\-F\fP \fIFAT\-SIZE\fP" 4
+Specifies the type of file allocation tables used (12, 16 or 32 bit). If
nothing is specified, \fBmkfs.fat\fP will automatically select between 12, 16
and 32 bit, whatever fits better for the filesystem size.
-.IP "\fB\-h\fP \fInumber\-of\-hidden\-sectors\fP" 4
-Select the number of hidden sectors in the volume. Apparently some digital
+.IP "\fB\-h\fP \fINUMBER\-OF\-HIDDEN\-SECTORS\fP" 4
+Select the number of hidden sectors in the volume. Apparently some digital
cameras get indigestion if you feed them a CF card without such hidden
sectors, this option allows you to satisfy them.
-.IP "\fB\-i\fP \fIvolume\-id\fP" 4
-Sets the volume ID of the newly created filesystem; \fIvolume\-id\fP is a 32\-bit
-hexadecimal number (for example, 2e24ec82). The default is a number which
+.IP "\fB\-i\fP \fIVOLUME\-ID\fP" 4
+Sets the volume ID of the newly created filesystem; \fIVOLUME\-ID\fP is a 32\-bit
+hexadecimal number (for example, 2e24ec82). The default is a number which
depends on the filesystem creation time.
.IP \fB\-I\fP 4
It is typical for fixed disk devices to be partitioned so, by default, you
-are not permitted to create a filesystem across the entire
-device. \fBmkfs.fat\fP will complain and tell you that it refuses to work. This
-is different when using MO disks. One doesn't always need partitions on MO
-disks. The filesystem can go directly to the whole disk. Under other OSes
-this is known as the 'superfloppy' format. This switch will force
+are not permitted to create a filesystem across the entire device.
+\fBmkfs.fat\fP will complain and tell you that it refuses to work. This is
+different when using MO disks. One doesn't always need partitions on MO
+disks. The filesystem can go directly to the whole disk. Under other OSes
+this is known as the 'superfloppy' format. This switch will force
\fBmkfs.fat\fP to work properly.
-.IP "\fB\-l\fP \fIfilename\fP" 4
-Read the bad blocks list from \fIfilename\fP.
-.IP "\fB\-m\fP \fImessage\-file\fP" 4
+.IP "\fB\-l\fP \fIFILENAME\fP" 4
+Read the bad blocks list from \fIFILENAME\fP.
+.IP "\fB\-m\fP \fIMESSAGE\-FILE\fP" 4
Sets the message the user receives on attempts to boot this filesystem
-without having properly installed an operating system. The message file must
-not exceed 418 bytes once line feeds have been converted to carriage
-return\-line feed combinations, and tabs have been expanded. If the filename
+without having properly installed an operating system. The message file
+must not exceed 418 bytes once line feeds have been converted to carriage
+return\-line feed combinations, and tabs have been expanded. If the filename
is a hyphen (\-), the text is taken from standard input.
-.IP "\fB\-M\fP \fIFAT\-media\-type\fP" 4
-Specify the media type to be stored in the FAT boot sector. This value is
-usually 0xF8 for hard disks and has a value from 0xF9 to 0xFF for floppies
-or partitions to be used for floppy emulation.
-.IP "\fB\-n\fP \fIvolume\-name\fP" 4
-Sets the volume name (label) of the filesystem. The volume name can be up to
-11 characters long. The default is no label.
-.IP "\fB\-r\fP \fIroot\-dir\-entries\fP" 4
-Select the number of entries available in the root directory. The default is
-112 or 224 for floppies and 512 for hard disks.
-.IP "\fB\-R\fP \fInumber\-of\-reserved\-sectors\fP" 4
-Select the number of reserved sectors. With FAT32 format at least 2 reserved
-sectors are needed, the default is 32. Otherwise the default is 1 (only the
-boot sector).
-.IP "\fB\-s\fP \fIsectors\-per\-cluster\fP" 4
-Specify the number of disk sectors per cluster. Must be a power of 2,
+.IP "\fB\-M\fP \fIFAT\-MEDIA\-TYPE\fP" 4
+Specify the media type to be stored in the FAT boot sector. This value is
+usually 0xF8 for hard disks and is 0xF0 or a value from 0xF9 to 0xFF for
+floppies or partitions to be used for floppy emulation.
+.IP "\fB\-n\fP \fIVOLUME\-NAME\fP" 4
+Sets the volume name (label) of the filesystem. The volume name can be up
+to 11 characters long. The default is no label.
+.IP "\fB\-r\fP \fIROOT\-DIR\-ENTRIES\fP" 4
+Select the number of entries available in the root directory. The default
+is 112 or 224 for floppies and 512 for hard disks.
+.IP "\fB\-R\fP \fINUMBER\-OF\-RESERVED\-SECTORS\fP" 4
+Select the number of reserved sectors. With FAT32 format at least 2
+reserved sectors are needed, the default is 32. Otherwise the default is 1
+(only the boot sector).
+.IP "\fB\-s\fP \fISECTORS\-PER\-CLUSTER\fP" 4
+Specify the number of disk sectors per cluster. Must be a power of 2,
i.e. 1, 2, 4, 8, ... 128.
-.IP "\fB\-S\fP \fIlogical\-sector\-size\fP" 4
-Specify the number of bytes per logical sector. Must be a power of 2 and
+.IP "\fB\-S\fP \fILOGICAL\-SECTOR\-SIZE\fP" 4
+Specify the number of bytes per logical sector. Must be a power of 2 and
greater than or equal to 512, i.e. 512, 1024, 2048, 4096, 8192, 16384, or
32768.
.IP \fB\-v\fP 4
Verbose execution.
-
+.IP \fB\-\-invariant\fP 4
+Use constants for normally randomly generated or time based data such as
+volume ID and creation time. Multiple runs of \fBmkfs.fat\fP on the same
+device create identical results with this option. Its main purpose is
+testing \fBmkfs.fat\fP.
+.IP \fB\-\-help\fP 4
+.\" ----------------------------------------------------------------------------
+Display option summary and exit.
.SH BUGS
-\fBmkfs.fat\fP can not create boot\-able filesystems. This isn't as easy as you
+.\" ----------------------------------------------------------------------------
+\fBmkfs.fat\fP can not create boot\-able filesystems. This isn't as easy as you
might think at first glance for various reasons and has been discussed a lot
-already. \fBmkfs.fat\fP simply will not support it ;)
-
+already. \fBmkfs.fat\fP simply will not support it ;)
.SH "SEE ALSO"
\fBfatlabel\fP(8)
.br
+.\" ----------------------------------------------------------------------------
\fBfsck.fat\fP(8)
-
.SH HOMEPAGE
-More information about \fBfsck.fat\fP and \fBdosfstools\fP can be found at
-<\fIhttp://daniel\-baumann.ch/software/dosfstools/\fP>.
-
+.\" ----------------------------------------------------------------------------
+The home for the \fBdosfstools\fP project is its
+.UR https://github.com/dosfstools/dosfstools
+GitHub project page
+.UE .
.SH AUTHORS
-\fBdosfstools\fP were written by Werner Almesberger
-<\fIwerner.almesberger@lrc.di.epfl.ch\fP>, Roman Hodek
-<\fIRoman.Hodek@informatik.uni\-erlangen.de\fP>, and others. The current
-maintainer is Daniel Baumann <\fImail@daniel\-baumann.ch\fP>.
+\fBdosfstools\fP were written by
+.MT werner.almesberger@\:lrc.di.epfl.ch
+Werner Almesberger
+.ME ,
+.MT Roman.Hodek@\:informatik.\:uni-erlangen.de
+Roman Hodek
+.ME ,
+and others. The current maintainer is
+.MT aeb@\:debian.org
+Andreas Bombe
+.ME .
diff --git a/manpages/en/fatlabel.8 b/manpages/en/fatlabel.8
index 6b50665..c00a795 100644
--- a/manpages/en/fatlabel.8
+++ b/manpages/en/fatlabel.8
@@ -19,32 +19,47 @@
.\" can be found in /usr/share/common-licenses/GPL-3 file.
.\"
.\"
-.TH FATLABEL 8 2014\-11\-12 3.0.27 "dosfstools"
-
+.TH FATLABEL 8 2015\-05\-16 3.0.28 "dosfstools"
.SH NAME
\fBfatlabel\fR \- set or get MS\-DOS filesystem label
-
+.\" ----------------------------------------------------------------------------
.SH SYNOPSIS
\fBfatlabel\fR \fIDEVICE\fR [\fILABEL\fR]
-
+.\" ----------------------------------------------------------------------------
.SH DESCRIPTION
\fBfatlabel\fR set or gets a MS\-DOS filesystem label from a given device.
.PP
-If the label is omitted, then the label name of the specified device is written on the standard output. A label can't be longer than 11 bytes.
-
+If \fILABEL\fR is omitted, then the label name of the specified device is
+written on the standard output.
+A label can't be longer than 11 bytes.
+.\" ----------------------------------------------------------------------------
.SH OPTIONS
.IP "\fB\-h\fR, \fB\-\-help\fR" 4
Displays a help message.
.IP "\fB\-V\fR, \fB\-\-version\fR" 4
Shows version.
-
+.\" ----------------------------------------------------------------------------
.SH SEE ALSO
\fBfsck.fat\fR(8)
.br
\fBmkfs.fat\fR(8)
-
+.\" ----------------------------------------------------------------------------
.SH HOMEPAGE
-More information about \fBfatlabel\fR and \fBdosfstools\fR can be found at <\fIhttp://daniel\-baumann.ch/software/dosfstools/\fR>.
-
+The home for the \fBdosfstools\fR project is its
+.UR https://github.com/dosfstools/dosfstools
+GitHub project page
+.UE .
+.\" ----------------------------------------------------------------------------
.SH AUTHORS
-\fBdosfstools\fR were written by Werner Almesberger <\fIwerner.almesberger@lrc.di.epfl.ch\fR>, Roman Hodek <\fIRoman.Hodek@informatik.uni-erlangen.de\fR>, and others. The current maintainer is Daniel Baumann <\fImail@daniel-baumann.ch\fR>.
+\fBdosfstools\fR were written by
+.MT werner.almesberger@\:lrc.di.epfl.ch
+Werner Almesberger
+.ME ,
+.MT Roman.Hodek@\:informatik.\:uni-erlangen.de
+Roman Hodek
+.ME ,
+and others.
+The current maintainer is
+.MT aeb@\:debian.org
+Andreas Bombe
+.ME .
diff --git a/manpages/en/fsck.fat.8 b/manpages/en/fsck.fat.8
index 3d95dc8..f2d44d0 100644
--- a/manpages/en/fsck.fat.8
+++ b/manpages/en/fsck.fat.8
@@ -19,119 +19,188 @@
.\" can be found in /usr/share/common-licenses/GPL-3 file.
.\"
.\"
-.TH FSCK.FAT 8 2014\-11\-12 3.0.27 "dosfstools"
-
+.TH FSCK.FAT 8 2015\-05\-16 3.0.28 "dosfstools"
.SH NAME
\fBfsck.fat\fR \- check and repair MS\-DOS filesystems
-
+.\" ----------------------------------------------------------------------------
.SH SYNOPSIS
-\fBfsck.fat\fR|\fBfsck.msdos\fR|\fBfsck.vfat\fR [\-aAflnprtvVwy] [\-d \fIPATH\fR \-d\ \fI...\fR] [\-u\ \fIPATH\fR \-u \fI...\fR] \fIDEVICE\fR
-
+\fBfsck.fat\fR [\fIOPTIONS\fR] \fIDEVICE\fR
+.\" ----------------------------------------------------------------------------
.SH DESCRIPTION
-\fBfsck.fat\fR verifies the consistency of MS\-DOS filesystems and optionally tries to repair them.
+\fBfsck.fat\fR verifies the consistency of MS\-DOS filesystems and optionally
+tries to repair them.
.PP
The following filesystem problems can be corrected (in this order):
.IP "*" 4
-FAT contains invalid cluster numbers. Cluster is changed to EOF.
+FAT contains invalid cluster numbers.
+Cluster is changed to EOF.
.IP "*" 4
-File's cluster chain contains a loop. The loop is broken.
+File's cluster chain contains a loop.
+The loop is broken.
.IP "*" 4
-Bad clusters (read errors). The clusters are marked bad and they are removed from files owning them. This check is optional.
+Bad clusters (read errors).
+The clusters are marked bad and they are removed from files owning them.
+This check is optional.
.IP "*" 4
-Directories with a large number of bad entries (probably corrupt). The directory can be deleted.
+Directories with a large number of bad entries (probably corrupt).
+The directory can be deleted.
.IP "*" 4
-Files . and .. are non\-directories. They can be deleted or renamed.
+Files . and .. are non\-directories.
+They can be deleted or renamed.
.IP "*" 4
-Directories . and .. in root directory. They are deleted.
+Directories . and .. in root directory.
+They are deleted.
.IP "*" 4
-Bad filenames. They can be renamed.
+Bad filenames.
+They can be renamed.
.IP "*" 4
-Duplicate directory entries. They can be deleted or renamed.
+Duplicate directory entries.
+They can be deleted or renamed.
.IP "*" 4
-Directories with non\-zero size field. Size is set to zero.
+Directories with non\-zero size field.
+Size is set to zero.
.IP "*" 4
-Directory . does not point to parent directory. The start pointer is adjusted.
+Directory . does not point to parent directory.
+The start pointer is adjusted.
.IP "*" 4
-Directory .. does not point to parent of parent directory. The start pointer is adjusted.
+Directory .. does not point to parent of parent directory.
+The start pointer is adjusted.
.IP "*" 4
-Start cluster number of a file is invalid. The file is truncated.
+Start cluster number of a file is invalid.
+The file is truncated.
.IP "*" 4
-File contains bad or free clusters. The file is truncated.
+File contains bad or free clusters.
+The file is truncated.
.IP "*" 4
-File's cluster chain is longer than indicated by the size fields. The file is truncated.
+File's cluster chain is longer than indicated by the size fields.
+The file is truncated.
.IP "*" 4
-Two or more files share the same cluster(s). All but one of the files are truncated. If the file being truncated is a directory file that has already been read, the filesystem check is restarted after truncation.
+Two or more files share the same cluster(s).
+All but one of the files are truncated.
+If the file being truncated is a directory file that has already been read, the
+filesystem check is restarted after truncation.
.IP "*" 4
-File's cluster chain is shorter than indicated by the size fields. The file is truncated.
+File's cluster chain is shorter than indicated by the size fields.
+The file is truncated.
.IP "*" 4
-Clusters are marked as used but are not owned by a file. They are marked as free.
+Clusters are marked as used but are not owned by a file.
+They are marked as free.
.PP
Additionally, the following problems are detected, but not repaired:
.IP "*" 4
-Invalid parameters in boot sector.
+Invalid parameters in boot sector
.IP "*" 4
Absence of . and .. entries in non\-root directories
.PP
-When \fBfsck.fat\fR checks a filesystem, it accumulates all changes in memory and performs them only after all checks are complete. This can be disabled with the \fB\-w\fR option.
-
+When \fBfsck.fat\fR checks a filesystem, it accumulates all changes in memory
+and performs them only after all checks are complete.
+This can be disabled with the \fB\-w\fR option.
+.\" ----------------------------------------------------------------------------
.SH OPTIONS
.IP "\fB\-a\fR" 4
-Automatically repair the filesystem. No user intervention is necessary. Whenever there is more than one method to solve a problem, the least destructive approach is used.
+Automatically repair the filesystem.
+No user intervention is necessary.
+Whenever there is more than one method to solve a problem, the least
+destructive approach is used.
.IP "\fB\-A\fR" 4
-Use Atari variation of the MS\-DOS filesystem. This is default if \fBfsck.fat\fR is run on an Atari, then this option turns off Atari format. There are some minor differences in Atari format: Some boot sector fields are interpreted slightly different, and the special FAT entries for end\-of\-file and bad cluster can be different. Under MS\-DOS 0xfff8 is used for EOF and Atari employs 0xffff by default, but both systems recognize all values from 0xfff8...0xffff as end\-of\-file. MS\-DOS uses only 0xfff7 for bad clusters, where on Atari values 0xfff0...0xfff7 are for this purpose (but the standard value is still 0xfff7).
+Use Atari variation of the MS\-DOS filesystem.
+This is default if \fBfsck.fat\fR is run on an Atari, then this option turns
+off Atari format.
+There are some minor differences in Atari format:
+Some boot sector fields are interpreted slightly different, and the special FAT
+entries for end\-of\-file and bad cluster can be different.
+Under MS\-DOS 0xfff8 is used for EOF and Atari employs 0xffff by default, but
+both systems recognize all values from 0xfff8...0xffff as end\-of\-file.
+MS\-DOS uses only 0xfff7 for bad clusters, where on Atari values 0xfff0...0xfff7
+are for this purpose (but the standard value is still 0xfff7).
.IP "\fB-b\fR" 4
Make read-only boot sector check.
-.IP "\fB\-d\fR" 4
-Delete the specified file. If more that one file with that name exists, the first one is deleted.
+.IP "\fB\-d\fR \fIPATH\fR" 4
+Delete the specified file.
+If more than one file with that name exist, the first one is deleted.
+This option can be given more than once.
.IP "\fB\-f\fR" 4
-Salvage unused cluster chains to files. By default, unused clusters are added to the free disk space except in auto mode (\fB\-a\fR).
+Salvage unused cluster chains to files.
+By default, unused clusters are added to the free disk space except in auto mode
+(\fB\-a\fR).
.IP "\fB\-l\fR" 4
List path names of files being processed.
.IP "\fB\-n\fR" 4
No\-operation mode: non\-interactively check for errors, but don't write
anything to the filesystem.
.IP "\fB\-p\fR" 4
-Same as (\fB\-a\fR), for compatibility with other *fsck.
+Same as \fB\-a\fR, for compatibility with other *fsck.
.IP "\fB\-r\fR" 4
-Interactively repair the filesystem. The user is asked for advice whenever
-there is more than one approach to fix an inconsistency.
+Interactively repair the filesystem.
+The user is asked for advice whenever there is more than one approach to fix an
+inconsistency.
+This is the default mode and the option is only retained for backwards
+compatibility.
.IP "\fB\-t\fR" 4
Mark unreadable clusters as bad.
-.IP "\fB\-u\fR" 4
-Try to undelete the specified file. \fBfsck.fat\fR tries to allocate a chain of contiguous unallocated clusters beginning with the start cluster of the undeleted file.
+.IP "\fB\-u\fR \fIPATH\fR" 4
+Try to undelete the specified file.
+\fBfsck.fat\fR tries to allocate a chain of contiguous unallocated clusters
+beginning with the start cluster of the undeleted file.
+This option can be given more than once.
.IP "\fB\-v\fR" 4
-Verbose mode. Generates slightly more output.
+Verbose mode.
+Generates slightly more output.
.IP "\fB\-V\fR" 4
-Perform a verification pass. The filesystem check is repeated after the first run. The second pass should never report any fixable errors. It may take considerably longer than the first pass, because the first pass may have generated long list of modifications that have to be scanned for each disk read.
+Perform a verification pass.
+The filesystem check is repeated after the first run.
+The second pass should never report any fixable errors.
+It may take considerably longer than the first pass, because the first pass may
+have generated long list of modifications that have to be scanned for each disk
+read.
.IP "\fB\-w\fR" 4
Write changes to disk immediately.
.IP "\fB\-y\fR" 4
-Same as \fB\-a\fR (automatically repair filesystem) for compatibility with other fsck tools.
-.PP
-\fBNote:\fR If \fB\-a\fR and \fB\-r\fR are absent, the filesystem is only checked, but not repaired.
-
+Same as \fB\-a\fR (automatically repair filesystem) for compatibility with other
+fsck tools.
+.\" ----------------------------------------------------------------------------
.SH "EXIT STATUS"
.IP "0" 4
No recoverable errors have been detected.
.IP "1" 4
-Recoverable errors have been detected or \fBfsck.fat\fR has discovered an internal inconsistency.
+Recoverable errors have been detected or \fBfsck.fat\fR has discovered an
+internal inconsistency.
.IP "2" 4
-Usage error. \fBfsck.fat\fR did not access the filesystem.
-
+Usage error.
+\fBfsck.fat\fR did not access the filesystem.
+.\" ----------------------------------------------------------------------------
.SH FILES
.IP "fsck0000.rec, fsck0001.rec, ..." 4
-When recovering from a corrupted filesystem, \fBfsck.fat\fR dumps recovered data into files named 'fsckNNNN.rec' in the top level directory of the filesystem.
-
+When recovering from a corrupted filesystem, \fBfsck.fat\fR dumps recovered data
+into files named 'fsckNNNN.rec' in the top level directory of the filesystem.
+.\" ----------------------------------------------------------------------------
.SH BUGS
-Does not create . and .. files where necessary. Does not remove entirely empty directories. Should give more diagnostic messages. Undeleting files should use a more sophisticated algorithm.
-
+Does not create . and .. files where necessary.
+Does not remove entirely empty directories.
+Should give more diagnostic messages.
+Undeleting files should use a more sophisticated algorithm.
+.\" ----------------------------------------------------------------------------
.SH SEE ALSO
\fBfatlabel\fR(8)
.br
\fBmkfs.fat\fR(8)
-
+.\" ----------------------------------------------------------------------------
.SH HOMEPAGE
-More information about \fBfsck.fat\fR and \fBdosfstools\fR can be found at <\fIhttp://daniel\-baumann.ch/software/dosfstools/\fR>.
-
+The home for the \fBdosfstools\fR project is its
+.UR https://github.com/dosfstools/dosfstools
+GitHub project page
+.UE .
+.\" ----------------------------------------------------------------------------
.SH AUTHORS
-\fBdosfstools\fR were written by Werner Almesberger <\fIwerner.almesberger@lrc.di.epfl.ch\fR>, Roman Hodek <\fIRoman.Hodek@informatik.uni-erlangen.de\fR>, and others. The current maintainer is Daniel Baumann <\fImail@daniel-baumann.ch\fR>.
+\fBdosfstools\fR were written by
+.MT werner.almesberger@\:lrc.di.epfl.ch
+Werner Almesberger
+.ME ,
+.MT Roman.Hodek@\:informatik.\:uni-erlangen.de
+Roman Hodek
+.ME ,
+and others.
+The current maintainer is
+.MT aeb@\:debian.org
+Andreas Bombe
+.ME .
diff --git a/manpages/en/mkfs.fat.8 b/manpages/en/mkfs.fat.8
index 9dd8115..5a5086e 100644
--- a/manpages/en/mkfs.fat.8
+++ b/manpages/en/mkfs.fat.8
@@ -19,69 +19,160 @@
.\" can be found in /usr/share/common-licenses/GPL-3 file.
.\"
.\"
-.TH MKFS.FAT 8 2014\-11\-12 3.0.27 "dosfstools"
-
+.TH MKFS.FAT 8 2015\-05\-16 3.0.28 "dosfstools"
.SH NAME
\fBmkfs.fat\fR \- create an MS-DOS filesystem under Linux
-
+.\" ----------------------------------------------------------------------------
.SH SYNOPSIS
-\fBmkfs.fat\fR [\fB\-a\fR] [\fB\-A\fR] [\fB\-b\fR \fIsector-of-backup\fR] [\fB\-c\fR] [\fB\-l\fR \fIfilename\fR] [\fB\-C\fR] [\fB\-f\fR \fInumber-of-FATs\fR] [\fB\-F\fR \fIFAT-size] [\fB\-h\fR \fInumber-of-hidden-sectors\fR] [\fB\-i\fR \fIvolume-id\fR] [\fB\-I\fR] [\fB\-m\fR \fImessage-file\fR] [\fB\-n\fR \fIvolume-name\fR] [\fB\-r\fR \fIroot-dir-entries\fR] [\fB\-R\fR \fInumber-of-reserved-sectors\fR] [\fB\-s\fR \fIsectors-per-cluster\fR] [\fB\-S \fIlogical-sector-size\fR] [\fB\-D\fR \fIdrive-number\fR] [\fB\-M \fIFAT-media-type\fR] [\fB\-v\fR] \fIdevice\fR [\fIblock-count\fR]
-
+\fBmkfs.fat\fR [\fIOPTIONS\fR] \fIDEVICE\fR [\fIBLOCK-COUNT\fR]
+.\" ----------------------------------------------------------------------------
.SH DESCRIPTION
-\fBmkfs.fat\fR is used to create an MS-DOS filesystem under Linux on a device (usually a disk partition). \fIdevice\fR is the special file corresponding to the device (e.g /dev/sdXX). \fIblock-count\fR is the number of blocks on the device. If omitted, \fBmkfs.fat\fR automatically determines the filesystem size.
-
+\fBmkfs.fat\fR is used to create an MS-DOS filesystem under Linux on a device
+(usually a disk partition).
+\fIDEVICE\fR is the special file corresponding to the device (e.g. /dev/sdXX).
+\fIBLOCK-COUNT\fR is the number of blocks on the device.
+If omitted, \fBmkfs.fat\fR automatically determines the filesystem size.
+.\" ----------------------------------------------------------------------------
.SH OPTIONS
.IP "\fB\-a\fR" 4
-Normally, for any filesystem except very small ones, \fBmkfs.fat\fR will align all the data structures to cluster size, to make sure that as long as the partition is properly aligned, so will all the data structures in the filesystem. This option disables alignment; this may provide a handful of additional clusters of storage at the expense of a significant performance degradation on RAIDs, flash media or large-sector hard disks.
+Normally, for any filesystem except very small ones, \fBmkfs.fat\fR will align
+all the data structures to cluster size, to make sure that as long as the
+partition is properly aligned, so will all the data structures in the
+filesystem.
+This option disables alignment; this may provide a handful of additional
+clusters of storage at the expense of a significant performance degradation on
+RAIDs, flash media or large-sector hard disks.
.IP "\fB \-A\fR" 4
-Use Atari variation of the MS-DOS filesystem. This is default if \fBmkfs.fat\fR is run on an Atari, then this option turns off Atari format. There are some differences when using Atari format: If not directed otherwise by the user, \fBmkfs.fat\fR will always use 2 sectors per cluster, since GEMDOS doesn't like other values very much. It will also obey the maximum number of sectors GEMDOS can handle. Larger filesystems are managed by raising the logical sector size. Under Atari format, an Atari-compatible serial number for the filesystem is generated, and a 12 bit FAT is used only for filesystems that have one of the usual floppy sizes (720k, 1.2M, 1.44M, 2.88M), a 16 bit FAT otherwise. This can be overridden with the \fB\-F\fR option. Some PC-specific boot sector fields aren't written, and a boot message (option \fB\-m\fR) is ignored.
-.IP "\fB\-b\fR \fIsector-of-backup\fR" 4
-Selects the location of the backup boot sector for FAT32. Default depends on number of reserved sectors, but usually is sector 6. The backup must be within the range of reserved sectors.
+Use Atari variation of the MS-DOS filesystem.
+This is default if \fBmkfs.fat\fR is run on an Atari, then this option turns off
+Atari format.
+There are some differences when using Atari format:
+If not directed otherwise by the user, \fBmkfs.fat\fR will always use 2 sectors
+per cluster, since GEMDOS doesn't like other values very much.
+It will also obey the maximum number of sectors GEMDOS can handle.
+Larger filesystems are managed by raising the logical sector size.
+Under Atari format, an Atari-compatible serial number for the filesystem is
+generated, and a 12 bit FAT is used only for filesystems that have one of the
+usual floppy sizes (720k, 1.2M, 1.44M, 2.88M), a 16 bit FAT otherwise.
+This can be overridden with the \fB\-F\fR option.
+Some PC-specific boot sector fields aren't written, and a boot message (option
+\fB\-m\fR) is ignored.
+.IP "\fB\-b\fR \fISECTOR-OF-BACKUP\fR" 4
+Selects the location of the backup boot sector for FAT32.
+Default depends on number of reserved sectors, but usually is sector 6.
+The backup must be within the range of reserved sectors.
.IP "\fB\-c" 4
Check the device for bad blocks before creating the filesystem.
.IP "\fB\-C\fR" 4
-Create the file given as \fIdevice\fR on the command line, and write the to-be-created filesystem to it. This can be used to create the new filesystem in a file instead of on a real device, and to avoid using \fBdd\fR in advance to create a file of appropriate size. With this option, the \fIblock-count\fR must be given, because otherwise the intended size of the filesystem wouldn't be known. The file created is a sparse file, which actually only contains the meta-data areas (boot sector, FATs, and root directory). The data portions won't be stored on the disk, but the file nevertheless will have the correct size. The resulting file can be copied later to a floppy disk or other device, or mounted through a loop device.
-.IP "\fB\-D\fR \fIdrive-number\fR" 4
-Specify the BIOS drive number to be stored in the FAT boot sector. This value is usually 0x80 for hard disks and 0x00 for floppy devices or partitions to be used for floppy emulation.
-.IP "\fB\-f\fR \fInumber-of-FATs\fR" 4
-Specify the number of file allocation tables in the filesystem. The default is 2. Currently the Linux MS-DOS filesystem does not support more than 2 FATs.
-.IP "\fB\-F\fR \fIFAT-size\fR" 4
-Specifies the type of file allocation tables used (12, 16 or 32 bit). If nothing is specified, \fBmkfs.fat\fR will automatically select between 12, 16 and 32 bit, whatever fits better for the filesystem size.
-.IP "\fB\-h\fR \fInumber-of-hidden-sectors\fR" 4
-Select the number of hidden sectors in the volume. Apparently some digital cameras get indigestion if you feed them a CF card without such hidden sectors, this option allows you to satisfy them.
-.IP "\fB\-i\fR \fIvolume-id\fR" 4
-Sets the volume ID of the newly created filesystem; \fIvolume-id\fR is a 32-bit hexadecimal number (for example, 2e24ec82). The default is a number which depends on the filesystem creation time.
+Create the file given as \fIDEVICE\fR on the command line, and write the
+to-be-created filesystem to it.
+This can be used to create the new filesystem in a file instead of on a real
+device, and to avoid using \fBdd\fR in advance to create a file of appropriate
+size.
+With this option, the \fIBLOCK-COUNT\fR must be given, because otherwise the
+intended size of the filesystem wouldn't be known.
+The file created is a sparse file, which actually only contains the meta-data
+areas (boot sector, FATs, and root directory).
+The data portions won't be stored on the disk, but the file nevertheless will
+have the correct size.
+The resulting file can be copied later to a floppy disk or other device, or
+mounted through a loop device.
+.IP "\fB\-D\fR \fIDRIVE-NUMBER\fR" 4
+Specify the BIOS drive number to be stored in the FAT boot sector.
+This value is usually 0x80 for hard disks and 0x00 for floppy devices or
+partitions to be used for floppy emulation.
+.IP "\fB\-f\fR \fINUMBER-OF-FATS\fR" 4
+Specify the number of file allocation tables in the filesystem.
+The default is 2.
+.IP "\fB\-F\fR \fIFAT-SIZE\fR" 4
+Specifies the type of file allocation tables used (12, 16 or 32 bit).
+If nothing is specified, \fBmkfs.fat\fR will automatically select between 12, 16
+and 32 bit, whatever fits better for the filesystem size.
+.IP "\fB\-h\fR \fINUMBER-OF-HIDDEN-SECTORS\fR" 4
+Select the number of hidden sectors in the volume.
+Apparently some digital cameras get indigestion if you feed them a CF card
+without such hidden sectors, this option allows you to satisfy them.
+.IP "\fB\-i\fR \fIVOLUME-ID\fR" 4
+Sets the volume ID of the newly created filesystem; \fIVOLUME-ID\fR is a 32-bit
+hexadecimal number (for example, 2e24ec82).
+The default is a number which depends on the filesystem creation time.
.IP "\fB\-I\fR" 4
-It is typical for fixed disk devices to be partitioned so, by default, you are not permitted to create a filesystem across the entire device. \fBmkfs.fat\fR will complain and tell you that it refuses to work. This is different when using MO disks. One doesn't always need partitions on MO disks. The filesystem can go directly to the whole disk. Under other OSes this is known as the 'superfloppy' format. This switch will force \fBmkfs.fat\fR to work properly.
-.IP "\fB\-l\fR \fIfilename\fR" 4
-Read the bad blocks list from \fIfilename\fR.
-.IP "\fB\-m\fR \fImessage-file\fR" 4
-Sets the message the user receives on attempts to boot this filesystem without having properly installed an operating system. The message file must not exceed 418 bytes once line feeds have been converted to carriage return-line feed combinations, and tabs have been expanded. If the filename is a hyphen (-), the text is taken from standard input.
-.IP "\fB\-M\fR \fIFAT-media-type\fR" 4
-Specify the media type to be stored in the FAT boot sector. This value is usually 0xF8 for hard disks and has a value from 0xF9 to 0xFF for floppies or partitions to be used for floppy emulation.
-.IP "\fB\-n\fR \fIvolume-name\fR" 4
-Sets the volume name (label) of the filesystem. The volume name can be up to 11 characters long. The default is no label.
-.IP "\fB\-r\fR \fIroot-dir-entries\fR" 4
-Select the number of entries available in the root directory. The default is 112 or 224 for floppies and 512 for hard disks.
-.IP "\fB\-R\fR \fInumber-of-reserved-sectors\fR" 4
-Select the number of reserved sectors. With FAT32 format at least 2 reserved sectors are needed, the default is 32. Otherwise the default is 1 (only the boot sector).
-.IP "\fB\-s\fR \fIsectors-per-cluster\fR" 4
-Specify the number of disk sectors per cluster. Must be a power of 2, i.e. 1, 2, 4, 8, ... 128.
-.IP "\fB\-S\fR \fIlogical-sector-size\fR" 4
-Specify the number of bytes per logical sector. Must be a power of 2 and greater than or equal to 512, i.e. 512, 1024, 2048, 4096, 8192, 16384, or 32768.
+It is typical for fixed disk devices to be partitioned so, by default, you are
+not permitted to create a filesystem across the entire device.
+\fBmkfs.fat\fR will complain and tell you that it refuses to work.
+This is different when using MO disks.
+One doesn't always need partitions on MO disks.
+The filesystem can go directly to the whole disk.
+Under other OSes this is known as the 'superfloppy' format.
+This switch will force \fBmkfs.fat\fR to work properly.
+.IP "\fB\-l\fR \fIFILENAME\fR" 4
+Read the bad blocks list from \fIFILENAME\fR.
+.IP "\fB\-m\fR \fIMESSAGE-FILE\fR" 4
+Sets the message the user receives on attempts to boot this filesystem without
+having properly installed an operating system.
+The message file must not exceed 418 bytes once line feeds have been converted
+to carriage return-line feed combinations, and tabs have been expanded.
+If the filename is a hyphen (-), the text is taken from standard input.
+.IP "\fB\-M\fR \fIFAT-MEDIA-TYPE\fR" 4
+Specify the media type to be stored in the FAT boot sector.
+This value is usually 0xF8 for hard disks and is 0xF0 or a value from 0xF9 to
+0xFF for floppies or partitions to be used for floppy emulation.
+.IP "\fB\-n\fR \fIVOLUME-NAME\fR" 4
+Sets the volume name (label) of the filesystem.
+The volume name can be up to 11 characters long.
+The default is no label.
+.IP "\fB\-r\fR \fIROOT-DIR-ENTRIES\fR" 4
+Select the number of entries available in the root directory.
+The default is 112 or 224 for floppies and 512 for hard disks.
+.IP "\fB\-R\fR \fINUMBER-OF-RESERVED-SECTORS\fR" 4
+Select the number of reserved sectors.
+With FAT32 format at least 2 reserved sectors are needed, the default is 32.
+Otherwise the default is 1 (only the boot sector).
+.IP "\fB\-s\fR \fISECTORS-PER-CLUSTER\fR" 4
+Specify the number of disk sectors per cluster.
+Must be a power of 2, i.e. 1, 2, 4, 8, ... 128.
+.IP "\fB\-S\fR \fILOGICAL-SECTOR-SIZE\fR" 4
+Specify the number of bytes per logical sector.
+Must be a power of 2 and greater than or equal to 512, i.e. 512, 1024, 2048,
+4096, 8192, 16384, or 32768.
.IP "\fB\-v\fR" 4
Verbose execution.
-
+.IP "\fB\-\-invariant\fR" 4
+Use constants for normally randomly generated or time based data such as
+volume ID and creation time.
+Multiple runs of \fBmkfs.fat\fR on the same device create identical results
+with this option.
+Its main purpose is testing \fBmkfs.fat\fR.
+.IP "\fB\-\-help\fR" 4
+Display option summary and exit.
+.\" ----------------------------------------------------------------------------
.SH BUGS
-\fBmkfs.fat\fR can not create boot-able filesystems. This isn't as easy as you might think at first glance for various reasons and has been discussed a lot already. \fBmkfs.fat\fR simply will not support it ;)
-
+\fBmkfs.fat\fR can not create boot-able filesystems.
+This isn't as easy as you might think at first glance for various reasons and
+has been discussed a lot already.
+\fBmkfs.fat\fR simply will not support it ;)
+.\" ----------------------------------------------------------------------------
.SH SEE ALSO
\fBfatlabel\fR(8)
.br
\fBfsck.fat\fR(8)
-
+.\" ----------------------------------------------------------------------------
.SH HOMEPAGE
-More information about \fBfsck.fat\fR and \fBdosfstools\fR can be found at <\fIhttp://daniel\-baumann.ch/software/dosfstools/\fR>.
-
+The home for the \fBdosfstools\fR project is its
+.UR https://github.com/dosfstools/dosfstools
+GitHub project page
+.UE .
+.\" ----------------------------------------------------------------------------
.SH AUTHORS
-\fBdosfstools\fR were written by Werner Almesberger <\fIwerner.almesberger@lrc.di.epfl.ch\fR>, Roman Hodek <\fIRoman.Hodek@informatik.uni-erlangen.de\fR>, and others. The current maintainer is Daniel Baumann <\fImail@daniel-baumann.ch\fR>.
+\fBdosfstools\fR were written by
+.MT werner.almesberger@\:lrc.di.epfl.ch
+Werner Almesberger
+.ME ,
+.MT Roman.Hodek@\:informatik.\:uni-erlangen.de
+Roman Hodek
+.ME ,
+and others.
+The current maintainer is
+.MT aeb@\:debian.org
+Andreas Bombe
+.ME .
diff --git a/manpages/po/de/fatlabel.8.po b/manpages/po/de/fatlabel.8.po
index 27c69f5..a2b6da2 100644
--- a/manpages/po/de/fatlabel.8.po
+++ b/manpages/po/de/fatlabel.8.po
@@ -3,7 +3,7 @@
msgid ""
msgstr ""
"Project-Id-Version: dosfstools VERSION\n"
-"POT-Creation-Date: 2014-11-12 00:52+0100\n"
+"POT-Creation-Date: 2015-05-16 00:40+0200\n"
"PO-Revision-Date: 2013-06-06 09:34+0300\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -22,13 +22,13 @@ msgstr ""
#. type: TH
#: en/fatlabel.8:22 en/fsck.fat.8:22 en/mkfs.fat.8:22
#, no-wrap
-msgid "2014-11-12"
+msgid "2015-05-16"
msgstr ""
#. type: TH
#: en/fatlabel.8:22 en/fsck.fat.8:22 en/mkfs.fat.8:22
#, no-wrap
-msgid "3.0.27"
+msgid "3.0.28"
msgstr ""
#. type: TH
@@ -38,113 +38,136 @@ msgid "dosfstools"
msgstr ""
#. type: SH
-#: en/fatlabel.8:24 en/fsck.fat.8:24 en/mkfs.fat.8:24
+#: en/fatlabel.8:23 en/fsck.fat.8:23 en/mkfs.fat.8:23
#, no-wrap
msgid "NAME"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
#: en/fatlabel.8:26
msgid "B<fatlabel> - set or get MS-DOS filesystem label"
msgstr ""
#. type: SH
-#: en/fatlabel.8:27 en/fsck.fat.8:27 en/mkfs.fat.8:27
+#: en/fatlabel.8:26 en/fsck.fat.8:26 en/mkfs.fat.8:26
#, no-wrap
msgid "SYNOPSIS"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
#: en/fatlabel.8:29
msgid "B<fatlabel> I<DEVICE> [I<LABEL>]"
msgstr ""
#. type: SH
-#: en/fatlabel.8:30 en/fsck.fat.8:30 en/mkfs.fat.8:30
+#: en/fatlabel.8:29 en/fsck.fat.8:29 en/mkfs.fat.8:29
#, no-wrap
msgid "DESCRIPTION"
msgstr ""
#. type: Plain text
-#: en/fatlabel.8:32
+#: en/fatlabel.8:31
msgid "B<fatlabel> set or gets a MS-DOS filesystem label from a given device."
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fatlabel.8:34
+#: en/fatlabel.8:36
msgid ""
-"If the label is omitted, then the label name of the specified device is "
-"written on the standard output. A label can't be longer than 11 bytes."
+"If I<LABEL> is omitted, then the label name of the specified device is "
+"written on the standard output. A label can't be longer than 11 bytes."
msgstr ""
#. type: SH
-#: en/fatlabel.8:35 en/fsck.fat.8:77 en/mkfs.fat.8:33
+#: en/fatlabel.8:36 en/fsck.fat.8:99 en/mkfs.fat.8:36
#, no-wrap
msgid "OPTIONS"
msgstr ""
#. type: IP
-#: en/fatlabel.8:36
+#: en/fatlabel.8:37
#, no-wrap
msgid "B<-h>, B<--help>"
msgstr ""
#. type: Plain text
-#: en/fatlabel.8:38
+#: en/fatlabel.8:39
msgid "Displays a help message."
msgstr ""
#. type: IP
-#: en/fatlabel.8:38
+#: en/fatlabel.8:39
#, no-wrap
msgid "B<-V>, B<--version>"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fatlabel.8:40
+#: en/fatlabel.8:42
msgid "Shows version."
msgstr ""
#. type: SH
-#: en/fatlabel.8:41 en/fsck.fat.8:128 en/mkfs.fat.8:78
+#: en/fatlabel.8:42 en/fsck.fat.8:183 en/mkfs.fat.8:155
#, no-wrap
msgid "SEE ALSO"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fatlabel.8:43 en/mkfs.fat.8:82
+#: en/fatlabel.8:44 en/mkfs.fat.8:160
msgid "B<fsck.fat>(8)"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fatlabel.8:45 en/fsck.fat.8:132
+#: en/fatlabel.8:47 en/fsck.fat.8:188
msgid "B<mkfs.fat>(8)"
msgstr ""
#. type: SH
-#: en/fatlabel.8:46 en/fsck.fat.8:133 en/mkfs.fat.8:83
+#: en/fatlabel.8:47 en/fsck.fat.8:188 en/mkfs.fat.8:160
#, no-wrap
msgid "HOMEPAGE"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fatlabel.8:48
+#: en/fatlabel.8:53 en/fsck.fat.8:194 en/mkfs.fat.8:166
msgid ""
-"More information about B<fatlabel> and B<dosfstools> can be found at "
-"E<lt>I<http://daniel-baumann.ch/software/dosfstools/>E<gt>."
+"The home for the B<dosfstools> project is its E<.UR https://github.com/"
+"dosfstools/dosfstools> GitHub project page E<.UE .>"
msgstr ""
#. type: SH
-#: en/fatlabel.8:49 en/fsck.fat.8:136 en/mkfs.fat.8:86
+#: en/fatlabel.8:53 en/fsck.fat.8:194 en/mkfs.fat.8:166
#, no-wrap
msgid "AUTHORS"
msgstr ""
#. type: Plain text
-#: en/fatlabel.8:50 en/fsck.fat.8:137 en/mkfs.fat.8:87
-msgid ""
-"B<dosfstools> were written by Werner Almesberger E<lt>I<werner."
-"almesberger@lrc.di.epfl.ch>E<gt>, Roman Hodek E<lt>I<Roman.Hodek@informatik."
-"uni-erlangen.de>E<gt>, and others. The current maintainer is Daniel Baumann "
-"E<lt>I<mail@daniel-baumann.ch>E<gt>."
+#: en/fatlabel.8:55 en/fsck.fat.8:196 en/mkfs.fat.8:168
+msgid "B<dosfstools> were written by"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:57 en/fsck.fat.8:198 en/mkfs.fat.8:170
+msgid "Werner Almesberger"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:60 en/fsck.fat.8:201 en/mkfs.fat.8:173
+msgid "Roman Hodek"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:63 en/fsck.fat.8:204 en/mkfs.fat.8:176
+msgid "and others. The current maintainer is"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:65 en/fsck.fat.8:206 en/mkfs.fat.8:178
+msgid "Andreas Bombe"
msgstr ""
diff --git a/manpages/po/de/fsck.fat.8.po b/manpages/po/de/fsck.fat.8.po
index 3035906..1487e9f 100644
--- a/manpages/po/de/fsck.fat.8.po
+++ b/manpages/po/de/fsck.fat.8.po
@@ -3,7 +3,7 @@
msgid ""
msgstr ""
"Project-Id-Version: dosfstools VERSION\n"
-"POT-Creation-Date: 2014-11-12 00:52+0100\n"
+"POT-Creation-Date: 2015-05-16 00:40+0200\n"
"PO-Revision-Date: 2013-06-06 09:34+0300\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -16,13 +16,13 @@ msgstr ""
#. type: TH
#: en/fatlabel.8:22 en/fsck.fat.8:22 en/mkfs.fat.8:22
#, no-wrap
-msgid "2014-11-12"
+msgid "2015-05-16"
msgstr ""
#. type: TH
#: en/fatlabel.8:22 en/fsck.fat.8:22 en/mkfs.fat.8:22
#, no-wrap
-msgid "3.0.27"
+msgid "3.0.28"
msgstr ""
#. type: TH
@@ -32,59 +32,84 @@ msgid "dosfstools"
msgstr ""
#. type: SH
-#: en/fatlabel.8:24 en/fsck.fat.8:24 en/mkfs.fat.8:24
+#: en/fatlabel.8:23 en/fsck.fat.8:23 en/mkfs.fat.8:23
#, no-wrap
msgid "NAME"
msgstr ""
#. type: SH
-#: en/fatlabel.8:27 en/fsck.fat.8:27 en/mkfs.fat.8:27
+#: en/fatlabel.8:26 en/fsck.fat.8:26 en/mkfs.fat.8:26
#, no-wrap
msgid "SYNOPSIS"
msgstr ""
#. type: SH
-#: en/fatlabel.8:30 en/fsck.fat.8:30 en/mkfs.fat.8:30
+#: en/fatlabel.8:29 en/fsck.fat.8:29 en/mkfs.fat.8:29
#, no-wrap
msgid "DESCRIPTION"
msgstr ""
#. type: SH
-#: en/fatlabel.8:35 en/fsck.fat.8:77 en/mkfs.fat.8:33
+#: en/fatlabel.8:36 en/fsck.fat.8:99 en/mkfs.fat.8:36
#, no-wrap
msgid "OPTIONS"
msgstr ""
#. type: SH
-#: en/fatlabel.8:41 en/fsck.fat.8:128 en/mkfs.fat.8:78
+#: en/fatlabel.8:42 en/fsck.fat.8:183 en/mkfs.fat.8:155
#, no-wrap
msgid "SEE ALSO"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fatlabel.8:45 en/fsck.fat.8:132
+#: en/fatlabel.8:47 en/fsck.fat.8:188
msgid "B<mkfs.fat>(8)"
msgstr ""
#. type: SH
-#: en/fatlabel.8:46 en/fsck.fat.8:133 en/mkfs.fat.8:83
+#: en/fatlabel.8:47 en/fsck.fat.8:188 en/mkfs.fat.8:160
#, no-wrap
msgid "HOMEPAGE"
msgstr ""
+#. ----------------------------------------------------------------------------
+#. type: Plain text
+#: en/fatlabel.8:53 en/fsck.fat.8:194 en/mkfs.fat.8:166
+msgid ""
+"The home for the B<dosfstools> project is its E<.UR https://github.com/"
+"dosfstools/dosfstools> GitHub project page E<.UE .>"
+msgstr ""
+
#. type: SH
-#: en/fatlabel.8:49 en/fsck.fat.8:136 en/mkfs.fat.8:86
+#: en/fatlabel.8:53 en/fsck.fat.8:194 en/mkfs.fat.8:166
#, no-wrap
msgid "AUTHORS"
msgstr ""
#. type: Plain text
-#: en/fatlabel.8:50 en/fsck.fat.8:137 en/mkfs.fat.8:87
-msgid ""
-"B<dosfstools> were written by Werner Almesberger E<lt>I<werner."
-"almesberger@lrc.di.epfl.ch>E<gt>, Roman Hodek E<lt>I<Roman.Hodek@informatik."
-"uni-erlangen.de>E<gt>, and others. The current maintainer is Daniel Baumann "
-"E<lt>I<mail@daniel-baumann.ch>E<gt>."
+#: en/fatlabel.8:55 en/fsck.fat.8:196 en/mkfs.fat.8:168
+msgid "B<dosfstools> were written by"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:57 en/fsck.fat.8:198 en/mkfs.fat.8:170
+msgid "Werner Almesberger"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:60 en/fsck.fat.8:201 en/mkfs.fat.8:173
+msgid "Roman Hodek"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:63 en/fsck.fat.8:204 en/mkfs.fat.8:176
+msgid "and others. The current maintainer is"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:65 en/fsck.fat.8:206 en/mkfs.fat.8:178
+msgid "Andreas Bombe"
msgstr ""
#. type: TH
@@ -93,16 +118,16 @@ msgstr ""
msgid "FSCK.FAT"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
#: en/fsck.fat.8:26
msgid "B<fsck.fat> - check and repair MS-DOS filesystems"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
#: en/fsck.fat.8:29
-msgid ""
-"B<fsck.fat>|B<fsck.msdos>|B<fsck.vfat> [-aAflnprtvVwy] [-d I<PATH> -d\\ I<..."
-">] [-u\\ I<PATH> -u I<...>] I<DEVICE>"
+msgid "B<fsck.fat> [I<OPTIONS>] I<DEVICE>"
msgstr ""
#. type: Plain text
@@ -118,397 +143,395 @@ msgid "The following filesystem problems can be corrected (in this order):"
msgstr ""
#. type: IP
-#: en/fsck.fat.8:34 en/fsck.fat.8:36 en/fsck.fat.8:38 en/fsck.fat.8:40
-#: en/fsck.fat.8:42 en/fsck.fat.8:44 en/fsck.fat.8:46 en/fsck.fat.8:48
-#: en/fsck.fat.8:50 en/fsck.fat.8:52 en/fsck.fat.8:54 en/fsck.fat.8:56
-#: en/fsck.fat.8:58 en/fsck.fat.8:60 en/fsck.fat.8:62 en/fsck.fat.8:64
-#: en/fsck.fat.8:66 en/fsck.fat.8:70 en/fsck.fat.8:72
+#: en/fsck.fat.8:34 en/fsck.fat.8:37 en/fsck.fat.8:40 en/fsck.fat.8:44
+#: en/fsck.fat.8:47 en/fsck.fat.8:50 en/fsck.fat.8:53 en/fsck.fat.8:56
+#: en/fsck.fat.8:59 en/fsck.fat.8:62 en/fsck.fat.8:65 en/fsck.fat.8:68
+#: en/fsck.fat.8:71 en/fsck.fat.8:74 en/fsck.fat.8:77 en/fsck.fat.8:82
+#: en/fsck.fat.8:85 en/fsck.fat.8:90 en/fsck.fat.8:92
#, no-wrap
msgid "*"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:36
-msgid "FAT contains invalid cluster numbers. Cluster is changed to EOF."
+#: en/fsck.fat.8:37
+msgid "FAT contains invalid cluster numbers. Cluster is changed to EOF."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:38
-msgid "File's cluster chain contains a loop. The loop is broken."
+#: en/fsck.fat.8:40
+msgid "File's cluster chain contains a loop. The loop is broken."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:40
+#: en/fsck.fat.8:44
msgid ""
-"Bad clusters (read errors). The clusters are marked bad and they are removed "
-"from files owning them. This check is optional."
+"Bad clusters (read errors). The clusters are marked bad and they are "
+"removed from files owning them. This check is optional."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:42
+#: en/fsck.fat.8:47
msgid ""
-"Directories with a large number of bad entries (probably corrupt). The "
+"Directories with a large number of bad entries (probably corrupt). The "
"directory can be deleted."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:44
-msgid "Files . and .. are non-directories. They can be deleted or renamed."
+#: en/fsck.fat.8:50
+msgid "Files . and .. are non-directories. They can be deleted or renamed."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:46
-msgid "Directories . and .. in root directory. They are deleted."
+#: en/fsck.fat.8:53
+msgid "Directories . and .. in root directory. They are deleted."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:48
-msgid "Bad filenames. They can be renamed."
+#: en/fsck.fat.8:56
+msgid "Bad filenames. They can be renamed."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:50
-msgid "Duplicate directory entries. They can be deleted or renamed."
+#: en/fsck.fat.8:59
+msgid "Duplicate directory entries. They can be deleted or renamed."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:52
-msgid "Directories with non-zero size field. Size is set to zero."
+#: en/fsck.fat.8:62
+msgid "Directories with non-zero size field. Size is set to zero."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:54
+#: en/fsck.fat.8:65
msgid ""
-"Directory . does not point to parent directory. The start pointer is "
+"Directory . does not point to parent directory. The start pointer is "
"adjusted."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:56
+#: en/fsck.fat.8:68
msgid ""
-"Directory .. does not point to parent of parent directory. The start pointer "
-"is adjusted."
+"Directory .. does not point to parent of parent directory. The start "
+"pointer is adjusted."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:58
-msgid "Start cluster number of a file is invalid. The file is truncated."
+#: en/fsck.fat.8:71
+msgid "Start cluster number of a file is invalid. The file is truncated."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:60
-msgid "File contains bad or free clusters. The file is truncated."
+#: en/fsck.fat.8:74
+msgid "File contains bad or free clusters. The file is truncated."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:62
+#: en/fsck.fat.8:77
msgid ""
-"File's cluster chain is longer than indicated by the size fields. The file "
+"File's cluster chain is longer than indicated by the size fields. The file "
"is truncated."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:64
+#: en/fsck.fat.8:82
msgid ""
-"Two or more files share the same cluster(s). All but one of the files are "
-"truncated. If the file being truncated is a directory file that has already "
+"Two or more files share the same cluster(s). All but one of the files are "
+"truncated. If the file being truncated is a directory file that has already "
"been read, the filesystem check is restarted after truncation."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:66
+#: en/fsck.fat.8:85
msgid ""
-"File's cluster chain is shorter than indicated by the size fields. The file "
+"File's cluster chain is shorter than indicated by the size fields. The file "
"is truncated."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:68
+#: en/fsck.fat.8:88
msgid ""
-"Clusters are marked as used but are not owned by a file. They are marked as "
+"Clusters are marked as used but are not owned by a file. They are marked as "
"free."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:70
+#: en/fsck.fat.8:90
msgid "Additionally, the following problems are detected, but not repaired:"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:72
-msgid "Invalid parameters in boot sector."
+#: en/fsck.fat.8:92
+msgid "Invalid parameters in boot sector"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:74
+#: en/fsck.fat.8:94
msgid "Absence of . and .. entries in non-root directories"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fsck.fat.8:76
+#: en/fsck.fat.8:99
msgid ""
"When B<fsck.fat> checks a filesystem, it accumulates all changes in memory "
-"and performs them only after all checks are complete. This can be disabled "
+"and performs them only after all checks are complete. This can be disabled "
"with the B<-w> option."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:78 en/mkfs.fat.8:34
+#: en/fsck.fat.8:100 en/mkfs.fat.8:37
#, no-wrap
msgid "B<-a>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:80
+#: en/fsck.fat.8:105
msgid ""
-"Automatically repair the filesystem. No user intervention is necessary. "
+"Automatically repair the filesystem. No user intervention is necessary. "
"Whenever there is more than one method to solve a problem, the least "
"destructive approach is used."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:80
+#: en/fsck.fat.8:105
#, no-wrap
msgid "B<-A>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:82
+#: en/fsck.fat.8:116
msgid ""
-"Use Atari variation of the MS-DOS filesystem. This is default if B<fsck.fat> "
-"is run on an Atari, then this option turns off Atari format. There are some "
-"minor differences in Atari format: Some boot sector fields are interpreted "
-"slightly different, and the special FAT entries for end-of-file and bad "
-"cluster can be different. Under MS-DOS 0xfff8 is used for EOF and Atari "
-"employs 0xffff by default, but both systems recognize all values from "
-"0xfff8...0xffff as end-of-file. MS-DOS uses only 0xfff7 for bad clusters, "
+"Use Atari variation of the MS-DOS filesystem. This is default if B<fsck."
+"fat> is run on an Atari, then this option turns off Atari format. There are "
+"some minor differences in Atari format: Some boot sector fields are "
+"interpreted slightly different, and the special FAT entries for end-of-file "
+"and bad cluster can be different. Under MS-DOS 0xfff8 is used for EOF and "
+"Atari employs 0xffff by default, but both systems recognize all values from "
+"0xfff8...0xffff as end-of-file. MS-DOS uses only 0xfff7 for bad clusters, "
"where on Atari values 0xfff0...0xfff7 are for this purpose (but the standard "
"value is still 0xfff7)."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:82
+#: en/fsck.fat.8:116
#, no-wrap
msgid "B<-b>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:84
+#: en/fsck.fat.8:118
msgid "Make read-only boot sector check."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:84
+#: en/fsck.fat.8:118
#, no-wrap
-msgid "B<-d>"
+msgid "B<-d> I<PATH>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:86
+#: en/fsck.fat.8:122
msgid ""
-"Delete the specified file. If more that one file with that name exists, the "
-"first one is deleted."
+"Delete the specified file. If more than one file with that name exist, the "
+"first one is deleted. This option can be given more than once."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:86
+#: en/fsck.fat.8:122
#, no-wrap
msgid "B<-f>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:88
+#: en/fsck.fat.8:126
msgid ""
-"Salvage unused cluster chains to files. By default, unused clusters are "
+"Salvage unused cluster chains to files. By default, unused clusters are "
"added to the free disk space except in auto mode (B<-a>)."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:88
+#: en/fsck.fat.8:126
#, no-wrap
msgid "B<-l>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:90
+#: en/fsck.fat.8:128
msgid "List path names of files being processed."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:90
+#: en/fsck.fat.8:128
#, no-wrap
msgid "B<-n>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:93
+#: en/fsck.fat.8:131
msgid ""
"No-operation mode: non-interactively check for errors, but don't write "
"anything to the filesystem."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:93
+#: en/fsck.fat.8:131
#, no-wrap
msgid "B<-p>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:95
-msgid "Same as (B<-a>), for compatibility with other *fsck."
+#: en/fsck.fat.8:133
+msgid "Same as B<-a>, for compatibility with other *fsck."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:95
+#: en/fsck.fat.8:133
#, no-wrap
msgid "B<-r>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:98
+#: en/fsck.fat.8:139
msgid ""
-"Interactively repair the filesystem. The user is asked for advice whenever "
-"there is more than one approach to fix an inconsistency."
+"Interactively repair the filesystem. The user is asked for advice whenever "
+"there is more than one approach to fix an inconsistency. This is the "
+"default mode and the option is only retained for backwards compatibility."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:98
+#: en/fsck.fat.8:139
#, no-wrap
msgid "B<-t>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:100
+#: en/fsck.fat.8:141
msgid "Mark unreadable clusters as bad."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:100
+#: en/fsck.fat.8:141
#, no-wrap
-msgid "B<-u>"
+msgid "B<-u> I<PATH>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:102
+#: en/fsck.fat.8:146
msgid ""
-"Try to undelete the specified file. B<fsck.fat> tries to allocate a chain of "
-"contiguous unallocated clusters beginning with the start cluster of the "
-"undeleted file."
+"Try to undelete the specified file. B<fsck.fat> tries to allocate a chain "
+"of contiguous unallocated clusters beginning with the start cluster of the "
+"undeleted file. This option can be given more than once."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:102 en/mkfs.fat.8:72
+#: en/fsck.fat.8:146 en/mkfs.fat.8:138
#, no-wrap
msgid "B<-v>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:104
-msgid "Verbose mode. Generates slightly more output."
+#: en/fsck.fat.8:149
+msgid "Verbose mode. Generates slightly more output."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:104
+#: en/fsck.fat.8:149
#, no-wrap
msgid "B<-V>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:106
+#: en/fsck.fat.8:156
msgid ""
-"Perform a verification pass. The filesystem check is repeated after the "
-"first run. The second pass should never report any fixable errors. It may "
+"Perform a verification pass. The filesystem check is repeated after the "
+"first run. The second pass should never report any fixable errors. It may "
"take considerably longer than the first pass, because the first pass may "
"have generated long list of modifications that have to be scanned for each "
"disk read."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:106
+#: en/fsck.fat.8:156
#, no-wrap
msgid "B<-w>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:108
+#: en/fsck.fat.8:158
msgid "Write changes to disk immediately."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:108
+#: en/fsck.fat.8:158
#, no-wrap
msgid "B<-y>"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fsck.fat.8:110
+#: en/fsck.fat.8:162
msgid ""
"Same as B<-a> (automatically repair filesystem) for compatibility with other "
"fsck tools."
msgstr ""
-#. type: Plain text
-#: en/fsck.fat.8:112
-msgid ""
-"B<Note:> If B<-a> and B<-r> are absent, the filesystem is only checked, but "
-"not repaired."
-msgstr ""
-
#. type: SH
-#: en/fsck.fat.8:113
+#: en/fsck.fat.8:162
#, no-wrap
msgid "EXIT STATUS"
msgstr ""
#. type: IP
-#: en/fsck.fat.8:114
+#: en/fsck.fat.8:163
#, no-wrap
msgid "0"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:116
+#: en/fsck.fat.8:165
msgid "No recoverable errors have been detected."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:116
+#: en/fsck.fat.8:165
#, no-wrap
msgid "1"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:118
+#: en/fsck.fat.8:168
msgid ""
"Recoverable errors have been detected or B<fsck.fat> has discovered an "
"internal inconsistency."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:118
+#: en/fsck.fat.8:168
#, no-wrap
msgid "2"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fsck.fat.8:120
-msgid "Usage error. B<fsck.fat> did not access the filesystem."
+#: en/fsck.fat.8:172
+msgid "Usage error. B<fsck.fat> did not access the filesystem."
msgstr ""
#. type: SH
-#: en/fsck.fat.8:121
+#: en/fsck.fat.8:172
#, no-wrap
msgid "FILES"
msgstr ""
#. type: IP
-#: en/fsck.fat.8:122
+#: en/fsck.fat.8:173
#, no-wrap
msgid "fsck0000.rec, fsck0001.rec, ..."
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fsck.fat.8:124
+#: en/fsck.fat.8:177
msgid ""
"When recovering from a corrupted filesystem, B<fsck.fat> dumps recovered "
"data into files named 'fsckNNNN.rec' in the top level directory of the "
@@ -516,27 +539,21 @@ msgid ""
msgstr ""
#. type: SH
-#: en/fsck.fat.8:125 en/mkfs.fat.8:75
+#: en/fsck.fat.8:177 en/mkfs.fat.8:149
#, no-wrap
msgid "BUGS"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fsck.fat.8:127
+#: en/fsck.fat.8:183
msgid ""
-"Does not create . and .. files where necessary. Does not remove entirely "
-"empty directories. Should give more diagnostic messages. Undeleting files "
+"Does not create . and .. files where necessary. Does not remove entirely "
+"empty directories. Should give more diagnostic messages. Undeleting files "
"should use a more sophisticated algorithm."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:130 en/mkfs.fat.8:80
+#: en/fsck.fat.8:185 en/mkfs.fat.8:157
msgid "B<fatlabel>(8)"
msgstr ""
-
-#. type: Plain text
-#: en/fsck.fat.8:135 en/mkfs.fat.8:85
-msgid ""
-"More information about B<fsck.fat> and B<dosfstools> can be found at "
-"E<lt>I<http://daniel-baumann.ch/software/dosfstools/>E<gt>."
-msgstr ""
diff --git a/manpages/po/de/mkfs.fat.8.po b/manpages/po/de/mkfs.fat.8.po
index 2531179..3344f71 100644
--- a/manpages/po/de/mkfs.fat.8.po
+++ b/manpages/po/de/mkfs.fat.8.po
@@ -3,7 +3,7 @@
msgid ""
msgstr ""
"Project-Id-Version: dosfstools VERSION\n"
-"POT-Creation-Date: 2014-11-12 00:52+0100\n"
+"POT-Creation-Date: 2015-05-16 00:40+0200\n"
"PO-Revision-Date: 2013-06-06 09:34+0300\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -16,13 +16,13 @@ msgstr ""
#. type: TH
#: en/fatlabel.8:22 en/fsck.fat.8:22 en/mkfs.fat.8:22
#, no-wrap
-msgid "2014-11-12"
+msgid "2015-05-16"
msgstr ""
#. type: TH
#: en/fatlabel.8:22 en/fsck.fat.8:22 en/mkfs.fat.8:22
#, no-wrap
-msgid "3.0.27"
+msgid "3.0.28"
msgstr ""
#. type: TH
@@ -32,408 +32,450 @@ msgid "dosfstools"
msgstr ""
#. type: SH
-#: en/fatlabel.8:24 en/fsck.fat.8:24 en/mkfs.fat.8:24
+#: en/fatlabel.8:23 en/fsck.fat.8:23 en/mkfs.fat.8:23
#, no-wrap
msgid "NAME"
msgstr ""
#. type: SH
-#: en/fatlabel.8:27 en/fsck.fat.8:27 en/mkfs.fat.8:27
+#: en/fatlabel.8:26 en/fsck.fat.8:26 en/mkfs.fat.8:26
#, no-wrap
msgid "SYNOPSIS"
msgstr ""
#. type: SH
-#: en/fatlabel.8:30 en/fsck.fat.8:30 en/mkfs.fat.8:30
+#: en/fatlabel.8:29 en/fsck.fat.8:29 en/mkfs.fat.8:29
#, no-wrap
msgid "DESCRIPTION"
msgstr ""
#. type: SH
-#: en/fatlabel.8:35 en/fsck.fat.8:77 en/mkfs.fat.8:33
+#: en/fatlabel.8:36 en/fsck.fat.8:99 en/mkfs.fat.8:36
#, no-wrap
msgid "OPTIONS"
msgstr ""
#. type: SH
-#: en/fatlabel.8:41 en/fsck.fat.8:128 en/mkfs.fat.8:78
+#: en/fatlabel.8:42 en/fsck.fat.8:183 en/mkfs.fat.8:155
#, no-wrap
msgid "SEE ALSO"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fatlabel.8:43 en/mkfs.fat.8:82
+#: en/fatlabel.8:44 en/mkfs.fat.8:160
msgid "B<fsck.fat>(8)"
msgstr ""
#. type: SH
-#: en/fatlabel.8:46 en/fsck.fat.8:133 en/mkfs.fat.8:83
+#: en/fatlabel.8:47 en/fsck.fat.8:188 en/mkfs.fat.8:160
#, no-wrap
msgid "HOMEPAGE"
msgstr ""
+#. ----------------------------------------------------------------------------
+#. type: Plain text
+#: en/fatlabel.8:53 en/fsck.fat.8:194 en/mkfs.fat.8:166
+msgid ""
+"The home for the B<dosfstools> project is its E<.UR https://github.com/"
+"dosfstools/dosfstools> GitHub project page E<.UE .>"
+msgstr ""
+
#. type: SH
-#: en/fatlabel.8:49 en/fsck.fat.8:136 en/mkfs.fat.8:86
+#: en/fatlabel.8:53 en/fsck.fat.8:194 en/mkfs.fat.8:166
#, no-wrap
msgid "AUTHORS"
msgstr ""
#. type: Plain text
-#: en/fatlabel.8:50 en/fsck.fat.8:137 en/mkfs.fat.8:87
-msgid ""
-"B<dosfstools> were written by Werner Almesberger E<lt>I<werner."
-"almesberger@lrc.di.epfl.ch>E<gt>, Roman Hodek E<lt>I<Roman.Hodek@informatik."
-"uni-erlangen.de>E<gt>, and others. The current maintainer is Daniel Baumann "
-"E<lt>I<mail@daniel-baumann.ch>E<gt>."
+#: en/fatlabel.8:55 en/fsck.fat.8:196 en/mkfs.fat.8:168
+msgid "B<dosfstools> were written by"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:57 en/fsck.fat.8:198 en/mkfs.fat.8:170
+msgid "Werner Almesberger"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:60 en/fsck.fat.8:201 en/mkfs.fat.8:173
+msgid "Roman Hodek"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:63 en/fsck.fat.8:204 en/mkfs.fat.8:176
+msgid "and others. The current maintainer is"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:65 en/fsck.fat.8:206 en/mkfs.fat.8:178
+msgid "Andreas Bombe"
msgstr ""
#. type: IP
-#: en/fsck.fat.8:78 en/mkfs.fat.8:34
+#: en/fsck.fat.8:100 en/mkfs.fat.8:37
#, no-wrap
msgid "B<-a>"
msgstr ""
#. type: IP
-#: en/fsck.fat.8:102 en/mkfs.fat.8:72
+#: en/fsck.fat.8:146 en/mkfs.fat.8:138
#, no-wrap
msgid "B<-v>"
msgstr ""
#. type: SH
-#: en/fsck.fat.8:125 en/mkfs.fat.8:75
+#: en/fsck.fat.8:177 en/mkfs.fat.8:149
#, no-wrap
msgid "BUGS"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:130 en/mkfs.fat.8:80
+#: en/fsck.fat.8:185 en/mkfs.fat.8:157
msgid "B<fatlabel>(8)"
msgstr ""
-#. type: Plain text
-#: en/fsck.fat.8:135 en/mkfs.fat.8:85
-msgid ""
-"More information about B<fsck.fat> and B<dosfstools> can be found at "
-"E<lt>I<http://daniel-baumann.ch/software/dosfstools/>E<gt>."
-msgstr ""
-
#. type: TH
#: en/mkfs.fat.8:22
#, no-wrap
msgid "MKFS.FAT"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
#: en/mkfs.fat.8:26
msgid "B<mkfs.fat> - create an MS-DOS filesystem under Linux"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
#: en/mkfs.fat.8:29
-msgid ""
-"B<mkfs.fat> [B<-a>] [B<-A>] [B<-b> I<sector-of-backup>] [B<-c>] [B<-l> "
-"I<filename>] [B<-C>] [B<-f> I<number-of-FATs>] [B<-F> I<FAT-size] [>B<-h> "
-"I<number-of-hidden-sectors>] [B<-i> I<volume-id>] [B<-I>] [B<-m> I<message-"
-"file>] [B<-n> I<volume-name>] [B<-r> I<root-dir-entries>] [B<-R> I<number-of-"
-"reserved-sectors>] [B<-s> I<sectors-per-cluster>] [B<-S >I<logical-sector-"
-"size>] [B<-D> I<drive-number>] [B<-M >I<FAT-media-type>] [B<-v>] I<device> "
-"[I<block-count>]"
+msgid "B<mkfs.fat> [I<OPTIONS>] I<DEVICE> [I<BLOCK-COUNT>]"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/mkfs.fat.8:32
+#: en/mkfs.fat.8:36
msgid ""
"B<mkfs.fat> is used to create an MS-DOS filesystem under Linux on a device "
-"(usually a disk partition). I<device> is the special file corresponding to "
-"the device (e.g /dev/sdXX). I<block-count> is the number of blocks on the "
-"device. If omitted, B<mkfs.fat> automatically determines the filesystem size."
+"(usually a disk partition). I<DEVICE> is the special file corresponding to "
+"the device (e.g. /dev/sdXX). I<BLOCK-COUNT> is the number of blocks on the "
+"device. If omitted, B<mkfs.fat> automatically determines the filesystem "
+"size."
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:36
+#: en/mkfs.fat.8:45
msgid ""
"Normally, for any filesystem except very small ones, B<mkfs.fat> will align "
"all the data structures to cluster size, to make sure that as long as the "
"partition is properly aligned, so will all the data structures in the "
-"filesystem. This option disables alignment; this may provide a handful of "
+"filesystem. This option disables alignment; this may provide a handful of "
"additional clusters of storage at the expense of a significant performance "
"degradation on RAIDs, flash media or large-sector hard disks."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:36
+#: en/mkfs.fat.8:45
#, no-wrap
msgid "B< -A>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:38
+#: en/mkfs.fat.8:60
msgid ""
-"Use Atari variation of the MS-DOS filesystem. This is default if B<mkfs.fat> "
-"is run on an Atari, then this option turns off Atari format. There are some "
-"differences when using Atari format: If not directed otherwise by the user, "
-"B<mkfs.fat> will always use 2 sectors per cluster, since GEMDOS doesn't like "
-"other values very much. It will also obey the maximum number of sectors "
-"GEMDOS can handle. Larger filesystems are managed by raising the logical "
-"sector size. Under Atari format, an Atari-compatible serial number for the "
-"filesystem is generated, and a 12 bit FAT is used only for filesystems that "
-"have one of the usual floppy sizes (720k, 1.2M, 1.44M, 2.88M), a 16 bit FAT "
-"otherwise. This can be overridden with the B<-F> option. Some PC-specific "
-"boot sector fields aren't written, and a boot message (option B<-m>) is "
-"ignored."
+"Use Atari variation of the MS-DOS filesystem. This is default if B<mkfs."
+"fat> is run on an Atari, then this option turns off Atari format. There are "
+"some differences when using Atari format: If not directed otherwise by the "
+"user, B<mkfs.fat> will always use 2 sectors per cluster, since GEMDOS "
+"doesn't like other values very much. It will also obey the maximum number "
+"of sectors GEMDOS can handle. Larger filesystems are managed by raising the "
+"logical sector size. Under Atari format, an Atari-compatible serial number "
+"for the filesystem is generated, and a 12 bit FAT is used only for "
+"filesystems that have one of the usual floppy sizes (720k, 1.2M, 1.44M, "
+"2.88M), a 16 bit FAT otherwise. This can be overridden with the B<-F> "
+"option. Some PC-specific boot sector fields aren't written, and a boot "
+"message (option B<-m>) is ignored."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:38
+#: en/mkfs.fat.8:60
#, no-wrap
-msgid "B<-b> I<sector-of-backup>"
+msgid "B<-b> I<SECTOR-OF-BACKUP>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:40
+#: en/mkfs.fat.8:64
msgid ""
-"Selects the location of the backup boot sector for FAT32. Default depends on "
-"number of reserved sectors, but usually is sector 6. The backup must be "
+"Selects the location of the backup boot sector for FAT32. Default depends "
+"on number of reserved sectors, but usually is sector 6. The backup must be "
"within the range of reserved sectors."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:40
+#: en/mkfs.fat.8:64
#, no-wrap
msgid "B<-c>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:42
+#: en/mkfs.fat.8:66
msgid "Check the device for bad blocks before creating the filesystem."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:42
+#: en/mkfs.fat.8:66
#, no-wrap
msgid "B<-C>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:44
+#: en/mkfs.fat.8:80
msgid ""
-"Create the file given as I<device> on the command line, and write the to-be-"
-"created filesystem to it. This can be used to create the new filesystem in a "
-"file instead of on a real device, and to avoid using B<dd> in advance to "
-"create a file of appropriate size. With this option, the I<block-count> must "
-"be given, because otherwise the intended size of the filesystem wouldn't be "
-"known. The file created is a sparse file, which actually only contains the "
-"meta-data areas (boot sector, FATs, and root directory). The data portions "
-"won't be stored on the disk, but the file nevertheless will have the correct "
-"size. The resulting file can be copied later to a floppy disk or other "
-"device, or mounted through a loop device."
+"Create the file given as I<DEVICE> on the command line, and write the to-be-"
+"created filesystem to it. This can be used to create the new filesystem in "
+"a file instead of on a real device, and to avoid using B<dd> in advance to "
+"create a file of appropriate size. With this option, the I<BLOCK-COUNT> "
+"must be given, because otherwise the intended size of the filesystem "
+"wouldn't be known. The file created is a sparse file, which actually only "
+"contains the meta-data areas (boot sector, FATs, and root directory). The "
+"data portions won't be stored on the disk, but the file nevertheless will "
+"have the correct size. The resulting file can be copied later to a floppy "
+"disk or other device, or mounted through a loop device."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:44
+#: en/mkfs.fat.8:80
#, no-wrap
-msgid "B<-D> I<drive-number>"
+msgid "B<-D> I<DRIVE-NUMBER>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:46
+#: en/mkfs.fat.8:84
msgid ""
-"Specify the BIOS drive number to be stored in the FAT boot sector. This "
+"Specify the BIOS drive number to be stored in the FAT boot sector. This "
"value is usually 0x80 for hard disks and 0x00 for floppy devices or "
"partitions to be used for floppy emulation."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:46
+#: en/mkfs.fat.8:84
#, no-wrap
-msgid "B<-f> I<number-of-FATs>"
+msgid "B<-f> I<NUMBER-OF-FATS>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:48
+#: en/mkfs.fat.8:87
msgid ""
-"Specify the number of file allocation tables in the filesystem. The default "
-"is 2. Currently the Linux MS-DOS filesystem does not support more than 2 "
-"FATs."
+"Specify the number of file allocation tables in the filesystem. The default "
+"is 2."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:48
+#: en/mkfs.fat.8:87
#, no-wrap
-msgid "B<-F> I<FAT-size>"
+msgid "B<-F> I<FAT-SIZE>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:50
+#: en/mkfs.fat.8:91
msgid ""
-"Specifies the type of file allocation tables used (12, 16 or 32 bit). If "
+"Specifies the type of file allocation tables used (12, 16 or 32 bit). If "
"nothing is specified, B<mkfs.fat> will automatically select between 12, 16 "
"and 32 bit, whatever fits better for the filesystem size."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:50
+#: en/mkfs.fat.8:91
#, no-wrap
-msgid "B<-h> I<number-of-hidden-sectors>"
+msgid "B<-h> I<NUMBER-OF-HIDDEN-SECTORS>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:52
+#: en/mkfs.fat.8:95
msgid ""
-"Select the number of hidden sectors in the volume. Apparently some digital "
+"Select the number of hidden sectors in the volume. Apparently some digital "
"cameras get indigestion if you feed them a CF card without such hidden "
"sectors, this option allows you to satisfy them."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:52
+#: en/mkfs.fat.8:95
#, no-wrap
-msgid "B<-i> I<volume-id>"
+msgid "B<-i> I<VOLUME-ID>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:54
+#: en/mkfs.fat.8:99
msgid ""
-"Sets the volume ID of the newly created filesystem; I<volume-id> is a 32-bit "
-"hexadecimal number (for example, 2e24ec82). The default is a number which "
+"Sets the volume ID of the newly created filesystem; I<VOLUME-ID> is a 32-bit "
+"hexadecimal number (for example, 2e24ec82). The default is a number which "
"depends on the filesystem creation time."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:54
+#: en/mkfs.fat.8:99
#, no-wrap
msgid "B<-I>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:56
+#: en/mkfs.fat.8:108
msgid ""
"It is typical for fixed disk devices to be partitioned so, by default, you "
-"are not permitted to create a filesystem across the entire device. B<mkfs."
-"fat> will complain and tell you that it refuses to work. This is different "
-"when using MO disks. One doesn't always need partitions on MO disks. The "
-"filesystem can go directly to the whole disk. Under other OSes this is known "
-"as the 'superfloppy' format. This switch will force B<mkfs.fat> to work "
-"properly."
+"are not permitted to create a filesystem across the entire device. B<mkfs."
+"fat> will complain and tell you that it refuses to work. This is different "
+"when using MO disks. One doesn't always need partitions on MO disks. The "
+"filesystem can go directly to the whole disk. Under other OSes this is "
+"known as the 'superfloppy' format. This switch will force B<mkfs.fat> to "
+"work properly."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:56
+#: en/mkfs.fat.8:108
#, no-wrap
-msgid "B<-l> I<filename>"
+msgid "B<-l> I<FILENAME>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:58
-msgid "Read the bad blocks list from I<filename>."
+#: en/mkfs.fat.8:110
+msgid "Read the bad blocks list from I<FILENAME>."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:58
+#: en/mkfs.fat.8:110
#, no-wrap
-msgid "B<-m> I<message-file>"
+msgid "B<-m> I<MESSAGE-FILE>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:60
+#: en/mkfs.fat.8:116
msgid ""
"Sets the message the user receives on attempts to boot this filesystem "
-"without having properly installed an operating system. The message file must "
-"not exceed 418 bytes once line feeds have been converted to carriage return-"
-"line feed combinations, and tabs have been expanded. If the filename is a "
-"hyphen (-), the text is taken from standard input."
+"without having properly installed an operating system. The message file "
+"must not exceed 418 bytes once line feeds have been converted to carriage "
+"return-line feed combinations, and tabs have been expanded. If the filename "
+"is a hyphen (-), the text is taken from standard input."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:60
+#: en/mkfs.fat.8:116
#, no-wrap
-msgid "B<-M> I<FAT-media-type>"
+msgid "B<-M> I<FAT-MEDIA-TYPE>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:62
+#: en/mkfs.fat.8:120
msgid ""
-"Specify the media type to be stored in the FAT boot sector. This value is "
-"usually 0xF8 for hard disks and has a value from 0xF9 to 0xFF for floppies "
-"or partitions to be used for floppy emulation."
+"Specify the media type to be stored in the FAT boot sector. This value is "
+"usually 0xF8 for hard disks and is 0xF0 or a value from 0xF9 to 0xFF for "
+"floppies or partitions to be used for floppy emulation."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:62
+#: en/mkfs.fat.8:120
#, no-wrap
-msgid "B<-n> I<volume-name>"
+msgid "B<-n> I<VOLUME-NAME>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:64
+#: en/mkfs.fat.8:124
msgid ""
-"Sets the volume name (label) of the filesystem. The volume name can be up to "
-"11 characters long. The default is no label."
+"Sets the volume name (label) of the filesystem. The volume name can be up "
+"to 11 characters long. The default is no label."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:64
+#: en/mkfs.fat.8:124
#, no-wrap
-msgid "B<-r> I<root-dir-entries>"
+msgid "B<-r> I<ROOT-DIR-ENTRIES>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:66
+#: en/mkfs.fat.8:127
msgid ""
-"Select the number of entries available in the root directory. The default is "
-"112 or 224 for floppies and 512 for hard disks."
+"Select the number of entries available in the root directory. The default "
+"is 112 or 224 for floppies and 512 for hard disks."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:66
+#: en/mkfs.fat.8:127
#, no-wrap
-msgid "B<-R> I<number-of-reserved-sectors>"
+msgid "B<-R> I<NUMBER-OF-RESERVED-SECTORS>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:68
+#: en/mkfs.fat.8:131
msgid ""
-"Select the number of reserved sectors. With FAT32 format at least 2 reserved "
-"sectors are needed, the default is 32. Otherwise the default is 1 (only the "
-"boot sector)."
+"Select the number of reserved sectors. With FAT32 format at least 2 "
+"reserved sectors are needed, the default is 32. Otherwise the default is 1 "
+"(only the boot sector)."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:68
+#: en/mkfs.fat.8:131
#, no-wrap
-msgid "B<-s> I<sectors-per-cluster>"
+msgid "B<-s> I<SECTORS-PER-CLUSTER>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:70
+#: en/mkfs.fat.8:134
msgid ""
-"Specify the number of disk sectors per cluster. Must be a power of 2, i.e. "
+"Specify the number of disk sectors per cluster. Must be a power of 2, i.e. "
"1, 2, 4, 8, ... 128."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:70
+#: en/mkfs.fat.8:134
#, no-wrap
-msgid "B<-S> I<logical-sector-size>"
+msgid "B<-S> I<LOGICAL-SECTOR-SIZE>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:72
+#: en/mkfs.fat.8:138
msgid ""
-"Specify the number of bytes per logical sector. Must be a power of 2 and "
+"Specify the number of bytes per logical sector. Must be a power of 2 and "
"greater than or equal to 512, i.e. 512, 1024, 2048, 4096, 8192, 16384, or "
"32768."
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:74
+#: en/mkfs.fat.8:140
msgid "Verbose execution."
msgstr ""
+#. type: IP
+#: en/mkfs.fat.8:140
+#, no-wrap
+msgid "B<--invariant>"
+msgstr ""
+
+#. type: Plain text
+#: en/mkfs.fat.8:146
+msgid ""
+"Use constants for normally randomly generated or time based data such as "
+"volume ID and creation time. Multiple runs of B<mkfs.fat> on the same "
+"device create identical results with this option. Its main purpose is "
+"testing B<mkfs.fat>."
+msgstr ""
+
+#. type: IP
+#: en/mkfs.fat.8:146
+#, no-wrap
+msgid "B<--help>"
+msgstr ""
+
+#. ----------------------------------------------------------------------------
+#. type: Plain text
+#: en/mkfs.fat.8:149
+msgid "Display option summary and exit."
+msgstr ""
+
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/mkfs.fat.8:77
+#: en/mkfs.fat.8:155
msgid ""
-"B<mkfs.fat> can not create boot-able filesystems. This isn't as easy as you "
+"B<mkfs.fat> can not create boot-able filesystems. This isn't as easy as you "
"might think at first glance for various reasons and has been discussed a lot "
-"already. B<mkfs.fat> simply will not support it ;)"
+"already. B<mkfs.fat> simply will not support it ;)"
msgstr ""
diff --git a/manpages/pot/fatlabel.8.pot b/manpages/pot/fatlabel.8.pot
index 1d4af88..2eafa05 100644
--- a/manpages/pot/fatlabel.8.pot
+++ b/manpages/pot/fatlabel.8.pot
@@ -7,7 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: dosfstools VERSION\n"
-"POT-Creation-Date: 2014-11-12 00:52+0100\n"
+"POT-Creation-Date: 2015-05-16 00:40+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -25,13 +25,13 @@ msgstr ""
#. type: TH
#: en/fatlabel.8:22 en/fsck.fat.8:22 en/mkfs.fat.8:22
#, no-wrap
-msgid "2014-11-12"
+msgid "2015-05-16"
msgstr ""
#. type: TH
#: en/fatlabel.8:22 en/fsck.fat.8:22 en/mkfs.fat.8:22
#, no-wrap
-msgid "3.0.27"
+msgid "3.0.28"
msgstr ""
#. type: TH
@@ -41,113 +41,136 @@ msgid "dosfstools"
msgstr ""
#. type: SH
-#: en/fatlabel.8:24 en/fsck.fat.8:24 en/mkfs.fat.8:24
+#: en/fatlabel.8:23 en/fsck.fat.8:23 en/mkfs.fat.8:23
#, no-wrap
msgid "NAME"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
#: en/fatlabel.8:26
msgid "B<fatlabel> - set or get MS-DOS filesystem label"
msgstr ""
#. type: SH
-#: en/fatlabel.8:27 en/fsck.fat.8:27 en/mkfs.fat.8:27
+#: en/fatlabel.8:26 en/fsck.fat.8:26 en/mkfs.fat.8:26
#, no-wrap
msgid "SYNOPSIS"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
#: en/fatlabel.8:29
msgid "B<fatlabel> I<DEVICE> [I<LABEL>]"
msgstr ""
#. type: SH
-#: en/fatlabel.8:30 en/fsck.fat.8:30 en/mkfs.fat.8:30
+#: en/fatlabel.8:29 en/fsck.fat.8:29 en/mkfs.fat.8:29
#, no-wrap
msgid "DESCRIPTION"
msgstr ""
#. type: Plain text
-#: en/fatlabel.8:32
+#: en/fatlabel.8:31
msgid "B<fatlabel> set or gets a MS-DOS filesystem label from a given device."
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fatlabel.8:34
+#: en/fatlabel.8:36
msgid ""
-"If the label is omitted, then the label name of the specified device is "
-"written on the standard output. A label can't be longer than 11 bytes."
+"If I<LABEL> is omitted, then the label name of the specified device is "
+"written on the standard output. A label can't be longer than 11 bytes."
msgstr ""
#. type: SH
-#: en/fatlabel.8:35 en/fsck.fat.8:77 en/mkfs.fat.8:33
+#: en/fatlabel.8:36 en/fsck.fat.8:99 en/mkfs.fat.8:36
#, no-wrap
msgid "OPTIONS"
msgstr ""
#. type: IP
-#: en/fatlabel.8:36
+#: en/fatlabel.8:37
#, no-wrap
msgid "B<-h>, B<--help>"
msgstr ""
#. type: Plain text
-#: en/fatlabel.8:38
+#: en/fatlabel.8:39
msgid "Displays a help message."
msgstr ""
#. type: IP
-#: en/fatlabel.8:38
+#: en/fatlabel.8:39
#, no-wrap
msgid "B<-V>, B<--version>"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fatlabel.8:40
+#: en/fatlabel.8:42
msgid "Shows version."
msgstr ""
#. type: SH
-#: en/fatlabel.8:41 en/fsck.fat.8:128 en/mkfs.fat.8:78
+#: en/fatlabel.8:42 en/fsck.fat.8:183 en/mkfs.fat.8:155
#, no-wrap
msgid "SEE ALSO"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fatlabel.8:43 en/mkfs.fat.8:82
+#: en/fatlabel.8:44 en/mkfs.fat.8:160
msgid "B<fsck.fat>(8)"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fatlabel.8:45 en/fsck.fat.8:132
+#: en/fatlabel.8:47 en/fsck.fat.8:188
msgid "B<mkfs.fat>(8)"
msgstr ""
#. type: SH
-#: en/fatlabel.8:46 en/fsck.fat.8:133 en/mkfs.fat.8:83
+#: en/fatlabel.8:47 en/fsck.fat.8:188 en/mkfs.fat.8:160
#, no-wrap
msgid "HOMEPAGE"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fatlabel.8:48
+#: en/fatlabel.8:53 en/fsck.fat.8:194 en/mkfs.fat.8:166
msgid ""
-"More information about B<fatlabel> and B<dosfstools> can be found at "
-"E<lt>I<http://daniel-baumann.ch/software/dosfstools/>E<gt>."
+"The home for the B<dosfstools> project is its E<.UR https://github.com/"
+"dosfstools/dosfstools> GitHub project page E<.UE .>"
msgstr ""
#. type: SH
-#: en/fatlabel.8:49 en/fsck.fat.8:136 en/mkfs.fat.8:86
+#: en/fatlabel.8:53 en/fsck.fat.8:194 en/mkfs.fat.8:166
#, no-wrap
msgid "AUTHORS"
msgstr ""
#. type: Plain text
-#: en/fatlabel.8:50 en/fsck.fat.8:137 en/mkfs.fat.8:87
-msgid ""
-"B<dosfstools> were written by Werner Almesberger E<lt>I<werner."
-"almesberger@lrc.di.epfl.ch>E<gt>, Roman Hodek E<lt>I<Roman.Hodek@informatik."
-"uni-erlangen.de>E<gt>, and others. The current maintainer is Daniel Baumann "
-"E<lt>I<mail@daniel-baumann.ch>E<gt>."
+#: en/fatlabel.8:55 en/fsck.fat.8:196 en/mkfs.fat.8:168
+msgid "B<dosfstools> were written by"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:57 en/fsck.fat.8:198 en/mkfs.fat.8:170
+msgid "Werner Almesberger"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:60 en/fsck.fat.8:201 en/mkfs.fat.8:173
+msgid "Roman Hodek"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:63 en/fsck.fat.8:204 en/mkfs.fat.8:176
+msgid "and others. The current maintainer is"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:65 en/fsck.fat.8:206 en/mkfs.fat.8:178
+msgid "Andreas Bombe"
msgstr ""
diff --git a/manpages/pot/fsck.fat.8.pot b/manpages/pot/fsck.fat.8.pot
index e411819..65ef52a 100644
--- a/manpages/pot/fsck.fat.8.pot
+++ b/manpages/pot/fsck.fat.8.pot
@@ -7,7 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: dosfstools VERSION\n"
-"POT-Creation-Date: 2014-11-12 00:52+0100\n"
+"POT-Creation-Date: 2015-05-16 00:40+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -19,13 +19,13 @@ msgstr ""
#. type: TH
#: en/fatlabel.8:22 en/fsck.fat.8:22 en/mkfs.fat.8:22
#, no-wrap
-msgid "2014-11-12"
+msgid "2015-05-16"
msgstr ""
#. type: TH
#: en/fatlabel.8:22 en/fsck.fat.8:22 en/mkfs.fat.8:22
#, no-wrap
-msgid "3.0.27"
+msgid "3.0.28"
msgstr ""
#. type: TH
@@ -35,59 +35,84 @@ msgid "dosfstools"
msgstr ""
#. type: SH
-#: en/fatlabel.8:24 en/fsck.fat.8:24 en/mkfs.fat.8:24
+#: en/fatlabel.8:23 en/fsck.fat.8:23 en/mkfs.fat.8:23
#, no-wrap
msgid "NAME"
msgstr ""
#. type: SH
-#: en/fatlabel.8:27 en/fsck.fat.8:27 en/mkfs.fat.8:27
+#: en/fatlabel.8:26 en/fsck.fat.8:26 en/mkfs.fat.8:26
#, no-wrap
msgid "SYNOPSIS"
msgstr ""
#. type: SH
-#: en/fatlabel.8:30 en/fsck.fat.8:30 en/mkfs.fat.8:30
+#: en/fatlabel.8:29 en/fsck.fat.8:29 en/mkfs.fat.8:29
#, no-wrap
msgid "DESCRIPTION"
msgstr ""
#. type: SH
-#: en/fatlabel.8:35 en/fsck.fat.8:77 en/mkfs.fat.8:33
+#: en/fatlabel.8:36 en/fsck.fat.8:99 en/mkfs.fat.8:36
#, no-wrap
msgid "OPTIONS"
msgstr ""
#. type: SH
-#: en/fatlabel.8:41 en/fsck.fat.8:128 en/mkfs.fat.8:78
+#: en/fatlabel.8:42 en/fsck.fat.8:183 en/mkfs.fat.8:155
#, no-wrap
msgid "SEE ALSO"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fatlabel.8:45 en/fsck.fat.8:132
+#: en/fatlabel.8:47 en/fsck.fat.8:188
msgid "B<mkfs.fat>(8)"
msgstr ""
#. type: SH
-#: en/fatlabel.8:46 en/fsck.fat.8:133 en/mkfs.fat.8:83
+#: en/fatlabel.8:47 en/fsck.fat.8:188 en/mkfs.fat.8:160
#, no-wrap
msgid "HOMEPAGE"
msgstr ""
+#. ----------------------------------------------------------------------------
+#. type: Plain text
+#: en/fatlabel.8:53 en/fsck.fat.8:194 en/mkfs.fat.8:166
+msgid ""
+"The home for the B<dosfstools> project is its E<.UR https://github.com/"
+"dosfstools/dosfstools> GitHub project page E<.UE .>"
+msgstr ""
+
#. type: SH
-#: en/fatlabel.8:49 en/fsck.fat.8:136 en/mkfs.fat.8:86
+#: en/fatlabel.8:53 en/fsck.fat.8:194 en/mkfs.fat.8:166
#, no-wrap
msgid "AUTHORS"
msgstr ""
#. type: Plain text
-#: en/fatlabel.8:50 en/fsck.fat.8:137 en/mkfs.fat.8:87
-msgid ""
-"B<dosfstools> were written by Werner Almesberger E<lt>I<werner."
-"almesberger@lrc.di.epfl.ch>E<gt>, Roman Hodek E<lt>I<Roman.Hodek@informatik."
-"uni-erlangen.de>E<gt>, and others. The current maintainer is Daniel Baumann "
-"E<lt>I<mail@daniel-baumann.ch>E<gt>."
+#: en/fatlabel.8:55 en/fsck.fat.8:196 en/mkfs.fat.8:168
+msgid "B<dosfstools> were written by"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:57 en/fsck.fat.8:198 en/mkfs.fat.8:170
+msgid "Werner Almesberger"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:60 en/fsck.fat.8:201 en/mkfs.fat.8:173
+msgid "Roman Hodek"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:63 en/fsck.fat.8:204 en/mkfs.fat.8:176
+msgid "and others. The current maintainer is"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:65 en/fsck.fat.8:206 en/mkfs.fat.8:178
+msgid "Andreas Bombe"
msgstr ""
#. type: TH
@@ -96,16 +121,16 @@ msgstr ""
msgid "FSCK.FAT"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
#: en/fsck.fat.8:26
msgid "B<fsck.fat> - check and repair MS-DOS filesystems"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
#: en/fsck.fat.8:29
-msgid ""
-"B<fsck.fat>|B<fsck.msdos>|B<fsck.vfat> [-aAflnprtvVwy] [-d I<PATH> -d\\ I<..."
-">] [-u\\ I<PATH> -u I<...>] I<DEVICE>"
+msgid "B<fsck.fat> [I<OPTIONS>] I<DEVICE>"
msgstr ""
#. type: Plain text
@@ -121,397 +146,395 @@ msgid "The following filesystem problems can be corrected (in this order):"
msgstr ""
#. type: IP
-#: en/fsck.fat.8:34 en/fsck.fat.8:36 en/fsck.fat.8:38 en/fsck.fat.8:40
-#: en/fsck.fat.8:42 en/fsck.fat.8:44 en/fsck.fat.8:46 en/fsck.fat.8:48
-#: en/fsck.fat.8:50 en/fsck.fat.8:52 en/fsck.fat.8:54 en/fsck.fat.8:56
-#: en/fsck.fat.8:58 en/fsck.fat.8:60 en/fsck.fat.8:62 en/fsck.fat.8:64
-#: en/fsck.fat.8:66 en/fsck.fat.8:70 en/fsck.fat.8:72
+#: en/fsck.fat.8:34 en/fsck.fat.8:37 en/fsck.fat.8:40 en/fsck.fat.8:44
+#: en/fsck.fat.8:47 en/fsck.fat.8:50 en/fsck.fat.8:53 en/fsck.fat.8:56
+#: en/fsck.fat.8:59 en/fsck.fat.8:62 en/fsck.fat.8:65 en/fsck.fat.8:68
+#: en/fsck.fat.8:71 en/fsck.fat.8:74 en/fsck.fat.8:77 en/fsck.fat.8:82
+#: en/fsck.fat.8:85 en/fsck.fat.8:90 en/fsck.fat.8:92
#, no-wrap
msgid "*"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:36
-msgid "FAT contains invalid cluster numbers. Cluster is changed to EOF."
+#: en/fsck.fat.8:37
+msgid "FAT contains invalid cluster numbers. Cluster is changed to EOF."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:38
-msgid "File's cluster chain contains a loop. The loop is broken."
+#: en/fsck.fat.8:40
+msgid "File's cluster chain contains a loop. The loop is broken."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:40
+#: en/fsck.fat.8:44
msgid ""
-"Bad clusters (read errors). The clusters are marked bad and they are removed "
-"from files owning them. This check is optional."
+"Bad clusters (read errors). The clusters are marked bad and they are "
+"removed from files owning them. This check is optional."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:42
+#: en/fsck.fat.8:47
msgid ""
-"Directories with a large number of bad entries (probably corrupt). The "
+"Directories with a large number of bad entries (probably corrupt). The "
"directory can be deleted."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:44
-msgid "Files . and .. are non-directories. They can be deleted or renamed."
+#: en/fsck.fat.8:50
+msgid "Files . and .. are non-directories. They can be deleted or renamed."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:46
-msgid "Directories . and .. in root directory. They are deleted."
+#: en/fsck.fat.8:53
+msgid "Directories . and .. in root directory. They are deleted."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:48
-msgid "Bad filenames. They can be renamed."
+#: en/fsck.fat.8:56
+msgid "Bad filenames. They can be renamed."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:50
-msgid "Duplicate directory entries. They can be deleted or renamed."
+#: en/fsck.fat.8:59
+msgid "Duplicate directory entries. They can be deleted or renamed."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:52
-msgid "Directories with non-zero size field. Size is set to zero."
+#: en/fsck.fat.8:62
+msgid "Directories with non-zero size field. Size is set to zero."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:54
+#: en/fsck.fat.8:65
msgid ""
-"Directory . does not point to parent directory. The start pointer is "
+"Directory . does not point to parent directory. The start pointer is "
"adjusted."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:56
+#: en/fsck.fat.8:68
msgid ""
-"Directory .. does not point to parent of parent directory. The start pointer "
-"is adjusted."
+"Directory .. does not point to parent of parent directory. The start "
+"pointer is adjusted."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:58
-msgid "Start cluster number of a file is invalid. The file is truncated."
+#: en/fsck.fat.8:71
+msgid "Start cluster number of a file is invalid. The file is truncated."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:60
-msgid "File contains bad or free clusters. The file is truncated."
+#: en/fsck.fat.8:74
+msgid "File contains bad or free clusters. The file is truncated."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:62
+#: en/fsck.fat.8:77
msgid ""
-"File's cluster chain is longer than indicated by the size fields. The file "
+"File's cluster chain is longer than indicated by the size fields. The file "
"is truncated."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:64
+#: en/fsck.fat.8:82
msgid ""
-"Two or more files share the same cluster(s). All but one of the files are "
-"truncated. If the file being truncated is a directory file that has already "
+"Two or more files share the same cluster(s). All but one of the files are "
+"truncated. If the file being truncated is a directory file that has already "
"been read, the filesystem check is restarted after truncation."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:66
+#: en/fsck.fat.8:85
msgid ""
-"File's cluster chain is shorter than indicated by the size fields. The file "
+"File's cluster chain is shorter than indicated by the size fields. The file "
"is truncated."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:68
+#: en/fsck.fat.8:88
msgid ""
-"Clusters are marked as used but are not owned by a file. They are marked as "
+"Clusters are marked as used but are not owned by a file. They are marked as "
"free."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:70
+#: en/fsck.fat.8:90
msgid "Additionally, the following problems are detected, but not repaired:"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:72
-msgid "Invalid parameters in boot sector."
+#: en/fsck.fat.8:92
+msgid "Invalid parameters in boot sector"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:74
+#: en/fsck.fat.8:94
msgid "Absence of . and .. entries in non-root directories"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fsck.fat.8:76
+#: en/fsck.fat.8:99
msgid ""
"When B<fsck.fat> checks a filesystem, it accumulates all changes in memory "
-"and performs them only after all checks are complete. This can be disabled "
+"and performs them only after all checks are complete. This can be disabled "
"with the B<-w> option."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:78 en/mkfs.fat.8:34
+#: en/fsck.fat.8:100 en/mkfs.fat.8:37
#, no-wrap
msgid "B<-a>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:80
+#: en/fsck.fat.8:105
msgid ""
-"Automatically repair the filesystem. No user intervention is necessary. "
+"Automatically repair the filesystem. No user intervention is necessary. "
"Whenever there is more than one method to solve a problem, the least "
"destructive approach is used."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:80
+#: en/fsck.fat.8:105
#, no-wrap
msgid "B<-A>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:82
+#: en/fsck.fat.8:116
msgid ""
-"Use Atari variation of the MS-DOS filesystem. This is default if B<fsck.fat> "
-"is run on an Atari, then this option turns off Atari format. There are some "
-"minor differences in Atari format: Some boot sector fields are interpreted "
-"slightly different, and the special FAT entries for end-of-file and bad "
-"cluster can be different. Under MS-DOS 0xfff8 is used for EOF and Atari "
-"employs 0xffff by default, but both systems recognize all values from "
-"0xfff8...0xffff as end-of-file. MS-DOS uses only 0xfff7 for bad clusters, "
+"Use Atari variation of the MS-DOS filesystem. This is default if B<fsck."
+"fat> is run on an Atari, then this option turns off Atari format. There are "
+"some minor differences in Atari format: Some boot sector fields are "
+"interpreted slightly different, and the special FAT entries for end-of-file "
+"and bad cluster can be different. Under MS-DOS 0xfff8 is used for EOF and "
+"Atari employs 0xffff by default, but both systems recognize all values from "
+"0xfff8...0xffff as end-of-file. MS-DOS uses only 0xfff7 for bad clusters, "
"where on Atari values 0xfff0...0xfff7 are for this purpose (but the standard "
"value is still 0xfff7)."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:82
+#: en/fsck.fat.8:116
#, no-wrap
msgid "B<-b>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:84
+#: en/fsck.fat.8:118
msgid "Make read-only boot sector check."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:84
+#: en/fsck.fat.8:118
#, no-wrap
-msgid "B<-d>"
+msgid "B<-d> I<PATH>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:86
+#: en/fsck.fat.8:122
msgid ""
-"Delete the specified file. If more that one file with that name exists, the "
-"first one is deleted."
+"Delete the specified file. If more than one file with that name exist, the "
+"first one is deleted. This option can be given more than once."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:86
+#: en/fsck.fat.8:122
#, no-wrap
msgid "B<-f>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:88
+#: en/fsck.fat.8:126
msgid ""
-"Salvage unused cluster chains to files. By default, unused clusters are "
+"Salvage unused cluster chains to files. By default, unused clusters are "
"added to the free disk space except in auto mode (B<-a>)."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:88
+#: en/fsck.fat.8:126
#, no-wrap
msgid "B<-l>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:90
+#: en/fsck.fat.8:128
msgid "List path names of files being processed."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:90
+#: en/fsck.fat.8:128
#, no-wrap
msgid "B<-n>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:93
+#: en/fsck.fat.8:131
msgid ""
"No-operation mode: non-interactively check for errors, but don't write "
"anything to the filesystem."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:93
+#: en/fsck.fat.8:131
#, no-wrap
msgid "B<-p>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:95
-msgid "Same as (B<-a>), for compatibility with other *fsck."
+#: en/fsck.fat.8:133
+msgid "Same as B<-a>, for compatibility with other *fsck."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:95
+#: en/fsck.fat.8:133
#, no-wrap
msgid "B<-r>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:98
+#: en/fsck.fat.8:139
msgid ""
-"Interactively repair the filesystem. The user is asked for advice whenever "
-"there is more than one approach to fix an inconsistency."
+"Interactively repair the filesystem. The user is asked for advice whenever "
+"there is more than one approach to fix an inconsistency. This is the "
+"default mode and the option is only retained for backwards compatibility."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:98
+#: en/fsck.fat.8:139
#, no-wrap
msgid "B<-t>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:100
+#: en/fsck.fat.8:141
msgid "Mark unreadable clusters as bad."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:100
+#: en/fsck.fat.8:141
#, no-wrap
-msgid "B<-u>"
+msgid "B<-u> I<PATH>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:102
+#: en/fsck.fat.8:146
msgid ""
-"Try to undelete the specified file. B<fsck.fat> tries to allocate a chain of "
-"contiguous unallocated clusters beginning with the start cluster of the "
-"undeleted file."
+"Try to undelete the specified file. B<fsck.fat> tries to allocate a chain "
+"of contiguous unallocated clusters beginning with the start cluster of the "
+"undeleted file. This option can be given more than once."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:102 en/mkfs.fat.8:72
+#: en/fsck.fat.8:146 en/mkfs.fat.8:138
#, no-wrap
msgid "B<-v>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:104
-msgid "Verbose mode. Generates slightly more output."
+#: en/fsck.fat.8:149
+msgid "Verbose mode. Generates slightly more output."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:104
+#: en/fsck.fat.8:149
#, no-wrap
msgid "B<-V>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:106
+#: en/fsck.fat.8:156
msgid ""
-"Perform a verification pass. The filesystem check is repeated after the "
-"first run. The second pass should never report any fixable errors. It may "
+"Perform a verification pass. The filesystem check is repeated after the "
+"first run. The second pass should never report any fixable errors. It may "
"take considerably longer than the first pass, because the first pass may "
"have generated long list of modifications that have to be scanned for each "
"disk read."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:106
+#: en/fsck.fat.8:156
#, no-wrap
msgid "B<-w>"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:108
+#: en/fsck.fat.8:158
msgid "Write changes to disk immediately."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:108
+#: en/fsck.fat.8:158
#, no-wrap
msgid "B<-y>"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fsck.fat.8:110
+#: en/fsck.fat.8:162
msgid ""
"Same as B<-a> (automatically repair filesystem) for compatibility with other "
"fsck tools."
msgstr ""
-#. type: Plain text
-#: en/fsck.fat.8:112
-msgid ""
-"B<Note:> If B<-a> and B<-r> are absent, the filesystem is only checked, but "
-"not repaired."
-msgstr ""
-
#. type: SH
-#: en/fsck.fat.8:113
+#: en/fsck.fat.8:162
#, no-wrap
msgid "EXIT STATUS"
msgstr ""
#. type: IP
-#: en/fsck.fat.8:114
+#: en/fsck.fat.8:163
#, no-wrap
msgid "0"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:116
+#: en/fsck.fat.8:165
msgid "No recoverable errors have been detected."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:116
+#: en/fsck.fat.8:165
#, no-wrap
msgid "1"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:118
+#: en/fsck.fat.8:168
msgid ""
"Recoverable errors have been detected or B<fsck.fat> has discovered an "
"internal inconsistency."
msgstr ""
#. type: IP
-#: en/fsck.fat.8:118
+#: en/fsck.fat.8:168
#, no-wrap
msgid "2"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fsck.fat.8:120
-msgid "Usage error. B<fsck.fat> did not access the filesystem."
+#: en/fsck.fat.8:172
+msgid "Usage error. B<fsck.fat> did not access the filesystem."
msgstr ""
#. type: SH
-#: en/fsck.fat.8:121
+#: en/fsck.fat.8:172
#, no-wrap
msgid "FILES"
msgstr ""
#. type: IP
-#: en/fsck.fat.8:122
+#: en/fsck.fat.8:173
#, no-wrap
msgid "fsck0000.rec, fsck0001.rec, ..."
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fsck.fat.8:124
+#: en/fsck.fat.8:177
msgid ""
"When recovering from a corrupted filesystem, B<fsck.fat> dumps recovered "
"data into files named 'fsckNNNN.rec' in the top level directory of the "
@@ -519,27 +542,21 @@ msgid ""
msgstr ""
#. type: SH
-#: en/fsck.fat.8:125 en/mkfs.fat.8:75
+#: en/fsck.fat.8:177 en/mkfs.fat.8:149
#, no-wrap
msgid "BUGS"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fsck.fat.8:127
+#: en/fsck.fat.8:183
msgid ""
-"Does not create . and .. files where necessary. Does not remove entirely "
-"empty directories. Should give more diagnostic messages. Undeleting files "
+"Does not create . and .. files where necessary. Does not remove entirely "
+"empty directories. Should give more diagnostic messages. Undeleting files "
"should use a more sophisticated algorithm."
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:130 en/mkfs.fat.8:80
+#: en/fsck.fat.8:185 en/mkfs.fat.8:157
msgid "B<fatlabel>(8)"
msgstr ""
-
-#. type: Plain text
-#: en/fsck.fat.8:135 en/mkfs.fat.8:85
-msgid ""
-"More information about B<fsck.fat> and B<dosfstools> can be found at "
-"E<lt>I<http://daniel-baumann.ch/software/dosfstools/>E<gt>."
-msgstr ""
diff --git a/manpages/pot/mkfs.fat.8.pot b/manpages/pot/mkfs.fat.8.pot
index a6106bc..c9d5bba 100644
--- a/manpages/pot/mkfs.fat.8.pot
+++ b/manpages/pot/mkfs.fat.8.pot
@@ -7,7 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: dosfstools VERSION\n"
-"POT-Creation-Date: 2014-11-12 00:52+0100\n"
+"POT-Creation-Date: 2015-05-16 00:40+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -19,13 +19,13 @@ msgstr ""
#. type: TH
#: en/fatlabel.8:22 en/fsck.fat.8:22 en/mkfs.fat.8:22
#, no-wrap
-msgid "2014-11-12"
+msgid "2015-05-16"
msgstr ""
#. type: TH
#: en/fatlabel.8:22 en/fsck.fat.8:22 en/mkfs.fat.8:22
#, no-wrap
-msgid "3.0.27"
+msgid "3.0.28"
msgstr ""
#. type: TH
@@ -35,408 +35,450 @@ msgid "dosfstools"
msgstr ""
#. type: SH
-#: en/fatlabel.8:24 en/fsck.fat.8:24 en/mkfs.fat.8:24
+#: en/fatlabel.8:23 en/fsck.fat.8:23 en/mkfs.fat.8:23
#, no-wrap
msgid "NAME"
msgstr ""
#. type: SH
-#: en/fatlabel.8:27 en/fsck.fat.8:27 en/mkfs.fat.8:27
+#: en/fatlabel.8:26 en/fsck.fat.8:26 en/mkfs.fat.8:26
#, no-wrap
msgid "SYNOPSIS"
msgstr ""
#. type: SH
-#: en/fatlabel.8:30 en/fsck.fat.8:30 en/mkfs.fat.8:30
+#: en/fatlabel.8:29 en/fsck.fat.8:29 en/mkfs.fat.8:29
#, no-wrap
msgid "DESCRIPTION"
msgstr ""
#. type: SH
-#: en/fatlabel.8:35 en/fsck.fat.8:77 en/mkfs.fat.8:33
+#: en/fatlabel.8:36 en/fsck.fat.8:99 en/mkfs.fat.8:36
#, no-wrap
msgid "OPTIONS"
msgstr ""
#. type: SH
-#: en/fatlabel.8:41 en/fsck.fat.8:128 en/mkfs.fat.8:78
+#: en/fatlabel.8:42 en/fsck.fat.8:183 en/mkfs.fat.8:155
#, no-wrap
msgid "SEE ALSO"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/fatlabel.8:43 en/mkfs.fat.8:82
+#: en/fatlabel.8:44 en/mkfs.fat.8:160
msgid "B<fsck.fat>(8)"
msgstr ""
#. type: SH
-#: en/fatlabel.8:46 en/fsck.fat.8:133 en/mkfs.fat.8:83
+#: en/fatlabel.8:47 en/fsck.fat.8:188 en/mkfs.fat.8:160
#, no-wrap
msgid "HOMEPAGE"
msgstr ""
+#. ----------------------------------------------------------------------------
+#. type: Plain text
+#: en/fatlabel.8:53 en/fsck.fat.8:194 en/mkfs.fat.8:166
+msgid ""
+"The home for the B<dosfstools> project is its E<.UR https://github.com/"
+"dosfstools/dosfstools> GitHub project page E<.UE .>"
+msgstr ""
+
#. type: SH
-#: en/fatlabel.8:49 en/fsck.fat.8:136 en/mkfs.fat.8:86
+#: en/fatlabel.8:53 en/fsck.fat.8:194 en/mkfs.fat.8:166
#, no-wrap
msgid "AUTHORS"
msgstr ""
#. type: Plain text
-#: en/fatlabel.8:50 en/fsck.fat.8:137 en/mkfs.fat.8:87
-msgid ""
-"B<dosfstools> were written by Werner Almesberger E<lt>I<werner."
-"almesberger@lrc.di.epfl.ch>E<gt>, Roman Hodek E<lt>I<Roman.Hodek@informatik."
-"uni-erlangen.de>E<gt>, and others. The current maintainer is Daniel Baumann "
-"E<lt>I<mail@daniel-baumann.ch>E<gt>."
+#: en/fatlabel.8:55 en/fsck.fat.8:196 en/mkfs.fat.8:168
+msgid "B<dosfstools> were written by"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:57 en/fsck.fat.8:198 en/mkfs.fat.8:170
+msgid "Werner Almesberger"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:60 en/fsck.fat.8:201 en/mkfs.fat.8:173
+msgid "Roman Hodek"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:63 en/fsck.fat.8:204 en/mkfs.fat.8:176
+msgid "and others. The current maintainer is"
+msgstr ""
+
+#. type: Plain text
+#: en/fatlabel.8:65 en/fsck.fat.8:206 en/mkfs.fat.8:178
+msgid "Andreas Bombe"
msgstr ""
#. type: IP
-#: en/fsck.fat.8:78 en/mkfs.fat.8:34
+#: en/fsck.fat.8:100 en/mkfs.fat.8:37
#, no-wrap
msgid "B<-a>"
msgstr ""
#. type: IP
-#: en/fsck.fat.8:102 en/mkfs.fat.8:72
+#: en/fsck.fat.8:146 en/mkfs.fat.8:138
#, no-wrap
msgid "B<-v>"
msgstr ""
#. type: SH
-#: en/fsck.fat.8:125 en/mkfs.fat.8:75
+#: en/fsck.fat.8:177 en/mkfs.fat.8:149
#, no-wrap
msgid "BUGS"
msgstr ""
#. type: Plain text
-#: en/fsck.fat.8:130 en/mkfs.fat.8:80
+#: en/fsck.fat.8:185 en/mkfs.fat.8:157
msgid "B<fatlabel>(8)"
msgstr ""
-#. type: Plain text
-#: en/fsck.fat.8:135 en/mkfs.fat.8:85
-msgid ""
-"More information about B<fsck.fat> and B<dosfstools> can be found at "
-"E<lt>I<http://daniel-baumann.ch/software/dosfstools/>E<gt>."
-msgstr ""
-
#. type: TH
#: en/mkfs.fat.8:22
#, no-wrap
msgid "MKFS.FAT"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
#: en/mkfs.fat.8:26
msgid "B<mkfs.fat> - create an MS-DOS filesystem under Linux"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
#: en/mkfs.fat.8:29
-msgid ""
-"B<mkfs.fat> [B<-a>] [B<-A>] [B<-b> I<sector-of-backup>] [B<-c>] [B<-l> "
-"I<filename>] [B<-C>] [B<-f> I<number-of-FATs>] [B<-F> I<FAT-size] [>B<-h> "
-"I<number-of-hidden-sectors>] [B<-i> I<volume-id>] [B<-I>] [B<-m> I<message-"
-"file>] [B<-n> I<volume-name>] [B<-r> I<root-dir-entries>] [B<-R> I<number-of-"
-"reserved-sectors>] [B<-s> I<sectors-per-cluster>] [B<-S >I<logical-sector-"
-"size>] [B<-D> I<drive-number>] [B<-M >I<FAT-media-type>] [B<-v>] I<device> "
-"[I<block-count>]"
+msgid "B<mkfs.fat> [I<OPTIONS>] I<DEVICE> [I<BLOCK-COUNT>]"
msgstr ""
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/mkfs.fat.8:32
+#: en/mkfs.fat.8:36
msgid ""
"B<mkfs.fat> is used to create an MS-DOS filesystem under Linux on a device "
-"(usually a disk partition). I<device> is the special file corresponding to "
-"the device (e.g /dev/sdXX). I<block-count> is the number of blocks on the "
-"device. If omitted, B<mkfs.fat> automatically determines the filesystem size."
+"(usually a disk partition). I<DEVICE> is the special file corresponding to "
+"the device (e.g. /dev/sdXX). I<BLOCK-COUNT> is the number of blocks on the "
+"device. If omitted, B<mkfs.fat> automatically determines the filesystem "
+"size."
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:36
+#: en/mkfs.fat.8:45
msgid ""
"Normally, for any filesystem except very small ones, B<mkfs.fat> will align "
"all the data structures to cluster size, to make sure that as long as the "
"partition is properly aligned, so will all the data structures in the "
-"filesystem. This option disables alignment; this may provide a handful of "
+"filesystem. This option disables alignment; this may provide a handful of "
"additional clusters of storage at the expense of a significant performance "
"degradation on RAIDs, flash media or large-sector hard disks."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:36
+#: en/mkfs.fat.8:45
#, no-wrap
msgid "B< -A>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:38
+#: en/mkfs.fat.8:60
msgid ""
-"Use Atari variation of the MS-DOS filesystem. This is default if B<mkfs.fat> "
-"is run on an Atari, then this option turns off Atari format. There are some "
-"differences when using Atari format: If not directed otherwise by the user, "
-"B<mkfs.fat> will always use 2 sectors per cluster, since GEMDOS doesn't like "
-"other values very much. It will also obey the maximum number of sectors "
-"GEMDOS can handle. Larger filesystems are managed by raising the logical "
-"sector size. Under Atari format, an Atari-compatible serial number for the "
-"filesystem is generated, and a 12 bit FAT is used only for filesystems that "
-"have one of the usual floppy sizes (720k, 1.2M, 1.44M, 2.88M), a 16 bit FAT "
-"otherwise. This can be overridden with the B<-F> option. Some PC-specific "
-"boot sector fields aren't written, and a boot message (option B<-m>) is "
-"ignored."
+"Use Atari variation of the MS-DOS filesystem. This is default if B<mkfs."
+"fat> is run on an Atari, then this option turns off Atari format. There are "
+"some differences when using Atari format: If not directed otherwise by the "
+"user, B<mkfs.fat> will always use 2 sectors per cluster, since GEMDOS "
+"doesn't like other values very much. It will also obey the maximum number "
+"of sectors GEMDOS can handle. Larger filesystems are managed by raising the "
+"logical sector size. Under Atari format, an Atari-compatible serial number "
+"for the filesystem is generated, and a 12 bit FAT is used only for "
+"filesystems that have one of the usual floppy sizes (720k, 1.2M, 1.44M, "
+"2.88M), a 16 bit FAT otherwise. This can be overridden with the B<-F> "
+"option. Some PC-specific boot sector fields aren't written, and a boot "
+"message (option B<-m>) is ignored."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:38
+#: en/mkfs.fat.8:60
#, no-wrap
-msgid "B<-b> I<sector-of-backup>"
+msgid "B<-b> I<SECTOR-OF-BACKUP>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:40
+#: en/mkfs.fat.8:64
msgid ""
-"Selects the location of the backup boot sector for FAT32. Default depends on "
-"number of reserved sectors, but usually is sector 6. The backup must be "
+"Selects the location of the backup boot sector for FAT32. Default depends "
+"on number of reserved sectors, but usually is sector 6. The backup must be "
"within the range of reserved sectors."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:40
+#: en/mkfs.fat.8:64
#, no-wrap
msgid "B<-c>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:42
+#: en/mkfs.fat.8:66
msgid "Check the device for bad blocks before creating the filesystem."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:42
+#: en/mkfs.fat.8:66
#, no-wrap
msgid "B<-C>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:44
+#: en/mkfs.fat.8:80
msgid ""
-"Create the file given as I<device> on the command line, and write the to-be-"
-"created filesystem to it. This can be used to create the new filesystem in a "
-"file instead of on a real device, and to avoid using B<dd> in advance to "
-"create a file of appropriate size. With this option, the I<block-count> must "
-"be given, because otherwise the intended size of the filesystem wouldn't be "
-"known. The file created is a sparse file, which actually only contains the "
-"meta-data areas (boot sector, FATs, and root directory). The data portions "
-"won't be stored on the disk, but the file nevertheless will have the correct "
-"size. The resulting file can be copied later to a floppy disk or other "
-"device, or mounted through a loop device."
+"Create the file given as I<DEVICE> on the command line, and write the to-be-"
+"created filesystem to it. This can be used to create the new filesystem in "
+"a file instead of on a real device, and to avoid using B<dd> in advance to "
+"create a file of appropriate size. With this option, the I<BLOCK-COUNT> "
+"must be given, because otherwise the intended size of the filesystem "
+"wouldn't be known. The file created is a sparse file, which actually only "
+"contains the meta-data areas (boot sector, FATs, and root directory). The "
+"data portions won't be stored on the disk, but the file nevertheless will "
+"have the correct size. The resulting file can be copied later to a floppy "
+"disk or other device, or mounted through a loop device."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:44
+#: en/mkfs.fat.8:80
#, no-wrap
-msgid "B<-D> I<drive-number>"
+msgid "B<-D> I<DRIVE-NUMBER>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:46
+#: en/mkfs.fat.8:84
msgid ""
-"Specify the BIOS drive number to be stored in the FAT boot sector. This "
+"Specify the BIOS drive number to be stored in the FAT boot sector. This "
"value is usually 0x80 for hard disks and 0x00 for floppy devices or "
"partitions to be used for floppy emulation."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:46
+#: en/mkfs.fat.8:84
#, no-wrap
-msgid "B<-f> I<number-of-FATs>"
+msgid "B<-f> I<NUMBER-OF-FATS>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:48
+#: en/mkfs.fat.8:87
msgid ""
-"Specify the number of file allocation tables in the filesystem. The default "
-"is 2. Currently the Linux MS-DOS filesystem does not support more than 2 "
-"FATs."
+"Specify the number of file allocation tables in the filesystem. The default "
+"is 2."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:48
+#: en/mkfs.fat.8:87
#, no-wrap
-msgid "B<-F> I<FAT-size>"
+msgid "B<-F> I<FAT-SIZE>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:50
+#: en/mkfs.fat.8:91
msgid ""
-"Specifies the type of file allocation tables used (12, 16 or 32 bit). If "
+"Specifies the type of file allocation tables used (12, 16 or 32 bit). If "
"nothing is specified, B<mkfs.fat> will automatically select between 12, 16 "
"and 32 bit, whatever fits better for the filesystem size."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:50
+#: en/mkfs.fat.8:91
#, no-wrap
-msgid "B<-h> I<number-of-hidden-sectors>"
+msgid "B<-h> I<NUMBER-OF-HIDDEN-SECTORS>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:52
+#: en/mkfs.fat.8:95
msgid ""
-"Select the number of hidden sectors in the volume. Apparently some digital "
+"Select the number of hidden sectors in the volume. Apparently some digital "
"cameras get indigestion if you feed them a CF card without such hidden "
"sectors, this option allows you to satisfy them."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:52
+#: en/mkfs.fat.8:95
#, no-wrap
-msgid "B<-i> I<volume-id>"
+msgid "B<-i> I<VOLUME-ID>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:54
+#: en/mkfs.fat.8:99
msgid ""
-"Sets the volume ID of the newly created filesystem; I<volume-id> is a 32-bit "
-"hexadecimal number (for example, 2e24ec82). The default is a number which "
+"Sets the volume ID of the newly created filesystem; I<VOLUME-ID> is a 32-bit "
+"hexadecimal number (for example, 2e24ec82). The default is a number which "
"depends on the filesystem creation time."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:54
+#: en/mkfs.fat.8:99
#, no-wrap
msgid "B<-I>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:56
+#: en/mkfs.fat.8:108
msgid ""
"It is typical for fixed disk devices to be partitioned so, by default, you "
-"are not permitted to create a filesystem across the entire device. B<mkfs."
-"fat> will complain and tell you that it refuses to work. This is different "
-"when using MO disks. One doesn't always need partitions on MO disks. The "
-"filesystem can go directly to the whole disk. Under other OSes this is known "
-"as the 'superfloppy' format. This switch will force B<mkfs.fat> to work "
-"properly."
+"are not permitted to create a filesystem across the entire device. B<mkfs."
+"fat> will complain and tell you that it refuses to work. This is different "
+"when using MO disks. One doesn't always need partitions on MO disks. The "
+"filesystem can go directly to the whole disk. Under other OSes this is "
+"known as the 'superfloppy' format. This switch will force B<mkfs.fat> to "
+"work properly."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:56
+#: en/mkfs.fat.8:108
#, no-wrap
-msgid "B<-l> I<filename>"
+msgid "B<-l> I<FILENAME>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:58
-msgid "Read the bad blocks list from I<filename>."
+#: en/mkfs.fat.8:110
+msgid "Read the bad blocks list from I<FILENAME>."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:58
+#: en/mkfs.fat.8:110
#, no-wrap
-msgid "B<-m> I<message-file>"
+msgid "B<-m> I<MESSAGE-FILE>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:60
+#: en/mkfs.fat.8:116
msgid ""
"Sets the message the user receives on attempts to boot this filesystem "
-"without having properly installed an operating system. The message file must "
-"not exceed 418 bytes once line feeds have been converted to carriage return-"
-"line feed combinations, and tabs have been expanded. If the filename is a "
-"hyphen (-), the text is taken from standard input."
+"without having properly installed an operating system. The message file "
+"must not exceed 418 bytes once line feeds have been converted to carriage "
+"return-line feed combinations, and tabs have been expanded. If the filename "
+"is a hyphen (-), the text is taken from standard input."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:60
+#: en/mkfs.fat.8:116
#, no-wrap
-msgid "B<-M> I<FAT-media-type>"
+msgid "B<-M> I<FAT-MEDIA-TYPE>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:62
+#: en/mkfs.fat.8:120
msgid ""
-"Specify the media type to be stored in the FAT boot sector. This value is "
-"usually 0xF8 for hard disks and has a value from 0xF9 to 0xFF for floppies "
-"or partitions to be used for floppy emulation."
+"Specify the media type to be stored in the FAT boot sector. This value is "
+"usually 0xF8 for hard disks and is 0xF0 or a value from 0xF9 to 0xFF for "
+"floppies or partitions to be used for floppy emulation."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:62
+#: en/mkfs.fat.8:120
#, no-wrap
-msgid "B<-n> I<volume-name>"
+msgid "B<-n> I<VOLUME-NAME>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:64
+#: en/mkfs.fat.8:124
msgid ""
-"Sets the volume name (label) of the filesystem. The volume name can be up to "
-"11 characters long. The default is no label."
+"Sets the volume name (label) of the filesystem. The volume name can be up "
+"to 11 characters long. The default is no label."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:64
+#: en/mkfs.fat.8:124
#, no-wrap
-msgid "B<-r> I<root-dir-entries>"
+msgid "B<-r> I<ROOT-DIR-ENTRIES>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:66
+#: en/mkfs.fat.8:127
msgid ""
-"Select the number of entries available in the root directory. The default is "
-"112 or 224 for floppies and 512 for hard disks."
+"Select the number of entries available in the root directory. The default "
+"is 112 or 224 for floppies and 512 for hard disks."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:66
+#: en/mkfs.fat.8:127
#, no-wrap
-msgid "B<-R> I<number-of-reserved-sectors>"
+msgid "B<-R> I<NUMBER-OF-RESERVED-SECTORS>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:68
+#: en/mkfs.fat.8:131
msgid ""
-"Select the number of reserved sectors. With FAT32 format at least 2 reserved "
-"sectors are needed, the default is 32. Otherwise the default is 1 (only the "
-"boot sector)."
+"Select the number of reserved sectors. With FAT32 format at least 2 "
+"reserved sectors are needed, the default is 32. Otherwise the default is 1 "
+"(only the boot sector)."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:68
+#: en/mkfs.fat.8:131
#, no-wrap
-msgid "B<-s> I<sectors-per-cluster>"
+msgid "B<-s> I<SECTORS-PER-CLUSTER>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:70
+#: en/mkfs.fat.8:134
msgid ""
-"Specify the number of disk sectors per cluster. Must be a power of 2, i.e. "
+"Specify the number of disk sectors per cluster. Must be a power of 2, i.e. "
"1, 2, 4, 8, ... 128."
msgstr ""
#. type: IP
-#: en/mkfs.fat.8:70
+#: en/mkfs.fat.8:134
#, no-wrap
-msgid "B<-S> I<logical-sector-size>"
+msgid "B<-S> I<LOGICAL-SECTOR-SIZE>"
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:72
+#: en/mkfs.fat.8:138
msgid ""
-"Specify the number of bytes per logical sector. Must be a power of 2 and "
+"Specify the number of bytes per logical sector. Must be a power of 2 and "
"greater than or equal to 512, i.e. 512, 1024, 2048, 4096, 8192, 16384, or "
"32768."
msgstr ""
#. type: Plain text
-#: en/mkfs.fat.8:74
+#: en/mkfs.fat.8:140
msgid "Verbose execution."
msgstr ""
+#. type: IP
+#: en/mkfs.fat.8:140
+#, no-wrap
+msgid "B<--invariant>"
+msgstr ""
+
+#. type: Plain text
+#: en/mkfs.fat.8:146
+msgid ""
+"Use constants for normally randomly generated or time based data such as "
+"volume ID and creation time. Multiple runs of B<mkfs.fat> on the same "
+"device create identical results with this option. Its main purpose is "
+"testing B<mkfs.fat>."
+msgstr ""
+
+#. type: IP
+#: en/mkfs.fat.8:146
+#, no-wrap
+msgid "B<--help>"
+msgstr ""
+
+#. ----------------------------------------------------------------------------
+#. type: Plain text
+#: en/mkfs.fat.8:149
+msgid "Display option summary and exit."
+msgstr ""
+
+#. ----------------------------------------------------------------------------
#. type: Plain text
-#: en/mkfs.fat.8:77
+#: en/mkfs.fat.8:155
msgid ""
-"B<mkfs.fat> can not create boot-able filesystems. This isn't as easy as you "
+"B<mkfs.fat> can not create boot-able filesystems. This isn't as easy as you "
"might think at first glance for various reasons and has been discussed a lot "
-"already. B<mkfs.fat> simply will not support it ;)"
+"already. B<mkfs.fat> simply will not support it ;)"
msgstr ""
diff --git a/src/boot.c b/src/boot.c
index 5b3825c..0c0918f 100644
--- a/src/boot.c
+++ b/src/boot.c
@@ -25,8 +25,8 @@
* by Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de> */
#include <stdio.h>
+#include <stdint.h>
#include <string.h>
-#include <sys/types.h>
#include <stdlib.h>
#include <time.h>
@@ -45,8 +45,8 @@
#define FAT16_THRESHOLD 65525
static struct {
- __u8 media;
- char *descr;
+ uint8_t media;
+ const char *descr;
} mediabytes[] = {
{
0xf0, "5.25\" or 3.5\" HD floppy"}, {
@@ -62,9 +62,9 @@ static struct {
/* Unaligned fields must first be accessed byte-wise */
#define GET_UNALIGNED_W(f) \
- ( (__u16)f[0] | ((__u16)f[1]<<8) )
+ ( (uint16_t)f[0] | ((uint16_t)f[1]<<8) )
-static char *get_media_descr(unsigned char media)
+static const char *get_media_descr(unsigned char media)
{
int i;
@@ -166,18 +166,18 @@ static void check_backup_boot(DOS_FS * fs, struct boot_sector *b, int lss)
fs_read(fs->backupboot_start, sizeof(b2), &b2);
if (memcmp(b, &b2, sizeof(b2)) != 0) {
/* there are any differences */
- __u8 *p, *q;
+ uint8_t *p, *q;
int i, pos, first = 1;
char buf[20];
printf("There are differences between boot sector and its backup.\n");
printf("This is mostly harmless. Differences: (offset:original/backup)\n ");
pos = 2;
- for (p = (__u8 *) b, q = (__u8 *) & b2, i = 0; i < sizeof(b2);
+ for (p = (uint8_t *) b, q = (uint8_t *) & b2, i = 0; i < sizeof(b2);
++p, ++q, ++i) {
if (*p != *q) {
sprintf(buf, "%s%u:%02x/%02x", first ? "" : ", ",
- (unsigned)(p - (__u8 *) b), *p, *q);
+ (unsigned)(p - (uint8_t *) b), *p, *q);
if (pos + strlen(buf) > 78)
printf("\n "), pos = 2;
printf("%s", buf);
@@ -227,7 +227,7 @@ static void read_fsinfo(DOS_FS * fs, struct boot_sector *b, int lss)
if (interactive && get_key("12", "?") == '1') {
/* search for a free reserved sector (not boot sector and not
* backup boot sector) */
- __u32 s;
+ uint32_t s;
for (s = 1; s < le16toh(b->reserved); ++s)
if (s != le16toh(b->backup_boot))
break;
@@ -425,7 +425,7 @@ void read_boot(DOS_FS * fs)
fs->eff_fat_bits = (fs->fat_bits == 32) ? 28 : fs->fat_bits;
fs->fat_size = fat_length * logical_sector_size;
- fs->label = calloc(12, sizeof(__u8));
+ fs->label = calloc(12, sizeof(uint8_t));
if (fs->fat_bits == 12 || fs->fat_bits == 16) {
struct boot_sector_16 *b16 = (struct boot_sector_16 *)&b;
if (b16->extended_sig == 0x29)
diff --git a/src/check.c b/src/check.c
index e8aaf92..d8b9d72 100644
--- a/src/check.c
+++ b/src/check.c
@@ -273,11 +273,10 @@ static int bad_name(DOS_FILE * file)
strncmp((const char *)name, "WP ROOT SF", 11) == 0)
return 0;
- /* PATCH ED+DL */
- /* check if we have neither a long filename nor a short name */
- if ((file->lfn == NULL) && (file->dir_ent.lcase & FAT_NO_83NAME)) {
- return 1;
- }
+ /* check if we have neither a long filename nor a short name */
+ if ((file->lfn == NULL) && (file->dir_ent.lcase & FAT_NO_83NAME)) {
+ return 1;
+ }
/* don't complain about the dummy 11 bytes used by patched Linux
kernels */
@@ -401,20 +400,16 @@ static void auto_rename(DOS_FILE * file)
(const char *)file->dir_ent.name, MSDOS_NAME))
break;
if (!walk) {
- /* PATCH ED+DL */
- if(file->dir_ent.lcase & FAT_NO_83NAME)
- {
- /* as we only assign a new 8.3 filename, reset flag that 8.3 name is not
- present */
- file->dir_ent.lcase &= ~FAT_NO_83NAME;
- /* reset the attributes */
- file->dir_ent.attr &= ~(ATTR_DIR | ATTR_VOLUME); /* only keep the DIR and VOLUME attributes */
- fs_write(file->offset, MSDOS_NAME+2, file->dir_ent.name);
- }
- else
- {
- fs_write(file->offset, MSDOS_NAME, file->dir_ent.name);
- }
+ if (file->dir_ent.lcase & FAT_NO_83NAME) {
+ /* as we only assign a new 8.3 filename, reset flag that 8.3 name is not
+ present */
+ file->dir_ent.lcase &= ~FAT_NO_83NAME;
+ /* reset the attributes, only keep DIR and VOLUME */
+ file->dir_ent.attr &= ~(ATTR_DIR | ATTR_VOLUME);
+ fs_write(file->offset, MSDOS_NAME + 2, file->dir_ent.name);
+ } else {
+ fs_write(file->offset, MSDOS_NAME, file->dir_ent.name);
+ }
if (file->lfn)
lfn_fix_checksum(file->lfn_offset, file->offset,
(const char *)file->dir_ent.name);
@@ -448,20 +443,16 @@ static void rename_file(DOS_FILE * file)
walk[1] = 0;
for (walk = name; *walk == ' ' || *walk == '\t'; walk++) ;
if (file_cvt(walk, file->dir_ent.name)) {
- /* PATCH ED+DL */
- if(file->dir_ent.lcase & FAT_NO_83NAME)
- {
- /* as we only assign a new 8.3 filename, reset flag that 8.3 name is not
- present */
- file->dir_ent.lcase &= ~FAT_NO_83NAME;
- /* reset the attributes */
- file->dir_ent.attr &= ~(ATTR_DIR | ATTR_VOLUME); /* only keep the DIR and VOLUME attributes */
- fs_write(file->offset, MSDOS_NAME+2, file->dir_ent.name);
- }
- else
- {
- fs_write(file->offset, MSDOS_NAME, file->dir_ent.name);
- }
+ if (file->dir_ent.lcase & FAT_NO_83NAME) {
+ /* as we only assign a new 8.3 filename, reset flag that 8.3 name is not
+ present */
+ file->dir_ent.lcase &= ~FAT_NO_83NAME;
+ /* reset the attributes, only keep DIR and VOLUME */
+ file->dir_ent.attr &= ~(ATTR_DIR | ATTR_VOLUME);
+ fs_write(file->offset, MSDOS_NAME + 2, file->dir_ent.name);
+ } else {
+ fs_write(file->offset, MSDOS_NAME, file->dir_ent.name);
+ }
if (file->lfn)
lfn_fix_checksum(file->lfn_offset, file->offset,
(const char *)file->dir_ent.name);
@@ -473,7 +464,7 @@ static void rename_file(DOS_FILE * file)
static int handle_dot(DOS_FS * fs, DOS_FILE * file, int dots)
{
- char *name;
+ const char *name;
name =
strncmp((const char *)file->dir_ent.name, MSDOS_DOT,
@@ -554,12 +545,20 @@ static int check_file(DOS_FS * fs, DOS_FILE * file)
return 0;
}
}
+ if (FSTART(file, fs) == 1) {
+ printf("%s\n Bad start cluster 1. Truncating file.\n",
+ path_name(file));
+ if (!file->offset)
+ die("Bad FAT32 root directory! (bad start cluster 1)\n");
+ MODIFY_START(file, 0, fs);
+ }
if (FSTART(file, fs) >= fs->clusters + 2) {
printf
("%s\n Start cluster beyond limit (%lu > %lu). Truncating file.\n",
path_name(file), (unsigned long)FSTART(file, fs), (unsigned long)(fs->clusters + 1));
if (!file->offset)
- die("Bad FAT32 root directory! (bad start cluster)\n");
+ die("Bad FAT32 root directory! (start cluster beyond limit: %lu > %lu)\n",
+ (unsigned long)FSTART(file, fs), (unsigned long)(fs->clusters + 1));
MODIFY_START(file, 0, fs);
}
clusters = prev = 0;
@@ -845,7 +844,7 @@ static void test_file(DOS_FS * fs, DOS_FILE * file, int read_test)
uint32_t walk, prev, clusters, next_clu;
prev = clusters = 0;
- for (walk = FSTART(file, fs); walk > 0 && walk < fs->clusters + 2;
+ for (walk = FSTART(file, fs); walk > 1 && walk < fs->clusters + 2;
walk = next_clu) {
next_clu = next_cluster(fs, walk);
@@ -886,7 +885,7 @@ static void test_file(DOS_FS * fs, DOS_FILE * file, int read_test)
set_owner(fs, walk, file);
}
/* Revert ownership (for now) */
- for (walk = FSTART(file, fs); walk > 0 && walk < fs->clusters + 2;
+ for (walk = FSTART(file, fs); walk > 1 && walk < fs->clusters + 2;
walk = next_cluster(fs, walk))
if (bad_cluster(fs, walk))
break;
diff --git a/src/common.c b/src/common.c
index af222a2..9d11193 100644
--- a/src/common.c
+++ b/src/common.c
@@ -37,7 +37,7 @@ typedef struct _link {
struct _link *next;
} LINK;
-void die(char *msg, ...)
+void die(const char *msg, ...)
{
va_list args;
@@ -48,7 +48,7 @@ void die(char *msg, ...)
exit(1);
}
-void pdie(char *msg, ...)
+void pdie(const char *msg, ...)
{
va_list args;
@@ -96,7 +96,7 @@ int min(int a, int b)
return a < b ? a : b;
}
-char get_key(char *valid, char *prompt)
+char get_key(const char *valid, const char *prompt)
{
int ch, okay;
diff --git a/src/common.h b/src/common.h
index 8508602..c15efb5 100644
--- a/src/common.h
+++ b/src/common.h
@@ -20,16 +20,14 @@
can be found in /usr/share/common-licenses/GPL-3 file.
*/
-#include <asm/types.h>
-
#ifndef _COMMON_H
#define _COMMON_H
-void die(char *msg, ...) __attribute((noreturn));
+void die(const char *msg, ...) __attribute((noreturn));
/* Displays a prinf-style message and terminates the program. */
-void pdie(char *msg, ...) __attribute((noreturn));
+void pdie(const char *msg, ...) __attribute((noreturn));
/* Like die, but appends an error message according to the state of errno. */
@@ -50,7 +48,7 @@ int min(int a, int b);
/* Returns the smaller integer value of a and b. */
-char get_key(char *valid, char *prompt);
+char get_key(const char *valid, const char *prompt);
/* Displays PROMPT and waits for user input. Only characters in VALID are
accepted. Terminates the program on EOF. Returns the character. */
diff --git a/src/fat.c b/src/fat.c
index 027c586..5a92f56 100644
--- a/src/fat.c
+++ b/src/fat.c
@@ -80,7 +80,7 @@ void get_fat(FAT_ENTRY * entry, void *fat, uint32_t cluster, DOS_FS * fs)
*/
void read_fat(DOS_FS * fs)
{
- int eff_size;
+ int eff_size, alloc_size;
uint32_t i;
void *first, *second = NULL;
int first_ok, second_ok;
@@ -96,10 +96,18 @@ void read_fat(DOS_FS * fs)
total_num_clusters = fs->clusters + 2UL;
eff_size = (total_num_clusters * fs->fat_bits + 7) / 8ULL;
- first = alloc(eff_size);
+
+ if (fs->fat_bits != 12)
+ alloc_size = eff_size;
+ else
+ /* round up to an even number of FAT entries to avoid special
+ * casing the last entry in get_fat() */
+ alloc_size = (total_num_clusters * 12 + 23) / 24 * 3;
+
+ first = alloc(alloc_size);
fs_read(fs->fat_start, eff_size, first);
if (fs->nfats > 1) {
- second = alloc(eff_size);
+ second = alloc(alloc_size);
fs_read(fs->fat_start + fs->fat_size, eff_size, second);
}
if (second && memcmp(first, second, eff_size) != 0) {
diff --git a/src/file.c b/src/file.c
index 30adcde..9519070 100644
--- a/src/file.c
+++ b/src/file.c
@@ -30,16 +30,9 @@
#include <ctype.h>
#include <unistd.h>
-#define _LINUX_STAT_H /* hack to avoid inclusion of <linux/stat.h> */
-#define _LINUX_STRING_H_ /* hack to avoid inclusion of <linux/string.h> */
-#define _LINUX_FS_H /* hack to avoid inclusion of <linux/fs.h> */
-
-#include <asm/types.h>
-
-#include <linux/msdos_fs.h>
-
#include "common.h"
#include "file.h"
+#include "msdos_fs.h"
#include "charconv.h"
FDSC *fp_root = NULL;
diff --git a/src/file.h b/src/file.h
index 3adfc96..eaaf356 100644
--- a/src/file.h
+++ b/src/file.h
@@ -23,6 +23,8 @@
#ifndef _FILE_H
#define _FILE_H
+#include "msdos_fs.h"
+
typedef enum { fdt_none, fdt_drop, fdt_undelete } FD_TYPE;
typedef struct _fptr {
diff --git a/src/fsck.fat.c b/src/fsck.fat.c
index c073d9a..f786a93 100644
--- a/src/fsck.fat.c
+++ b/src/fsck.fat.c
@@ -63,7 +63,7 @@ static void usage(char *name)
fprintf(stderr,
" -n no-op, check non-interactively without changing\n");
fprintf(stderr, " -p same as -a, for compat with other *fsck\n");
- fprintf(stderr, " -r interactively repair the filesystem\n");
+ fprintf(stderr, " -r interactively repair the filesystem (default)\n");
fprintf(stderr, " -t test for bad clusters\n");
fprintf(stderr, " -u path try to undelete that (non-directory) file\n");
fprintf(stderr, " -v verbose mode\n");
@@ -108,11 +108,11 @@ int main(int argc, char **argv)
uint32_t free_clusters = 0;
memset(&fs, 0, sizeof(fs));
- rw = salvage_files = verify = 0;
- interactive = 1;
+ salvage_files = verify = 0;
+ rw = interactive = 1;
check_atari();
- while ((c = getopt(argc, argv, "Aac:d:bflnprtu:vVwy")) != EOF)
+ while ((c = getopt(argc, argv, "Aac:d:bflnprtu:vVwy")) != -1)
switch (c) {
case 'A': /* toggle Atari format */
atari_format = !atari_format;
@@ -169,7 +169,7 @@ int main(int argc, char **argv)
}
set_dos_codepage(-1); /* set default codepage if none was given in command line */
if ((test || write_immed) && !rw) {
- fprintf(stderr, "-t and -w require -a or -r\n");
+ fprintf(stderr, "-t and -w can not be used in read only mode\n");
exit(2);
}
if (optind != argc - 1)
diff --git a/src/fsck.fat.h b/src/fsck.fat.h
index e5ade5b..e5f6178 100644
--- a/src/fsck.fat.h
+++ b/src/fsck.fat.h
@@ -28,20 +28,12 @@
#define _DOSFSCK_H
#include <fcntl.h>
-#include <sys/types.h>
-#define _LINUX_STAT_H /* hack to avoid inclusion of <linux/stat.h> */
-#define _LINUX_STRING_H_ /* hack to avoid inclusion of <linux/string.h> */
-#define _LINUX_FS_H /* hack to avoid inclusion of <linux/fs.h> */
-
-#include <asm/types.h>
-#include <asm/byteorder.h>
-
-#include <linux/msdos_fs.h>
-
#include <stddef.h>
#include <stdint.h>
#include <endian.h>
+#include "msdos_fs.h"
+
#define VFAT_LN_ATTR (ATTR_RO | ATTR_HIDDEN | ATTR_SYS | ATTR_VOLUME)
#define FAT_STATE_DIRTY 0x01
@@ -49,95 +41,95 @@
/* ++roman: Use own definition of boot sector structure -- the kernel headers'
* name for it is msdos_boot_sector in 2.0 and fat_boot_sector in 2.1 ... */
struct boot_sector {
- __u8 ignored[3]; /* Boot strap short or near jump */
- __u8 system_id[8]; /* Name - can be used to special case
+ uint8_t ignored[3]; /* Boot strap short or near jump */
+ uint8_t system_id[8]; /* Name - can be used to special case
partition manager volumes */
- __u8 sector_size[2]; /* bytes per logical sector */
- __u8 cluster_size; /* sectors/cluster */
- __u16 reserved; /* reserved sectors */
- __u8 fats; /* number of FATs */
- __u8 dir_entries[2]; /* root directory entries */
- __u8 sectors[2]; /* number of sectors */
- __u8 media; /* media code (unused) */
- __u16 fat_length; /* sectors/FAT */
- __u16 secs_track; /* sectors per track */
- __u16 heads; /* number of heads */
- __u32 hidden; /* hidden sectors (unused) */
- __u32 total_sect; /* number of sectors (if sectors == 0) */
+ uint8_t sector_size[2]; /* bytes per logical sector */
+ uint8_t cluster_size; /* sectors/cluster */
+ uint16_t reserved; /* reserved sectors */
+ uint8_t fats; /* number of FATs */
+ uint8_t dir_entries[2]; /* root directory entries */
+ uint8_t sectors[2]; /* number of sectors */
+ uint8_t media; /* media code (unused) */
+ uint16_t fat_length; /* sectors/FAT */
+ uint16_t secs_track; /* sectors per track */
+ uint16_t heads; /* number of heads */
+ uint32_t hidden; /* hidden sectors (unused) */
+ uint32_t total_sect; /* number of sectors (if sectors == 0) */
/* The following fields are only used by FAT32 */
- __u32 fat32_length; /* sectors/FAT */
- __u16 flags; /* bit 8: fat mirroring, low 4: active fat */
- __u8 version[2]; /* major, minor filesystem version */
- __u32 root_cluster; /* first cluster in root directory */
- __u16 info_sector; /* filesystem info sector */
- __u16 backup_boot; /* backup boot sector */
- __u8 reserved2[12]; /* Unused */
-
- __u8 drive_number; /* Logical Drive Number */
- __u8 reserved3; /* Unused */
-
- __u8 extended_sig; /* Extended Signature (0x29) */
- __u32 serial; /* Serial number */
- __u8 label[11]; /* FS label */
- __u8 fs_type[8]; /* FS Type */
+ uint32_t fat32_length; /* sectors/FAT */
+ uint16_t flags; /* bit 8: fat mirroring, low 4: active fat */
+ uint8_t version[2]; /* major, minor filesystem version */
+ uint32_t root_cluster; /* first cluster in root directory */
+ uint16_t info_sector; /* filesystem info sector */
+ uint16_t backup_boot; /* backup boot sector */
+ uint8_t reserved2[12]; /* Unused */
+
+ uint8_t drive_number; /* Logical Drive Number */
+ uint8_t reserved3; /* Unused */
+
+ uint8_t extended_sig; /* Extended Signature (0x29) */
+ uint32_t serial; /* Serial number */
+ uint8_t label[11]; /* FS label */
+ uint8_t fs_type[8]; /* FS Type */
/* fill up to 512 bytes */
- __u8 junk[422];
+ uint8_t junk[422];
} __attribute__ ((packed));
struct boot_sector_16 {
- __u8 ignored[3]; /* Boot strap short or near jump */
- __u8 system_id[8]; /* Name - can be used to special case
+ uint8_t ignored[3]; /* Boot strap short or near jump */
+ uint8_t system_id[8]; /* Name - can be used to special case
partition manager volumes */
- __u8 sector_size[2]; /* bytes per logical sector */
- __u8 cluster_size; /* sectors/cluster */
- __u16 reserved; /* reserved sectors */
- __u8 fats; /* number of FATs */
- __u8 dir_entries[2]; /* root directory entries */
- __u8 sectors[2]; /* number of sectors */
- __u8 media; /* media code (unused) */
- __u16 fat_length; /* sectors/FAT */
- __u16 secs_track; /* sectors per track */
- __u16 heads; /* number of heads */
- __u32 hidden; /* hidden sectors (unused) */
- __u32 total_sect; /* number of sectors (if sectors == 0) */
-
- __u8 drive_number; /* Logical Drive Number */
- __u8 reserved2; /* Unused */
-
- __u8 extended_sig; /* Extended Signature (0x29) */
- __u32 serial; /* Serial number */
- __u8 label[11]; /* FS label */
- __u8 fs_type[8]; /* FS Type */
+ uint8_t sector_size[2]; /* bytes per logical sector */
+ uint8_t cluster_size; /* sectors/cluster */
+ uint16_t reserved; /* reserved sectors */
+ uint8_t fats; /* number of FATs */
+ uint8_t dir_entries[2]; /* root directory entries */
+ uint8_t sectors[2]; /* number of sectors */
+ uint8_t media; /* media code (unused) */
+ uint16_t fat_length; /* sectors/FAT */
+ uint16_t secs_track; /* sectors per track */
+ uint16_t heads; /* number of heads */
+ uint32_t hidden; /* hidden sectors (unused) */
+ uint32_t total_sect; /* number of sectors (if sectors == 0) */
+
+ uint8_t drive_number; /* Logical Drive Number */
+ uint8_t reserved2; /* Unused */
+
+ uint8_t extended_sig; /* Extended Signature (0x29) */
+ uint32_t serial; /* Serial number */
+ uint8_t label[11]; /* FS label */
+ uint8_t fs_type[8]; /* FS Type */
/* fill up to 512 bytes */
- __u8 junk[450];
+ uint8_t junk[450];
} __attribute__ ((packed));
struct info_sector {
- __u32 magic; /* Magic for info sector ('RRaA') */
- __u8 junk[0x1dc];
- __u32 reserved1; /* Nothing as far as I can tell */
- __u32 signature; /* 0x61417272 ('rrAa') */
- __u32 free_clusters; /* Free cluster count. -1 if unknown */
- __u32 next_cluster; /* Most recently allocated cluster. */
- __u32 reserved2[3];
- __u16 reserved3;
- __u16 boot_sign;
+ uint32_t magic; /* Magic for info sector ('RRaA') */
+ uint8_t junk[0x1dc];
+ uint32_t reserved1; /* Nothing as far as I can tell */
+ uint32_t signature; /* 0x61417272 ('rrAa') */
+ uint32_t free_clusters; /* Free cluster count. -1 if unknown */
+ uint32_t next_cluster; /* Most recently allocated cluster. */
+ uint32_t reserved2[3];
+ uint16_t reserved3;
+ uint16_t boot_sign;
};
typedef struct {
- __u8 name[8], ext[3]; /* name and extension */
- __u8 attr; /* attribute bits */
- __u8 lcase; /* Case for base and extension */
- __u8 ctime_ms; /* Creation time, milliseconds */
- __u16 ctime; /* Creation time */
- __u16 cdate; /* Creation date */
- __u16 adate; /* Last access date */
- __u16 starthi; /* High 16 bits of cluster in FAT32 */
- __u16 time, date, start; /* time, date and first cluster */
- __u32 size; /* file size (in bytes) */
+ uint8_t name[8], ext[3]; /* name and extension */
+ uint8_t attr; /* attribute bits */
+ uint8_t lcase; /* Case for base and extension */
+ uint8_t ctime_ms; /* Creation time, milliseconds */
+ uint16_t ctime; /* Creation time */
+ uint16_t cdate; /* Creation date */
+ uint16_t adate; /* Last access date */
+ uint16_t starthi; /* High 16 bits of cluster in FAT32 */
+ uint16_t time, date, start; /* time, date and first cluster */
+ uint32_t size; /* file size (in bytes) */
} __attribute__ ((packed)) DIR_ENT;
typedef struct _dos_file {
diff --git a/src/io.c b/src/io.c
index 3755ba5..450432c 100644
--- a/src/io.c
+++ b/src/io.c
@@ -31,7 +31,6 @@
* by Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de> */
#define _LARGEFILE64_SOURCE
-#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
diff --git a/src/lfn.c b/src/lfn.c
index 2e60198..2601172 100644
--- a/src/lfn.c
+++ b/src/lfn.c
@@ -21,6 +21,7 @@
*/
#include <stdio.h>
+#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
@@ -33,14 +34,14 @@
#include "file.h"
typedef struct {
- __u8 id; /* sequence number for slot */
- __u8 name0_4[10]; /* first 5 characters in name */
- __u8 attr; /* attribute byte */
- __u8 reserved; /* always 0 */
- __u8 alias_checksum; /* checksum for 8.3 alias */
- __u8 name5_10[12]; /* 6 more characters in name */
- __u16 start; /* starting cluster number, 0 in long slots */
- __u8 name11_12[4]; /* last 2 characters in name */
+ uint8_t id; /* sequence number for slot */
+ uint8_t name0_4[10]; /* first 5 characters in name */
+ uint8_t attr; /* attribute byte */
+ uint8_t reserved; /* always 0 */
+ uint8_t alias_checksum; /* checksum for 8.3 alias */
+ uint8_t name5_10[12]; /* 6 more characters in name */
+ uint16_t start; /* starting cluster number, 0 in long slots */
+ uint8_t name11_12[4]; /* last 2 characters in name */
} LFN_ENT;
#define LFN_ID_START 0x40
@@ -173,7 +174,7 @@ static void clear_lfn_slots(int start, int end)
void lfn_fix_checksum(loff_t from, loff_t to, const char *short_name)
{
int i;
- __u8 sum;
+ uint8_t sum;
for (sum = 0, i = 0; i < 11; i++)
sum = (((sum & 1) << 7) | ((sum & 0xfe) >> 1)) + short_name[i];
@@ -409,7 +410,7 @@ void lfn_add_slot(DIR_ENT * de, loff_t dir_offset)
char *lfn_get(DIR_ENT * de, loff_t * lfn_offset)
{
char *lfn;
- __u8 sum;
+ uint8_t sum;
int i;
*lfn_offset = 0;
@@ -453,7 +454,7 @@ char *lfn_get(DIR_ENT * de, loff_t * lfn_offset)
return NULL;
case '3':
for (i = 0; i < lfn_parts; ++i) {
- __u8 id = (lfn_parts - i) | (i == 0 ? LFN_ID_START : 0);
+ uint8_t id = (lfn_parts - i) | (i == 0 ? LFN_ID_START : 0);
fs_write(lfn_offsets[i] + offsetof(LFN_ENT, id),
sizeof(id), &id);
}
diff --git a/src/mkfs.fat.c b/src/mkfs.fat.c
index 604b7d0..b38d116 100644
--- a/src/mkfs.fat.c
+++ b/src/mkfs.fat.c
@@ -60,15 +60,15 @@
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/time.h>
-#include <sys/types.h>
#include <unistd.h>
#include <time.h>
#include <errno.h>
#include <ctype.h>
#include <stdint.h>
#include <endian.h>
+#include <getopt.h>
-#include <asm/types.h>
+#include "msdos_fs.h"
/* In earlier versions, an own llseek() was used, but glibc lseek() is
* sufficient (or even better :) for 64 bit offsets in the meantime */
@@ -102,21 +102,6 @@ static inline int cdiv(int a, int b)
return (a + b - 1) / b;
}
-/* MS-DOS filesystem structures -- I included them here instead of
- including linux/msdos_fs.h since that doesn't include some fields we
- need */
-
-#define ATTR_RO 1 /* read-only */
-#define ATTR_HIDDEN 2 /* hidden */
-#define ATTR_SYS 4 /* system */
-#define ATTR_VOLUME 8 /* volume label */
-#define ATTR_DIR 16 /* directory */
-#define ATTR_ARCH 32 /* archived */
-
-#define ATTR_NONE 0 /* no attribute bits */
-#define ATTR_UNUSED (ATTR_VOLUME | ATTR_ARCH | ATTR_SYS | ATTR_HIDDEN)
- /* attribute bits that are copied "as is" */
-
/* FAT values */
#define FAT_EOF (atari_format ? 0x0fffffff : 0x0ffffff8)
#define FAT_BAD 0x0ffffff7
@@ -148,80 +133,67 @@ static inline int cdiv(int a, int b)
* alignments */
struct msdos_volume_info {
- __u8 drive_number; /* BIOS drive number */
- __u8 RESERVED; /* Unused */
- __u8 ext_boot_sign; /* 0x29 if fields below exist (DOS 3.3+) */
- __u8 volume_id[4]; /* Volume ID number */
- __u8 volume_label[11]; /* Volume label */
- __u8 fs_type[8]; /* Typically FAT12 or FAT16 */
+ uint8_t drive_number; /* BIOS drive number */
+ uint8_t RESERVED; /* Unused */
+ uint8_t ext_boot_sign; /* 0x29 if fields below exist (DOS 3.3+) */
+ uint8_t volume_id[4]; /* Volume ID number */
+ uint8_t volume_label[11]; /* Volume label */
+ uint8_t fs_type[8]; /* Typically FAT12 or FAT16 */
} __attribute__ ((packed));
struct msdos_boot_sector {
- __u8 boot_jump[3]; /* Boot strap short or near jump */
- __u8 system_id[8]; /* Name - can be used to special case
+ uint8_t boot_jump[3]; /* Boot strap short or near jump */
+ uint8_t system_id[8]; /* Name - can be used to special case
partition manager volumes */
- __u8 sector_size[2]; /* bytes per logical sector */
- __u8 cluster_size; /* sectors/cluster */
- __u16 reserved; /* reserved sectors */
- __u8 fats; /* number of FATs */
- __u8 dir_entries[2]; /* root directory entries */
- __u8 sectors[2]; /* number of sectors */
- __u8 media; /* media code (unused) */
- __u16 fat_length; /* sectors/FAT */
- __u16 secs_track; /* sectors per track */
- __u16 heads; /* number of heads */
- __u32 hidden; /* hidden sectors (unused) */
- __u32 total_sect; /* number of sectors (if sectors == 0) */
+ uint8_t sector_size[2]; /* bytes per logical sector */
+ uint8_t cluster_size; /* sectors/cluster */
+ uint16_t reserved; /* reserved sectors */
+ uint8_t fats; /* number of FATs */
+ uint8_t dir_entries[2]; /* root directory entries */
+ uint8_t sectors[2]; /* number of sectors */
+ uint8_t media; /* media code (unused) */
+ uint16_t fat_length; /* sectors/FAT */
+ uint16_t secs_track; /* sectors per track */
+ uint16_t heads; /* number of heads */
+ uint32_t hidden; /* hidden sectors (unused) */
+ uint32_t total_sect; /* number of sectors (if sectors == 0) */
union {
struct {
struct msdos_volume_info vi;
- __u8 boot_code[BOOTCODE_SIZE];
+ uint8_t boot_code[BOOTCODE_SIZE];
} __attribute__ ((packed)) _oldfat;
struct {
- __u32 fat32_length; /* sectors/FAT */
- __u16 flags; /* bit 8: fat mirroring, low 4: active fat */
- __u8 version[2]; /* major, minor filesystem version */
- __u32 root_cluster; /* first cluster in root directory */
- __u16 info_sector; /* filesystem info sector */
- __u16 backup_boot; /* backup boot sector */
- __u16 reserved2[6]; /* Unused */
+ uint32_t fat32_length; /* sectors/FAT */
+ uint16_t flags; /* bit 8: fat mirroring, low 4: active fat */
+ uint8_t version[2]; /* major, minor filesystem version */
+ uint32_t root_cluster; /* first cluster in root directory */
+ uint16_t info_sector; /* filesystem info sector */
+ uint16_t backup_boot; /* backup boot sector */
+ uint16_t reserved2[6]; /* Unused */
struct msdos_volume_info vi;
- __u8 boot_code[BOOTCODE_FAT32_SIZE];
+ uint8_t boot_code[BOOTCODE_FAT32_SIZE];
} __attribute__ ((packed)) _fat32;
} __attribute__ ((packed)) fstype;
- __u16 boot_sign;
+ uint16_t boot_sign;
} __attribute__ ((packed));
#define fat32 fstype._fat32
#define oldfat fstype._oldfat
struct fat32_fsinfo {
- __u32 reserved1; /* Nothing as far as I can tell */
- __u32 signature; /* 0x61417272L */
- __u32 free_clusters; /* Free cluster count. -1 if unknown */
- __u32 next_cluster; /* Most recently allocated cluster.
+ uint32_t reserved1; /* Nothing as far as I can tell */
+ uint32_t signature; /* 0x61417272L */
+ uint32_t free_clusters; /* Free cluster count. -1 if unknown */
+ uint32_t next_cluster; /* Most recently allocated cluster.
* Unused under Linux. */
- __u32 reserved2[4];
+ uint32_t reserved2[4];
};
-struct msdos_dir_entry {
- char name[8], ext[3]; /* name and extension */
- __u8 attr; /* attribute bits */
- __u8 lcase; /* Case for base and extension */
- __u8 ctime_ms; /* Creation time, milliseconds */
- __u16 ctime; /* Creation time */
- __u16 cdate; /* Creation date */
- __u16 adate; /* Last access date */
- __u16 starthi; /* high 16 bits of first cl. (FAT32) */
- __u16 time, date, start; /* time, date and first cluster */
- __u32 size; /* file size (in bytes) */
-} __attribute__ ((packed));
-
/* The "boot code" we put into the filesystem... it writes a message and
tells the user to try again */
-char dummy_boot_jump[3] = { 0xeb, 0x3c, 0x90 };
+unsigned char dummy_boot_jump[3] = { 0xeb, 0x3c, 0x90 };
-char dummy_boot_jump_m68k[2] = { 0x60, 0x1c };
+unsigned char dummy_boot_jump_m68k[2] = { 0x60, 0x1c };
#define MSG_OFFSET_OFFSET 3
char dummy_boot_code[BOOTCODE_SIZE] = "\x0e" /* push cs */
@@ -250,14 +222,13 @@ char dummy_boot_code[BOOTCODE_SIZE] = "\x0e" /* push cs */
/* Global variables - the root of all evil :-) - see these and weep! */
-static char *program_name = "mkfs.fat"; /* Name of the program */
+static const char *program_name = "mkfs.fat"; /* Name of the program */
static char *device_name = NULL; /* Name of the device on which to create the filesystem */
static int atari_format = 0; /* Use Atari variation of MS-DOS FS format */
static int check = FALSE; /* Default to no readablity checking */
static int verbose = 0; /* Default to verbose mode off */
static long volume_id; /* Volume ID number */
static time_t create_time; /* Creation time */
-static struct timeval create_timeval; /* Creation time */
static char volume_name[] = NO_NAME; /* Volume name */
static uint64_t blocks; /* Number of blocks in filesystem */
static int sector_size = 512; /* Size of a logical sector */
@@ -290,6 +261,9 @@ static int fat_media_byte = 0; /* media byte in header and starting FAT */
static int malloc_entire_fat = FALSE; /* Whether we should malloc() the entire FAT or not */
static int align_structures = TRUE; /* Whether to enforce alignment */
static int orphaned_sectors = 0; /* Sectors that exist in the last block of filesystem */
+static int invariant = 0; /* Whether to set normally randomized or
+ current time based values to
+ constants */
/* Function prototype definitions */
@@ -700,17 +674,18 @@ def_hd_params:
}
if (size_fat == 32) {
/* For FAT32, try to do the same as M$'s format command
- * (http://technet.microsoft.com/en-us/library/cc938438.aspx):
- * fs size < 8G: 4k clusters
- * fs size < 16G: 8k clusters
- * fs size < 32G: 16k clusters
- * fs size >= 32G: 32k clusters
+ * (see http://www.win.tue.nl/~aeb/linux/fs/fat/fatgen103.pdf p. 20):
+ * fs size <= 260M: 0.5k clusters
+ * fs size <= 8G: 4k clusters
+ * fs size <= 16G: 8k clusters
+ * fs size <= 32G: 16k clusters
+ * fs size > 32G: 32k clusters
*/
uint32_t sz_mb =
(blocks + (1 << (20 - BLOCK_SIZE_BITS)) - 1) >> (20 -
BLOCK_SIZE_BITS);
bs.cluster_size =
- sz_mb >= 32 * 1024 ? 64 : sz_mb >= 16 * 1024 ? 32 : sz_mb >=
+ sz_mb > 32 * 1024 ? 64 : sz_mb > 16 * 1024 ? 32 : sz_mb >
8 * 1024 ? 16 : sz_mb > 260 ? 8 : 1;
} else {
/* FAT12 and FAT16: start at 4 sectors per cluster */
@@ -826,7 +801,7 @@ static void setup_tables(void)
bs.hidden = htole32(hidden_sectors);
else {
/* In Atari format, hidden is a 16 bit field */
- __u16 hidden = htole16(hidden_sectors);
+ uint16_t hidden = htole16(hidden_sectors);
if (hidden_sectors & ~0xffff)
die("#hidden doesn't fit in 16bit field of Atari format\n");
memcpy(&bs.hidden, &hidden, 2);
@@ -1239,7 +1214,10 @@ static void setup_tables(void)
memcpy(de->name, volume_name, 8);
memcpy(de->ext, volume_name + 8, 3);
de->attr = ATTR_VOLUME;
- ctime = localtime(&create_time);
+ if (!invariant)
+ ctime = localtime(&create_time);
+ else
+ ctime = gmtime(&create_time);
de->time = htole16((unsigned short)((ctime->tm_sec >> 1) +
(ctime->tm_min << 5) +
(ctime->tm_hour << 11)));
@@ -1247,7 +1225,7 @@ static void setup_tables(void)
htole16((unsigned short)(ctime->tm_mday +
((ctime->tm_mon + 1) << 5) +
((ctime->tm_year - 80) << 9)));
- de->ctime_ms = 0;
+ de->ctime_cs = 0;
de->ctime = de->time;
de->cdate = de->date;
de->adate = de->date;
@@ -1279,7 +1257,7 @@ static void setup_tables(void)
info->next_cluster = htole32(2);
/* Info sector also must have boot sign */
- *(__u16 *) (info_sector + 0x1fe) = htole16(BOOT_SIGN);
+ *(uint16_t *) (info_sector + 0x1fe) = htole16(BOOT_SIGN);
}
if (!(blank_sector = malloc(sector_size)))
@@ -1357,17 +1335,20 @@ static void write_tables(void)
free(fat); /* Free up the fat table space reserved during setup_tables */
}
-/* Report the command usage and return a failure error code */
+/* Report the command usage and exit with the given error code */
-static void usage(void)
+static void usage(int exitval)
{
- fatal_error("\
+ fprintf(stderr, "\
Usage: mkfs.fat [-a][-A][-c][-C][-v][-I][-l bad-block-file][-b backup-boot-sector]\n\
[-m boot-msg-file][-n volume-name][-i volume-id]\n\
[-s sectors-per-cluster][-S logical-sector-size][-f number-of-FATs]\n\
[-h hidden-sectors][-F fat-size][-r root-dir-entries][-R reserved-sectors]\n\
[-M FAT-media-byte][-D drive_number]\n\
+ [--invariant]\n\
+ [--help]\n\
/dev/name [blocks]\n");
+ exit(exitval);
}
/*
@@ -1412,6 +1393,15 @@ int main(int argc, char **argv)
int create = 0;
uint64_t cblocks = 0;
int min_sector_size;
+ int bad_block_count = 0;
+ struct timeval create_timeval;
+
+ enum {OPT_HELP=1000, OPT_INVARIANT,};
+ const struct option long_options[] = {
+ {"help", no_argument, NULL, OPT_HELP},
+ {"invariant", no_argument, NULL, OPT_INVARIANT},
+ {0,}
+ };
if (argc && *argv) { /* What's the program name? */
char *p;
@@ -1427,7 +1417,8 @@ int main(int argc, char **argv)
printf("mkfs.fat " VERSION " (" VERSION_DATE ")\n");
- while ((c = getopt(argc, argv, "aAb:cCf:D:F:Ii:l:m:M:n:r:R:s:S:h:v")) != EOF)
+ while ((c = getopt_long(argc, argv, "aAb:cCf:D:F:Ii:l:m:M:n:r:R:s:S:h:v",
+ long_options, NULL)) != -1)
/* Scan the command line for options */
switch (c) {
case 'A': /* toggle Atari format */
@@ -1442,7 +1433,7 @@ int main(int argc, char **argv)
backup_boot = (int)strtol(optarg, &tmp, 0);
if (*tmp || backup_boot < 2 || backup_boot > 0xffff) {
printf("Bad location for backup boot sector : %s\n", optarg);
- usage();
+ usage(1);
}
break;
@@ -1459,7 +1450,7 @@ int main(int argc, char **argv)
drive_number_option = (int) strtol (optarg, &tmp, 0);
if (*tmp || (drive_number_option != 0 && drive_number_option != 0x80)) {
printf ("Drive number must be 0 or 0x80: %s\n", optarg);
- usage ();
+ usage(1);
}
drive_number_by_user=1;
break;
@@ -1468,7 +1459,7 @@ int main(int argc, char **argv)
nr_fats = (int)strtol(optarg, &tmp, 0);
if (*tmp || nr_fats < 1 || nr_fats > 4) {
printf("Bad number of FATs : %s\n", optarg);
- usage();
+ usage(1);
}
break;
@@ -1476,7 +1467,7 @@ int main(int argc, char **argv)
size_fat = (int)strtol(optarg, &tmp, 0);
if (*tmp || (size_fat != 12 && size_fat != 16 && size_fat != 32)) {
printf("Bad FAT type : %s\n", optarg);
- usage();
+ usage(1);
}
size_fat_by_user = 1;
break;
@@ -1485,7 +1476,7 @@ int main(int argc, char **argv)
hidden_sectors = (int)strtol(optarg, &tmp, 0);
if (*tmp || hidden_sectors < 0) {
printf("Bad number of hidden sectors : %s\n", optarg);
- usage();
+ usage(1);
}
hidden_sectors_by_user = 1;
break;
@@ -1498,7 +1489,7 @@ int main(int argc, char **argv)
volume_id = strtoul(optarg, &tmp, 16);
if (*tmp) {
printf("Volume ID must be a hexadecimal number\n");
- usage();
+ usage(1);
}
break;
@@ -1568,10 +1559,14 @@ int main(int argc, char **argv)
break;
case 'M': /* M : FAT Media byte */
- fat_media_byte = (int) strtol (optarg, &tmp, 0);
- if (*tmp || fat_media_byte < 248 || fat_media_byte > 255) {
- printf ("FAT Media byte must be between 0xF8 and 0xFF : %s\n", optarg);
- usage ();
+ fat_media_byte = (int)strtol(optarg, &tmp, 0);
+ if (*tmp) {
+ printf("Bad number for media descriptor : %s\n", optarg);
+ usage(1);
+ }
+ if (fat_media_byte != 0xf0 && (fat_media_byte < 0xf8 || fat_media_byte > 0xff)) {
+ printf("FAT Media byte must either be between 0xF8 and 0xFF or be 0xF0 : %s\n", optarg);
+ usage(1);
}
break;
@@ -1591,7 +1586,7 @@ int main(int argc, char **argv)
root_dir_entries = (int)strtol(optarg, &tmp, 0);
if (*tmp || root_dir_entries < 16 || root_dir_entries > 32768) {
printf("Bad number of root directory entries : %s\n", optarg);
- usage();
+ usage(1);
}
break;
@@ -1599,7 +1594,7 @@ int main(int argc, char **argv)
reserved_sectors = (int)strtol(optarg, &tmp, 0);
if (*tmp || reserved_sectors < 1 || reserved_sectors > 0xffff) {
printf("Bad number of reserved sectors : %s\n", optarg);
- usage();
+ usage(1);
}
break;
@@ -1612,7 +1607,7 @@ int main(int argc, char **argv)
&& sectors_per_cluster != 64
&& sectors_per_cluster != 128)) {
printf("Bad number of sectors per cluster : %s\n", optarg);
- usage();
+ usage(1);
}
break;
@@ -1623,7 +1618,7 @@ int main(int argc, char **argv)
sector_size != 8192 && sector_size != 16384 &&
sector_size != 32768)) {
printf("Bad logical sector size : %s\n", optarg);
- usage();
+ usage(1);
}
sector_size_set = 1;
break;
@@ -1632,16 +1627,26 @@ int main(int argc, char **argv)
++verbose;
break;
+ case OPT_HELP:
+ usage(0);
+ break;
+
+ case OPT_INVARIANT:
+ invariant = 1;
+ volume_id = 0x1234abcd;
+ create_time = 1426325213;
+ break;
+
default:
printf("Unknown option: %c\n", c);
- usage();
+ usage(1);
}
if (optind < argc) {
device_name = argv[optind]; /* Determine the number of blocks in the FS */
if (!device_name) {
printf("No device specified.\n");
- usage();
+ usage(1);
}
if (!create)
@@ -1653,18 +1658,19 @@ int main(int argc, char **argv)
fprintf(stderr, "Warning: block count mismatch: ");
fprintf(stderr, "found %llu but assuming %llu.\n", (unsigned long long)cblocks, (unsigned long long)blocks);
}
+ if (*tmp)
+ bad_block_count = 1;
} else if (optind == argc - 1) { /* Or use value found */
if (create)
die("Need intended size with -C.");
blocks = cblocks;
- tmp = "";
} else {
fprintf(stderr, "No device specified!\n");
- usage();
+ usage(1);
}
- if (*tmp) {
+ if (bad_block_count) {
printf("Bad block count : %s\n", argv[optind + 1]);
- usage();
+ usage(1);
}
if (check && listfile) /* Auto and specified bad block handling are mutually */
@@ -1679,20 +1685,17 @@ int main(int argc, char **argv)
exit(1); /* The error exit code is 1! */
}
} else {
- loff_t offset = blocks * BLOCK_SIZE - 1;
- char null = 0;
/* create the file */
- dev = open(device_name, O_EXCL | O_RDWR | O_CREAT | O_TRUNC, 0666);
- if (dev < 0)
- die("unable to create %s");
- /* seek to the intended end-1, and write one byte. this creates a
- * sparse-as-possible file of appropriate size. */
- if (llseek(dev, offset, SEEK_SET) != offset)
- die("seek failed");
- if (write(dev, &null, 1) < 0)
- die("write failed");
- if (llseek(dev, 0, SEEK_SET) != 0)
- die("seek failed");
+ dev = open(device_name, O_EXCL | O_RDWR | O_CREAT, 0666);
+ if (dev < 0) {
+ if (errno == EEXIST)
+ die("file %s already exists");
+ else
+ die("unable to create %s");
+ }
+ /* expand to desired size */
+ if (ftruncate(dev, blocks * BLOCK_SIZE))
+ die("unable to resize %s");
}
if (fstat(dev, &statbuf) < 0)
diff --git a/src/msdos_fs.h b/src/msdos_fs.h
new file mode 100644
index 0000000..54b2a34
--- /dev/null
+++ b/src/msdos_fs.h
@@ -0,0 +1,61 @@
+/* msdos_fs.h - MS-DOS filesystem constants/structures
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ The complete text of the GNU General Public License
+ can be found in /usr/share/common-licenses/GPL-3 file.
+*/
+
+#ifndef _MSDOS_FS_H
+#define _MSDOS_FS_H
+
+#include <stdint.h>
+
+#define SECTOR_SIZE 512 /* sector size (bytes) */
+#define MSDOS_DPS (SECTOR_SIZE / sizeof(struct msdos_dir_entry))
+#define MSDOS_DPS_BITS 4 /* log2(MSDOS_DPS) */
+#define MSDOS_DIR_BITS 5 /* log2(sizeof(struct msdos_dir_entry)) */
+
+#define ATTR_NONE 0 /* no attribute bits */
+#define ATTR_RO 1 /* read-only */
+#define ATTR_HIDDEN 2 /* hidden */
+#define ATTR_SYS 4 /* system */
+#define ATTR_VOLUME 8 /* volume label */
+#define ATTR_DIR 16 /* directory */
+#define ATTR_ARCH 32 /* archived */
+
+/* attribute bits that are copied "as is" */
+#define ATTR_UNUSED (ATTR_VOLUME | ATTR_ARCH | ATTR_SYS | ATTR_HIDDEN)
+
+#define DELETED_FLAG 0xe5 /* marks file as deleted when in name[0] */
+#define IS_FREE(n) (!*(n) || *(n) == DELETED_FLAG)
+
+#define MSDOS_NAME 11 /* maximum name length */
+#define MSDOS_DOT ". " /* ".", padded to MSDOS_NAME chars */
+#define MSDOS_DOTDOT ".. " /* "..", padded to MSDOS_NAME chars */
+
+struct msdos_dir_entry {
+ uint8_t name[8], ext[3]; /* name and extension */
+ uint8_t attr; /* attribute bits */
+ uint8_t lcase; /* Case for base and extension */
+ uint8_t ctime_cs; /* Creation time, centiseconds (0-199) */
+ uint16_t ctime; /* Creation time */
+ uint16_t cdate; /* Creation date */
+ uint16_t adate; /* Last access date */
+ uint16_t starthi; /* High 16 bits of cluster in FAT32 */
+ uint16_t time, date, start; /* time, date and first cluster */
+ uint32_t size; /* file size (in bytes) */
+} __attribute__ ((packed));
+
+#endif /* _MSDOS_FS_H */
diff --git a/src/version.h b/src/version.h
index 4ccc759..f0716d3 100644
--- a/src/version.h
+++ b/src/version.h
@@ -23,7 +23,7 @@
#ifndef _version_h
#define _version_h
-#define VERSION "3.0.27"
-#define VERSION_DATE "2014-11-12"
+#define VERSION "3.0.28"
+#define VERSION_DATE "2015-05-16"
#endif