Commit 66ee8158 authored by Karel Zak's avatar Karel Zak

Imported from util-linux-2.10s tarball.

parent 22853e4a
util-linux 2.10s:
* Danish messages (Claus Hindsgaul)
* fixes to make gcc happy (Joseph S. Myers)
* fix for more on parisc (Richard Hirst)
* change rdev to search subdirectories of /dev (Paul Clements)
* ul fix (Masao Kawamura) - set columns correctly
* cal fix (Brendan Kehoe) - don't overflow weekday array in Gaelic
* fdisk fix (niles@scyld.com) - flush stdout
* fdisk fix - don't forget to write out empty label
* login: make default tty mode 0600
* script: refuse to write typescript if that is a symlink
* script: accept -V to output version
* whereis: also search /usr/share/man.
* hwclock: improve locale handling
* hwclock: fix for Nautilus (Neoklis Kyriazis)
* isosize: new
util-linux 2.10r:
* mount: support mount by uuid or label for xfs (Nathan Scott)
* mount: added probe for minix on bigendian systems (Nathan Scott)
* mount: added probes for cramfs, hfs, hpfs and adfs (Sepp Wijnands)
* mount: change setup; let umount remove at most one line from /etc/mtab
* mount: improve man page
* more, col, colcrt, colrm, column, ul: nls improvements (Masao Kawamura)
util-linux 2.10q:
* mount: accept nonnumeric uid= and gid= options
* write and wall: security improvement
* fixed fdformat flaw (Werner Almesberger)
* use right mountport upon umount (Glenn Lingle)
* simpleinit / need / initctl stuff (Richard Gooch)
* Portuguese messages (Rodrigo Stulzer Lopes et al.)
util-linux 2.10p:
* mount: don't set up a loop file with -o loop,remount (Marc Mutz)
* fdisk: changes for sectorsize different from 512
* more: standout fix (Paul Vojta)
* more: improve usage message (Lincoln Myers)
* logger: Added -d option to use datagrams (Gerwin Pfab)
* cal: Added -3 option to also print prev/next month (Michael Charles Pruznick)
* French messages (Christophe Merlet)
* Japanese messages (Daisuke Yamashita)
util-linux 2.10o:
* fdformat: fixed to work with kernel 2.4.0test6 (Marek Wojtowicz)
* losetup: also return status when only showing loop device status (ewt)
* mount: do not retry ro if mount was ro; improve error message
* login: not installed suid
* getopt: by default install aux files in /usr/share/misc
util-linux 2.10n:
* added blockdev.8
* change to elvtune (andrea)
* fixed overrun in agetty (vii@penguinpowered.com)
* shutdown: prefer umounting by mount point (rgooch)
* fdisk: added plan9
* fdisk: remove empty links in chain of extended partitions
* mount: define ALWAYS_STAT
* mount: add replace, after, before, over, bind
* umount: also free loop device when not writing mtab
* lomount: try both /dev/loopN and /dev/loop/N
* hwclock: handle both /dev/rtc and /dev/efirtc (Bill Nottingham)
* script: added -f (flush) option (Ivan Schreter)
* script: added -q (quiet) option (Per Andreas Buer)
* getopt: updated to version 1.1.0 (Frodo Looijaard)
* Czech messages (Jiri Pavlovsky)
util-linux 2.10m:
* chfn fix when PAM is used (Martin-D. Lacasse)
......@@ -6,6 +79,7 @@ util-linux 2.10m:
* mount new option -l: also print label when listing mounts
* mount add heuristic for xfs (Martin K. Petersen)
* mount UUID and label cache (Erik Troan)
* mount improve check for `already mounted' in case of label or uuid
* fdisk partition names more devfs-friendly
* fdisk bsdlabel large disk support
* setterm.1: options documented (Colin Watson)
......
......@@ -37,6 +37,10 @@ To install from source:
If you have compilation problems: tell util-linux@math.uio.no about it.
Compilation will fail on a minix filesystem with 14-byte filenames
since for example mount_guess_fstype.h, mount_guess_fstype.c and
mount_guess_fstype.o will be the same file. (However, 30 bytes suffice.)
A glibc header bug causes
/usr/include/bits/string2.h:419: warning: pointer of type `void *'
used in arithmetic
......@@ -50,6 +54,7 @@ broken.
Several old libc have complaints like
/usr/include/sys/syslog.h:71: warning: missing braces around initializer
/usr/include/sys/syslog.h:87: warning: aggregate has a partly bracketed initializer
/usr/include/rpc/xdr.h:103: warning: function declaration isn't a prototype
/usr/include/rpc/auth.h:86: warning: function declaration isn't a prototype
/usr/include/rpc/svc.h:79: warning: function declaration isn't a prototype
......
Maintainer: Andries Brouwer (aeb@cwi.nl)
Maintainer: Andries Brouwer <aeb@cwi.nl>
Maintainer address: util-linux@math.uio.no
Maintainer of simpleinit: Richard Gooch <rgooch@atnf.csiro.au>
......@@ -7,11 +7,11 @@
# - set USE_TTY_GROUP=no
# - define DESTDIR
# Select for CPU one of intel, alpha, sparc, arm, m68k, mips
CPU=$(shell uname -m | sed 's/i.86/intel/;s/arm.*/arm/')
# define where is locale directrory (default /usr/share/locale)
LOCALEDIR=/usr/share/locale
# Select for ARCH one of intel, alpha, sparc, arm, m68k, mips
# Select for CPU i386 if the binaries must be able to run on an intel 386
# (by default i486 code is generated, see below)
CPU=$(shell uname -m)
ARCH=$(shell echo $(CPU) | sed 's/i.86/intel/;s/arm.*/arm/')
# If HAVE_PAM is set to "yes", then login, chfn, chsh, and newgrp
# will use PAM for authentication. Additionally, passwd will not be
......@@ -65,6 +65,12 @@ HAVE_GETTY=no
# properly.]
USE_TTY_GROUP=yes
# If ALLOW_VCS_USE is set to "yes", then login will chown /dev/vcsN
# to the current user, allowing her to make a screendump and do other
# nifty things on the console, but also allowing him to keep an open
# file descriptor after logging out to trick the next user.
ALLOW_VCS_USE=yes
# If HAVE_RESET is set to "yes", then reset won't be installed. The version
# of reset that comes with the ncurses package is less aggressive.
HAVE_RESET=yes
......@@ -81,40 +87,27 @@ HAVE_TSORT=no
# If HAVE_FDUTILS is set to "yes", then setfdprm won't be installed.
HAVE_FDUTILS=no
# Get CC from environment if defined
ifeq "$(CC)" ""
CC= gcc
endif
# Different optimizations for different cpus.
# Change the -m486 part if you have a 386.
ifeq "$(CPU)" "intel"
OPT= -pipe -O2 -m486 -fomit-frame-pointer
ifeq "$(ARCH)" "intel"
ifeq "$(CPU)" "i386"
OPT= -pipe -O2 -m386 -fomit-frame-pointer
else
OPT= -pipe -O2 -m486 -fomit-frame-pointer
endif
else
ifeq "$(CPU)" "arm"
ifeq "$(ARCH)" "arm"
OPT= -pipe -O2 -fsigned-char -fomit-frame-pointer
else
OPT= -O2 -fomit-frame-pointer
endif
endif
LDFLAGS = -s
WARNFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes
LIB=../lib
ERR_O=$(LIB)/err.o
CFLAGS = $(OPT) -I. -I$(LIB) $(WARNFLAGS) \
$(CURSESFLAGS) $(SLANGFLAGS) \
$(EXTRACFLAGS) \
-DSBINDIR=\"$(SBINDIR)\" \
-DUSRSBINDIR=\"$(USRSBINDIR)\" \
-DLOGDIR=\"$(LOGDIR)\" \
-DVARPATH=\"$(VARPATH)\" \
-DLOCALEDIR=\"$(LOCALEDIR)\"
# Set HAVE_SLANG to yes if you have slang (and prefer to use that for cfdisk)
# (If neither HAVE_NCURSES nor HAVE_SLANG is defined, cfdisk is not made.)
# HAVE_SLANG=yes
......@@ -125,7 +118,6 @@ CFLAGS = $(OPT) -I. -I$(LIB) $(WARNFLAGS) \
# (no extra definition required).
LIBSLANG=-lslang
DEVDIR= $(DESTDIR)/dev
ETCDIR= $(DESTDIR)/etc
SBINDIR= $(DESTDIR)/sbin
......@@ -133,6 +125,8 @@ USRSBINDIR= $(DESTDIR)/usr/sbin
USRLIBDIR= $(DESTDIR)/usr/lib
USRBINDIR= $(DESTDIR)/usr/bin
USRGAMESDIR= $(DESTDIR)/usr/games
USRSHAREMISCDIR=$(DESTDIR)/usr/share/misc
LOCALEDIR= $(DESTDIR)/usr/share/locale
BINDIR= $(DESTDIR)/bin
VARPATH= $(DESTDIR)/var
LOGDIR= $(DESTDIR)/var/log
......@@ -153,8 +147,8 @@ FSCKDIR= $(SBINDIR)
# Directory for passwd
PASSWDDIR= $(USRBINDIR)
# Directory for help file for more. Some may want /usr/share/misc .
MOREHELPDIR= $(USRLIBDIR)
# Directory for help file for more. Used to be /usr/lib.
MOREHELPDIR= $(USRSHAREMISCDIR)
# Modes
DIRMODE= 755
......@@ -172,6 +166,15 @@ INSTALLMAN= $(INSTALL) -m $(MANMODE)
INSTALLDAT= $(INSTALL) -m $(DATMODE)
INSTALLSUID= $(INSTALL) -m $(SUIDMODE) -o root
CFLAGS := $(CFLAGS) $(OPT) -I$(LIB) $(WARNFLAGS) \
$(CURSESFLAGS) $(SLANGFLAGS) \
-DSBINDIR=\"$(SBINDIR)\" \
-DUSRSBINDIR=\"$(USRSBINDIR)\" \
-DLOGDIR=\"$(LOGDIR)\" \
-DVARPATH=\"$(VARPATH)\" \
-DLOCALEDIR=\"$(LOCALEDIR)\"
%.o: %.c
$(CC) -c $(CFLAGS) $< -o $@
......
......@@ -10,14 +10,14 @@ include ./MCONFIG
SUBDIRS=po \
lib \
getopt-1.0.3b \
getopt-1.1.0a \
disk-utils \
games \
login-utils \
misc-utils \
mount \
fdisk \
clock \
hwclock \
sys-utils \
text-utils \
kbd
......
util-linux is a random collection of Linux utilities
The stuff in the subdirectories mount, fdisk, disk-utils, text-utils,
misc-utils, sys-utils, getopt-* should be rather distribution-neutral,
and installing it does no harm.
On the other hand, the stuff in login-utils defines initial boot-time
stuff, things that are done in different ways by different distributions.
If you install it, your machine may not boot anymore.
No RPMs are provided - get yours from your distributor.
This diff is collapsed.
......@@ -8,16 +8,17 @@ include ../MCONFIG
# Where to put man pages?
MAN8= fdformat.8 mkfs.8 mkswap.8 elvtune.8 fsck.minix.8 mkfs.minix.8 mkfs.bfs.8
MAN8= blockdev.8 fdformat.8 isosize.8 mkfs.8 mkswap.8 elvtune.8 \
fsck.minix.8 mkfs.minix.8 mkfs.bfs.8
# Where to put binaries?
# See the "install" rule for the links. . .
SBIN= mkfs mkswap blockdev elvtune fsck.minix mkfs.minix mkfs.bfs
SBIN= mkfs mkswap blockdev elvtune fsck.minix mkfs.minix mkfs.bfs
USRBIN= fdformat
USRBIN= fdformat isosize
ETC= fdprm
ETC= fdprm
ifneq "$(HAVE_FDUTILS)" "yes"
USRBIN:=$(USRBIN) setfdprm
......@@ -47,4 +48,4 @@ endif
.PHONY: clean
clean:
-rm -f *.o *~ core $(SBIN) $(USRBIN)
-rm -f *.o *~ core $(SBIN) $(USRBIN) raw
.\" -*- nroff -*-
.\" Copyright 1998 Andries E. Brouwer (aeb@cwi.nl)
.\"
.\" May be distributed under the GNU General Public License
.TH BLOCKDEV 8 "May 2000" ""
.SH NAME
blockdev \- call block device ioctls from the command line
.SH SYNOPSIS
.B blockdev
.RI [ options ]
.I commands devices
.SH DESCRIPTION
The utility
.B blockdev
allows one to call block device ioctls from the command line.
.SH OPTIONS
.TP
.B \-V
Print version and exit.
.TP
.B \-q
Be quiet.
.TP
.B \-v
Be verbose.
.SH COMMANDS
.TP
.B \--setro
Set read-only.
.TP
.B \--setrw
Set read-write.
.TP
.B \--getro
Get read-only. Print 1 if the device is read-only, 0 otherwise.
.TP
.B \--getss
Print sectorsize in bytes - usually 512.
.TP
.B \--getsize
Print device capacity (in 512-byte sectors).
.TP
.BI \--setra " N"
Set readahead to
.I N
512-byte sectors.
.TP
.B \--getra
Print readahead (in 512-byte sectors).
.TP
.B \--flushbufs
Flush buffers.
.TP
.B \--rereadpt
Reread partition table.
......@@ -26,28 +26,33 @@
#include <sys/ioctl.h>
#include <unistd.h>
#include <stdlib.h>
#define BLKELVGET _IO(0x12,106)/* elevator get */
#define BLKELVSET _IO(0x12,107)/* elevator set */
#include "nls.h"
/* this has to match with the kernel structure */
/* current version for ac19 and 2.2.16 */
typedef struct blkelv_ioctl_arg_s {
void * queue_ID;
int queue_ID;
int read_latency;
int write_latency;
int max_bomb_segments;
} blkelv_ioctl_arg_t;
#define BLKELVGET _IOR(0x12,106,sizeof(blkelv_ioctl_arg_t))
#define BLKELVSET _IOW(0x12,107,sizeof(blkelv_ioctl_arg_t))
static void
usage(void) {
fprintf(stderr, "usage:\n\telvtune [-r r_lat] [-w w_lat] [-b b_lat] /dev/blkdev1 [/dev/blkdev2...]\n");
fprintf(stderr, "elvtune (%s)\n", util_linux_version);
fprintf(stderr, _("usage:\n"));
fprintf(stderr, "\telvtune [-r r_lat] [-w w_lat] [-b b_lat]"
" /dev/blkdev1 [/dev/blkdev2...]\n");
fprintf(stderr, "\telvtune -h\n");
fprintf(stderr, "\telvtune -v\n");
}
static void
version(void) {
fprintf(stderr, "elvtune: version 1.0\n");
fprintf(stderr, "elvtune (%s)\n", util_linux_version);
}
int
......@@ -128,7 +133,7 @@ main(int argc, char * argv[]) {
}
}
printf("\n%s elevator ID %p\n", devname, elevator.queue_ID);
printf("\n%s elevator ID\t\t%d\n", devname, elevator.queue_ID);
printf("\tread_latency:\t\t%d\n", elevator.read_latency);
printf("\twrite_latency:\t\t%d\n", elevator.write_latency);
printf("\tmax_bomb_segments:\t%d\n\n", elevator.max_bomb_segments);
......
/* fdformat.c - Low-level formats a floppy disk. */
/* fdformat.c - Low-level formats a floppy disk - Werner Almesberger */
/* 1999-02-22 Arkadiusz Mikiewicz <misiek@misiek.eu.org>
* - added Native Language Support
......@@ -135,11 +135,11 @@ int main(int argc,char **argv)
exit(1);
}
if (access(argv[1],W_OK) < 0) PERROR(argv[1]);
if ((ctrl = open(argv[1],3)) < 0) PERROR(argv[1]);
if ((ctrl = open(argv[1],O_WRONLY)) < 0) PERROR(argv[1]);
if (ioctl(ctrl,FDGETPRM,(long) &param) < 0)
PERROR(_("Could not determine current format type"));
printf(_("%s-sided, %d tracks, %d sec/track. Total capacity %d kB.\n"),
param.head ? _("Double") : _("Single"),
(param.head == 2) ? _("Double") : _("Single"),
param.track, param.sect,param.size >> 1);
format_disk(argv[1]);
if (verify) verify_disk(argv[1]);
......
.TH ISOSIZE "8" "December 2000" "sg3_utils-0.91" SG_UTILS
.SH NAME
isosize \- outputs the length of a iso9660 file system
.SH SYNOPSIS
.B isosize
[\fI-x\fR] [\fI-d <num>\fR] \fI<iso9660_image_file>\fR...
.SH DESCRIPTION
.\" Add any additional description here
.PP
This command outputs the length of an iso9660 file system that
is contained in given file. That file may be a normal file or
a block device (e.g. /dev/hdd or /dev/sr0). In the absence of
any switches (or errors) it will output the size of the iso9660
file system in bytes. This can now be a large number (> > 4 GB).
.TP
-x
output in humanly readable form the block count and the block
size. Output uses the term "sectors" for "blocks".
.TP
-d <num>
only has affect when "-x" is not given. The number output (if no errors)
is the iso9660 file size in bytes divided by <num>. So if <num> is
the block size then the output number will be the block count.
.PP
The size of the file (or block device) holding a iso9660 file
system can be marginally larger than the actual size of the
iso9660 file system. One reason for this is that cd writers
are allowed to add "run out" sectors at the end of a iso9660
image.
/*
* isosize.c - Andries Brouwer, 000608
*
* use header info to find size of iso9660 file system
* output a number - useful in scripts
*
* Synopsis:
* isosize [-x] [-d <num>] <filename>
* where "-x" gives length in sectors and sector size while
* without this argument the size is given in bytes
* without "-x" gives length in bytes unless "-d <num>" is
* given. In the latter case the length in bytes divided
* by <num> is given
*
* Version 2.03 2000/12/21
* - add "-d <num>" option and use long long to fix things > 2 GB
* Version 2.02 2000/10/11
* - error messages on IO failures [D. Gilbert]
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include "nls.h"
#define ISODCL(from, to) (to - from + 1)
int xflag;
static int
isonum_721 (unsigned char * p) {
return ((p[0] & 0xff)
| ((p[1] & 0xff) << 8));
}
static int
isonum_722 (unsigned char * p) {
return ((p[1] & 0xff)
| ((p[0] & 0xff) << 8));
}
static int
isonum_723 (unsigned char * p) {
int le = isonum_721 (p);
int be = isonum_722 (p+2);
if (xflag && le != be)
/* translation is useless */
fprintf(stderr, "723error: le=%d be=%d\n", le, be);
return (le);
}
static int
isonum_731 (unsigned char * p) {
return ((p[0] & 0xff)
| ((p[1] & 0xff) << 8)
| ((p[2] & 0xff) << 16)
| ((p[3] & 0xff) << 24));
}
static int
isonum_732 (unsigned char * p) {
return ((p[3] & 0xff)
| ((p[2] & 0xff) << 8)
| ((p[1] & 0xff) << 16)
| ((p[0] & 0xff) << 24));
}
static int
isonum_733 (unsigned char * p) {
int le = isonum_731 (p);
int be = isonum_732 (p+4);
if (xflag && le != be)
/* translation is useless */
fprintf(stderr, "733error: le=%d be=%d\n", le, be);
return (le);
}
struct iso_primary_descriptor {
unsigned char type [ISODCL ( 1, 1)]; /* 711 */
unsigned char id [ISODCL ( 2, 6)];
unsigned char version [ISODCL ( 7, 7)]; /* 711 */
unsigned char unused1 [ISODCL ( 8, 8)];
unsigned char system_id [ISODCL ( 9, 40)]; /* auchars */
unsigned char volume_id [ISODCL ( 41, 72)]; /* duchars */
unsigned char unused2 [ISODCL ( 73, 80)];
unsigned char volume_space_size [ISODCL ( 81, 88)]; /* 733 */
unsigned char unused3 [ISODCL ( 89, 120)];
unsigned char volume_set_size [ISODCL (121, 124)]; /* 723 */
unsigned char volume_sequence_number [ISODCL (125, 128)]; /* 723 */
unsigned char logical_block_size [ISODCL (129, 132)]; /* 723 */
unsigned char path_table_size [ISODCL (133, 140)]; /* 733 */
unsigned char type_l_path_table [ISODCL (141, 144)]; /* 731 */
unsigned char opt_type_l_path_table [ISODCL (145, 148)]; /* 731 */
unsigned char type_m_path_table [ISODCL (149, 152)]; /* 732 */
unsigned char opt_type_m_path_table [ISODCL (153, 156)]; /* 732 */
unsigned char root_directory_record [ISODCL (157, 190)]; /* 9.1 */
unsigned char volume_set_id [ISODCL (191, 318)]; /* duchars */
unsigned char publisher_id [ISODCL (319, 446)]; /* achars */
unsigned char preparer_id [ISODCL (447, 574)]; /* achars */
unsigned char application_id [ISODCL (575, 702)]; /* achars */
unsigned char copyright_file_id [ISODCL (703, 739)]; /* 7.5 dchars */
unsigned char abstract_file_id [ISODCL (740, 776)]; /* 7.5 dchars */
unsigned char bibliographic_file_id [ISODCL (777, 813)]; /* 7.5 dchars */
unsigned char creation_date [ISODCL (814, 830)]; /* 8.4.26.1 */
unsigned char modification_date [ISODCL (831, 847)]; /* 8.4.26.1 */
unsigned char expiration_date [ISODCL (848, 864)]; /* 8.4.26.1 */
unsigned char effective_date [ISODCL (865, 881)]; /* 8.4.26.1 */
unsigned char file_structure_version [ISODCL (882, 882)]; /* 711 */
unsigned char unused4 [ISODCL (883, 883)];
unsigned char application_data [ISODCL (884, 1395)];
unsigned char unused5 [ISODCL (1396, 2048)];
};
const char *progname;
int divisor = 0;
static void
isosize(char *filenamep) {
int fd, nsecs, ssize;
struct iso_primary_descriptor ipd;
if ((fd = open(filenamep, O_RDONLY)) < 0) {
perror(filenamep);
fprintf(stderr, _("%s: failed to open: %s\n"),
progname, filenamep);
exit(1);
}
if (lseek(fd, 16 << 11, 0) == (off_t)-1) {
perror("lseek");
fprintf(stderr, _("%s: seek error on %s\n"),
progname, filenamep);
exit(1);
}
if (read(fd, &ipd, sizeof(ipd)) < 0) {
perror("read");
fprintf(stderr, _("%s: read error on %s\n"),
progname, filenamep);
exit(1);
}
nsecs = isonum_733(ipd.volume_space_size);
ssize = isonum_723(ipd.logical_block_size); /* nowadays always 2048 */
if (xflag) {
printf (_("sector count: %d, sector size: %d\n"),
nsecs, ssize);
} else {
long long product = nsecs;
if (divisor == 0)
printf ("%lld\n", product * ssize);
else if (divisor == ssize)
printf ("%d\n", nsecs);
else
printf ("%lld\n", (product * ssize) / divisor);
}
}
int
main(int argc, char * argv[]) {
int j, ct;
char *p;
progname = argv[0];
if ((p = strrchr(progname, '/')) != NULL)
progname = p+1;
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
if (argc >= 2 &&
(!strcmp(argv[1], "-V") || !strcmp(argv[1], "--version"))) {
printf(_("%s from %s\n"), progname, util_linux_version);
exit(0);
}
for (;;) {
int opt;
opt = getopt(argc, argv, "xd:");
if (opt < 0)
break;
switch (opt) {
case 'd':
divisor = atoi(optarg);
break;
case 'x':
xflag = 1;
break;
default:
fprintf(stderr,
_("%s: option parse error\n"), progname);
exit(1);
}
}
ct = argc - optind;
if (ct <= 0) {
fprintf(stderr, _("Usage: %s [-x] [-d <num>] iso9660-image\n"),
progname);
exit(1);
}
for (j = optind; j < argc; j++) {
if (ct > 1)
printf("%s: ", argv[j]);
isosize(argv[j]);
}
return 0;
}
......@@ -15,14 +15,13 @@
#include <errno.h>
#include <string.h>
#include <time.h>
#include "nls.h"
/* cannot include <linux/fs.h> */
#ifndef BLKGETSIZE
#define BLKGETSIZE _IO(0x12,96) /* return device size */
#endif
#include "../defines.h" /* for util_linux_version */
#define BFS_ROOT_INO 2
#define BFS_NAMELEN 14
#define BFS_BLOCKSIZE 512
......@@ -85,9 +84,9 @@ fatal(char *s, ...) {
static void
usage(void) {
fprintf(stderr,
fprintf(stderr, _(
"Usage: %s [-v] [-N nr-of-inodes] [-V volume-name]\n"
" [-F fsname] device [block-count]\n",
" [-F fsname] device [block-count]\n"),