+\"
+\" This file is part of vbig.
+\" Copyright (C) 2011 Richard Kettlewell
+\" Copyright (C) 2013 Ian Jackson
+\"
+\" 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/>.
+\"
.TH vbig 1
.SH NAME
vbig \- create or verify a large but pseudo-random file
.SH SYNOPSIS
-\fBvbig \fR[\fB--seed \fRSEED\fR] \fB--create\fR|\fB--verify \fIPATH SIZE
+\fBvbig \fR[\fB--seed \fRSEED\fR] [\fB--both\fR|\fB--create\fR|\fB--verify\fR] \fIPATH \fR[\fISIZE\fR]
.br
-\fBvbig --help
+\fBvbig \-\-help
.br
-\fBvbig --version
+\fBvbig \-\-version
.SH DESCRIPTION
-\fBvbig\fR either creates a file of specified size full of predictable
-psuedo-random data, or verifies that it has the expected contents.
+\fBvbig\fR creates a file of specified size full of predictable
+psuedo-random data, and/or verifies that it has the expected contents.
The intended use is to test whether storage media really do what they
say on the tin.
.PP
+By default vbig will generate a new random seed, write data to the
+specified file or device until the device is full, read the data back
+to check that everything written was properly stored, and report
+the device's size. Ideally, if you have privilege to do so, you
+would also specify \fB-f\fR (to flush the operating system disk
+cache between the write and read). Also you probably want \fB-p\fR.
+.PP
+\fBPATH\fR can refer to an ordinary file on a mounted file system,
+which vbig will create or truncate as necessary, or a block device.
+Note that if its a file vbig won't delete it after it's done. Also,
+be careful when specifying a block device - don't accidentally
+overwrite a filesystem you care about! vbig doesn't do sanity checks
+and is as dangerous as \fBdd\fR.
+.PP
\fISIZE\fR may end with \fBK\fR, \fBM\fR or \fBG\fR to select (binary)
kilobytes, megabytes or gigabytes.
+The size is mandatory when creating a file but optional when verifying
+it, unless \-\-entire is specified. If \fBSIZE\fR not specified when
+writing-then-verifying, it is as if \fB\-\-entire\fR was specified.
+.PP
+If no seed or seed file is specified:
+in \fB--both\fR mode a fresh random seed is read from the system's
+random number generator; in other modes a fixed default seed is used.
.SH OPTIONS
.TP
-.B --seed
+.B --seed\fR, \fB-s \fISEED
Specifies the random seed to use.
Optional.
.TP
-.B --create
+.B --seed-file\fR, \fB-S \fISEED-FILE
+Specifies wehre the random seed should be read from. The
+first \fISEED-LENGTH\fR bytes will be used, or the whole file
+if it is shorter.
+.TP
+.B --seed-length\fR, \fB-L \fISEED-LENGTH
+Specifies the (maximum) seed length in bytes.
+Optional; default is 2048.
+.TP
+.B --both\fR, \fB-b
+Selects both mode.
+\fIPATH\fR will be filled with \fISIZE\fR psuedo-random bytes and
+then read to check that it contains the data just written.
+This is the default.
+.TP
+.B --create\fR, \fB-c
Selects create mode.
\fIPATH\fR will be filled with \fISIZE\fR psuedo-random bytes.
.TP
-.B --verify
+.B --verify\fR, \fB-v
Selects verify mode.
Checks that \fIPATH\fR has exactly the contents that would be produced
by the equivalent \fB--create\fR call.
.TP
-.B --help
+.B --flush\fR, \fB-f
+Flush cached data after creating the file or before verifying it.
+On some platforms, only root can use this option.
+.TP
+.B --progress\fR, \fB-p
+Show the progress (in bytes) on stdout.
+.TP
+.B --entire\fR, \fB-e
+When writing, keep going until the device is full (No space left
+on device). When reading, keep going until the end of the file
+or device. \fISIZE\fR should not be specified. The actual size
+written or verified will be printed to stdout.
+.TP
+.B --help\fR, \fB-h
Displays a usage message.
.TP
-.B --version
+.B --version\fR, \fB-V
Displays the version strings.
.SH AUTHOR
Richard Kettlewell <rjk@greenend.org.uk>