diff --git a/Makefile b/Makefile
index 232a17d..bcaac87 100644
--- a/Makefile
+++ b/Makefile
@@ -80,7 +80,7 @@
     PREFIX = `pwd`/_install
 endif
 
-OBJECTS   = $(shell ./busybox.sh) busybox.o messages.o utility.o
+OBJECTS   = $(shell ./busybox.sh) busybox.o messages.o usage.o utility.o
 CFLAGS    += -DBB_VER='"$(VERSION)"'
 CFLAGS    += -DBB_BT='"$(BUILDTIME)"'
 ifdef BB_INIT_SCRIPT
diff --git a/applets/usage.c b/applets/usage.c
new file mode 100644
index 0000000..d5a34ec
--- /dev/null
+++ b/applets/usage.c
@@ -0,0 +1,1204 @@
+#include "internal.h"
+
+#if defined BB_AR
+const char ar_usage[] =
+	"ar [optxvV] archive [filenames] \n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nExtract or list files from an ar archive.\n\n"
+	"Options:\n"
+	"\to\t\tpreserve original dates\n"
+	"\tp\t\textract to stdout\n"
+	"\tt\t\tlist\n"
+	"\tx\t\textract\n"
+	"\tv\t\tverbosely list files processed\n"
+#endif
+	;
+#endif
+
+#if defined BB_BASENAME
+const char basename_usage[] =
+	"basename FILE [SUFFIX]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nStrips directory path and suffixes from FILE.\n"
+	"If specified, also removes any trailing SUFFIX.\n"
+#endif
+	;
+#endif
+
+#if defined BB_CAT
+const char cat_usage[] =
+	"cat [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nConcatenates FILE(s) and prints them to stdout.\n"
+#endif
+	;
+#endif
+
+#if defined BB_CHMOD_CHOWN_CHGRP
+const char chgrp_usage[] =
+	"chgrp [OPTION]... GROUP FILE...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nChange the group membership of each FILE to GROUP.\n"
+	"\nOptions:\n\t-R\tChanges files and directories recursively.\n"
+#endif
+	;
+#endif
+
+#if defined BB_CHMOD_CHOWN_CHGRP
+const char chmod_usage[] =
+	"chmod [-R] MODE[,MODE]... FILE...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nEach MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+	"one or more of the letters rwxst.\n\n"
+	"\nOptions:\n\t-R\tChanges files and directories recursively.\n"
+#endif
+	;
+#endif
+
+#if defined BB_CHMOD_CHOWN_CHGRP
+const char chown_usage[] =
+	"chown [OPTION]...  OWNER[<.|:>[GROUP] FILE...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nChange the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+	"\nOptions:\n\t-R\tChanges files and directories recursively.\n"
+#endif
+	;
+#endif
+
+#if defined BB_CHROOT
+const char chroot_usage[] =
+	"chroot NEWROOT [COMMAND...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nRun COMMAND with root directory set to NEWROOT.\n"
+#endif
+	;
+#endif
+
+#if defined BB_CHVT
+const char chvt_usage[] =
+	"chvt N\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nChanges the foreground virtual terminal to /dev/ttyN\n"
+#endif
+	;
+#endif
+
+#if defined BB_CP_MV
+const char cp_usage[] =
+	"cp [OPTION]... SOURCE DEST\n"
+	"   or: cp [OPTION]... SOURCE... DIRECTORY\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCopies SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+	"\n"
+	"\t-a\tSame as -dpR\n"
+	"\t-d\tPreserves links\n"
+	"\t-p\tPreserves file attributes if possible\n"
+	"\t-f\tforce (implied; ignored) - always set\n"
+	"\t-R\tCopies directories recursively\n"
+#endif
+	;
+#endif
+
+#if defined BB_CUT
+const char cut_usage[] =
+	"cut [OPTION]... [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrints selected fields from each input FILE to standard output.\n\n"
+	"Options:\n"
+	"\t-b LIST\tOutput only bytes from LIST\n"
+	"\t-c LIST\tOutput only characters from LIST\n"
+	"\t-d CHAR\tUse CHAR instead of tab as the field delimiter\n"
+	"\t-s\tOnly output Lines if the include DELIM\n"
+	"\t-f N\tPrint only these fields\n"
+	"\t-n\tIgnored\n"
+#endif
+	;
+#endif
+
+#if defined BB_DATE
+const char date_usage[] =
+	"date [OPTION]... [+FORMAT]\n"
+	"  or:  date [OPTION] [MMDDhhmm[[CC]YY][.ss]]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nDisplays the current time in the given FORMAT, or sets the system date.\n"
+	"\nOptions:\n\t-R\tOutputs RFC-822 compliant date string\n"
+	"\t-s\tSets time described by STRING\n"
+	"\t-u\tPrints or sets Coordinated Universal Time\n"
+#endif
+	;
+#endif
+
+#if defined BB_DC
+const char dc_usage[] =
+	"dc expression ...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nThis is a Tiny RPN calculator that understands the\n"
+	"following operations: +, -, /, *, and, or, not, eor.\n"
+	"i.e. 'dc 2 2 add' -> 4, and 'dc 8 8 \\* 2 2 + /' -> 16\n"
+#endif
+	;
+#endif
+
+#if defined BB_DD
+const char dd_usage[] =
+	"dd [if=FILE] [of=FILE] [bs=N] [count=N] [skip=N] [seek=N]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCopy a file, converting and formatting according to options\n\n"
+	"\tif=FILE\tread from FILE instead of stdin\n"
+	"\tof=FILE\twrite to FILE instead of stdout\n"
+	"\tbs=N\tread and write N bytes at a time\n"
+	"\tcount=N\tcopy only N input blocks\n"
+	"\tskip=N\tskip N input blocks\n"
+	"\tseek=N\tskip N output blocks\n"
+	"\n"
+	"Numbers may be suffixed by w (x2), k (x1024), b (x512), or M (x1024^2)\n"
+#endif
+	;
+#endif
+
+#if defined BB_DEALLOCVT
+const char deallocvt_usage[] =
+	"deallocvt N\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	 "\nDeallocate unused virtual terminal /dev/ttyN\n"
+#endif
+	 ;
+#endif
+
+#if defined BB_DF
+const char df_usage[] =
+	"df [filesystem ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint the filesystem space used and space available.\n"
+#endif
+	;
+#endif
+
+#if defined BB_DIRNAME
+const char dirname_usage[] =
+	"dirname [FILENAME ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nStrips non-directory suffix from FILENAME\n"
+#endif
+	;
+#endif
+
+#if defined BB_DMESG
+const char dmesg_usage[] =
+	"dmesg [-c] [-n LEVEL] [-s SIZE]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrints or controls the kernel ring buffer\n\n"
+	"Options:\n"
+	"\t-c\t\tClears the ring buffer's contents after printing\n"
+	"\t-n LEVEL\tSets console logging level\n"
+	"\t-s SIZE\t\tUse a buffer of size SIZE\n"
+#endif
+	;
+#endif
+
+#if defined BB_DU
+const char du_usage[] =
+	"du [OPTION]... [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSummarizes disk space used for each FILE and/or directory.\n"
+	"Disk space is printed in units of 1024 bytes.\n\n"
+	"Options:\n"
+	"\t-l\tcount sizes many times if hard linked\n"
+	"\t-s\tdisplay only a total for each argument\n"
+#endif
+	;
+#endif
+
+#if defined BB_DUMPKMAP
+const char dumpkmap_usage[] =
+	"dumpkmap\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrints out a binary keyboard translation table to standard input.\n"
+#endif
+	;
+#endif
+
+#if defined BB_DUTMP
+const char dutmp_usage[] =
+	"dutmp [FILE]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nDump utmp file format (pipe delimited) from FILE\n"
+	"or stdin to stdout.  (i.e. 'dutmp /var/run/utmp')\n"
+#endif
+	;
+#endif
+
+#if defined BB_ECHO
+const char echo_usage[] =
+	"echo [-neE] [ARG ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrints the specified ARGs to stdout\n\n"
+	"Options:\n"
+	"\t-n\tsuppress trailing newline\n"
+	"\t-e\tinterpret backslash-escaped characters (i.e. \\t=tab etc)\n"
+	"\t-E\tdisable interpretation of backslash-escaped characters\n"
+#endif
+	;
+#endif
+
+#if defined BB_FDFLUSH
+const char fdflush_usage[] =
+	"fdflush DEVICE\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nForces floppy disk drive to detect disk change\n"
+#endif
+	;
+#endif
+
+#if defined BB_FIND
+const char find_usage[] =
+	"find [PATH...] [EXPRESSION]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSearch for files in a directory hierarchy.  The default PATH is\n"
+	"the current directory; default EXPRESSION is '-print'\n\n"
+	"\nEXPRESSION may consist of:\n"
+	"\t-follow\t\tDereference symbolic links.\n"
+	"\t-name PATTERN\tFile name (leading directories removed) matches PATTERN.\n"
+	"\t-print\t\tprint the full file name followed by a newline to stdout.\n"
+#endif
+	;
+#endif
+
+#if defined BB_FREE
+const char free_usage[] =
+	"free\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nDisplays the amount of free and used system memory\n"
+#endif
+	;
+#endif
+
+#if defined BB_FREERAMDISK
+const char freeramdisk_usage[] =
+	"freeramdisk DEVICE\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nFrees all memory used by the specified ramdisk.\n"
+#endif
+	;
+#endif
+
+#if defined BB_FSCK_MINIX
+const char fsck_minix_usage[] =
+	"Usage: fsck.minix [-larvsmf] /dev/name\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPerforms a consistency check for MINIX filesystems.\n\n"
+	"Options:\n"
+	"\t-l\tLists all filenames\n"
+	"\t-r\tPerform interactive repairs\n"
+	"\t-a\tPerform automatic repairs\n"
+	"\t-v\tverbose\n"
+	"\t-s\tOutputs super-block information\n"
+	"\t-m\tActivates MINIX-like \"mode not cleared\" warnings\n"
+	"\t-f\tForce file system check.\n\n"
+#endif
+	;
+#endif
+
+#if defined BB_GREP
+const char grep_usage[] =
+	"grep [-ihHnqvs] pattern [files...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSearch for PATTERN in each FILE or standard input.\n\n"
+	"Options:\n"
+	"\t-H\tprefix output lines with filename where match was found\n"
+	"\t-h\tsuppress the prefixing filename on output\n"
+	"\t-i\tignore case distinctions\n"
+	"\t-n\tprint line number with output lines\n"
+	"\t-q\tbe quiet. Returns 0 if result was found, 1 otherwise\n"
+	"\t-v\tselect non-matching lines\n"
+	"\t-s\tsuppress file open/read error messages\n\n"
+#endif
+	;
+#endif
+
+#if defined BB_GUNZIP
+const char gunzip_usage[] =
+	"gunzip [OPTION]... FILE\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nUncompress FILE (or standard input if FILE is '-').\n\n"
+	"Options:\n"
+	"\t-c\tWrite output to standard output\n"
+	"\t-t\tTest compressed file integrity\n"
+#endif
+	;
+#endif
+
+#if defined BB_GZIP
+const char gzip_usage[] =
+	"gzip [OPTION]... FILE\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCompress FILE with maximum compression.\n"
+	"When FILE is '-', reads standard input.  Implies -c.\n\n"
+	"Options:\n"
+	"\t-c\tWrite output to standard output instead of FILE.gz\n"
+#endif
+	;
+#endif
+
+#if defined BB_HEAD
+const char head_usage[] =
+	"head [OPTION] [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint first 10 lines of each FILE to standard output.\n"
+	"With more than one FILE, precede each with a header giving the\n"
+	"file name. With no FILE, or when FILE is -, read standard input.\n\n"
+
+	"Options:\n" "\t-n NUM\t\tPrint first NUM lines instead of first 10\n"
+#endif
+	;
+#endif
+
+#if defined BB_HOSTNAME
+const char hostname_usage[] =
+	"hostname [OPTION] {hostname | -F file}\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nGet or set the hostname or DNS domain name. If a hostname is given\n"
+	"(or a file with the -F parameter), the host name will be set.\n\n"
+	"Options:\n"
+	"\t-s\t\tShort\n"
+
+	"\t-i\t\tAddresses for the hostname\n"
+	"\t-d\t\tDNS domain name\n"
+	"\t-F FILE\t\tUse the contents of FILE to specify the hostname\n"
+#endif
+	;
+#endif
+
+#if defined BB_ID
+const char id_usage[] =
+	"id [OPTIONS]... [USERNAME]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint information for USERNAME or the current user\n\n"
+	"Options:\n"
+	"\t-g\tprints only the group ID\n"
+	"\t-u\tprints only the user ID\n"
+	"\t-r\tprints the real user ID instead of the effective ID (with -ug)\n\n"
+#endif
+	;
+#endif
+
+#if defined BB_INSMOD
+const char insmod_usage[] =
+	"insmod [OPTION]... MODULE [symbol=value]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nLoads the specified kernel modules into the kernel.\n\n"
+	"Options:\n"
+	"\t-f\tForce module to load into the wrong kernel version.\n"
+	"\t-k\tMake module autoclean-able.\n"
+	"\t-v\tverbose output\n" "\t-x\tdo not export externs\n"
+#endif
+	;
+#endif
+
+#if defined BB_KILL
+const char kill_usage[] =
+	"kill [-signal] process-id [process-id ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSend a signal (default is SIGTERM) to the specified process(es).\n\n"
+	"Options:\n" "\t-l\tList all signal names and numbers.\n\n"
+#endif
+	;
+#endif
+
+#if defined BB_KILLALL
+const char killall_usage[] =
+	"killall [-signal] process-name [process-name ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSend a signal (default is SIGTERM) to the specified process(es).\n\n"
+	"Options:\n" "\t-l\tList all signal names and numbers.\n\n"
+#endif
+	;
+#endif
+
+#if defined BB_LENGTH
+const char length_usage[] =
+	"length STRING\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrints out the length of the specified STRING.\n"
+#endif
+	;
+#endif
+
+#if defined BB_LN
+const char ln_usage[] =
+	"ln [OPTION] TARGET... LINK_NAME|DIRECTORY\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCreate a link named LINK_NAME or DIRECTORY to the specified TARGET\n"
+	"\nYou may use '--' to indicate that all following arguments are non-options.\n\n"
+	"Options:\n"
+	"\t-s\tmake symbolic links instead of hard links\n"
+
+	"\t-f\tremove existing destination files\n"
+	"\t-n\tno dereference symlinks - treat like normal file\n"
+#endif
+	;
+#endif
+
+#if defined BB_LOADACM
+const char loadacm_usage[] =
+	"loadacm\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nLoads an acm from standard input.\n"
+#endif
+	;
+#endif
+
+#if defined BB_LOADFONT
+const char loadfont_usage[] =
+	"loadfont\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"Loads a console font from standard input.\n"
+#endif
+	;
+#endif
+
+#if defined BB_LOADKMAP
+const char loadkmap_usage[] =
+	"loadkmap\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nLoads a binary keyboard translation table from standard input.\n"
+#endif
+	;
+#endif
+
+#if defined BB_LOGGER
+const char logger_usage[] =
+	"logger [OPTION]... [MESSAGE]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nWrite MESSAGE to the system log.  If MESSAGE is '-', log stdin.\n\n"
+	"Options:\n"
+	"\t-s\tLog to stderr as well as the system log.\n"
+	"\t-t\tLog using the specified tag (defaults to user name).\n"
+
+	"\t-p\tEnter the message with the specified priority.\n"
+	"\t\tThis may be numerical or a ``facility.level'' pair.\n"
+#endif
+	;
+#endif
+
+#if defined BB_LOGNAME
+const char logname_usage[] =
+	"logname\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint the name of the current user.\n"
+#endif
+	;
+#endif
+
+#if defined BB_LS
+const char ls_usage[] =
+	"ls [-1a"
+#ifdef BB_FEATURE_LS_TIMESTAMPS
+	"c"
+#endif
+	"d"
+#ifdef BB_FEATURE_LS_TIMESTAMPS
+	"e"
+#endif
+	"ln"
+#ifdef BB_FEATURE_LS_FILETYPES
+	"p"
+#endif
+#ifdef BB_FEATURE_LS_TIMESTAMPS
+	"u"
+#endif
+	"xAC"
+#ifdef BB_FEATURE_LS_FILETYPES
+	"F"
+#endif
+#ifdef BB_FEATURE_LS_RECURSIVE
+	"R"
+#endif
+	"] [filenames...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nList directory contents\n\n"
+	"Options:\n"
+	"\t-a\tdo not hide entries starting with .\n"
+#ifdef BB_FEATURE_LS_TIMESTAMPS
+	"\t-c\twith -l: show ctime (the time of last\n"
+	"\t\tmodification of file status information)\n"
+#endif
+	"\t-d\tlist directory entries instead of contents\n"
+#ifdef BB_FEATURE_LS_TIMESTAMPS
+	"\t-e\tlist both full date and full time\n"
+#endif
+	"\t-l\tuse a long listing format\n"
+	"\t-n\tlist numeric UIDs and GIDs instead of names\n"
+#ifdef BB_FEATURE_LS_FILETYPES
+	"\t-p\tappend indicator (one of /=@|) to entries\n"
+#endif
+#ifdef BB_FEATURE_LS_TIMESTAMPS
+	"\t-u\twith -l: show access time (the time of last\n"
+	"\t\taccess of the file)\n"
+#endif
+	"\t-x\tlist entries by lines instead of by columns\n"
+	"\t-A\tdo not list implied . and ..\n"
+	"\t-C\tlist entries by columns\n"
+#ifdef BB_FEATURE_LS_FILETYPES
+	"\t-F\tappend indicator (one of */=@|) to entries\n"
+#endif
+#ifdef BB_FEATURE_LS_RECURSIVE
+	"\t-R\tlist subdirectories recursively\n"
+#endif
+#endif
+	;
+#endif
+
+#if defined BB_MAKEDEVS
+const char makedevs_usage[] =
+	"makedevs NAME TYPE MAJOR MINOR FIRST LAST [s]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCreates a range of block or character special files\n\n"
+	"TYPEs include:\n"
+	"\tb:\tMake a block (buffered) device.\n"
+	"\tc or u:\tMake a character (un-buffered) device.\n"
+	"\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes.\n\n"
+	"FIRST specifies the number appended to NAME to create the first device.\n"
+	"LAST specifies the number of the last item that should be created.\n"
+	"If 's' is the last argument, the base device is created as well.\n\n"
+	"For example:\n"
+	"\tmakedevs /dev/ttyS c 4 66 2 63   ->  ttyS2-ttyS63\n"
+	"\tmakedevs /dev/hda b 3 0 0 8 s    ->  hda,hda1-hda8\n"
+#endif
+	;
+#endif
+
+#if defined BB_MD5SUM
+const char md5sum_usage[] =
+	"md5sum [OPTION] [FILE]...\n"
+	"or:    md5sum [OPTION] -c [FILE]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint or check MD5 checksums.\n\n"
+	"Options:\n"
+	"With no FILE, or when FILE is -, read standard input.\n\n"
+	"\t-b\tread files in binary mode\n"
+	"\t-c\tcheck MD5 sums against given list\n"
+	"\t-t\tread files in text mode (default)\n"
+	"\t-g\tread a string\n"
+	"\nThe following two options are useful only when verifying checksums:\n"
+	"\t-s,\tdon't output anything, status code shows success\n"
+	"\t-w,\twarn about improperly formated MD5 checksum lines\n"
+#endif
+	;
+#endif
+
+#if defined BB_MKDIR
+const char mkdir_usage[] =
+	"mkdir [OPTION] DIRECTORY...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCreate the DIRECTORY(ies), if they do not already exist\n\n"
+	"Options:\n"
+
+	"\t-m\tset permission mode (as in chmod), not rwxrwxrwx - umask\n"
+	"\t-p\tno error if existing, make parent directories as needed\n"
+#endif
+	;
+#endif
+
+#if defined BB_MKFIFO
+const char mkfifo_usage[] =
+	"mkfifo [OPTIONS] name\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCreates a named pipe (identical to 'mknod name p')\n\n"
+	"Options:\n"
+	"\t-m\tcreate the pipe using the specified mode (default a=rw)\n"
+#endif
+	;
+#endif
+
+#if defined BB_MKFS_MINIX
+const char mkfs_minix_usage[] =
+	"mkfs.minix [-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nMake a MINIX filesystem.\n\n"
+	"Options:\n"
+	"\t-c\t\tCheck the device for bad blocks\n"
+	"\t-n [14|30]\tSpecify the maximum length of filenames\n"
+	"\t-i INODES\tSpecify the number of inodes for the filesystem\n"
+	"\t-l FILENAME\tRead the bad blocks list from FILENAME\n"
+	"\t-v\t\tMake a Minix version 2 filesystem\n\n"
+#endif
+	;
+#endif
+
+#if defined BB_MKNOD
+const char mknod_usage[] =
+	"mknod [OPTIONS] NAME TYPE MAJOR MINOR\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCreate a special file (block, character, or pipe).\n\n"
+	"Options:\n"
+	"\t-m\tcreate the special file using the specified mode (default a=rw)\n\n"
+	"TYPEs include:\n"
+	"\tb:\tMake a block (buffered) device.\n"
+	"\tc or u:\tMake a character (un-buffered) device.\n"
+	"\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes.\n"
+#endif
+	;
+#endif
+
+#if defined BB_MKSWAP
+const char mkswap_usage[] =
+	"mkswap [-c] [-v0|-v1] device [block-count]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrepare a disk partition to be used as a swap partition.\n\n"
+	"Options:\n" "\t-c\t\tCheck for read-ability.\n"
+	"\t-v0\t\tMake version 0 swap [max 128 Megs].\n"
+	"\t-v1\t\tMake version 1 swap [big!] (default for kernels > 2.1.117).\n"
+
+	"\tblock-count\tNumber of block to use (default is entire partition).\n"
+#endif
+	;
+#endif
+
+#if defined BB_MKTEMP
+const char mktemp_usage[] =
+	"mktemp [-q] TEMPLATE\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCreates a temporary file with its name based on TEMPLATE.\n"
+	"TEMPLATE is any name with six `Xs' (i.e. /tmp/temp.XXXXXX).\n"
+#endif
+	;
+#endif
+
+#if defined BB_MORE
+const char more_usage[] =
+	"more [FILE ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nMore is a filter for viewing FILE one screenful at a time.\n"
+#endif
+	;
+#endif
+
+#if defined BB_MOUNT
+const char mount_usage[] = 
+	"mount [flags] device directory [-o options,more-options]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nMount a filesystem\n\n"
+	"Flags:\n" 
+	"\t-a:\t\tMount all filesystems in fstab.\n"
+#ifdef BB_MTAB
+	"\t-f:\t\t\"Fake\" mount. Add entry to mount table but don't mount it.\n"
+	"\t-n:\t\tDon't write a mount table entry.\n"
+#endif
+	"\t-o option:\tOne of many filesystem options, listed below.\n"
+	"\t-r:\t\tMount the filesystem read-only.\n"
+	"\t-t fs-type:\tSpecify the filesystem type.\n"
+	"\t-w:\t\tMount for reading and writing (default).\n"
+	"\n"
+	"Options for use with the \"-o\" flag:\n"
+	"\tasync/sync:\tWrites are asynchronous / synchronous.\n"
+	"\tatime/noatime:\tEnable / disable updates to inode access times.\n"
+	"\tdev/nodev:\tAllow use of special device files / disallow them.\n"
+	"\texec/noexec:\tAllow use of executable files / disallow them.\n"
+#if defined BB_FEATURE_MOUNT_LOOP
+	"\tloop:\t\tMounts a file via loop device.\n"
+#endif
+	"\tsuid/nosuid:\tAllow set-user-id-root programs / disallow them.\n"
+	"\tremount:\tRe-mount a currently-mounted filesystem, changing its flags.\n"
+	"\tro/rw:\t\tMount for read-only / read-write.\n"
+	"\nThere are EVEN MORE flags that are specific to each filesystem.\n"
+	"You'll have to see the written documentation for those.\n"
+#endif
+	;
+#endif
+
+#if defined BB_MT
+const char mt_usage[] =
+	"mt [-f device] opcode value\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nControl magnetic tape drive operation\n"
+#endif
+	;
+#endif
+
+#if defined BB_CP_MV
+const char mv_usage[] =
+	"mv SOURCE DEST\n"
+	"   or: mv SOURCE... DIRECTORY\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nRename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+#endif
+	;
+#endif
+
+#if defined BB_NC
+const char nc_usage[] =
+	"nc [IP] [port]\n" 
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nNetcat opens a pipe to IP:port\n"
+#endif
+	;
+#endif
+
+#if defined BB_NSLOOKUP
+const char nslookup_usage[] =
+	"nslookup [HOST]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nQueries the nameserver for the IP address of the given HOST\n"
+#endif
+;
+#endif
+
+#if defined BB_PING
+#if defined BB_FEATURE_SIMPLE_PING
+const char ping_usage[] =
+	"ping host\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSend ICMP ECHO_REQUEST packets to network hosts\n"
+#endif
+	;
+#else /* ! defined BB_FEATURE_SIMPLE_PING */
+const char ping_usage[] =
+	"ping [OPTION]... host\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSend ICMP ECHO_REQUEST packets to network hosts.\n\n"
+	"Options:\n"
+	"\t-c COUNT\tSend only COUNT pings.\n"
+	"\t-s SIZE\t\tSend SIZE data bytes in packets (default=56).\n"
+	"\t-q\t\tQuiet mode, only displays output at start\n"
+	"\t\t\tand when finished.\n"
+#endif
+	;
+#endif
+#endif
+
+#if defined BB_PRINTF
+const char printf_usage[] =
+	"printf FORMAT [ARGUMENT...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nFormats and prints ARGUMENT(s) according to FORMAT,\n"
+	"Where FORMAT controls the output exactly as in C printf.\n"
+#endif
+	;
+#endif
+
+#if defined BB_PS
+const char ps_usage[] =
+	"ps\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nReport process status\n"
+	"\nThis version of ps accepts no options.\n"
+#endif
+	;
+#endif
+
+#if defined BB_RM
+const char rm_usage[] =
+	"rm [OPTION]... FILE...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nRemove (unlink) the FILE(s).  You may use '--' to\n"
+	"indicate that all following arguments are non-options.\n\n"
+	"Options:\n"
+	"\t-f\t\tremove existing destinations, never prompt\n"
+	"\t-r or -R\tremove the contents of directories recursively\n"
+#endif
+	;
+#endif
+
+#if defined BB_RMDIR
+const char rmdir_usage[] =
+	"rmdir [OPTION]... DIRECTORY...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nRemove the DIRECTORY(ies), if they are empty.\n"
+#endif
+	;
+#endif
+
+#if defined BB_RMMOD
+const char rmmod_usage[] =
+	"rmmod [OPTION]... [MODULE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nUnloads the specified kernel modules from the kernel.\n\n"
+	"Options:\n" 
+	"\t-a\tTry to remove all unused kernel modules.\n"
+#endif
+	;
+#endif
+
+#if defined BB_SED
+const char sed_usage[] =
+	"sed [-Vhnef] pattern [files...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\n"
+	"-n\tsuppress automatic printing of pattern space\n"
+	"-e script\tadd the script to the commands to be executed\n"
+	"-f scriptfile\tadd the contents of script-file to the commands to be executed\n"
+	"-h\tdisplay this help message\n"
+	"-V\toutput version information and exit\n"
+	"\n"
+	"If no -e or -f is given, the first non-option argument is taken as the\n"
+	"sed script to interpret. All remaining arguments are names of input\n"
+	"files; if no input files are specified, then the standard input is read.\n"
+#endif
+	;
+#endif
+
+#if defined BB_SETKEYCODES
+const char setkeycodes_usage[] =
+	"setkeycodes SCANCODE KEYCODE ...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSet entries into the kernel's scancode-to-keycode map,\n"
+	"allowing unusual keyboards to generate usable keycodes.\n\n" 
+	"SCANCODE may be either xx or e0xx (hexadecimal),\n"
+	"and KEYCODE is given in decimal\n"
+#endif
+	;
+#endif
+
+#if defined BB_SH
+const char shell_usage[] =
+	"sh [FILE]...\n"
+	"   or: sh -c command [args]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nlash: The BusyBox command interpreter (shell).\n\n"
+#endif
+	;
+#endif
+
+#if defined BB_SLEEP
+const char sleep_usage[] =
+	"sleep N\n" 
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPause for N seconds.\n"
+#endif
+	;
+#endif
+
+#if defined BB_SORT
+const char sort_usage[] =
+	"sort [-n]"
+#ifdef BB_FEATURE_SORT_REVERSE
+	" [-r]"
+#endif
+	" [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSorts lines of text in the specified files\n"
+#endif
+	;
+#endif
+
+#if defined BB_SWAPONOFF
+const char swapoff_usage[] =
+	"swapoff [OPTION] [device]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nStop swapping virtual memory pages on the given device.\n\n"
+	"Options:\n"
+	"\t-a\tStop swapping on all swap devices\n"
+#endif
+	;
+#endif
+
+#if defined BB_SWAPONOFF
+const char swapon_usage[] =
+	"swapon [OPTION] [device]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nStart swapping virtual memory pages on the given device.\n\n"
+	"Options:\n"
+	"\t-a\tStart swapping on all swap devices\n"
+#endif
+	;
+#endif
+
+#if defined BB_SYNC
+const char sync_usage[] =
+	"sync\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nWrite all buffered filesystem blocks to disk.\n"
+#endif
+	;
+#endif
+
+#if defined BB_SYSLOGD
+const char syslogd_usage[] =
+	"syslogd [OPTION]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nLinux system and kernel (provides klogd) logging utility.\n"
+	"Note that this version of syslogd/klogd ignores /etc/syslog.conf.\n\n"
+	"Options:\n"
+	"\t-m NUM\t\tInterval between MARK lines (default=20min, 0=off)\n"
+	"\t-n\t\tRun as a foreground process\n"
+#ifdef BB_FEATURE_KLOGD
+	"\t-K\t\tDo not start up the klogd process\n"
+#endif
+	"\t-O FILE\t\tUse an alternate log file (default=/var/log/messages)\n"
+#endif
+	;
+#endif
+
+#if defined BB_TAIL
+#if defined BB_FEATURE_SIMPLE_TAIL
+const char tail_usage[] =
+	"tail [OPTION] [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint last 10 lines of each FILE to standard output.\n"
+	"With more than one FILE, precede each with a header giving the\n"
+	"file name. With no FILE, or when FILE is -, read standard input.\n\n"
+	"Options:\n"
+	"\t-n NUM\t\tPrint last NUM lines instead of first 10\n"
+
+	"\t-f\t\tOutput data as the file grows.  This version\n"
+	"\t\t\tof 'tail -f' supports only one file at a time.\n"
+#endif
+	;
+#else /* ! defined BB_FEATURE_SIMPLE_TAIL */
+const char tail_usage[] =
+	"tail [OPTION]... [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint last 10 lines of each FILE to standard output.\n"
+	"With more than one FILE, precede each with a header giving the file name.\n"
+	"With no FILE, or when FILE is -, read standard input.\n"
+	"\n"
+	"  -c=N[kbm]       output the last N bytes\n"
+	"  -f              output appended data as the file grows\n"
+	"  -n=N            output the last N lines, instead of last 10\n"
+	"  -q              never output headers giving file names\n"
+	"  -v              always output headers giving file names\n"
+	"\n"
+	"If the first character of N (bytes or lines) is a `+', output begins with \n"
+	"the Nth item from the start of each file, otherwise, print the last N items\n"
+	"in the file.  N bytes may be suffixed by k (x1024), b (x512), or m (1024^2).\n"
+#endif
+	;
+#endif
+#endif
+
+#if defined BB_TAR
+const char tar_usage[] =
+#ifdef BB_FEATURE_TAR_CREATE
+	"tar -[cxtvO] "
+#else
+	"tar -[xtvO] "
+#endif
+#if defined BB_FEATURE_TAR_EXCLUDE
+	"[--exclude File] "
+#endif
+	"[-f tarFile] [FILE] ...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCreate, extract, or list files from a tar file.  Note that\n"
+	"this version of tar treats hard links as separate files.\n\n"
+	"Main operation mode:\n"
+#ifdef BB_FEATURE_TAR_CREATE
+	"\tc\t\tcreate\n"
+#endif
+	"\tx\t\textract\n"
+	"\tt\t\tlist\n"
+	"\nFile selection:\n"
+	"\tf\t\tname of tarfile or \"-\" for stdin\n"
+	"\tO\t\textract to stdout\n"
+#if defined BB_FEATURE_TAR_EXCLUDE
+	"\t--exclude\tfile to exclude\n"
+#endif
+	"\nInformative output:\n"
+	"\tv\t\tverbosely list files processed\n"
+#endif
+	;
+#endif
+
+#if defined BB_TEE
+const char tee_usage[] =
+	"tee [OPTION]... [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCopy standard input to each FILE, and also to standard output.\n\n"
+	"Options:\n" "\t-a\tappend to the given FILEs, do not overwrite\n"
+#endif
+	;
+#endif
+
+#if defined BB_TELNET
+const char telnet_usage[] =
+	"telnet host [port]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nTelnet is used to establish interactive communication with another\n"
+	"computer over a network using the TELNET protocol.\n"
+#endif
+	;
+#endif
+
+#if defined BB_TEST
+const char test_usage[] =
+	"test EXPRESSION\n"
+	"or   [ EXPRESSION ]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nChecks file types and compares values returning an exit\n"
+	"code determined by the value of EXPRESSION.\n"
+#endif
+	;
+#endif
+
+#if defined BB_TOUCH
+const char touch_usage[] =
+	"touch [-c] file [file ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nUpdate the last-modified date on the given file[s].\n\n"
+	"Options:\n"
+	"\t-c\tDo not create any files\n"
+#endif
+	;
+#endif
+
+#if defined BB_TR
+const char tr_usage[] =
+	"tr [-cds] STRING1 [STRING2]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nTranslate, squeeze, and/or delete characters from\n"
+	"standard input, writing to standard output.\n\n"
+	"Options:\n"
+	"\t-c\ttake complement of STRING1\n"
+	"\t-d\tdelete input characters coded STRING1\n"
+	"\t-s\tsqueeze multiple output characters of STRING2 into one character\n"
+#endif
+	;
+#endif
+
+#if defined BB_TTY
+const char tty_usage[] =
+	"tty\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint the file name of the terminal connected to standard input.\n\n"
+	"Options:\n"
+	"\t-s\tprint nothing, only return an exit status\n"
+#endif
+	;
+#endif
+
+#if defined BB_UMOUNT
+const char umount_usage[] =
+	"umount [flags] filesystem|directory\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"Unmount file systems\n"
+	"\nFlags:\n" "\t-a:\tUnmount all file systems"
+#ifdef BB_MTAB
+	" in /etc/mtab\n\t-n:\tDon't erase /etc/mtab entries\n"
+#else
+	"\n"
+#endif
+	"\t-r:\tTry to remount devices as read-only if mount is busy\n"
+#if defined BB_FEATURE_MOUNT_FORCE
+	"\t-f:\tForce filesystem umount (i.e. unreachable NFS server)\n"
+#endif
+#if defined BB_FEATURE_MOUNT_LOOP
+	"\t-l:\tDo not free loop device (if a loop device has been used)\n"
+#endif
+#endif
+	;
+#endif
+
+#if defined BB_UNAME
+const char uname_usage[] =
+	"uname [OPTION]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint certain system information.  With no OPTION, same as -s.\n\n"
+	"Options:\n"
+	"\t-a\tprint all information\n"
+	"\t-m\tthe machine (hardware) type\n"
+	"\t-n\tprint the machine's network node hostname\n"
+	"\t-r\tprint the operating system release\n"
+	"\t-s\tprint the operating system name\n"
+
+	"\t-p\tprint the host processor type\n"
+	"\t-v\tprint the operating system version\n"
+#endif
+	;
+#endif
+
+#if defined BB_UNIQ
+const char uniq_usage[] =
+	"uniq [OPTION]... [INPUT [OUTPUT]]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nDiscard all but one of successive identical lines from INPUT\n"
+	"(or standard input), writing to OUTPUT (or standard output).\n"
+#endif
+	;
+#endif
+
+#if defined BB_UPDATE
+const char update_usage[] =
+	"update [options]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPeriodically flushes filesystem buffers.\n\n"
+	"Options:\n"
+	"\t-S\tforce use of sync(2) instead of flushing\n"
+	"\t-s SECS\tcall sync this often (default 30)\n"
+	"\t-f SECS\tflush some buffers this often (default 5)\n"
+#endif
+	;
+#endif
+
+#if defined BB_USLEEP
+const char usleep_usage[] =
+	"usleep N\n" 
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPause for N microseconds.\n"
+#endif
+	;
+#endif
+
+#if defined BB_UUDECODE
+const char uudecode_usage[] =
+	"uudecode [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nUudecode a file that is uuencoded.\n\n"
+	"Options:\n"
+	"\t-o FILE\tdirect output to FILE\n"
+#endif
+	;
+#endif
+
+#if defined BB_UUENCODE
+const char uuencode_usage[] =
+	"uuencode [OPTION] [INFILE] REMOTEFILE\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nUuencode a file.\n\n"
+	"Options:\n"
+	"\t-m\tuse base64 encoding as of RFC1521\n"
+#endif
+	;
+#endif
+
+#if defined BB_WC
+const char wc_usage[] =
+	"wc [OPTION]... [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint line, word, and byte counts for each FILE, and a total line if\n"
+	"more than one FILE is specified.  With no FILE, read standard input.\n\n"
+	"Options:\n"
+	"\t-c\tprint the byte counts\n"
+	"\t-l\tprint the newline counts\n"
+
+	"\t-L\tprint the length of the longest line\n"
+	"\t-w\tprint the word counts\n"
+#endif
+	;
+#endif
+
+#if defined BB_WHICH
+const char which_usage[] =
+	"which [COMMAND ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nLocates a COMMAND.\n"
+#endif
+	;
+#endif
+
+#if defined BB_WHOAMI
+const char whoami_usage[] =
+	"whoami\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrints the user name associated with the current effective user id.\n"
+#endif
+	;
+#endif
+
+#if defined BB_YES
+const char yes_usage[] =
+	"yes [OPTION]... [STRING]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nRepeatedly outputs a line with all specified STRING(s), or `y'.\n"
+#endif
+	;
+#endif
diff --git a/ar.c b/ar.c
index a43cc1d..d8c8d46 100644
--- a/ar.c
+++ b/ar.c
@@ -65,18 +65,6 @@
 };
 typedef struct ArInfo ArInfo;
 
-static const char ar_usage[] = "ar [optxvV] archive [filenames] \n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nExtract or list files from an ar archive.\n\n"
-	"Options:\n"
-	"\to\t\tpreserve original dates\n"
-	"\tp\t\textract to stdout\n"
-	"\tt\t\tlist\n"
-	"\tx\t\textract\n"
-	"\tv\t\tverbosely list files processed\n"
-#endif
-	;
-
 /*
  * Display details of a file, verbosly if funct=2   
  */
diff --git a/archival/ar.c b/archival/ar.c
index a43cc1d..d8c8d46 100644
--- a/archival/ar.c
+++ b/archival/ar.c
@@ -65,18 +65,6 @@
 };
 typedef struct ArInfo ArInfo;
 
-static const char ar_usage[] = "ar [optxvV] archive [filenames] \n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nExtract or list files from an ar archive.\n\n"
-	"Options:\n"
-	"\to\t\tpreserve original dates\n"
-	"\tp\t\textract to stdout\n"
-	"\tt\t\tlist\n"
-	"\tx\t\textract\n"
-	"\tv\t\tverbosely list files processed\n"
-#endif
-	;
-
 /*
  * Display details of a file, verbosly if funct=2   
  */
diff --git a/archival/gunzip.c b/archival/gunzip.c
index de68bd1..b29bdf7 100644
--- a/archival/gunzip.c
+++ b/archival/gunzip.c
@@ -30,19 +30,7 @@
 #include "internal.h"
 #include <getopt.h>
 
-static const char gunzip_usage[] =
-	"gunzip [OPTION]... FILE\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nUncompress FILE (or standard input if FILE is '-').\n\n"
-	"Options:\n"
-
-	"\t-c\tWrite output to standard output\n"
-	"\t-t\tTest compressed file integrity\n"
-#endif
-	;
-
-	
-	/* These defines are very important for BusyBox.  Without these,
+/* These defines are very important for BusyBox.  Without these,
  * huge chunks of ram are pre-allocated making the BusyBox bss 
  * size Freaking Huge(tm), which is a bad thing.*/
 #define SMALL_MEM
diff --git a/archival/gzip.c b/archival/gzip.c
index 8bc67d9..98ce259 100644
--- a/archival/gzip.c
+++ b/archival/gzip.c
@@ -40,19 +40,6 @@
 #define SMALL_MEM
 #define DYN_ALLOC
 
-
-static const char gzip_usage[] =
-	"gzip [OPTION]... FILE\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCompress FILE with maximum compression.\n"
-	"When FILE is '-', reads standard input.  Implies -c.\n\n"
-
-	"Options:\n"
-	"\t-c\tWrite output to standard output instead of FILE.gz\n"
-#endif
-	;
-
-
 /* I don't like nested includes, but the string and io functions are used
  * too often
  */
diff --git a/archival/tar.c b/archival/tar.c
index 353694f..6f18dc4 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -50,37 +50,6 @@
 #include <sys/types.h>
 #include <sys/sysmacros.h>
 
-
-static const char tar_usage[] =
-#ifdef BB_FEATURE_TAR_CREATE
-	"tar -[cxtvO] "
-#else
-	"tar -[xtvO] "
-#endif
-#if defined BB_FEATURE_TAR_EXCLUDE
-	"[--exclude File] "
-#endif
-	"[-f tarFile] [FILE] ...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCreate, extract, or list files from a tar file.  Note that\n"
-	"this version of tar treats hard links as separate files.\n\n"
-	"Main operation mode:\n"
-#ifdef BB_FEATURE_TAR_CREATE
-	"\tc\t\tcreate\n"
-#endif
-	"\tx\t\textract\n"
-	"\tt\t\tlist\n"
-	"\nFile selection:\n"
-	"\tf\t\tname of tarfile or \"-\" for stdin\n"
-	"\tO\t\textract to stdout\n"
-#if defined BB_FEATURE_TAR_EXCLUDE
-	"\t--exclude\tfile to exclude\n"
-#endif
-	"\nInformative output:\n"
-	"\tv\t\tverbosely list files processed\n"
-#endif
-	;
-
 /* Tar file constants  */
 #ifndef MAJOR
 #define MAJOR(dev) (((dev)>>8)&0xff)
diff --git a/basename.c b/basename.c
index 5678c44..5b83eef 100644
--- a/basename.c
+++ b/basename.c
@@ -24,14 +24,6 @@
 #include "internal.h"
 #include <stdio.h>
 
-const char *basename_usage="basename FILE [SUFFIX]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nStrips directory path and suffixes from FILE.\n"
-	"If specified, also removes any trailing SUFFIX.\n"
-#endif
-;
-
-
 extern int basename_main(int argc, char **argv)
 {
 	int m, n;
diff --git a/cat.c b/cat.c
index 6c17ee6..c27f07e 100644
--- a/cat.c
+++ b/cat.c
@@ -34,13 +34,6 @@
 	fflush(stdout);
 }
 
-static const char cat_usage[] =
-	"cat [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nConcatenates FILE(s) and prints them to stdout.\n"
-#endif
-	;
-
 extern int cat_main(int argc, char **argv)
 {
 	FILE *file;
diff --git a/chmod_chown_chgrp.c b/chmod_chown_chgrp.c
index 156a0a9..c02f2a3 100644
--- a/chmod_chown_chgrp.c
+++ b/chmod_chown_chgrp.c
@@ -43,29 +43,6 @@
 #define CHOWN_APP   2
 #define CHMOD_APP   3
 
-static const char chgrp_usage[] = "chgrp [OPTION]... GROUP FILE...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nChange the group membership of each FILE to GROUP.\n"
-	"\nOptions:\n\t-R\tChanges files and directories recursively.\n"
-#endif
-	;
-static const char chown_usage[] =
-	"chown [OPTION]...  OWNER[<.|:>[GROUP] FILE...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nChange the owner and/or group of each FILE to OWNER and/or GROUP.\n"
-	"\nOptions:\n\t-R\tChanges files and directories recursively.\n"
-#endif
-	;
-static const char chmod_usage[] =
-	"chmod [-R] MODE[,MODE]... FILE...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nEach MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
-	"one or more of the letters rwxst.\n\n"
-	"\nOptions:\n\t-R\tChanges files and directories recursively.\n"
-#endif
-	;
-
-
 static int fileAction(const char *fileName, struct stat *statbuf, void* junk)
 {
 	switch (whichApp) {
diff --git a/chroot.c b/chroot.c
index 95aed3d..9b1a5a8 100644
--- a/chroot.c
+++ b/chroot.c
@@ -27,15 +27,6 @@
 #include <stdio.h>
 #include <errno.h>
 
-
-static const char chroot_usage[] = "chroot NEWROOT [COMMAND...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nRun COMMAND with root directory set to NEWROOT.\n"
-#endif
-	;
-
-
-
 int chroot_main(int argc, char **argv)
 {
 	char *prog;
diff --git a/chvt.c b/chvt.c
index ab0e921..87a1248 100644
--- a/chvt.c
+++ b/chvt.c
@@ -15,13 +15,6 @@
 #define VT_ACTIVATE     0x5606  /* make vt active */
 #define VT_WAITACTIVE   0x5607  /* wait for vt active */
 
-const char chvt_usage[] =
-	"chvt N\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nChanges the foreground virtual terminal to /dev/ttyN\n"
-#endif
-	;
-
 int chvt_main(int argc, char **argv)
 {
 	int fd, num;
diff --git a/console-tools/chvt.c b/console-tools/chvt.c
index ab0e921..87a1248 100644
--- a/console-tools/chvt.c
+++ b/console-tools/chvt.c
@@ -15,13 +15,6 @@
 #define VT_ACTIVATE     0x5606  /* make vt active */
 #define VT_WAITACTIVE   0x5607  /* wait for vt active */
 
-const char chvt_usage[] =
-	"chvt N\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nChanges the foreground virtual terminal to /dev/ttyN\n"
-#endif
-	;
-
 int chvt_main(int argc, char **argv)
 {
 	int fd, num;
diff --git a/console-tools/deallocvt.c b/console-tools/deallocvt.c
index 042de86..9c477d2 100644
--- a/console-tools/deallocvt.c
+++ b/console-tools/deallocvt.c
@@ -13,13 +13,6 @@
 /* From <linux/vt.h> */
 #define VT_DISALLOCATE  0x5608  /* free memory associated to vt */
 
-const char deallocvt_usage[] =
-	"deallocvt N\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	 "\nDeallocate unused virtual terminal /dev/ttyN\n"
-#endif
-	 ;
-
 int deallocvt_main(int argc, char *argv[])
 {
 	int fd, num, i;
diff --git a/console-tools/dumpkmap.c b/console-tools/dumpkmap.c
index f180505..4ce6e86 100644
--- a/console-tools/dumpkmap.c
+++ b/console-tools/dumpkmap.c
@@ -38,14 +38,6 @@
 #define NR_KEYS         128
 #define MAX_NR_KEYMAPS  256
 
-
-static const char dumpkmap_usage[] = "dumpkmap\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrints out a binary keyboard translation table to standard input.\n"
-#endif
-	;
-
-
 int dumpkmap_main(int argc, char **argv)
 {
 	struct kbentry ke;
diff --git a/console-tools/loadacm.c b/console-tools/loadacm.c
index 9eebf3b..2d70ffc 100644
--- a/console-tools/loadacm.c
+++ b/console-tools/loadacm.c
@@ -22,12 +22,6 @@
 #include <sys/ioctl.h>
 #include <sys/kd.h>
 
-static const char loadacm_usage[] = "loadacm\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nLoads an acm from standard input.\n"
-#endif
-	;
-
 typedef unsigned short unicode;
 
 static long int ctoi(unsigned char *s, int *is_unicode);
diff --git a/console-tools/loadfont.c b/console-tools/loadfont.c
index 46a7574..6221429 100644
--- a/console-tools/loadfont.c
+++ b/console-tools/loadfont.c
@@ -30,12 +30,6 @@
 #define PSF_MAXMODE    0x03
 #define PSF_SEPARATOR  0xFFFF
 
-static const char loadfont_usage[] = "loadfont\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"Loads a console font from standard input.\n"
-#endif
-	;
-
 struct psf_header {
 	unsigned char magic1, magic2;	/* Magic number */
 	unsigned char mode;			/* PSF font mode */
diff --git a/console-tools/loadkmap.c b/console-tools/loadkmap.c
index 72247a6..488585f 100644
--- a/console-tools/loadkmap.c
+++ b/console-tools/loadkmap.c
@@ -38,14 +38,6 @@
 #define NR_KEYS         128
 #define MAX_NR_KEYMAPS  256
 
-
-static const char loadkmap_usage[] = "loadkmap\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nLoads a binary keyboard translation table from standard input.\n"
-#endif
-	;
-
-
 int loadkmap_main(int argc, char **argv)
 {
 	struct kbentry ke;
diff --git a/console-tools/setkeycodes.c b/console-tools/setkeycodes.c
index 1bdb909..284ffa1 100644
--- a/console-tools/setkeycodes.c
+++ b/console-tools/setkeycodes.c
@@ -35,17 +35,6 @@
 };
 #define KDSETKEYCODE    0x4B4D  /* write kernel keycode table entry */
 
-
-static const char setkeycodes_usage[] =
-	"setkeycodes SCANCODE KEYCODE ...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nSet entries into the kernel's scancode-to-keycode map,\n"
-	"allowing unusual keyboards to generate usable keycodes.\n\n" 
-	"SCANCODE may be either xx or e0xx (hexadecimal),\n"
-	"and KEYCODE is given in decimal\n"
-#endif
-	;
-
 extern int 
 setkeycodes_main(int argc, char** argv)
 {
diff --git a/coreutils/basename.c b/coreutils/basename.c
index 5678c44..5b83eef 100644
--- a/coreutils/basename.c
+++ b/coreutils/basename.c
@@ -24,14 +24,6 @@
 #include "internal.h"
 #include <stdio.h>
 
-const char *basename_usage="basename FILE [SUFFIX]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nStrips directory path and suffixes from FILE.\n"
-	"If specified, also removes any trailing SUFFIX.\n"
-#endif
-;
-
-
 extern int basename_main(int argc, char **argv)
 {
 	int m, n;
diff --git a/coreutils/cat.c b/coreutils/cat.c
index 6c17ee6..c27f07e 100644
--- a/coreutils/cat.c
+++ b/coreutils/cat.c
@@ -34,13 +34,6 @@
 	fflush(stdout);
 }
 
-static const char cat_usage[] =
-	"cat [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nConcatenates FILE(s) and prints them to stdout.\n"
-#endif
-	;
-
 extern int cat_main(int argc, char **argv)
 {
 	FILE *file;
diff --git a/coreutils/chroot.c b/coreutils/chroot.c
index 95aed3d..9b1a5a8 100644
--- a/coreutils/chroot.c
+++ b/coreutils/chroot.c
@@ -27,15 +27,6 @@
 #include <stdio.h>
 #include <errno.h>
 
-
-static const char chroot_usage[] = "chroot NEWROOT [COMMAND...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nRun COMMAND with root directory set to NEWROOT.\n"
-#endif
-	;
-
-
-
 int chroot_main(int argc, char **argv)
 {
 	char *prog;
diff --git a/coreutils/cut.c b/coreutils/cut.c
index 08b4586..8b28fff 100644
--- a/coreutils/cut.c
+++ b/coreutils/cut.c
@@ -206,20 +206,6 @@
 	}
 }
 
-const char cut_usage[] =
-	"cut [OPTION]... [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrints selected fields from each input FILE to standard output.\n\n"
-	"Options:\n"
-	"\t-b LIST\tOutput only bytes from LIST\n"
-	"\t-c LIST\tOutput only characters from LIST\n"
-	"\t-d CHAR\tUse CHAR instead of tab as the field delimiter\n"
-	"\t-s\tOnly output Lines if the include DELIM\n"
-	"\t-f N\tPrint only these fields\n"
-	"\t-n\tIgnored\n"
-#endif
-	;
-
 int cut_main(int argc, char **argv)
 {
 	int i = 1;
diff --git a/coreutils/date.c b/coreutils/date.c
index 3ede123..b6fc6c6 100644
--- a/coreutils/date.c
+++ b/coreutils/date.c
@@ -39,17 +39,6 @@
    an RFC 822 complient date output for shell scripting
    mail commands */
 
-static const char date_usage[] = "date [OPTION]... [+FORMAT]\n"
-	"  or:  date [OPTION] [MMDDhhmm[[CC]YY][.ss]]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nDisplays the current time in the given FORMAT, or sets the system date.\n"
-	"\nOptions:\n\t-R\tOutputs RFC-822 compliant date string\n"
-	"\t-s\tSets time described by STRING\n"
-	"\t-u\tPrints or sets Coordinated Universal Time\n"
-#endif
-	;
-
-
 /* Input parsing code is always bulky - used heavy duty libc stuff as
    much as possible, missed out a lot of bounds checking */
 
diff --git a/coreutils/dd.c b/coreutils/dd.c
index 6261dfe..8689919 100644
--- a/coreutils/dd.c
+++ b/coreutils/dd.c
@@ -40,23 +40,6 @@
 typedef unsigned long long int uintmax_t;
 #endif
 
-static const char dd_usage[] =
-	"dd [if=FILE] [of=FILE] [bs=N] [count=N] [skip=N] [seek=N]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCopy a file, converting and formatting according to options\n\n"
-	"\tif=FILE\tread from FILE instead of stdin\n"
-	"\tof=FILE\twrite to FILE instead of stdout\n"
-	"\tbs=N\tread and write N bytes at a time\n"
-	"\tcount=N\tcopy only N input blocks\n"
-	"\tskip=N\tskip N input blocks\n"
-	"\tseek=N\tskip N output blocks\n"
-	"\n"
-	"Numbers may be suffixed by w (x2), k (x1024), b (x512), or M (x1024^2)\n"
-#endif
-	;
-
-
-
 extern int dd_main(int argc, char **argv)
 {
 	char *inFile = NULL;
diff --git a/coreutils/df.c b/coreutils/df.c
index 62226ce..714c799 100644
--- a/coreutils/df.c
+++ b/coreutils/df.c
@@ -28,12 +28,6 @@
 #include <sys/stat.h>
 #include <sys/vfs.h>
 
-static const char df_usage[] = "df [filesystem ...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrint the filesystem space used and space available.\n"
-#endif
-	;
-
 extern const char mtab_file[];	/* Defined in utility.c */
 
 static int df(char *device, const char *mountPoint)
diff --git a/coreutils/dirname.c b/coreutils/dirname.c
index 0b60ceb..e63fef3 100644
--- a/coreutils/dirname.c
+++ b/coreutils/dirname.c
@@ -23,13 +23,6 @@
 #include "internal.h"
 #include <stdio.h>
 
-const char dirname_usage[] =
-	"dirname [FILENAME ...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nStrips non-directory suffix from FILENAME\n"
-#endif
-	;
-
 extern int dirname_main(int argc, char **argv)
 {
 	char* s;
diff --git a/coreutils/du.c b/coreutils/du.c
index f1a4442..147914c 100644
--- a/coreutils/du.c
+++ b/coreutils/du.c
@@ -35,17 +35,6 @@
 
 typedef void (Display) (long, char *);
 
-static const char du_usage[] =
-	"du [OPTION]... [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nSummarizes disk space used for each FILE and/or directory.\n"
-	"Disk space is printed in units of 1024 bytes.\n\n"
-	"Options:\n"
-	"\t-l\tcount sizes many times if hard linked\n"
-	"\t-s\tdisplay only a total for each argument\n"
-#endif
-	;
-
 static int du_depth = 0;
 static int count_hardlinks = 0;
 
@@ -174,7 +163,7 @@
 	return(0);
 }
 
-/* $Id: du.c,v 1.22 2000/07/14 18:38:26 andersen Exp $ */
+/* $Id: du.c,v 1.23 2000/07/16 20:57:15 kraai Exp $ */
 /*
 Local Variables:
 c-file-style: "linux"
diff --git a/coreutils/echo.c b/coreutils/echo.c
index 387ea3f..73be8f2 100644
--- a/coreutils/echo.c
+++ b/coreutils/echo.c
@@ -25,17 +25,6 @@
 #include "internal.h"
 #include <stdio.h>
 
-static const char uname_usage[] =
-	"echo [-neE] [ARG ...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrints the specified ARGs to stdout\n\n"
-	"Options:\n"
-	"\t-n\tsuppress trailing newline\n"
-	"\t-e\tinterpret backslash-escaped characters (i.e. \\t=tab etc)\n"
-	"\t-E\tdisable interpretation of backslash-escaped characters\n"
-#endif
-	;
-
 extern int 
 echo_main(int argc, char** argv)
 {
@@ -58,7 +47,7 @@
 			eflag = 0;
 			break;
 		default: 
-			usage(uname_usage);
+			usage(echo_usage);
 		}
 	}
 
diff --git a/coreutils/head.c b/coreutils/head.c
index b82678d..58b3cae 100644
--- a/coreutils/head.c
+++ b/coreutils/head.c
@@ -26,17 +26,6 @@
 #include <errno.h>
 #include <stdio.h>
 
-const char head_usage[] =
-	"head [OPTION] [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrint first 10 lines of each FILE to standard output.\n"
-	"With more than one FILE, precede each with a header giving the\n"
-	"file name. With no FILE, or when FILE is -, read standard input.\n\n"
-
-	"Options:\n" "\t-n NUM\t\tPrint first NUM lines instead of first 10\n"
-#endif
-	;
-
 int head(int len, FILE * src)
 {
 	int i;
@@ -111,4 +100,4 @@
 	return(0);
 }
 
-/* $Id: head.c,v 1.12 2000/07/14 01:51:25 kraai Exp $ */
+/* $Id: head.c,v 1.13 2000/07/16 20:57:15 kraai Exp $ */
diff --git a/coreutils/id.c b/coreutils/id.c
index 69dfe26..56a2e27 100644
--- a/coreutils/id.c
+++ b/coreutils/id.c
@@ -28,17 +28,6 @@
 #include <grp.h>
 #include <sys/types.h>
 
-static const char id_usage[] =
-	"id [OPTIONS]... [USERNAME]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrint information for USERNAME or the current user\n\n"
-	"Options:\n"
-	"\t-g\tprints only the group ID\n"
-	"\t-u\tprints only the user ID\n"
-	"\t-r\tprints the real user ID instead of the effective ID (with -ug)\n\n"
-#endif
-	;
-
 extern int id_main(int argc, char **argv)
 {
 	int no_user = 0, no_group = 0, print_real = 0;
diff --git a/coreutils/length.c b/coreutils/length.c
index 82f50c1..cf4fb1c 100644
--- a/coreutils/length.c
+++ b/coreutils/length.c
@@ -4,13 +4,6 @@
 #include <string.h>
 #include <stdio.h>
 
-const char length_usage[] =
-	"length STRING\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrints out the length of the specified STRING.\n"
-#endif
-	;
-
 extern int length_main(int argc, char **argv)
 {
 	if (argc != 2 || **(argv + 1) == '-')
diff --git a/coreutils/ln.c b/coreutils/ln.c
index 9f77743..8b8fa1c 100644
--- a/coreutils/ln.c
+++ b/coreutils/ln.c
@@ -30,19 +30,6 @@
 #include <dirent.h>
 #include <errno.h>
 
-static const char ln_usage[] =
-	"ln [OPTION] TARGET... LINK_NAME|DIRECTORY\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCreate a link named LINK_NAME or DIRECTORY to the specified TARGET\n"
-	"\nYou may use '--' to indicate that all following arguments are non-options.\n\n"
-	"Options:\n"
-	"\t-s\tmake symbolic links instead of hard links\n"
-
-	"\t-f\tremove existing destination files\n"
-	"\t-n\tno dereference symlinks - treat like normal file\n"
-#endif
-	;
-
 static int symlinkFlag = FALSE;
 static int removeoldFlag = FALSE;
 static int followLinks = TRUE;
diff --git a/coreutils/logname.c b/coreutils/logname.c
index 12ebfbd..a0aff42 100644
--- a/coreutils/logname.c
+++ b/coreutils/logname.c
@@ -23,12 +23,6 @@
 #include "internal.h"
 #include <stdio.h>
 
-static const char logname_usage[] = "logname\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrint the name of the current user.\n"
-#endif
-	;
-
 extern int logname_main(int argc, char **argv)
 {
 	char *user = xmalloc(9);
diff --git a/coreutils/ls.c b/coreutils/ls.c
index 0644cde..e56e3bc 100644
--- a/coreutils/ls.c
+++ b/coreutils/ls.c
@@ -427,63 +427,6 @@
 	return 1;
 }
 
-static const char ls_usage[] = "ls [-1a"
-#ifdef BB_FEATURE_LS_TIMESTAMPS
-	"c"
-#endif
-	"d"
-#ifdef BB_FEATURE_LS_TIMESTAMPS
-	"e"
-#endif
-	"ln"
-#ifdef BB_FEATURE_LS_FILETYPES
-	"p"
-#endif
-#ifdef BB_FEATURE_LS_TIMESTAMPS
-	"u"
-#endif
-	"xAC"
-#ifdef BB_FEATURE_LS_FILETYPES
-	"F"
-#endif
-#ifdef BB_FEATURE_LS_RECURSIVE
-	"R"
-#endif
-	"] [filenames...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nList directory contents\n\n"
-	"Options:\n"
-	"\t-a\tdo not hide entries starting with .\n"
-#ifdef BB_FEATURE_LS_TIMESTAMPS
-	"\t-c\twith -l: show ctime (the time of last\n"
-    "\t\tmodification of file status information)\n"
-#endif
-	"\t-d\tlist directory entries instead of contents\n"
-#ifdef BB_FEATURE_LS_TIMESTAMPS
-	"\t-e\tlist both full date and full time\n"
-#endif
-	"\t-l\tuse a long listing format\n"
-	"\t-n\tlist numeric UIDs and GIDs instead of names\n"
-#ifdef BB_FEATURE_LS_FILETYPES
-	"\t-p\tappend indicator (one of /=@|) to entries\n"
-#endif
-#ifdef BB_FEATURE_LS_TIMESTAMPS
-	"\t-u\twith -l: show access time (the time of last\n"
-	"\t\taccess of the file)\n"
-#endif
-	"\t-x\tlist entries by lines instead of by columns\n"
-	"\t-A\tdo not list implied . and ..\n"
-	"\t-C\tlist entries by columns\n"
-#ifdef BB_FEATURE_LS_FILETYPES
-	"\t-F\tappend indicator (one of */=@|) to entries\n"
-#endif
-#ifdef BB_FEATURE_LS_RECURSIVE
-	"\t-R\tlist subdirectories recursively\n"
-#endif
-#endif
-	;
-
-
 #ifdef BB_FEATURE_LS_RECURSIVE
 static int dirAction(const char *fileName, struct stat *statbuf, void* junk)
 {
diff --git a/coreutils/md5sum.c b/coreutils/md5sum.c
index e6f1c86..fad563f 100644
--- a/coreutils/md5sum.c
+++ b/coreutils/md5sum.c
@@ -582,23 +582,6 @@
 static int warn = 0; /* With -w, print a message to standard error warning
                         about each improperly formatted MD5 checksum line */
 
-static const char md5sum_usage[] =
-    "md5sum [OPTION] [FILE]...\n"
-    "or:    md5sum [OPTION] -c [FILE]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-    "\nPrint or check MD5 checksums.\n\n"
-    "Options:\n"
-    "With no FILE, or when FILE is -, read standard input.\n\n"
-    "\t-b\tread files in binary mode\n"
-    "\t-c\tcheck MD5 sums against given list\n"
-    "\t-t\tread files in text mode (default)\n"
-    "\t-g\tread a string\n"
-    "\nThe following two options are useful only when verifying checksums:\n"
-    "\t-s,\tdon't output anything, status code shows success\n"
-    "\t-w,\twarn about improperly formated MD5 checksum lines\n"
-#endif
-;
-
 static int split_3(char *s,
                    size_t s_len,
                    unsigned char **u,
diff --git a/coreutils/mkdir.c b/coreutils/mkdir.c
index f6e08ca..f824cdc 100644
--- a/coreutils/mkdir.c
+++ b/coreutils/mkdir.c
@@ -29,18 +29,6 @@
 #include <stdio.h>
 #include <errno.h>
 
-static const char mkdir_usage[] =
-	"mkdir [OPTION] DIRECTORY...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCreate the DIRECTORY(ies), if they do not already exist\n\n"
-	"Options:\n"
-
-	"\t-m\tset permission mode (as in chmod), not rwxrwxrwx - umask\n"
-	"\t-p\tno error if existing, make parent directories as needed\n"
-#endif
-	;
-
-
 static int parentFlag = FALSE;
 static mode_t mode = 0777;
 
diff --git a/coreutils/mkfifo.c b/coreutils/mkfifo.c
index f701a97..3db17bb 100644
--- a/coreutils/mkfifo.c
+++ b/coreutils/mkfifo.c
@@ -26,14 +26,6 @@
 #include <sys/stat.h>
 #include <errno.h>
 
-static const char mkfifo_usage[] = "mkfifo [OPTIONS] name\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCreates a named pipe (identical to 'mknod name p')\n\n"
-	"Options:\n"
-	"\t-m\tcreate the pipe using the specified mode (default a=rw)\n"
-#endif
-	;
-
 extern int mkfifo_main(int argc, char **argv)
 {
 	char *thisarg;
diff --git a/coreutils/mknod.c b/coreutils/mknod.c
index ac96817..b51c8f3 100644
--- a/coreutils/mknod.c
+++ b/coreutils/mknod.c
@@ -28,18 +28,6 @@
 #include <fcntl.h>
 #include <unistd.h>
 
-static const char mknod_usage[] = "mknod [OPTIONS] NAME TYPE MAJOR MINOR\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCreate a special file (block, character, or pipe).\n\n"
-	"Options:\n"
-	"\t-m\tcreate the special file using the specified mode (default a=rw)\n\n"
-	"TYPEs include:\n"
-	"\tb:\tMake a block (buffered) device.\n"
-	"\tc or u:\tMake a character (un-buffered) device.\n"
-	"\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes.\n"
-#endif
-	;
-
 int mknod_main(int argc, char **argv)
 {
 	char *thisarg;
diff --git a/coreutils/printf.c b/coreutils/printf.c
index f572897..6a87fc3 100644
--- a/coreutils/printf.c
+++ b/coreutils/printf.c
@@ -137,13 +137,6 @@
 /* The value to return to the calling program.  */
 static int exit_status;
 
-static const char printf_usage[] = "printf FORMAT [ARGUMENT...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nFormats and prints ARGUMENT(s) according to FORMAT,\n"
-	"Where FORMAT controls the output exactly as in C printf.\n"
-#endif
-	;
-
 int printf_main(int argc, char **argv)
 {
 	char *format;
diff --git a/coreutils/rm.c b/coreutils/rm.c
index 2067d87..275c059 100644
--- a/coreutils/rm.c
+++ b/coreutils/rm.c
@@ -29,17 +29,6 @@
 #include <dirent.h>
 #include <errno.h>
 
-static const char *rm_usage = "rm [OPTION]... FILE...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nRemove (unlink) the FILE(s).  You may use '--' to\n"
-	"indicate that all following arguments are non-options.\n\n"
-	"Options:\n"
-	"\t-f\t\tremove existing destinations, never prompt\n"
-	"\t-r or -R\tremove the contents of directories recursively\n"
-#endif
-	;
-
-
 static int recursiveFlag = FALSE;
 static int forceFlag = FALSE;
 static const char *srcName;
diff --git a/coreutils/rmdir.c b/coreutils/rmdir.c
index 3c3533f..500890e 100644
--- a/coreutils/rmdir.c
+++ b/coreutils/rmdir.c
@@ -26,13 +26,6 @@
 #include <stdio.h>
 #include <errno.h>
 
-const char rmdir_usage[] =
-	"rmdir [OPTION]... DIRECTORY...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nRemove the DIRECTORY(ies), if they are empty.\n"
-#endif
-	;
-
 extern int rmdir_main(int argc, char **argv)
 {
 	if (argc == 1 || **(argv + 1) == '-')
diff --git a/coreutils/sleep.c b/coreutils/sleep.c
index c7ab32d..d6705c4 100644
--- a/coreutils/sleep.c
+++ b/coreutils/sleep.c
@@ -24,12 +24,6 @@
 #include "internal.h"
 #include <stdio.h>
 
-const char sleep_usage[] = "sleep N\n" 
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPause for N seconds.\n"
-#endif
-	;
-
 extern int sleep_main(int argc, char **argv)
 {
 	if ((argc < 2) || (**(argv + 1) == '-')) {
diff --git a/coreutils/sort.c b/coreutils/sort.c
index c754989..6af5c4d 100644
--- a/coreutils/sort.c
+++ b/coreutils/sort.c
@@ -29,16 +29,6 @@
 #include <stdio.h>
 #include <errno.h>
 
-static const char sort_usage[] = "sort [-n]"
-#ifdef BB_FEATURE_SORT_REVERSE
-" [-r]"
-#endif
-" [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-"\nSorts lines of text in the specified files\n"
-#endif
-;
-
 #ifdef BB_FEATURE_SORT_REVERSE
 #define APPLY_REVERSE(x) (reverse ? -(x) : (x))
 static int reverse = 0;
@@ -304,4 +294,4 @@
 	return(0);
 }
 
-/* $Id: sort.c,v 1.19 2000/07/14 01:51:25 kraai Exp $ */
+/* $Id: sort.c,v 1.20 2000/07/16 20:57:15 kraai Exp $ */
diff --git a/coreutils/sync.c b/coreutils/sync.c
index f7c14b0..3737cb1 100644
--- a/coreutils/sync.c
+++ b/coreutils/sync.c
@@ -24,13 +24,6 @@
 #include "internal.h"
 #include <stdio.h>
 
-const char sync_usage[] =
-	"sync\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nWrite all buffered filesystem blocks to disk.\n"
-#endif
-	;
-
 extern int sync_main(int argc, char **argv)
 {
 	if (argc > 1 && **(argv + 1) == '-')
diff --git a/coreutils/tail.c b/coreutils/tail.c
index 9232356..cea63e8 100644
--- a/coreutils/tail.c
+++ b/coreutils/tail.c
@@ -72,21 +72,6 @@
 /* If nonzero, print filename headers.  */
 static int print_headers;
 
-const char tail_usage[] =
-	"tail [OPTION] [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrint last 10 lines of each FILE to standard output.\n"
-	"With more than one FILE, precede each with a header giving the\n"
-	"file name. With no FILE, or when FILE is -, read standard input.\n\n"
-	"Options:\n"
-	"\t-n NUM\t\tPrint last NUM lines instead of first 10\n"
-
-	"\t-f\t\tOutput data as the file grows.  This version\n"
-	"\t\t\tof 'tail -f' supports only one file at a time.\n"
-#endif
-	;
-
-
 static void write_header(const char *filename)
 {
 	static int first_file = 1;
@@ -516,25 +501,6 @@
 /* Nonzero if we have ever read standard input.  */
 static int have_read_stdin;
 
-
-static const char tail_usage[] = "tail [OPTION]... [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-"\nPrint last 10 lines of each FILE to standard output.\n\
-With more than one FILE, precede each with a header giving the file name.\n\
-With no FILE, or when FILE is -, read standard input.\n\
-\n\
-  -c=N[kbm]       output the last N bytes\n\
-  -f              output appended data as the file grows\n\
-  -n=N            output the last N lines, instead of last 10\n\
-  -q              never output headers giving file names\n\
-  -v              always output headers giving file names\n\
-\n\
-If the first character of N (bytes or lines) is a `+', output begins with \n\
-the Nth item from the start of each file, otherwise, print the last N items\n\
-in the file.  N bytes may be suffixed by k (x1024), b (x512), or m (1024^2).\n"
-#endif
-;
-
 static void write_header(const char *filename, const char *comment)
 {
 	static int first_file = 1;
diff --git a/coreutils/tee.c b/coreutils/tee.c
index 67b42a2..c15408b 100644
--- a/coreutils/tee.c
+++ b/coreutils/tee.c
@@ -26,18 +26,6 @@
 #include <errno.h>
 #include <stdio.h>
 
-static const char tee_usage[] =
-	"tee [OPTION]... [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCopy standard input to each FILE, and also to standard output.\n\n"
-	"Options:\n" "\t-a\tappend to the given FILEs, do not overwrite\n"
-#if 0
-	"\t-i\tignore interrupt signals\n"
-#endif
-#endif
-;
-
-
 /* FileList _______________________________________________________________ */
 
 #define FL_MAX	1024
@@ -133,4 +121,4 @@
 	return(0);
 }
 
-/* $Id: tee.c,v 1.12 2000/07/14 01:51:25 kraai Exp $ */
+/* $Id: tee.c,v 1.13 2000/07/16 20:57:15 kraai Exp $ */
diff --git a/coreutils/test.c b/coreutils/test.c
index bf1622c..9a1888b 100644
--- a/coreutils/test.c
+++ b/coreutils/test.c
@@ -178,15 +178,6 @@
 static int is_a_group_member();
 static void initialize_group_array();
 
-const char test_usage[] =
-	"test EXPRESSION\n"
-	"or   [ EXPRESSION ]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nChecks file types and compares values returning an exit\n"
-	"code determined by the value of EXPRESSION.\n"
-#endif
-	;
-
 extern int
 test_main(int argc, char** argv)
 {
diff --git a/coreutils/touch.c b/coreutils/touch.c
index ac27542..afdd265 100644
--- a/coreutils/touch.c
+++ b/coreutils/touch.c
@@ -30,16 +30,6 @@
 #include <utime.h>
 #include <errno.h>
 
-
-static const char touch_usage[] = "touch [-c] file [file ...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nUpdate the last-modified date on the given file[s].\n\n"
-	"Options:\n"
-	"\t-c\tDo not create any files\n"
-#endif
-	;
-
-
 extern int touch_main(int argc, char **argv)
 {
 	int fd;
diff --git a/coreutils/tr.c b/coreutils/tr.c
index 2971ef6..0040924 100644
--- a/coreutils/tr.c
+++ b/coreutils/tr.c
@@ -34,19 +34,6 @@
 #define bb_need_write_error
 #include "messages.c"
 
-const char *tr_usage="tr [-cds] STRING1 [STRING2]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nTranslate, squeeze, and/or delete characters from\n"
-	"standard input, writing to standard output.\n\n"
-	"Options:\n"
-	"\t-c\ttake complement of STRING1\n"
-	"\t-d\tdelete input characters coded STRING1\n"
-	"\t-s\tsqueeze multiple output characters of STRING2 into one character\n"
-#endif
-;
-
-
-
 #ifdef TRUE
 #undef TRUE
 #undef FALSE
diff --git a/coreutils/tty.c b/coreutils/tty.c
index f3c7fb7..bbc051f 100644
--- a/coreutils/tty.c
+++ b/coreutils/tty.c
@@ -24,14 +24,6 @@
 #include <stdio.h>
 #include <sys/types.h>
 
-static const char tty_usage[] = "tty\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrint the file name of the terminal connected to standard input.\n\n"
-	"Options:\n"
-	"\t-s\tprint nothing, only return an exit status\n"
-#endif
-	;
-
 extern int tty_main(int argc, char **argv)
 {
 	char *tty;
diff --git a/coreutils/uname.c b/coreutils/uname.c
index b7c88ec..55616dd 100644
--- a/coreutils/uname.c
+++ b/coreutils/uname.c
@@ -40,24 +40,6 @@
 # include <sys/systeminfo.h>
 #endif
 
-
-static const char uname_usage[] =
-	"uname [OPTION]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrint certain system information.  With no OPTION, same as -s.\n\n"
-	"Options:\n"
-	"\t-a\tprint all information\n"
-	"\t-m\tthe machine (hardware) type\n"
-	"\t-n\tprint the machine's network node hostname\n"
-	"\t-r\tprint the operating system release\n"
-	"\t-s\tprint the operating system name\n"
-
-	"\t-p\tprint the host processor type\n"
-	"\t-v\tprint the operating system version\n"
-#endif
-	;
-
-
 static void print_element(unsigned int mask, char *element);
 
 /* Values that are bitwise or'd into `toprint'. */
diff --git a/coreutils/uniq.c b/coreutils/uniq.c
index 16b2576..016fc77 100644
--- a/coreutils/uniq.c
+++ b/coreutils/uniq.c
@@ -27,14 +27,6 @@
 #include <string.h>
 #include <errno.h>
 
-static const char uniq_usage[] =
-	"uniq [OPTION]... [INPUT [OUTPUT]]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nDiscard all but one of successive identical lines from INPUT\n"
-	"(or standard input), writing to OUTPUT (or standard output).\n"
-#endif
-	;
-
 /* max chars in line */
 #define UNIQ_MAX 4096
 
@@ -187,4 +179,4 @@
 	return(0);
 }
 
-/* $Id: uniq.c,v 1.12 2000/07/14 01:51:25 kraai Exp $ */
+/* $Id: uniq.c,v 1.13 2000/07/16 20:57:15 kraai Exp $ */
diff --git a/coreutils/usleep.c b/coreutils/usleep.c
index da6cca9..fcdf3bb 100644
--- a/coreutils/usleep.c
+++ b/coreutils/usleep.c
@@ -25,12 +25,6 @@
 #include <stdlib.h>
 #include <unistd.h>
 
-const char usleep_usage[] = "usleep N\n" 
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPause for N microseconds.\n"
-#endif
-	;
-
 extern int usleep_main(int argc, char **argv)
 {
 	if ((argc < 2) || (**(argv + 1) == '-')) {
diff --git a/coreutils/uudecode.c b/coreutils/uudecode.c
index 12a71a5..90bef92 100644
--- a/coreutils/uudecode.c
+++ b/coreutils/uudecode.c
@@ -300,15 +300,6 @@
     return read_stduu (inname);
 }
 
-static const char uudecode_usage[] =
-    "uudecode [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-    "\nUudecode a file that is uuencoded.\n\n"
-    "Options:\n"
-    "\t-o FILE\tdirect output to FILE\n"
-#endif
-;
-
 int uudecode_main (int argc,
                    char **argv)
 {
diff --git a/coreutils/uuencode.c b/coreutils/uuencode.c
index e107a01..1433c7f 100644
--- a/coreutils/uuencode.c
+++ b/coreutils/uuencode.c
@@ -180,15 +180,6 @@
   }
 }
 
-static const char uuencode_usage[] =
-    "uuencode [OPTION] [INFILE] REMOTEFILE\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-    "\nUuencode a file.\n\n"
-    "Options:\n"
-    "\t-m\tuse base64 encoding as of RFC1521\n"
-#endif
-;
-
 int uuencode_main (int argc,
                    char **argv)
 {
diff --git a/coreutils/wc.c b/coreutils/wc.c
index 3b0e589..058444d 100644
--- a/coreutils/wc.c
+++ b/coreutils/wc.c
@@ -23,19 +23,6 @@
 #include "internal.h"
 #include <stdio.h>
 
-static const char wc_usage[] = "wc [OPTION]... [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrint line, word, and byte counts for each FILE, and a total line if\n"
-	"more than one FILE is specified.  With no FILE, read standard input.\n\n"
-	"Options:\n"
-	"\t-c\tprint the byte counts\n"
-	"\t-l\tprint the newline counts\n"
-
-	"\t-L\tprint the length of the longest line\n"
-	"\t-w\tprint the word counts\n"
-#endif
-	;
-
 static int total_lines, total_words, total_chars, max_length;
 static int print_lines, print_words, print_chars, print_length;
 
diff --git a/coreutils/whoami.c b/coreutils/whoami.c
index 01dff81..84b27fe 100644
--- a/coreutils/whoami.c
+++ b/coreutils/whoami.c
@@ -24,12 +24,6 @@
 #include <stdio.h>
 #include <pwd.h>
 
-static const char whoami_usage[] = "whoami\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrints the user name associated with the current effective user id.\n"
-#endif
-	;
-
 extern int whoami_main(int argc, char **argv)
 {
 	char *user = xmalloc(9);
diff --git a/coreutils/yes.c b/coreutils/yes.c
index 0191bb0..f41bbb6 100644
--- a/coreutils/yes.c
+++ b/coreutils/yes.c
@@ -23,13 +23,6 @@
 #include "internal.h"
 #include <stdio.h>
 
-const char yes_usage[] =
-	"yes [OPTION]... [STRING]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nRepeatedly outputs a line with all specified STRING(s), or `y'.\n"
-#endif
-	;
-
 extern int yes_main(int argc, char **argv)
 {
 	int i;
diff --git a/cp_mv.c b/cp_mv.c
index 72ba537..4c3c7a3 100644
--- a/cp_mv.c
+++ b/cp_mv.c
@@ -47,28 +47,6 @@
 #define is_mv 1
 static int         dz_i;		/* index into cp_mv_usage */
 
-const char cp_usage[] =
-	"cp [OPTION]... SOURCE DEST\n"
-	"   or: cp [OPTION]... SOURCE... DIRECTORY\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCopies SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
-	"\n"
-	"\t-a\tSame as -dpR\n"
-	"\t-d\tPreserves links\n"
-	"\t-p\tPreserves file attributes if possible\n"
-	"\t-f\tforce (implied; ignored) - always set\n"
-	"\t-R\tCopies directories recursively\n"
-#endif
-	;
-
-const char mv_usage[] =
-	"mv SOURCE DEST\n"
-	"   or: mv SOURCE... DIRECTORY\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nRename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
-#endif
-	;
-
 static const char *cp_mv_usage[] =	/* .rodata */
 {
 	cp_usage,
diff --git a/cut.c b/cut.c
index 08b4586..8b28fff 100644
--- a/cut.c
+++ b/cut.c
@@ -206,20 +206,6 @@
 	}
 }
 
-const char cut_usage[] =
-	"cut [OPTION]... [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrints selected fields from each input FILE to standard output.\n\n"
-	"Options:\n"
-	"\t-b LIST\tOutput only bytes from LIST\n"
-	"\t-c LIST\tOutput only characters from LIST\n"
-	"\t-d CHAR\tUse CHAR instead of tab as the field delimiter\n"
-	"\t-s\tOnly output Lines if the include DELIM\n"
-	"\t-f N\tPrint only these fields\n"
-	"\t-n\tIgnored\n"
-#endif
-	;
-
 int cut_main(int argc, char **argv)
 {
 	int i = 1;
diff --git a/date.c b/date.c
index 3ede123..b6fc6c6 100644
--- a/date.c
+++ b/date.c
@@ -39,17 +39,6 @@
    an RFC 822 complient date output for shell scripting
    mail commands */
 
-static const char date_usage[] = "date [OPTION]... [+FORMAT]\n"
-	"  or:  date [OPTION] [MMDDhhmm[[CC]YY][.ss]]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nDisplays the current time in the given FORMAT, or sets the system date.\n"
-	"\nOptions:\n\t-R\tOutputs RFC-822 compliant date string\n"
-	"\t-s\tSets time described by STRING\n"
-	"\t-u\tPrints or sets Coordinated Universal Time\n"
-#endif
-	;
-
-
 /* Input parsing code is always bulky - used heavy duty libc stuff as
    much as possible, missed out a lot of bounds checking */
 
diff --git a/dc.c b/dc.c
index 7b13cb9..fac48e8 100644
--- a/dc.c
+++ b/dc.c
@@ -8,14 +8,6 @@
 
 /* Tiny RPN calculator, because "expr" didn't give me bitwise operations. */
 
-static const char dc_usage[] = "dc expression ...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-		"\nThis is a Tiny RPN calculator that understands the\n"
-		"following operations: +, -, /, *, and, or, not, eor.\n"
-		"i.e. 'dc 2 2 add' -> 4, and 'dc 8 8 \\* 2 2 + /' -> 16\n"
-#endif
-		;
-
 static double stack[100];
 static unsigned int pointer;
 
diff --git a/dd.c b/dd.c
index 6261dfe..8689919 100644
--- a/dd.c
+++ b/dd.c
@@ -40,23 +40,6 @@
 typedef unsigned long long int uintmax_t;
 #endif
 
-static const char dd_usage[] =
-	"dd [if=FILE] [of=FILE] [bs=N] [count=N] [skip=N] [seek=N]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCopy a file, converting and formatting according to options\n\n"
-	"\tif=FILE\tread from FILE instead of stdin\n"
-	"\tof=FILE\twrite to FILE instead of stdout\n"
-	"\tbs=N\tread and write N bytes at a time\n"
-	"\tcount=N\tcopy only N input blocks\n"
-	"\tskip=N\tskip N input blocks\n"
-	"\tseek=N\tskip N output blocks\n"
-	"\n"
-	"Numbers may be suffixed by w (x2), k (x1024), b (x512), or M (x1024^2)\n"
-#endif
-	;
-
-
-
 extern int dd_main(int argc, char **argv)
 {
 	char *inFile = NULL;
diff --git a/deallocvt.c b/deallocvt.c
index 042de86..9c477d2 100644
--- a/deallocvt.c
+++ b/deallocvt.c
@@ -13,13 +13,6 @@
 /* From <linux/vt.h> */
 #define VT_DISALLOCATE  0x5608  /* free memory associated to vt */
 
-const char deallocvt_usage[] =
-	"deallocvt N\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	 "\nDeallocate unused virtual terminal /dev/ttyN\n"
-#endif
-	 ;
-
 int deallocvt_main(int argc, char *argv[])
 {
 	int fd, num, i;
diff --git a/df.c b/df.c
index 62226ce..714c799 100644
--- a/df.c
+++ b/df.c
@@ -28,12 +28,6 @@
 #include <sys/stat.h>
 #include <sys/vfs.h>
 
-static const char df_usage[] = "df [filesystem ...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrint the filesystem space used and space available.\n"
-#endif
-	;
-
 extern const char mtab_file[];	/* Defined in utility.c */
 
 static int df(char *device, const char *mountPoint)
diff --git a/dirname.c b/dirname.c
index 0b60ceb..e63fef3 100644
--- a/dirname.c
+++ b/dirname.c
@@ -23,13 +23,6 @@
 #include "internal.h"
 #include <stdio.h>
 
-const char dirname_usage[] =
-	"dirname [FILENAME ...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nStrips non-directory suffix from FILENAME\n"
-#endif
-	;
-
 extern int dirname_main(int argc, char **argv)
 {
 	char* s;
diff --git a/dmesg.c b/dmesg.c
index 961e532..a8c61c7 100644
--- a/dmesg.c
+++ b/dmesg.c
@@ -32,16 +32,6 @@
 # include <sys/klog.h>
 #endif
 
-static const char dmesg_usage[] = "dmesg [-c] [-n LEVEL] [-s SIZE]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrints or controls the kernel ring buffer\n\n"
-	"Options:\n"
-	"\t-c\t\tClears the ring buffer's contents after printing\n"
-	"\t-n LEVEL\tSets console logging level\n"
-	"\t-s SIZE\t\tUse a buffer of size SIZE\n"
-#endif
-	;
-
 int dmesg_main(int argc, char **argv)
 {
 	char *buf, c;
diff --git a/du.c b/du.c
index f1a4442..147914c 100644
--- a/du.c
+++ b/du.c
@@ -35,17 +35,6 @@
 
 typedef void (Display) (long, char *);
 
-static const char du_usage[] =
-	"du [OPTION]... [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nSummarizes disk space used for each FILE and/or directory.\n"
-	"Disk space is printed in units of 1024 bytes.\n\n"
-	"Options:\n"
-	"\t-l\tcount sizes many times if hard linked\n"
-	"\t-s\tdisplay only a total for each argument\n"
-#endif
-	;
-
 static int du_depth = 0;
 static int count_hardlinks = 0;
 
@@ -174,7 +163,7 @@
 	return(0);
 }
 
-/* $Id: du.c,v 1.22 2000/07/14 18:38:26 andersen Exp $ */
+/* $Id: du.c,v 1.23 2000/07/16 20:57:15 kraai Exp $ */
 /*
 Local Variables:
 c-file-style: "linux"
diff --git a/dumpkmap.c b/dumpkmap.c
index f180505..4ce6e86 100644
--- a/dumpkmap.c
+++ b/dumpkmap.c
@@ -38,14 +38,6 @@
 #define NR_KEYS         128
 #define MAX_NR_KEYMAPS  256
 
-
-static const char dumpkmap_usage[] = "dumpkmap\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrints out a binary keyboard translation table to standard input.\n"
-#endif
-	;
-
-
 int dumpkmap_main(int argc, char **argv)
 {
 	struct kbentry ke;
diff --git a/dutmp.c b/dutmp.c
index c6bc0c7..047b880 100644
--- a/dutmp.c
+++ b/dutmp.c
@@ -23,14 +23,6 @@
 #include "messages.c"
 #include <utmp.h>
 
-
-static const char dutmp_usage[] = "dutmp [FILE]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nDump utmp file format (pipe delimited) from FILE\n"
-	"or stdin to stdout.  (i.e. 'dutmp /var/run/utmp')\n"
-#endif
-	;
-
 extern int dutmp_main(int argc, char **argv)
 {
 
diff --git a/echo.c b/echo.c
index 387ea3f..73be8f2 100644
--- a/echo.c
+++ b/echo.c
@@ -25,17 +25,6 @@
 #include "internal.h"
 #include <stdio.h>
 
-static const char uname_usage[] =
-	"echo [-neE] [ARG ...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrints the specified ARGs to stdout\n\n"
-	"Options:\n"
-	"\t-n\tsuppress trailing newline\n"
-	"\t-e\tinterpret backslash-escaped characters (i.e. \\t=tab etc)\n"
-	"\t-E\tdisable interpretation of backslash-escaped characters\n"
-#endif
-	;
-
 extern int 
 echo_main(int argc, char** argv)
 {
@@ -58,7 +47,7 @@
 			eflag = 0;
 			break;
 		default: 
-			usage(uname_usage);
+			usage(echo_usage);
 		}
 	}
 
diff --git a/editors/sed.c b/editors/sed.c
index 1f1e906..4d4886e 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -85,22 +85,6 @@
 
 /*static char *cur_file = NULL;*/ /* file currently being processed XXX: do I need this? */
 
-static const char sed_usage[] =
-	"sed [-Vhnef] pattern [files...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\n"
-	"-n\tsuppress automatic printing of pattern space\n"
-	"-e script\tadd the script to the commands to be executed\n"
-	"-f scriptfile\tadd the contents of script-file to the commands to be executed\n"
-	"-h\tdisplay this help message\n"
-	"-V\toutput version information and exit\n"
-	"\n"
-	"If no -e or -f is given, the first non-option argument is taken as the\n"
-	"sed script to interpret. All remaining arguments are names of input\n"
-	"files; if no input files are specified, then the standard input is read.\n"
-#endif
-	;
-
 #if 0
 static void destroy_cmd_strs()
 {
diff --git a/fdflush.c b/fdflush.c
index d993735..6bc3e7d 100644
--- a/fdflush.c
+++ b/fdflush.c
@@ -34,13 +34,8 @@
 	int value;
 	int fd;
 
-	if (argc <= 1 || **(++argv) == '-') {
-		usage("fdflush DEVICE\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-				"\nForces floppy disk drive to detect disk change\n"
-#endif
-				);
-	}
+	if (argc <= 1 || **(++argv) == '-')
+		usage(fdflush_usage);
 
 	fd = open(*argv, 0);
 	if (fd < 0) {
diff --git a/find.c b/find.c
index e18f3c5..1c209ae 100644
--- a/find.c
+++ b/find.c
@@ -32,18 +32,6 @@
 static char *directory = ".";
 static int dereferenceFlag = FALSE;
 
-static const char find_usage[] = "find [PATH...] [EXPRESSION]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nSearch for files in a directory hierarchy.  The default PATH is\n"
-	"the current directory; default EXPRESSION is '-print'\n\n"
-	"\nEXPRESSION may consist of:\n"
-	"\t-follow\t\tDereference symbolic links.\n"
-	"\t-name PATTERN\tFile name (leading directories removed) matches PATTERN.\n"
-	"\t-print\t\tprint the full file name followed by a newline to stdout.\n"
-#endif
-	;
-
-
 static int fileAction(const char *fileName, struct stat *statbuf, void* junk)
 {
 	if (pattern == NULL)
diff --git a/findutils/find.c b/findutils/find.c
index e18f3c5..1c209ae 100644
--- a/findutils/find.c
+++ b/findutils/find.c
@@ -32,18 +32,6 @@
 static char *directory = ".";
 static int dereferenceFlag = FALSE;
 
-static const char find_usage[] = "find [PATH...] [EXPRESSION]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nSearch for files in a directory hierarchy.  The default PATH is\n"
-	"the current directory; default EXPRESSION is '-print'\n\n"
-	"\nEXPRESSION may consist of:\n"
-	"\t-follow\t\tDereference symbolic links.\n"
-	"\t-name PATTERN\tFile name (leading directories removed) matches PATTERN.\n"
-	"\t-print\t\tprint the full file name followed by a newline to stdout.\n"
-#endif
-	;
-
-
 static int fileAction(const char *fileName, struct stat *statbuf, void* junk)
 {
 	if (pattern == NULL)
diff --git a/findutils/grep.c b/findutils/grep.c
index 03945fa..a2c07c5 100644
--- a/findutils/grep.c
+++ b/findutils/grep.c
@@ -31,21 +31,6 @@
 extern int optind; /* in unistd.h */
 extern int errno;  /* for use with strerror() */
 
-static const char grep_usage[] =
-	"grep [-ihHnqvs] pattern [files...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nSearch for PATTERN in each FILE or standard input.\n\n"
-	"Options:\n"
-	"\t-H\tprefix output lines with filename where match was found\n"
-	"\t-h\tsuppress the prefixing filename on output\n"
-	"\t-i\tignore case distinctions\n"
-	"\t-n\tprint line number with output lines\n"
-	"\t-q\tbe quiet. Returns 0 if result was found, 1 otherwise\n"
-	"\t-v\tselect non-matching lines\n"
-	"\t-s\tsuppress file open/read error messages\n\n"
-#endif
-	;
-
 /* options */
 static int ignore_case       = 0;
 static int print_filename    = 0;
diff --git a/findutils/which.c b/findutils/which.c
index 186bfda..943e10a 100644
--- a/findutils/which.c
+++ b/findutils/which.c
@@ -26,13 +26,6 @@
 #include <sys/stat.h>
 #include <sys/param.h>
 
-const char which_usage[] =
-	"which [COMMAND ...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nLocates a COMMAND.\n"
-#endif
-	;
-
 extern int which_main(int argc, char **argv)
 {
 	char *path_list, *test, *tmp, *path_parsed;
diff --git a/free.c b/free.c
index 7c9d7f1..78298cf 100644
--- a/free.c
+++ b/free.c
@@ -25,13 +25,6 @@
 #include <stdio.h>
 #include <errno.h>
 
-const char free_usage[] =
-	"free\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nDisplays the amount of free and used system memory\n"
-#endif
-	;
-
 extern int free_main(int argc, char **argv)
 {
 	struct sysinfo info;
diff --git a/freeramdisk.c b/freeramdisk.c
index 927c169..2da2427 100644
--- a/freeramdisk.c
+++ b/freeramdisk.c
@@ -34,14 +34,6 @@
 /* From linux/fs.h */
 #define BLKFLSBUF  _IO(0x12,97)	/* flush buffer cache */
 
-
-static const char freeramdisk_usage[] =
-	"freeramdisk DEVICE\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nFrees all memory used by the specified ramdisk.\n"
-#endif
-	;
-
 extern int
 freeramdisk_main(int argc, char **argv)
 {
diff --git a/fsck_minix.c b/fsck_minix.c
index ea27c23..5807b9a 100644
--- a/fsck_minix.c
+++ b/fsck_minix.c
@@ -288,21 +288,6 @@
 	exit(status);
 }
 
-const char fsck_minix_usage[] =
-	"Usage: fsck.minix [-larvsmf] /dev/name\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPerforms a consistency check for MINIX filesystems.\n\n"
-	"Options:\n"
-	"\t-l\tLists all filenames\n"
-	"\t-r\tPerform interactive repairs\n"
-	"\t-a\tPerform automatic repairs\n"
-	"\t-v\tverbose\n"
-	"\t-s\tOutputs super-block information\n"
-	"\t-m\tActivates MINIX-like \"mode not cleared\" warnings\n"
-	"\t-f\tForce file system check.\n\n"
-#endif
-	;
-
 static void show_usage(void)
 {
 	usage(fsck_minix_usage);
diff --git a/grep.c b/grep.c
index 03945fa..a2c07c5 100644
--- a/grep.c
+++ b/grep.c
@@ -31,21 +31,6 @@
 extern int optind; /* in unistd.h */
 extern int errno;  /* for use with strerror() */
 
-static const char grep_usage[] =
-	"grep [-ihHnqvs] pattern [files...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nSearch for PATTERN in each FILE or standard input.\n\n"
-	"Options:\n"
-	"\t-H\tprefix output lines with filename where match was found\n"
-	"\t-h\tsuppress the prefixing filename on output\n"
-	"\t-i\tignore case distinctions\n"
-	"\t-n\tprint line number with output lines\n"
-	"\t-q\tbe quiet. Returns 0 if result was found, 1 otherwise\n"
-	"\t-v\tselect non-matching lines\n"
-	"\t-s\tsuppress file open/read error messages\n\n"
-#endif
-	;
-
 /* options */
 static int ignore_case       = 0;
 static int print_filename    = 0;
diff --git a/gunzip.c b/gunzip.c
index de68bd1..b29bdf7 100644
--- a/gunzip.c
+++ b/gunzip.c
@@ -30,19 +30,7 @@
 #include "internal.h"
 #include <getopt.h>
 
-static const char gunzip_usage[] =
-	"gunzip [OPTION]... FILE\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nUncompress FILE (or standard input if FILE is '-').\n\n"
-	"Options:\n"
-
-	"\t-c\tWrite output to standard output\n"
-	"\t-t\tTest compressed file integrity\n"
-#endif
-	;
-
-	
-	/* These defines are very important for BusyBox.  Without these,
+/* These defines are very important for BusyBox.  Without these,
  * huge chunks of ram are pre-allocated making the BusyBox bss 
  * size Freaking Huge(tm), which is a bad thing.*/
 #define SMALL_MEM
diff --git a/gzip.c b/gzip.c
index 8bc67d9..98ce259 100644
--- a/gzip.c
+++ b/gzip.c
@@ -40,19 +40,6 @@
 #define SMALL_MEM
 #define DYN_ALLOC
 
-
-static const char gzip_usage[] =
-	"gzip [OPTION]... FILE\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCompress FILE with maximum compression.\n"
-	"When FILE is '-', reads standard input.  Implies -c.\n\n"
-
-	"Options:\n"
-	"\t-c\tWrite output to standard output instead of FILE.gz\n"
-#endif
-	;
-
-
 /* I don't like nested includes, but the string and io functions are used
  * too often
  */
diff --git a/head.c b/head.c
index b82678d..58b3cae 100644
--- a/head.c
+++ b/head.c
@@ -26,17 +26,6 @@
 #include <errno.h>
 #include <stdio.h>
 
-const char head_usage[] =
-	"head [OPTION] [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrint first 10 lines of each FILE to standard output.\n"
-	"With more than one FILE, precede each with a header giving the\n"
-	"file name. With no FILE, or when FILE is -, read standard input.\n\n"
-
-	"Options:\n" "\t-n NUM\t\tPrint first NUM lines instead of first 10\n"
-#endif
-	;
-
 int head(int len, FILE * src)
 {
 	int i;
@@ -111,4 +100,4 @@
 	return(0);
 }
 
-/* $Id: head.c,v 1.12 2000/07/14 01:51:25 kraai Exp $ */
+/* $Id: head.c,v 1.13 2000/07/16 20:57:15 kraai Exp $ */
diff --git a/hostname.c b/hostname.c
index 60f66c0..77b545d 100644
--- a/hostname.c
+++ b/hostname.c
@@ -1,6 +1,6 @@
 /* vi: set sw=4 ts=4: */
 /*
- * $Id: hostname.c,v 1.11 2000/07/14 01:51:25 kraai Exp $
+ * $Id: hostname.c,v 1.12 2000/07/16 20:57:15 kraai Exp $
  * Mini hostname implementation for busybox
  *
  * Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
@@ -30,21 +30,6 @@
 #include <unistd.h>
 #include <stdio.h>
 
-static const char *hostname_usage =
-	"hostname [OPTION] {hostname | -F file}\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nGet or set the hostname or DNS domain name. If a hostname is given\n"
-	"(or a file with the -F parameter), the host name will be set.\n\n"
-	"Options:\n"
-	"\t-s\t\tShort\n"
-
-	"\t-i\t\tAddresses for the hostname\n"
-	"\t-d\t\tDNS domain name\n"
-	"\t-F FILE\t\tUse the contents of FILE to specify the hostname\n"
-#endif
-	;
-
-
 void do_sethostname(char *s, int isfile)
 {
 	FILE *f;
diff --git a/id.c b/id.c
index 69dfe26..56a2e27 100644
--- a/id.c
+++ b/id.c
@@ -28,17 +28,6 @@
 #include <grp.h>
 #include <sys/types.h>
 
-static const char id_usage[] =
-	"id [OPTIONS]... [USERNAME]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrint information for USERNAME or the current user\n\n"
-	"Options:\n"
-	"\t-g\tprints only the group ID\n"
-	"\t-u\tprints only the user ID\n"
-	"\t-r\tprints the real user ID instead of the effective ID (with -ug)\n\n"
-#endif
-	;
-
 extern int id_main(int argc, char **argv)
 {
 	int no_user = 0, no_group = 0, print_real = 0;
diff --git a/insmod.c b/insmod.c
index 97c360b..9daedf9 100644
--- a/insmod.c
+++ b/insmod.c
@@ -70,7 +70,7 @@
 #ifndef MODUTILS_MODULE_H
 #define MODUTILS_MODULE_H 1
 
-#ident "$Id: insmod.c,v 1.17 2000/07/14 16:23:32 proski Exp $"
+#ident "$Id: insmod.c,v 1.18 2000/07/16 20:57:15 kraai Exp $"
 
 /* This file contains the structures used by the 2.0 and 2.1 kernels.
    We do not use the kernel headers directly because we do not wish
@@ -276,7 +276,7 @@
 #ifndef MODUTILS_OBJ_H
 #define MODUTILS_OBJ_H 1
 
-#ident "$Id: insmod.c,v 1.17 2000/07/14 16:23:32 proski Exp $"
+#ident "$Id: insmod.c,v 1.18 2000/07/16 20:57:15 kraai Exp $"
 
 /* The relocatable object is manipulated using elfin types.  */
 
@@ -560,16 +560,6 @@
 #endif
 static char m_filename[BUFSIZ + 1] = "\0";
 static char m_fullName[BUFSIZ + 1] = "\0";
-static const char insmod_usage[] =
-	"insmod [OPTION]... MODULE [symbol=value]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nLoads the specified kernel modules into the kernel.\n\n"
-	"Options:\n"
-	"\t-f\tForce module to load into the wrong kernel version.\n"
-	"\t-k\tMake module autoclean-able.\n"
-	"\t-v\tverbose output\n" "\t-x\tdo not export externs\n"
-#endif
-;
 
 /*======================================================================*/
 
diff --git a/internal.h b/internal.h
index 50b7869..a192679 100644
--- a/internal.h
+++ b/internal.h
@@ -208,6 +208,98 @@
 extern int whoami_main(int argc, char** argv);
 extern int yes_main(int argc, char** argv);
 
+extern const char ar_usage[];
+extern const char basename_usage[];
+extern const char cat_usage[];
+extern const char chgrp_usage[];
+extern const char chmod_usage[];
+extern const char chown_usage[];
+extern const char chroot_usage[];
+extern const char chvt_usage[];
+extern const char cp_usage[];
+extern const char cut_usage[];
+extern const char date_usage[];
+extern const char dc_usage[];
+extern const char dd_usage[];
+extern const char deallocvt_usage[];
+extern const char df_usage[];
+extern const char dirname_usage[];
+extern const char dmesg_usage[];
+extern const char du_usage[];
+extern const char dumpkmap_usage[];
+extern const char dutmp_usage[];
+extern const char echo_usage[];
+extern const char fdflush_usage[];
+extern const char find_usage[];
+extern const char free_usage[];
+extern const char freeramdisk_usage[];
+extern const char fsck_minix_usage[];
+extern const char grep_usage[];
+extern const char gunzip_usage[];
+extern const char gzip_usage[];
+extern const char head_usage[];
+extern const char hostname_usage[];
+extern const char id_usage[];
+extern const char insmod_usage[];
+extern const char kill_usage[];
+extern const char killall_usage[];
+extern const char length_usage[];
+extern const char ln_usage[];
+extern const char loadacm_usage[];
+extern const char loadfont_usage[];
+extern const char loadkmap_usage[];
+extern const char logger_usage[];
+extern const char logname_usage[];
+extern const char ls_usage[];
+extern const char makedevs_usage[];
+extern const char md5sum_usage[];
+extern const char mkdir_usage[];
+extern const char mkfifo_usage[];
+extern const char mkfs_minix_usage[];
+extern const char mknod_usage[];
+extern const char mkswap_usage[];
+extern const char mktemp_usage[];
+extern const char more_usage[];
+extern const char mount_usage[]; 
+extern const char mt_usage[];
+extern const char mv_usage[];
+extern const char nc_usage[];
+extern const char nslookup_usage[];
+extern const char ping_usage[];
+extern const char printf_usage[];
+extern const char ps_usage[];
+extern const char rm_usage[];
+extern const char rmdir_usage[];
+extern const char rmmod_usage[];
+extern const char sed_usage[];
+extern const char setkeycodes_usage[];
+extern const char shell_usage[];
+extern const char sleep_usage[];
+extern const char sort_usage[];
+extern const char swapoff_usage[];
+extern const char swapon_usage[];
+extern const char sync_usage[];
+extern const char syslogd_usage[];
+extern const char tail_usage[];
+extern const char tar_usage[];
+extern const char tee_usage[];
+extern const char telnet_usage[];
+extern const char test_usage[];
+extern const char touch_usage[];
+extern const char tr_usage[];
+extern const char tty_usage[];
+extern const char umount_usage[];
+extern const char uname_usage[];
+extern const char uniq_usage[];
+extern const char update_usage[];
+extern const char usleep_usage[];
+extern const char uudecode_usage[];
+extern const char uuencode_usage[];
+extern const char wc_usage[];
+extern const char which_usage[];
+extern const char whoami_usage[];
+extern const char yes_usage[];
+
 extern char *applet_name;
 
 extern void usage(const char *usage) __attribute__ ((noreturn));
diff --git a/kill.c b/kill.c
index 44cb383..da46620 100644
--- a/kill.c
+++ b/kill.c
@@ -31,24 +31,6 @@
 #include <sys/stat.h>
 #include <unistd.h>
 
-static const char *kill_usage =
-	"kill [-signal] process-id [process-id ...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nSend a signal (default is SIGTERM) to the specified process(es).\n\n"
-	"Options:\n" "\t-l\tList all signal names and numbers.\n\n"
-#endif
-	;
-
-#ifdef BB_KILLALL
-static const char *killall_usage =
-	"killall [-signal] process-name [process-name ...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nSend a signal (default is SIGTERM) to the specified process(es).\n\n"
-	"Options:\n" "\t-l\tList all signal names and numbers.\n\n"
-#endif
-#endif
-	;
-
 #define KILL	0
 #define KILLALL	1
 
diff --git a/lash.c b/lash.c
index d829b6b..9b34353 100644
--- a/lash.c
+++ b/lash.c
@@ -137,14 +137,6 @@
 	{NULL, NULL, NULL, NULL}
 };
 
-static const char shell_usage[] =
-	"sh [FILE]...\n"
-	"   or: sh -c command [args]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nlash: The BusyBox command interpreter (shell).\n\n"
-#endif
-	;
-
 static char *prompt = "# ";
 static char *cwd = NULL;
 static char *local_pending_command = NULL;
diff --git a/length.c b/length.c
index 82f50c1..cf4fb1c 100644
--- a/length.c
+++ b/length.c
@@ -4,13 +4,6 @@
 #include <string.h>
 #include <stdio.h>
 
-const char length_usage[] =
-	"length STRING\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrints out the length of the specified STRING.\n"
-#endif
-	;
-
 extern int length_main(int argc, char **argv)
 {
 	if (argc != 2 || **(argv + 1) == '-')
diff --git a/ln.c b/ln.c
index 9f77743..8b8fa1c 100644
--- a/ln.c
+++ b/ln.c
@@ -30,19 +30,6 @@
 #include <dirent.h>
 #include <errno.h>
 
-static const char ln_usage[] =
-	"ln [OPTION] TARGET... LINK_NAME|DIRECTORY\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCreate a link named LINK_NAME or DIRECTORY to the specified TARGET\n"
-	"\nYou may use '--' to indicate that all following arguments are non-options.\n\n"
-	"Options:\n"
-	"\t-s\tmake symbolic links instead of hard links\n"
-
-	"\t-f\tremove existing destination files\n"
-	"\t-n\tno dereference symlinks - treat like normal file\n"
-#endif
-	;
-
 static int symlinkFlag = FALSE;
 static int removeoldFlag = FALSE;
 static int followLinks = TRUE;
diff --git a/loadacm.c b/loadacm.c
index 9eebf3b..2d70ffc 100644
--- a/loadacm.c
+++ b/loadacm.c
@@ -22,12 +22,6 @@
 #include <sys/ioctl.h>
 #include <sys/kd.h>
 
-static const char loadacm_usage[] = "loadacm\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nLoads an acm from standard input.\n"
-#endif
-	;
-
 typedef unsigned short unicode;
 
 static long int ctoi(unsigned char *s, int *is_unicode);
diff --git a/loadfont.c b/loadfont.c
index 46a7574..6221429 100644
--- a/loadfont.c
+++ b/loadfont.c
@@ -30,12 +30,6 @@
 #define PSF_MAXMODE    0x03
 #define PSF_SEPARATOR  0xFFFF
 
-static const char loadfont_usage[] = "loadfont\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"Loads a console font from standard input.\n"
-#endif
-	;
-
 struct psf_header {
 	unsigned char magic1, magic2;	/* Magic number */
 	unsigned char mode;			/* PSF font mode */
diff --git a/loadkmap.c b/loadkmap.c
index 72247a6..488585f 100644
--- a/loadkmap.c
+++ b/loadkmap.c
@@ -38,14 +38,6 @@
 #define NR_KEYS         128
 #define MAX_NR_KEYMAPS  256
 
-
-static const char loadkmap_usage[] = "loadkmap\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nLoads a binary keyboard translation table from standard input.\n"
-#endif
-	;
-
-
 int loadkmap_main(int argc, char **argv)
 {
 	struct kbentry ke;
diff --git a/logger.c b/logger.c
index 981748b..0e1ce8d 100644
--- a/logger.c
+++ b/logger.c
@@ -47,20 +47,6 @@
 extern CODE facilitynames[];
 #endif
 
-static const char logger_usage[] =
-	"logger [OPTION]... [MESSAGE]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nWrite MESSAGE to the system log.  If MESSAGE is '-', log stdin.\n\n"
-	"Options:\n"
-	"\t-s\tLog to stderr as well as the system log.\n"
-	"\t-t\tLog using the specified tag (defaults to user name).\n"
-
-	"\t-p\tEnter the message with the specified priority.\n"
-	"\t\tThis may be numerical or a ``facility.level'' pair.\n"
-#endif
-	;
-
-
 /* Decode a symbolic name to a numeric value 
  * this function is based on code
  * Copyright (c) 1983, 1993
diff --git a/logname.c b/logname.c
index 12ebfbd..a0aff42 100644
--- a/logname.c
+++ b/logname.c
@@ -23,12 +23,6 @@
 #include "internal.h"
 #include <stdio.h>
 
-static const char logname_usage[] = "logname\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrint the name of the current user.\n"
-#endif
-	;
-
 extern int logname_main(int argc, char **argv)
 {
 	char *user = xmalloc(9);
diff --git a/ls.c b/ls.c
index 0644cde..e56e3bc 100644
--- a/ls.c
+++ b/ls.c
@@ -427,63 +427,6 @@
 	return 1;
 }
 
-static const char ls_usage[] = "ls [-1a"
-#ifdef BB_FEATURE_LS_TIMESTAMPS
-	"c"
-#endif
-	"d"
-#ifdef BB_FEATURE_LS_TIMESTAMPS
-	"e"
-#endif
-	"ln"
-#ifdef BB_FEATURE_LS_FILETYPES
-	"p"
-#endif
-#ifdef BB_FEATURE_LS_TIMESTAMPS
-	"u"
-#endif
-	"xAC"
-#ifdef BB_FEATURE_LS_FILETYPES
-	"F"
-#endif
-#ifdef BB_FEATURE_LS_RECURSIVE
-	"R"
-#endif
-	"] [filenames...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nList directory contents\n\n"
-	"Options:\n"
-	"\t-a\tdo not hide entries starting with .\n"
-#ifdef BB_FEATURE_LS_TIMESTAMPS
-	"\t-c\twith -l: show ctime (the time of last\n"
-    "\t\tmodification of file status information)\n"
-#endif
-	"\t-d\tlist directory entries instead of contents\n"
-#ifdef BB_FEATURE_LS_TIMESTAMPS
-	"\t-e\tlist both full date and full time\n"
-#endif
-	"\t-l\tuse a long listing format\n"
-	"\t-n\tlist numeric UIDs and GIDs instead of names\n"
-#ifdef BB_FEATURE_LS_FILETYPES
-	"\t-p\tappend indicator (one of /=@|) to entries\n"
-#endif
-#ifdef BB_FEATURE_LS_TIMESTAMPS
-	"\t-u\twith -l: show access time (the time of last\n"
-	"\t\taccess of the file)\n"
-#endif
-	"\t-x\tlist entries by lines instead of by columns\n"
-	"\t-A\tdo not list implied . and ..\n"
-	"\t-C\tlist entries by columns\n"
-#ifdef BB_FEATURE_LS_FILETYPES
-	"\t-F\tappend indicator (one of */=@|) to entries\n"
-#endif
-#ifdef BB_FEATURE_LS_RECURSIVE
-	"\t-R\tlist subdirectories recursively\n"
-#endif
-#endif
-	;
-
-
 #ifdef BB_FEATURE_LS_RECURSIVE
 static int dirAction(const char *fileName, struct stat *statbuf, void* junk)
 {
diff --git a/makedevs.c b/makedevs.c
index 5072095..99dbc0b 100644
--- a/makedevs.c
+++ b/makedevs.c
@@ -16,23 +16,6 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 
-static const char makedevs_usage[] =
-	"makedevs NAME TYPE MAJOR MINOR FIRST LAST [s]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCreates a range of block or character special files\n\n"
-	"TYPEs include:\n"
-	"\tb:\tMake a block (buffered) device.\n"
-	"\tc or u:\tMake a character (un-buffered) device.\n"
-	"\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes.\n\n"
-	"FIRST specifies the number appended to NAME to create the first device.\n"
-	"LAST specifies the number of the last item that should be created.\n"
-	"If 's' is the last argument, the base device is created as well.\n\n"
-	"For example:\n"
-	"\tmakedevs /dev/ttyS c 4 66 2 63   ->  ttyS2-ttyS63\n"
-	"\tmakedevs /dev/hda b 3 0 0 8 s    ->  hda,hda1-hda8\n"
-#endif
-	;
-
 int makedevs_main(int argc, char **argv)
 {
 
diff --git a/md5sum.c b/md5sum.c
index e6f1c86..fad563f 100644
--- a/md5sum.c
+++ b/md5sum.c
@@ -582,23 +582,6 @@
 static int warn = 0; /* With -w, print a message to standard error warning
                         about each improperly formatted MD5 checksum line */
 
-static const char md5sum_usage[] =
-    "md5sum [OPTION] [FILE]...\n"
-    "or:    md5sum [OPTION] -c [FILE]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-    "\nPrint or check MD5 checksums.\n\n"
-    "Options:\n"
-    "With no FILE, or when FILE is -, read standard input.\n\n"
-    "\t-b\tread files in binary mode\n"
-    "\t-c\tcheck MD5 sums against given list\n"
-    "\t-t\tread files in text mode (default)\n"
-    "\t-g\tread a string\n"
-    "\nThe following two options are useful only when verifying checksums:\n"
-    "\t-s,\tdon't output anything, status code shows success\n"
-    "\t-w,\twarn about improperly formated MD5 checksum lines\n"
-#endif
-;
-
 static int split_3(char *s,
                    size_t s_len,
                    unsigned char **u,
diff --git a/miscutils/dc.c b/miscutils/dc.c
index 7b13cb9..fac48e8 100644
--- a/miscutils/dc.c
+++ b/miscutils/dc.c
@@ -8,14 +8,6 @@
 
 /* Tiny RPN calculator, because "expr" didn't give me bitwise operations. */
 
-static const char dc_usage[] = "dc expression ...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-		"\nThis is a Tiny RPN calculator that understands the\n"
-		"following operations: +, -, /, *, and, or, not, eor.\n"
-		"i.e. 'dc 2 2 add' -> 4, and 'dc 8 8 \\* 2 2 + /' -> 16\n"
-#endif
-		;
-
 static double stack[100];
 static unsigned int pointer;
 
diff --git a/miscutils/dutmp.c b/miscutils/dutmp.c
index c6bc0c7..047b880 100644
--- a/miscutils/dutmp.c
+++ b/miscutils/dutmp.c
@@ -23,14 +23,6 @@
 #include "messages.c"
 #include <utmp.h>
 
-
-static const char dutmp_usage[] = "dutmp [FILE]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nDump utmp file format (pipe delimited) from FILE\n"
-	"or stdin to stdout.  (i.e. 'dutmp /var/run/utmp')\n"
-#endif
-	;
-
 extern int dutmp_main(int argc, char **argv)
 {
 
diff --git a/miscutils/makedevs.c b/miscutils/makedevs.c
index 5072095..99dbc0b 100644
--- a/miscutils/makedevs.c
+++ b/miscutils/makedevs.c
@@ -16,23 +16,6 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 
-static const char makedevs_usage[] =
-	"makedevs NAME TYPE MAJOR MINOR FIRST LAST [s]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCreates a range of block or character special files\n\n"
-	"TYPEs include:\n"
-	"\tb:\tMake a block (buffered) device.\n"
-	"\tc or u:\tMake a character (un-buffered) device.\n"
-	"\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes.\n\n"
-	"FIRST specifies the number appended to NAME to create the first device.\n"
-	"LAST specifies the number of the last item that should be created.\n"
-	"If 's' is the last argument, the base device is created as well.\n\n"
-	"For example:\n"
-	"\tmakedevs /dev/ttyS c 4 66 2 63   ->  ttyS2-ttyS63\n"
-	"\tmakedevs /dev/hda b 3 0 0 8 s    ->  hda,hda1-hda8\n"
-#endif
-	;
-
 int makedevs_main(int argc, char **argv)
 {
 
diff --git a/miscutils/mktemp.c b/miscutils/mktemp.c
index 247d16d..2ec0785 100644
--- a/miscutils/mktemp.c
+++ b/miscutils/mktemp.c
@@ -26,14 +26,6 @@
 #include <stdio.h>
 #include <errno.h>
 
-const char mktemp_usage[] =
-	"mktemp [-q] TEMPLATE\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCreates a temporary file with its name based on TEMPLATE.\n"
-	"TEMPLATE is any name with six `Xs' (i.e. /tmp/temp.XXXXXX).\n"
-#endif
-	;
-
 extern int mktemp_main(int argc, char **argv)
 {
 	if (argc != 2 && (argc != 3 || strcmp(argv[1], "-q")))
diff --git a/miscutils/mt.c b/miscutils/mt.c
index 4ab4782..087819e 100644
--- a/miscutils/mt.c
+++ b/miscutils/mt.c
@@ -4,12 +4,6 @@
 #include <sys/mtio.h>
 #include <sys/fcntl.h>
 
-static const char mt_usage[] = "mt [-f device] opcode value\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-			"\nControl magnetic tape drive operation\n"
-#endif
-			;
-
 struct mt_opcodes {
 	char *name;
 	short value;
diff --git a/miscutils/update.c b/miscutils/update.c
index f943461..0bdc90e 100644
--- a/miscutils/update.c
+++ b/miscutils/update.c
@@ -34,18 +34,6 @@
 static _syscall2(int, bdflush, int, func, int, data);
 #endif							/* __GLIBC__ */
 
-
-static char update_usage[] =
-	"update [options]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPeriodically flushes filesystem buffers.\n\n"
-	"Options:\n"
-	"\t-S\tforce use of sync(2) instead of flushing\n"
-	"\t-s SECS\tcall sync this often (default 30)\n"
-	"\t-f SECS\tflush some buffers this often (default 5)\n"
-#endif
-	;
-
 static unsigned int sync_duration = 30;
 static unsigned int flush_duration = 5;
 static int use_sync = 0;
diff --git a/mkdir.c b/mkdir.c
index f6e08ca..f824cdc 100644
--- a/mkdir.c
+++ b/mkdir.c
@@ -29,18 +29,6 @@
 #include <stdio.h>
 #include <errno.h>
 
-static const char mkdir_usage[] =
-	"mkdir [OPTION] DIRECTORY...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCreate the DIRECTORY(ies), if they do not already exist\n\n"
-	"Options:\n"
-
-	"\t-m\tset permission mode (as in chmod), not rwxrwxrwx - umask\n"
-	"\t-p\tno error if existing, make parent directories as needed\n"
-#endif
-	;
-
-
 static int parentFlag = FALSE;
 static mode_t mode = 0777;
 
diff --git a/mkfifo.c b/mkfifo.c
index f701a97..3db17bb 100644
--- a/mkfifo.c
+++ b/mkfifo.c
@@ -26,14 +26,6 @@
 #include <sys/stat.h>
 #include <errno.h>
 
-static const char mkfifo_usage[] = "mkfifo [OPTIONS] name\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCreates a named pipe (identical to 'mknod name p')\n\n"
-	"Options:\n"
-	"\t-m\tcreate the pipe using the specified mode (default a=rw)\n"
-#endif
-	;
-
 extern int mkfifo_main(int argc, char **argv)
 {
 	char *thisarg;
diff --git a/mkfs_minix.c b/mkfs_minix.c
index 9ae4b56..dec310d 100644
--- a/mkfs_minix.c
+++ b/mkfs_minix.c
@@ -267,19 +267,6 @@
 	exit(8);
 }
 
-const char mkfs_minix_usage[] =
-	"mkfs.minix [-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nMake a MINIX filesystem.\n\n"
-	"Options:\n"
-	"\t-c\t\tCheck the device for bad blocks\n"
-	"\t-n [14|30]\tSpecify the maximum length of filenames\n"
-	"\t-i INODES\tSpecify the number of inodes for the filesystem\n"
-	"\t-l FILENAME\tRead the bad blocks list from FILENAME\n"
-	"\t-v\t\tMake a Minix version 2 filesystem\n\n"
-#endif
-	;
-
 static volatile void show_usage() __attribute__ ((noreturn));
 static volatile void show_usage()
 {
diff --git a/mknod.c b/mknod.c
index ac96817..b51c8f3 100644
--- a/mknod.c
+++ b/mknod.c
@@ -28,18 +28,6 @@
 #include <fcntl.h>
 #include <unistd.h>
 
-static const char mknod_usage[] = "mknod [OPTIONS] NAME TYPE MAJOR MINOR\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCreate a special file (block, character, or pipe).\n\n"
-	"Options:\n"
-	"\t-m\tcreate the special file using the specified mode (default a=rw)\n\n"
-	"TYPEs include:\n"
-	"\tb:\tMake a block (buffered) device.\n"
-	"\tc or u:\tMake a character (un-buffered) device.\n"
-	"\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes.\n"
-#endif
-	;
-
 int mknod_main(int argc, char **argv)
 {
 	char *thisarg;
diff --git a/mkswap.c b/mkswap.c
index 5a33945..eacd881 100644
--- a/mkswap.c
+++ b/mkswap.c
@@ -47,20 +47,6 @@
 #include <asm/page.h>			/* for PAGE_SIZE and PAGE_SHIFT */
 				/* we also get PAGE_SIZE via getpagesize() */
 
-
-static const char mkswap_usage[] =
-	"mkswap [-c] [-v0|-v1] device [block-count]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrepare a disk partition to be used as a swap partition.\n\n"
-	"Options:\n" "\t-c\t\tCheck for read-ability.\n"
-	"\t-v0\t\tMake version 0 swap [max 128 Megs].\n"
-	"\t-v1\t\tMake version 1 swap [big!] (default for kernels > 2.1.117).\n"
-
-	"\tblock-count\tNumber of block to use (default is entire partition).\n"
-#endif
-	;
-
-
 #ifndef _IO
 /* pre-1.3.45 */
 #define BLKGETSIZE 0x1260
diff --git a/mktemp.c b/mktemp.c
index 247d16d..2ec0785 100644
--- a/mktemp.c
+++ b/mktemp.c
@@ -26,14 +26,6 @@
 #include <stdio.h>
 #include <errno.h>
 
-const char mktemp_usage[] =
-	"mktemp [-q] TEMPLATE\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCreates a temporary file with its name based on TEMPLATE.\n"
-	"TEMPLATE is any name with six `Xs' (i.e. /tmp/temp.XXXXXX).\n"
-#endif
-	;
-
 extern int mktemp_main(int argc, char **argv)
 {
 	if (argc != 2 && (argc != 3 || strcmp(argv[1], "-q")))
diff --git a/modutils/insmod.c b/modutils/insmod.c
index 97c360b..9daedf9 100644
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
@@ -70,7 +70,7 @@
 #ifndef MODUTILS_MODULE_H
 #define MODUTILS_MODULE_H 1
 
-#ident "$Id: insmod.c,v 1.17 2000/07/14 16:23:32 proski Exp $"
+#ident "$Id: insmod.c,v 1.18 2000/07/16 20:57:15 kraai Exp $"
 
 /* This file contains the structures used by the 2.0 and 2.1 kernels.
    We do not use the kernel headers directly because we do not wish
@@ -276,7 +276,7 @@
 #ifndef MODUTILS_OBJ_H
 #define MODUTILS_OBJ_H 1
 
-#ident "$Id: insmod.c,v 1.17 2000/07/14 16:23:32 proski Exp $"
+#ident "$Id: insmod.c,v 1.18 2000/07/16 20:57:15 kraai Exp $"
 
 /* The relocatable object is manipulated using elfin types.  */
 
@@ -560,16 +560,6 @@
 #endif
 static char m_filename[BUFSIZ + 1] = "\0";
 static char m_fullName[BUFSIZ + 1] = "\0";
-static const char insmod_usage[] =
-	"insmod [OPTION]... MODULE [symbol=value]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nLoads the specified kernel modules into the kernel.\n\n"
-	"Options:\n"
-	"\t-f\tForce module to load into the wrong kernel version.\n"
-	"\t-k\tMake module autoclean-able.\n"
-	"\t-v\tverbose output\n" "\t-x\tdo not export externs\n"
-#endif
-;
 
 /*======================================================================*/
 
diff --git a/modutils/rmmod.c b/modutils/rmmod.c
index 3158686..da10b7f 100644
--- a/modutils/rmmod.c
+++ b/modutils/rmmod.c
@@ -32,18 +32,6 @@
 /* And the system call of the day is...  */
 _syscall1(int, delete_module, const char *, name)
 
-
-static const char rmmod_usage[] =
-	"rmmod [OPTION]... [MODULE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nUnloads the specified kernel modules from the kernel.\n\n"
-	"Options:\n" 
-	"\t-a\tTry to remove all unused kernel modules.\n"
-#endif
-	;
-
-
-
 extern int rmmod_main(int argc, char **argv)
 {
 	if (argc <= 1) {
diff --git a/more.c b/more.c
index 91c2815..2334576 100644
--- a/more.c
+++ b/more.c
@@ -34,12 +34,6 @@
 #define bb_need_help
 #include "messages.c"
 
-static const char more_usage[] = "more [FILE ...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nMore is a filter for viewing FILE one screenful at a time.\n"
-#endif
-	;
-
 /* ED: sparc termios is broken: revert back to old termio handling. */
 #ifdef BB_FEATURE_USE_TERMIOS
 #	if #cpu(sparc)
diff --git a/mount.c b/mount.c
index addeb09..610d12d 100644
--- a/mount.c
+++ b/mount.c
@@ -80,38 +80,6 @@
 
 extern const char mtab_file[];	/* Defined in utility.c */
 
-static const char mount_usage[] = 
-	"mount [flags] device directory [-o options,more-options]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nMount a filesystem\n\n"
-	"Flags:\n" 
-	"\t-a:\t\tMount all filesystems in fstab.\n"
-#ifdef BB_MTAB
-	"\t-f:\t\t\"Fake\" mount. Add entry to mount table but don't mount it.\n"
-	"\t-n:\t\tDon't write a mount table entry.\n"
-#endif
-	"\t-o option:\tOne of many filesystem options, listed below.\n"
-	"\t-r:\t\tMount the filesystem read-only.\n"
-	"\t-t fs-type:\tSpecify the filesystem type.\n"
-	"\t-w:\t\tMount for reading and writing (default).\n"
-	"\n"
-	"Options for use with the \"-o\" flag:\n"
-	"\tasync/sync:\tWrites are asynchronous / synchronous.\n"
-	"\tatime/noatime:\tEnable / disable updates to inode access times.\n"
-	"\tdev/nodev:\tAllow use of special device files / disallow them.\n"
-	"\texec/noexec:\tAllow use of executable files / disallow them.\n"
-#if defined BB_FEATURE_MOUNT_LOOP
-	"\tloop:\t\tMounts a file via loop device.\n"
-#endif
-	"\tsuid/nosuid:\tAllow set-user-id-root programs / disallow them.\n"
-	"\tremount:\tRe-mount a currently-mounted filesystem, changing its flags.\n"
-	"\tro/rw:\t\tMount for read-only / read-write.\n"
-	"\nThere are EVEN MORE flags that are specific to each filesystem.\n"
-	"You'll have to see the written documentation for those.\n"
-#endif
-	;
-
-
 struct mount_options {
 	const char *name;
 	unsigned long and;
diff --git a/mt.c b/mt.c
index 4ab4782..087819e 100644
--- a/mt.c
+++ b/mt.c
@@ -4,12 +4,6 @@
 #include <sys/mtio.h>
 #include <sys/fcntl.h>
 
-static const char mt_usage[] = "mt [-f device] opcode value\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-			"\nControl magnetic tape drive operation\n"
-#endif
-			;
-
 struct mt_opcodes {
 	char *name;
 	short value;
diff --git a/nc.c b/nc.c
index b6afe6f..a544f32 100644
--- a/nc.c
+++ b/nc.c
@@ -40,12 +40,6 @@
 
 #define BUFSIZE 100
 
-static const char nc_usage[] = "nc [IP] [port]\n" 
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nNetcat opens a pipe to IP:port\n"
-#endif
-	;
-
 int nc_main(int argc, char **argv)
 {
 	int sfd;
diff --git a/networking/hostname.c b/networking/hostname.c
index 60f66c0..77b545d 100644
--- a/networking/hostname.c
+++ b/networking/hostname.c
@@ -1,6 +1,6 @@
 /* vi: set sw=4 ts=4: */
 /*
- * $Id: hostname.c,v 1.11 2000/07/14 01:51:25 kraai Exp $
+ * $Id: hostname.c,v 1.12 2000/07/16 20:57:15 kraai Exp $
  * Mini hostname implementation for busybox
  *
  * Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
@@ -30,21 +30,6 @@
 #include <unistd.h>
 #include <stdio.h>
 
-static const char *hostname_usage =
-	"hostname [OPTION] {hostname | -F file}\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nGet or set the hostname or DNS domain name. If a hostname is given\n"
-	"(or a file with the -F parameter), the host name will be set.\n\n"
-	"Options:\n"
-	"\t-s\t\tShort\n"
-
-	"\t-i\t\tAddresses for the hostname\n"
-	"\t-d\t\tDNS domain name\n"
-	"\t-F FILE\t\tUse the contents of FILE to specify the hostname\n"
-#endif
-	;
-
-
 void do_sethostname(char *s, int isfile)
 {
 	FILE *f;
diff --git a/networking/nc.c b/networking/nc.c
index b6afe6f..a544f32 100644
--- a/networking/nc.c
+++ b/networking/nc.c
@@ -40,12 +40,6 @@
 
 #define BUFSIZE 100
 
-static const char nc_usage[] = "nc [IP] [port]\n" 
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nNetcat opens a pipe to IP:port\n"
-#endif
-	;
-
 int nc_main(int argc, char **argv)
 {
 	int sfd;
diff --git a/networking/nslookup.c b/networking/nslookup.c
index 54f37c8..10d36b2 100644
--- a/networking/nslookup.c
+++ b/networking/nslookup.c
@@ -41,13 +41,6 @@
  |  + find out how the real nslookup gets the default name server
  */
 
-static const char nslookup_usage[] = "nslookup [HOST]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nQueries the nameserver for the IP address of the given HOST\n"
-#endif
-;
-
-
 /* I have to see how the real nslookup does this.
  * I could dig through /etc/resolv.conf, but is there a
  * better (programatic) way?
@@ -177,4 +170,4 @@
 	return( TRUE);
 }
 
-/* $Id: nslookup.c,v 1.10 2000/06/19 17:25:40 andersen Exp $ */
+/* $Id: nslookup.c,v 1.11 2000/07/16 20:57:15 kraai Exp $ */
diff --git a/networking/ping.c b/networking/ping.c
index b2b4880..5f44a68 100644
--- a/networking/ping.c
+++ b/networking/ping.c
@@ -1,6 +1,6 @@
 /* vi: set sw=4 ts=4: */
 /*
- * $Id: ping.c,v 1.22 2000/07/14 06:49:52 andersen Exp $
+ * $Id: ping.c,v 1.23 2000/07/16 20:57:15 kraai Exp $
  * Mini ping implementation for busybox
  *
  * Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
@@ -174,12 +174,6 @@
 
 /* simple version */
 #ifdef BB_FEATURE_SIMPLE_PING
-static const char *ping_usage = "ping host\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nSend ICMP ECHO_REQUEST packets to network hosts\n"
-#endif
-	;
-
 static char *hostname = NULL;
 
 static void noresp(int ign)
@@ -267,17 +261,6 @@
 
 #else /* ! BB_FEATURE_SIMPLE_PING */
 /* full(er) version */
-static const char *ping_usage = "ping [OPTION]... host\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nSend ICMP ECHO_REQUEST packets to network hosts.\n\n"
-	"Options:\n"
-	"\t-c COUNT\tSend only COUNT pings.\n"
-	"\t-s SIZE\t\tSend SIZE data bytes in packets (default=56).\n"
-	"\t-q\t\tQuiet mode, only displays output at start\n"
-	"\t\t\tand when finished.\n"
-#endif
-	;
-
 static char *hostname = NULL;
 static struct sockaddr_in pingaddr;
 static int pingsock = -1;
diff --git a/networking/telnet.c b/networking/telnet.c
index f276035..3e43c4a 100644
--- a/networking/telnet.c
+++ b/networking/telnet.c
@@ -134,14 +134,6 @@
 
 /* Some globals */
 static int one = 1;
-static const char telnet_usage[] =
-	"telnet host [port]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nTelnet is used to establish interactive communication with another\n"
-	"computer over a network using the TELNET protocol.\n"
-#endif
-	;
-
 
 static void doexit(int ev)
 {
diff --git a/nslookup.c b/nslookup.c
index 54f37c8..10d36b2 100644
--- a/nslookup.c
+++ b/nslookup.c
@@ -41,13 +41,6 @@
  |  + find out how the real nslookup gets the default name server
  */
 
-static const char nslookup_usage[] = "nslookup [HOST]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nQueries the nameserver for the IP address of the given HOST\n"
-#endif
-;
-
-
 /* I have to see how the real nslookup does this.
  * I could dig through /etc/resolv.conf, but is there a
  * better (programatic) way?
@@ -177,4 +170,4 @@
 	return( TRUE);
 }
 
-/* $Id: nslookup.c,v 1.10 2000/06/19 17:25:40 andersen Exp $ */
+/* $Id: nslookup.c,v 1.11 2000/07/16 20:57:15 kraai Exp $ */
diff --git a/ping.c b/ping.c
index b2b4880..5f44a68 100644
--- a/ping.c
+++ b/ping.c
@@ -1,6 +1,6 @@
 /* vi: set sw=4 ts=4: */
 /*
- * $Id: ping.c,v 1.22 2000/07/14 06:49:52 andersen Exp $
+ * $Id: ping.c,v 1.23 2000/07/16 20:57:15 kraai Exp $
  * Mini ping implementation for busybox
  *
  * Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
@@ -174,12 +174,6 @@
 
 /* simple version */
 #ifdef BB_FEATURE_SIMPLE_PING
-static const char *ping_usage = "ping host\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nSend ICMP ECHO_REQUEST packets to network hosts\n"
-#endif
-	;
-
 static char *hostname = NULL;
 
 static void noresp(int ign)
@@ -267,17 +261,6 @@
 
 #else /* ! BB_FEATURE_SIMPLE_PING */
 /* full(er) version */
-static const char *ping_usage = "ping [OPTION]... host\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nSend ICMP ECHO_REQUEST packets to network hosts.\n\n"
-	"Options:\n"
-	"\t-c COUNT\tSend only COUNT pings.\n"
-	"\t-s SIZE\t\tSend SIZE data bytes in packets (default=56).\n"
-	"\t-q\t\tQuiet mode, only displays output at start\n"
-	"\t\t\tand when finished.\n"
-#endif
-	;
-
 static char *hostname = NULL;
 static struct sockaddr_in pingaddr;
 static int pingsock = -1;
diff --git a/printf.c b/printf.c
index f572897..6a87fc3 100644
--- a/printf.c
+++ b/printf.c
@@ -137,13 +137,6 @@
 /* The value to return to the calling program.  */
 static int exit_status;
 
-static const char printf_usage[] = "printf FORMAT [ARGUMENT...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nFormats and prints ARGUMENT(s) according to FORMAT,\n"
-	"Where FORMAT controls the output exactly as in C printf.\n"
-#endif
-	;
-
 int printf_main(int argc, char **argv)
 {
 	char *format;
diff --git a/procps/free.c b/procps/free.c
index 7c9d7f1..78298cf 100644
--- a/procps/free.c
+++ b/procps/free.c
@@ -25,13 +25,6 @@
 #include <stdio.h>
 #include <errno.h>
 
-const char free_usage[] =
-	"free\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nDisplays the amount of free and used system memory\n"
-#endif
-	;
-
 extern int free_main(int argc, char **argv)
 {
 	struct sysinfo info;
diff --git a/procps/kill.c b/procps/kill.c
index 44cb383..da46620 100644
--- a/procps/kill.c
+++ b/procps/kill.c
@@ -31,24 +31,6 @@
 #include <sys/stat.h>
 #include <unistd.h>
 
-static const char *kill_usage =
-	"kill [-signal] process-id [process-id ...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nSend a signal (default is SIGTERM) to the specified process(es).\n\n"
-	"Options:\n" "\t-l\tList all signal names and numbers.\n\n"
-#endif
-	;
-
-#ifdef BB_KILLALL
-static const char *killall_usage =
-	"killall [-signal] process-name [process-name ...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nSend a signal (default is SIGTERM) to the specified process(es).\n\n"
-	"Options:\n" "\t-l\tList all signal names and numbers.\n\n"
-#endif
-#endif
-	;
-
 #define KILL	0
 #define KILLALL	1
 
diff --git a/procps/ps.c b/procps/ps.c
index 74e79f5..fc58a9b 100644
--- a/procps/ps.c
+++ b/procps/ps.c
@@ -114,14 +114,6 @@
 
 }
 
-const char ps_usage[] =
-	"ps\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nReport process status\n"
-	"\nThis version of ps accepts no options.\n"
-#endif
-	;
-
 extern int ps_main(int argc, char **argv)
 {
 	proc_t p;
diff --git a/ps.c b/ps.c
index 74e79f5..fc58a9b 100644
--- a/ps.c
+++ b/ps.c
@@ -114,14 +114,6 @@
 
 }
 
-const char ps_usage[] =
-	"ps\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nReport process status\n"
-	"\nThis version of ps accepts no options.\n"
-#endif
-	;
-
 extern int ps_main(int argc, char **argv)
 {
 	proc_t p;
diff --git a/rm.c b/rm.c
index 2067d87..275c059 100644
--- a/rm.c
+++ b/rm.c
@@ -29,17 +29,6 @@
 #include <dirent.h>
 #include <errno.h>
 
-static const char *rm_usage = "rm [OPTION]... FILE...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nRemove (unlink) the FILE(s).  You may use '--' to\n"
-	"indicate that all following arguments are non-options.\n\n"
-	"Options:\n"
-	"\t-f\t\tremove existing destinations, never prompt\n"
-	"\t-r or -R\tremove the contents of directories recursively\n"
-#endif
-	;
-
-
 static int recursiveFlag = FALSE;
 static int forceFlag = FALSE;
 static const char *srcName;
diff --git a/rmdir.c b/rmdir.c
index 3c3533f..500890e 100644
--- a/rmdir.c
+++ b/rmdir.c
@@ -26,13 +26,6 @@
 #include <stdio.h>
 #include <errno.h>
 
-const char rmdir_usage[] =
-	"rmdir [OPTION]... DIRECTORY...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nRemove the DIRECTORY(ies), if they are empty.\n"
-#endif
-	;
-
 extern int rmdir_main(int argc, char **argv)
 {
 	if (argc == 1 || **(argv + 1) == '-')
diff --git a/rmmod.c b/rmmod.c
index 3158686..da10b7f 100644
--- a/rmmod.c
+++ b/rmmod.c
@@ -32,18 +32,6 @@
 /* And the system call of the day is...  */
 _syscall1(int, delete_module, const char *, name)
 
-
-static const char rmmod_usage[] =
-	"rmmod [OPTION]... [MODULE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nUnloads the specified kernel modules from the kernel.\n\n"
-	"Options:\n" 
-	"\t-a\tTry to remove all unused kernel modules.\n"
-#endif
-	;
-
-
-
 extern int rmmod_main(int argc, char **argv)
 {
 	if (argc <= 1) {
diff --git a/sed.c b/sed.c
index 1f1e906..4d4886e 100644
--- a/sed.c
+++ b/sed.c
@@ -85,22 +85,6 @@
 
 /*static char *cur_file = NULL;*/ /* file currently being processed XXX: do I need this? */
 
-static const char sed_usage[] =
-	"sed [-Vhnef] pattern [files...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\n"
-	"-n\tsuppress automatic printing of pattern space\n"
-	"-e script\tadd the script to the commands to be executed\n"
-	"-f scriptfile\tadd the contents of script-file to the commands to be executed\n"
-	"-h\tdisplay this help message\n"
-	"-V\toutput version information and exit\n"
-	"\n"
-	"If no -e or -f is given, the first non-option argument is taken as the\n"
-	"sed script to interpret. All remaining arguments are names of input\n"
-	"files; if no input files are specified, then the standard input is read.\n"
-#endif
-	;
-
 #if 0
 static void destroy_cmd_strs()
 {
diff --git a/setkeycodes.c b/setkeycodes.c
index 1bdb909..284ffa1 100644
--- a/setkeycodes.c
+++ b/setkeycodes.c
@@ -35,17 +35,6 @@
 };
 #define KDSETKEYCODE    0x4B4D  /* write kernel keycode table entry */
 
-
-static const char setkeycodes_usage[] =
-	"setkeycodes SCANCODE KEYCODE ...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nSet entries into the kernel's scancode-to-keycode map,\n"
-	"allowing unusual keyboards to generate usable keycodes.\n\n" 
-	"SCANCODE may be either xx or e0xx (hexadecimal),\n"
-	"and KEYCODE is given in decimal\n"
-#endif
-	;
-
 extern int 
 setkeycodes_main(int argc, char** argv)
 {
diff --git a/sh.c b/sh.c
index d829b6b..9b34353 100644
--- a/sh.c
+++ b/sh.c
@@ -137,14 +137,6 @@
 	{NULL, NULL, NULL, NULL}
 };
 
-static const char shell_usage[] =
-	"sh [FILE]...\n"
-	"   or: sh -c command [args]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nlash: The BusyBox command interpreter (shell).\n\n"
-#endif
-	;
-
 static char *prompt = "# ";
 static char *cwd = NULL;
 static char *local_pending_command = NULL;
diff --git a/shell/lash.c b/shell/lash.c
index d829b6b..9b34353 100644
--- a/shell/lash.c
+++ b/shell/lash.c
@@ -137,14 +137,6 @@
 	{NULL, NULL, NULL, NULL}
 };
 
-static const char shell_usage[] =
-	"sh [FILE]...\n"
-	"   or: sh -c command [args]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nlash: The BusyBox command interpreter (shell).\n\n"
-#endif
-	;
-
 static char *prompt = "# ";
 static char *cwd = NULL;
 static char *local_pending_command = NULL;
diff --git a/sleep.c b/sleep.c
index c7ab32d..d6705c4 100644
--- a/sleep.c
+++ b/sleep.c
@@ -24,12 +24,6 @@
 #include "internal.h"
 #include <stdio.h>
 
-const char sleep_usage[] = "sleep N\n" 
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPause for N seconds.\n"
-#endif
-	;
-
 extern int sleep_main(int argc, char **argv)
 {
 	if ((argc < 2) || (**(argv + 1) == '-')) {
diff --git a/sort.c b/sort.c
index c754989..6af5c4d 100644
--- a/sort.c
+++ b/sort.c
@@ -29,16 +29,6 @@
 #include <stdio.h>
 #include <errno.h>
 
-static const char sort_usage[] = "sort [-n]"
-#ifdef BB_FEATURE_SORT_REVERSE
-" [-r]"
-#endif
-" [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-"\nSorts lines of text in the specified files\n"
-#endif
-;
-
 #ifdef BB_FEATURE_SORT_REVERSE
 #define APPLY_REVERSE(x) (reverse ? -(x) : (x))
 static int reverse = 0;
@@ -304,4 +294,4 @@
 	return(0);
 }
 
-/* $Id: sort.c,v 1.19 2000/07/14 01:51:25 kraai Exp $ */
+/* $Id: sort.c,v 1.20 2000/07/16 20:57:15 kraai Exp $ */
diff --git a/swaponoff.c b/swaponoff.c
index a79b93a..6aafe51 100644
--- a/swaponoff.c
+++ b/swaponoff.c
@@ -35,25 +35,6 @@
 
 static int whichApp;
 
-static const char swapoff_usage[] =
-	"swapoff [OPTION] [device]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nStop swapping virtual memory pages on the given device.\n\n"
-	"Options:\n"
-	"\t-a\tStop swapping on all swap devices\n"
-#endif
-	;
-
-static const char swapon_usage[] =
-	"swapon [OPTION] [device]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nStart swapping virtual memory pages on the given device.\n\n"
-	"Options:\n"
-	"\t-a\tStart swapping on all swap devices\n"
-#endif
-	;
-
-
 #define SWAPON_APP   1
 #define SWAPOFF_APP  2
 
diff --git a/sync.c b/sync.c
index f7c14b0..3737cb1 100644
--- a/sync.c
+++ b/sync.c
@@ -24,13 +24,6 @@
 #include "internal.h"
 #include <stdio.h>
 
-const char sync_usage[] =
-	"sync\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nWrite all buffered filesystem blocks to disk.\n"
-#endif
-	;
-
 extern int sync_main(int argc, char **argv)
 {
 	if (argc > 1 && **(argv + 1) == '-')
diff --git a/sysklogd/logger.c b/sysklogd/logger.c
index 981748b..0e1ce8d 100644
--- a/sysklogd/logger.c
+++ b/sysklogd/logger.c
@@ -47,20 +47,6 @@
 extern CODE facilitynames[];
 #endif
 
-static const char logger_usage[] =
-	"logger [OPTION]... [MESSAGE]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nWrite MESSAGE to the system log.  If MESSAGE is '-', log stdin.\n\n"
-	"Options:\n"
-	"\t-s\tLog to stderr as well as the system log.\n"
-	"\t-t\tLog using the specified tag (defaults to user name).\n"
-
-	"\t-p\tEnter the message with the specified priority.\n"
-	"\t\tThis may be numerical or a ``facility.level'' pair.\n"
-#endif
-	;
-
-
 /* Decode a symbolic name to a numeric value 
  * this function is based on code
  * Copyright (c) 1983, 1993
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
index 55fd8dc..264d899 100644
--- a/sysklogd/syslogd.c
+++ b/sysklogd/syslogd.c
@@ -76,21 +76,6 @@
 /* localhost's name */
 static char LocalHostName[32];
 
-static const char syslogd_usage[] =
-	"syslogd [OPTION]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nLinux system and kernel (provides klogd) logging utility.\n"
-	"Note that this version of syslogd/klogd ignores /etc/syslog.conf.\n\n"
-	"Options:\n"
-	"\t-m NUM\t\tInterval between MARK lines (default=20min, 0=off)\n"
-	"\t-n\t\tRun as a foreground process\n"
-#ifdef BB_FEATURE_KLOGD
-	"\t-K\t\tDo not start up the klogd process\n"
-#endif
-	"\t-O FILE\t\tUse an alternate log file (default=/var/log/messages)\n"
-#endif
-	;
-
 /* Note: There is also a function called "message()" in init.c */
 /* Print a message to the log file. */
 static void message (char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
diff --git a/syslogd.c b/syslogd.c
index 55fd8dc..264d899 100644
--- a/syslogd.c
+++ b/syslogd.c
@@ -76,21 +76,6 @@
 /* localhost's name */
 static char LocalHostName[32];
 
-static const char syslogd_usage[] =
-	"syslogd [OPTION]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nLinux system and kernel (provides klogd) logging utility.\n"
-	"Note that this version of syslogd/klogd ignores /etc/syslog.conf.\n\n"
-	"Options:\n"
-	"\t-m NUM\t\tInterval between MARK lines (default=20min, 0=off)\n"
-	"\t-n\t\tRun as a foreground process\n"
-#ifdef BB_FEATURE_KLOGD
-	"\t-K\t\tDo not start up the klogd process\n"
-#endif
-	"\t-O FILE\t\tUse an alternate log file (default=/var/log/messages)\n"
-#endif
-	;
-
 /* Note: There is also a function called "message()" in init.c */
 /* Print a message to the log file. */
 static void message (char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
diff --git a/tail.c b/tail.c
index 9232356..cea63e8 100644
--- a/tail.c
+++ b/tail.c
@@ -72,21 +72,6 @@
 /* If nonzero, print filename headers.  */
 static int print_headers;
 
-const char tail_usage[] =
-	"tail [OPTION] [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrint last 10 lines of each FILE to standard output.\n"
-	"With more than one FILE, precede each with a header giving the\n"
-	"file name. With no FILE, or when FILE is -, read standard input.\n\n"
-	"Options:\n"
-	"\t-n NUM\t\tPrint last NUM lines instead of first 10\n"
-
-	"\t-f\t\tOutput data as the file grows.  This version\n"
-	"\t\t\tof 'tail -f' supports only one file at a time.\n"
-#endif
-	;
-
-
 static void write_header(const char *filename)
 {
 	static int first_file = 1;
@@ -516,25 +501,6 @@
 /* Nonzero if we have ever read standard input.  */
 static int have_read_stdin;
 
-
-static const char tail_usage[] = "tail [OPTION]... [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-"\nPrint last 10 lines of each FILE to standard output.\n\
-With more than one FILE, precede each with a header giving the file name.\n\
-With no FILE, or when FILE is -, read standard input.\n\
-\n\
-  -c=N[kbm]       output the last N bytes\n\
-  -f              output appended data as the file grows\n\
-  -n=N            output the last N lines, instead of last 10\n\
-  -q              never output headers giving file names\n\
-  -v              always output headers giving file names\n\
-\n\
-If the first character of N (bytes or lines) is a `+', output begins with \n\
-the Nth item from the start of each file, otherwise, print the last N items\n\
-in the file.  N bytes may be suffixed by k (x1024), b (x512), or m (1024^2).\n"
-#endif
-;
-
 static void write_header(const char *filename, const char *comment)
 {
 	static int first_file = 1;
diff --git a/tar.c b/tar.c
index 353694f..6f18dc4 100644
--- a/tar.c
+++ b/tar.c
@@ -50,37 +50,6 @@
 #include <sys/types.h>
 #include <sys/sysmacros.h>
 
-
-static const char tar_usage[] =
-#ifdef BB_FEATURE_TAR_CREATE
-	"tar -[cxtvO] "
-#else
-	"tar -[xtvO] "
-#endif
-#if defined BB_FEATURE_TAR_EXCLUDE
-	"[--exclude File] "
-#endif
-	"[-f tarFile] [FILE] ...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCreate, extract, or list files from a tar file.  Note that\n"
-	"this version of tar treats hard links as separate files.\n\n"
-	"Main operation mode:\n"
-#ifdef BB_FEATURE_TAR_CREATE
-	"\tc\t\tcreate\n"
-#endif
-	"\tx\t\textract\n"
-	"\tt\t\tlist\n"
-	"\nFile selection:\n"
-	"\tf\t\tname of tarfile or \"-\" for stdin\n"
-	"\tO\t\textract to stdout\n"
-#if defined BB_FEATURE_TAR_EXCLUDE
-	"\t--exclude\tfile to exclude\n"
-#endif
-	"\nInformative output:\n"
-	"\tv\t\tverbosely list files processed\n"
-#endif
-	;
-
 /* Tar file constants  */
 #ifndef MAJOR
 #define MAJOR(dev) (((dev)>>8)&0xff)
diff --git a/tee.c b/tee.c
index 67b42a2..c15408b 100644
--- a/tee.c
+++ b/tee.c
@@ -26,18 +26,6 @@
 #include <errno.h>
 #include <stdio.h>
 
-static const char tee_usage[] =
-	"tee [OPTION]... [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nCopy standard input to each FILE, and also to standard output.\n\n"
-	"Options:\n" "\t-a\tappend to the given FILEs, do not overwrite\n"
-#if 0
-	"\t-i\tignore interrupt signals\n"
-#endif
-#endif
-;
-
-
 /* FileList _______________________________________________________________ */
 
 #define FL_MAX	1024
@@ -133,4 +121,4 @@
 	return(0);
 }
 
-/* $Id: tee.c,v 1.12 2000/07/14 01:51:25 kraai Exp $ */
+/* $Id: tee.c,v 1.13 2000/07/16 20:57:15 kraai Exp $ */
diff --git a/telnet.c b/telnet.c
index f276035..3e43c4a 100644
--- a/telnet.c
+++ b/telnet.c
@@ -134,14 +134,6 @@
 
 /* Some globals */
 static int one = 1;
-static const char telnet_usage[] =
-	"telnet host [port]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nTelnet is used to establish interactive communication with another\n"
-	"computer over a network using the TELNET protocol.\n"
-#endif
-	;
-
 
 static void doexit(int ev)
 {
diff --git a/test.c b/test.c
index bf1622c..9a1888b 100644
--- a/test.c
+++ b/test.c
@@ -178,15 +178,6 @@
 static int is_a_group_member();
 static void initialize_group_array();
 
-const char test_usage[] =
-	"test EXPRESSION\n"
-	"or   [ EXPRESSION ]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nChecks file types and compares values returning an exit\n"
-	"code determined by the value of EXPRESSION.\n"
-#endif
-	;
-
 extern int
 test_main(int argc, char** argv)
 {
diff --git a/touch.c b/touch.c
index ac27542..afdd265 100644
--- a/touch.c
+++ b/touch.c
@@ -30,16 +30,6 @@
 #include <utime.h>
 #include <errno.h>
 
-
-static const char touch_usage[] = "touch [-c] file [file ...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nUpdate the last-modified date on the given file[s].\n\n"
-	"Options:\n"
-	"\t-c\tDo not create any files\n"
-#endif
-	;
-
-
 extern int touch_main(int argc, char **argv)
 {
 	int fd;
diff --git a/tr.c b/tr.c
index 2971ef6..0040924 100644
--- a/tr.c
+++ b/tr.c
@@ -34,19 +34,6 @@
 #define bb_need_write_error
 #include "messages.c"
 
-const char *tr_usage="tr [-cds] STRING1 [STRING2]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nTranslate, squeeze, and/or delete characters from\n"
-	"standard input, writing to standard output.\n\n"
-	"Options:\n"
-	"\t-c\ttake complement of STRING1\n"
-	"\t-d\tdelete input characters coded STRING1\n"
-	"\t-s\tsqueeze multiple output characters of STRING2 into one character\n"
-#endif
-;
-
-
-
 #ifdef TRUE
 #undef TRUE
 #undef FALSE
diff --git a/tty.c b/tty.c
index f3c7fb7..bbc051f 100644
--- a/tty.c
+++ b/tty.c
@@ -24,14 +24,6 @@
 #include <stdio.h>
 #include <sys/types.h>
 
-static const char tty_usage[] = "tty\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrint the file name of the terminal connected to standard input.\n\n"
-	"Options:\n"
-	"\t-s\tprint nothing, only return an exit status\n"
-#endif
-	;
-
 extern int tty_main(int argc, char **argv)
 {
 	char *tty;
diff --git a/umount.c b/umount.c
index 1b250fd..df075f7 100644
--- a/umount.c
+++ b/umount.c
@@ -39,28 +39,6 @@
 extern int umount (__const char *__special_file);
 extern int umount2 (__const char *__special_file, int __flags);
 
-
-
-static const char umount_usage[] =
-	"umount [flags] filesystem|directory\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"Unmount file systems\n"
-	"\nFlags:\n" "\t-a:\tUnmount all file systems"
-#ifdef BB_MTAB
-	" in /etc/mtab\n\t-n:\tDon't erase /etc/mtab entries\n"
-#else
-	"\n"
-#endif
-	"\t-r:\tTry to remount devices as read-only if mount is busy\n"
-#if defined BB_FEATURE_MOUNT_FORCE
-	"\t-f:\tForce filesystem umount (i.e. unreachable NFS server)\n"
-#endif
-#if defined BB_FEATURE_MOUNT_LOOP
-	"\t-l:\tDo not free loop device (if a loop device has been used)\n"
-#endif
-#endif
-;
-
 struct _mtab_entry_t {
 	char *device;
 	char *mountpt;
diff --git a/uname.c b/uname.c
index b7c88ec..55616dd 100644
--- a/uname.c
+++ b/uname.c
@@ -40,24 +40,6 @@
 # include <sys/systeminfo.h>
 #endif
 
-
-static const char uname_usage[] =
-	"uname [OPTION]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrint certain system information.  With no OPTION, same as -s.\n\n"
-	"Options:\n"
-	"\t-a\tprint all information\n"
-	"\t-m\tthe machine (hardware) type\n"
-	"\t-n\tprint the machine's network node hostname\n"
-	"\t-r\tprint the operating system release\n"
-	"\t-s\tprint the operating system name\n"
-
-	"\t-p\tprint the host processor type\n"
-	"\t-v\tprint the operating system version\n"
-#endif
-	;
-
-
 static void print_element(unsigned int mask, char *element);
 
 /* Values that are bitwise or'd into `toprint'. */
diff --git a/uniq.c b/uniq.c
index 16b2576..016fc77 100644
--- a/uniq.c
+++ b/uniq.c
@@ -27,14 +27,6 @@
 #include <string.h>
 #include <errno.h>
 
-static const char uniq_usage[] =
-	"uniq [OPTION]... [INPUT [OUTPUT]]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nDiscard all but one of successive identical lines from INPUT\n"
-	"(or standard input), writing to OUTPUT (or standard output).\n"
-#endif
-	;
-
 /* max chars in line */
 #define UNIQ_MAX 4096
 
@@ -187,4 +179,4 @@
 	return(0);
 }
 
-/* $Id: uniq.c,v 1.12 2000/07/14 01:51:25 kraai Exp $ */
+/* $Id: uniq.c,v 1.13 2000/07/16 20:57:15 kraai Exp $ */
diff --git a/update.c b/update.c
index f943461..0bdc90e 100644
--- a/update.c
+++ b/update.c
@@ -34,18 +34,6 @@
 static _syscall2(int, bdflush, int, func, int, data);
 #endif							/* __GLIBC__ */
 
-
-static char update_usage[] =
-	"update [options]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPeriodically flushes filesystem buffers.\n\n"
-	"Options:\n"
-	"\t-S\tforce use of sync(2) instead of flushing\n"
-	"\t-s SECS\tcall sync this often (default 30)\n"
-	"\t-f SECS\tflush some buffers this often (default 5)\n"
-#endif
-	;
-
 static unsigned int sync_duration = 30;
 static unsigned int flush_duration = 5;
 static int use_sync = 0;
diff --git a/usage.c b/usage.c
new file mode 100644
index 0000000..d5a34ec
--- /dev/null
+++ b/usage.c
@@ -0,0 +1,1204 @@
+#include "internal.h"
+
+#if defined BB_AR
+const char ar_usage[] =
+	"ar [optxvV] archive [filenames] \n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nExtract or list files from an ar archive.\n\n"
+	"Options:\n"
+	"\to\t\tpreserve original dates\n"
+	"\tp\t\textract to stdout\n"
+	"\tt\t\tlist\n"
+	"\tx\t\textract\n"
+	"\tv\t\tverbosely list files processed\n"
+#endif
+	;
+#endif
+
+#if defined BB_BASENAME
+const char basename_usage[] =
+	"basename FILE [SUFFIX]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nStrips directory path and suffixes from FILE.\n"
+	"If specified, also removes any trailing SUFFIX.\n"
+#endif
+	;
+#endif
+
+#if defined BB_CAT
+const char cat_usage[] =
+	"cat [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nConcatenates FILE(s) and prints them to stdout.\n"
+#endif
+	;
+#endif
+
+#if defined BB_CHMOD_CHOWN_CHGRP
+const char chgrp_usage[] =
+	"chgrp [OPTION]... GROUP FILE...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nChange the group membership of each FILE to GROUP.\n"
+	"\nOptions:\n\t-R\tChanges files and directories recursively.\n"
+#endif
+	;
+#endif
+
+#if defined BB_CHMOD_CHOWN_CHGRP
+const char chmod_usage[] =
+	"chmod [-R] MODE[,MODE]... FILE...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nEach MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+	"one or more of the letters rwxst.\n\n"
+	"\nOptions:\n\t-R\tChanges files and directories recursively.\n"
+#endif
+	;
+#endif
+
+#if defined BB_CHMOD_CHOWN_CHGRP
+const char chown_usage[] =
+	"chown [OPTION]...  OWNER[<.|:>[GROUP] FILE...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nChange the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+	"\nOptions:\n\t-R\tChanges files and directories recursively.\n"
+#endif
+	;
+#endif
+
+#if defined BB_CHROOT
+const char chroot_usage[] =
+	"chroot NEWROOT [COMMAND...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nRun COMMAND with root directory set to NEWROOT.\n"
+#endif
+	;
+#endif
+
+#if defined BB_CHVT
+const char chvt_usage[] =
+	"chvt N\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nChanges the foreground virtual terminal to /dev/ttyN\n"
+#endif
+	;
+#endif
+
+#if defined BB_CP_MV
+const char cp_usage[] =
+	"cp [OPTION]... SOURCE DEST\n"
+	"   or: cp [OPTION]... SOURCE... DIRECTORY\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCopies SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+	"\n"
+	"\t-a\tSame as -dpR\n"
+	"\t-d\tPreserves links\n"
+	"\t-p\tPreserves file attributes if possible\n"
+	"\t-f\tforce (implied; ignored) - always set\n"
+	"\t-R\tCopies directories recursively\n"
+#endif
+	;
+#endif
+
+#if defined BB_CUT
+const char cut_usage[] =
+	"cut [OPTION]... [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrints selected fields from each input FILE to standard output.\n\n"
+	"Options:\n"
+	"\t-b LIST\tOutput only bytes from LIST\n"
+	"\t-c LIST\tOutput only characters from LIST\n"
+	"\t-d CHAR\tUse CHAR instead of tab as the field delimiter\n"
+	"\t-s\tOnly output Lines if the include DELIM\n"
+	"\t-f N\tPrint only these fields\n"
+	"\t-n\tIgnored\n"
+#endif
+	;
+#endif
+
+#if defined BB_DATE
+const char date_usage[] =
+	"date [OPTION]... [+FORMAT]\n"
+	"  or:  date [OPTION] [MMDDhhmm[[CC]YY][.ss]]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nDisplays the current time in the given FORMAT, or sets the system date.\n"
+	"\nOptions:\n\t-R\tOutputs RFC-822 compliant date string\n"
+	"\t-s\tSets time described by STRING\n"
+	"\t-u\tPrints or sets Coordinated Universal Time\n"
+#endif
+	;
+#endif
+
+#if defined BB_DC
+const char dc_usage[] =
+	"dc expression ...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nThis is a Tiny RPN calculator that understands the\n"
+	"following operations: +, -, /, *, and, or, not, eor.\n"
+	"i.e. 'dc 2 2 add' -> 4, and 'dc 8 8 \\* 2 2 + /' -> 16\n"
+#endif
+	;
+#endif
+
+#if defined BB_DD
+const char dd_usage[] =
+	"dd [if=FILE] [of=FILE] [bs=N] [count=N] [skip=N] [seek=N]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCopy a file, converting and formatting according to options\n\n"
+	"\tif=FILE\tread from FILE instead of stdin\n"
+	"\tof=FILE\twrite to FILE instead of stdout\n"
+	"\tbs=N\tread and write N bytes at a time\n"
+	"\tcount=N\tcopy only N input blocks\n"
+	"\tskip=N\tskip N input blocks\n"
+	"\tseek=N\tskip N output blocks\n"
+	"\n"
+	"Numbers may be suffixed by w (x2), k (x1024), b (x512), or M (x1024^2)\n"
+#endif
+	;
+#endif
+
+#if defined BB_DEALLOCVT
+const char deallocvt_usage[] =
+	"deallocvt N\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	 "\nDeallocate unused virtual terminal /dev/ttyN\n"
+#endif
+	 ;
+#endif
+
+#if defined BB_DF
+const char df_usage[] =
+	"df [filesystem ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint the filesystem space used and space available.\n"
+#endif
+	;
+#endif
+
+#if defined BB_DIRNAME
+const char dirname_usage[] =
+	"dirname [FILENAME ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nStrips non-directory suffix from FILENAME\n"
+#endif
+	;
+#endif
+
+#if defined BB_DMESG
+const char dmesg_usage[] =
+	"dmesg [-c] [-n LEVEL] [-s SIZE]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrints or controls the kernel ring buffer\n\n"
+	"Options:\n"
+	"\t-c\t\tClears the ring buffer's contents after printing\n"
+	"\t-n LEVEL\tSets console logging level\n"
+	"\t-s SIZE\t\tUse a buffer of size SIZE\n"
+#endif
+	;
+#endif
+
+#if defined BB_DU
+const char du_usage[] =
+	"du [OPTION]... [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSummarizes disk space used for each FILE and/or directory.\n"
+	"Disk space is printed in units of 1024 bytes.\n\n"
+	"Options:\n"
+	"\t-l\tcount sizes many times if hard linked\n"
+	"\t-s\tdisplay only a total for each argument\n"
+#endif
+	;
+#endif
+
+#if defined BB_DUMPKMAP
+const char dumpkmap_usage[] =
+	"dumpkmap\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrints out a binary keyboard translation table to standard input.\n"
+#endif
+	;
+#endif
+
+#if defined BB_DUTMP
+const char dutmp_usage[] =
+	"dutmp [FILE]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nDump utmp file format (pipe delimited) from FILE\n"
+	"or stdin to stdout.  (i.e. 'dutmp /var/run/utmp')\n"
+#endif
+	;
+#endif
+
+#if defined BB_ECHO
+const char echo_usage[] =
+	"echo [-neE] [ARG ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrints the specified ARGs to stdout\n\n"
+	"Options:\n"
+	"\t-n\tsuppress trailing newline\n"
+	"\t-e\tinterpret backslash-escaped characters (i.e. \\t=tab etc)\n"
+	"\t-E\tdisable interpretation of backslash-escaped characters\n"
+#endif
+	;
+#endif
+
+#if defined BB_FDFLUSH
+const char fdflush_usage[] =
+	"fdflush DEVICE\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nForces floppy disk drive to detect disk change\n"
+#endif
+	;
+#endif
+
+#if defined BB_FIND
+const char find_usage[] =
+	"find [PATH...] [EXPRESSION]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSearch for files in a directory hierarchy.  The default PATH is\n"
+	"the current directory; default EXPRESSION is '-print'\n\n"
+	"\nEXPRESSION may consist of:\n"
+	"\t-follow\t\tDereference symbolic links.\n"
+	"\t-name PATTERN\tFile name (leading directories removed) matches PATTERN.\n"
+	"\t-print\t\tprint the full file name followed by a newline to stdout.\n"
+#endif
+	;
+#endif
+
+#if defined BB_FREE
+const char free_usage[] =
+	"free\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nDisplays the amount of free and used system memory\n"
+#endif
+	;
+#endif
+
+#if defined BB_FREERAMDISK
+const char freeramdisk_usage[] =
+	"freeramdisk DEVICE\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nFrees all memory used by the specified ramdisk.\n"
+#endif
+	;
+#endif
+
+#if defined BB_FSCK_MINIX
+const char fsck_minix_usage[] =
+	"Usage: fsck.minix [-larvsmf] /dev/name\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPerforms a consistency check for MINIX filesystems.\n\n"
+	"Options:\n"
+	"\t-l\tLists all filenames\n"
+	"\t-r\tPerform interactive repairs\n"
+	"\t-a\tPerform automatic repairs\n"
+	"\t-v\tverbose\n"
+	"\t-s\tOutputs super-block information\n"
+	"\t-m\tActivates MINIX-like \"mode not cleared\" warnings\n"
+	"\t-f\tForce file system check.\n\n"
+#endif
+	;
+#endif
+
+#if defined BB_GREP
+const char grep_usage[] =
+	"grep [-ihHnqvs] pattern [files...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSearch for PATTERN in each FILE or standard input.\n\n"
+	"Options:\n"
+	"\t-H\tprefix output lines with filename where match was found\n"
+	"\t-h\tsuppress the prefixing filename on output\n"
+	"\t-i\tignore case distinctions\n"
+	"\t-n\tprint line number with output lines\n"
+	"\t-q\tbe quiet. Returns 0 if result was found, 1 otherwise\n"
+	"\t-v\tselect non-matching lines\n"
+	"\t-s\tsuppress file open/read error messages\n\n"
+#endif
+	;
+#endif
+
+#if defined BB_GUNZIP
+const char gunzip_usage[] =
+	"gunzip [OPTION]... FILE\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nUncompress FILE (or standard input if FILE is '-').\n\n"
+	"Options:\n"
+	"\t-c\tWrite output to standard output\n"
+	"\t-t\tTest compressed file integrity\n"
+#endif
+	;
+#endif
+
+#if defined BB_GZIP
+const char gzip_usage[] =
+	"gzip [OPTION]... FILE\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCompress FILE with maximum compression.\n"
+	"When FILE is '-', reads standard input.  Implies -c.\n\n"
+	"Options:\n"
+	"\t-c\tWrite output to standard output instead of FILE.gz\n"
+#endif
+	;
+#endif
+
+#if defined BB_HEAD
+const char head_usage[] =
+	"head [OPTION] [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint first 10 lines of each FILE to standard output.\n"
+	"With more than one FILE, precede each with a header giving the\n"
+	"file name. With no FILE, or when FILE is -, read standard input.\n\n"
+
+	"Options:\n" "\t-n NUM\t\tPrint first NUM lines instead of first 10\n"
+#endif
+	;
+#endif
+
+#if defined BB_HOSTNAME
+const char hostname_usage[] =
+	"hostname [OPTION] {hostname | -F file}\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nGet or set the hostname or DNS domain name. If a hostname is given\n"
+	"(or a file with the -F parameter), the host name will be set.\n\n"
+	"Options:\n"
+	"\t-s\t\tShort\n"
+
+	"\t-i\t\tAddresses for the hostname\n"
+	"\t-d\t\tDNS domain name\n"
+	"\t-F FILE\t\tUse the contents of FILE to specify the hostname\n"
+#endif
+	;
+#endif
+
+#if defined BB_ID
+const char id_usage[] =
+	"id [OPTIONS]... [USERNAME]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint information for USERNAME or the current user\n\n"
+	"Options:\n"
+	"\t-g\tprints only the group ID\n"
+	"\t-u\tprints only the user ID\n"
+	"\t-r\tprints the real user ID instead of the effective ID (with -ug)\n\n"
+#endif
+	;
+#endif
+
+#if defined BB_INSMOD
+const char insmod_usage[] =
+	"insmod [OPTION]... MODULE [symbol=value]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nLoads the specified kernel modules into the kernel.\n\n"
+	"Options:\n"
+	"\t-f\tForce module to load into the wrong kernel version.\n"
+	"\t-k\tMake module autoclean-able.\n"
+	"\t-v\tverbose output\n" "\t-x\tdo not export externs\n"
+#endif
+	;
+#endif
+
+#if defined BB_KILL
+const char kill_usage[] =
+	"kill [-signal] process-id [process-id ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSend a signal (default is SIGTERM) to the specified process(es).\n\n"
+	"Options:\n" "\t-l\tList all signal names and numbers.\n\n"
+#endif
+	;
+#endif
+
+#if defined BB_KILLALL
+const char killall_usage[] =
+	"killall [-signal] process-name [process-name ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSend a signal (default is SIGTERM) to the specified process(es).\n\n"
+	"Options:\n" "\t-l\tList all signal names and numbers.\n\n"
+#endif
+	;
+#endif
+
+#if defined BB_LENGTH
+const char length_usage[] =
+	"length STRING\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrints out the length of the specified STRING.\n"
+#endif
+	;
+#endif
+
+#if defined BB_LN
+const char ln_usage[] =
+	"ln [OPTION] TARGET... LINK_NAME|DIRECTORY\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCreate a link named LINK_NAME or DIRECTORY to the specified TARGET\n"
+	"\nYou may use '--' to indicate that all following arguments are non-options.\n\n"
+	"Options:\n"
+	"\t-s\tmake symbolic links instead of hard links\n"
+
+	"\t-f\tremove existing destination files\n"
+	"\t-n\tno dereference symlinks - treat like normal file\n"
+#endif
+	;
+#endif
+
+#if defined BB_LOADACM
+const char loadacm_usage[] =
+	"loadacm\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nLoads an acm from standard input.\n"
+#endif
+	;
+#endif
+
+#if defined BB_LOADFONT
+const char loadfont_usage[] =
+	"loadfont\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"Loads a console font from standard input.\n"
+#endif
+	;
+#endif
+
+#if defined BB_LOADKMAP
+const char loadkmap_usage[] =
+	"loadkmap\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nLoads a binary keyboard translation table from standard input.\n"
+#endif
+	;
+#endif
+
+#if defined BB_LOGGER
+const char logger_usage[] =
+	"logger [OPTION]... [MESSAGE]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nWrite MESSAGE to the system log.  If MESSAGE is '-', log stdin.\n\n"
+	"Options:\n"
+	"\t-s\tLog to stderr as well as the system log.\n"
+	"\t-t\tLog using the specified tag (defaults to user name).\n"
+
+	"\t-p\tEnter the message with the specified priority.\n"
+	"\t\tThis may be numerical or a ``facility.level'' pair.\n"
+#endif
+	;
+#endif
+
+#if defined BB_LOGNAME
+const char logname_usage[] =
+	"logname\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint the name of the current user.\n"
+#endif
+	;
+#endif
+
+#if defined BB_LS
+const char ls_usage[] =
+	"ls [-1a"
+#ifdef BB_FEATURE_LS_TIMESTAMPS
+	"c"
+#endif
+	"d"
+#ifdef BB_FEATURE_LS_TIMESTAMPS
+	"e"
+#endif
+	"ln"
+#ifdef BB_FEATURE_LS_FILETYPES
+	"p"
+#endif
+#ifdef BB_FEATURE_LS_TIMESTAMPS
+	"u"
+#endif
+	"xAC"
+#ifdef BB_FEATURE_LS_FILETYPES
+	"F"
+#endif
+#ifdef BB_FEATURE_LS_RECURSIVE
+	"R"
+#endif
+	"] [filenames...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nList directory contents\n\n"
+	"Options:\n"
+	"\t-a\tdo not hide entries starting with .\n"
+#ifdef BB_FEATURE_LS_TIMESTAMPS
+	"\t-c\twith -l: show ctime (the time of last\n"
+	"\t\tmodification of file status information)\n"
+#endif
+	"\t-d\tlist directory entries instead of contents\n"
+#ifdef BB_FEATURE_LS_TIMESTAMPS
+	"\t-e\tlist both full date and full time\n"
+#endif
+	"\t-l\tuse a long listing format\n"
+	"\t-n\tlist numeric UIDs and GIDs instead of names\n"
+#ifdef BB_FEATURE_LS_FILETYPES
+	"\t-p\tappend indicator (one of /=@|) to entries\n"
+#endif
+#ifdef BB_FEATURE_LS_TIMESTAMPS
+	"\t-u\twith -l: show access time (the time of last\n"
+	"\t\taccess of the file)\n"
+#endif
+	"\t-x\tlist entries by lines instead of by columns\n"
+	"\t-A\tdo not list implied . and ..\n"
+	"\t-C\tlist entries by columns\n"
+#ifdef BB_FEATURE_LS_FILETYPES
+	"\t-F\tappend indicator (one of */=@|) to entries\n"
+#endif
+#ifdef BB_FEATURE_LS_RECURSIVE
+	"\t-R\tlist subdirectories recursively\n"
+#endif
+#endif
+	;
+#endif
+
+#if defined BB_MAKEDEVS
+const char makedevs_usage[] =
+	"makedevs NAME TYPE MAJOR MINOR FIRST LAST [s]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCreates a range of block or character special files\n\n"
+	"TYPEs include:\n"
+	"\tb:\tMake a block (buffered) device.\n"
+	"\tc or u:\tMake a character (un-buffered) device.\n"
+	"\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes.\n\n"
+	"FIRST specifies the number appended to NAME to create the first device.\n"
+	"LAST specifies the number of the last item that should be created.\n"
+	"If 's' is the last argument, the base device is created as well.\n\n"
+	"For example:\n"
+	"\tmakedevs /dev/ttyS c 4 66 2 63   ->  ttyS2-ttyS63\n"
+	"\tmakedevs /dev/hda b 3 0 0 8 s    ->  hda,hda1-hda8\n"
+#endif
+	;
+#endif
+
+#if defined BB_MD5SUM
+const char md5sum_usage[] =
+	"md5sum [OPTION] [FILE]...\n"
+	"or:    md5sum [OPTION] -c [FILE]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint or check MD5 checksums.\n\n"
+	"Options:\n"
+	"With no FILE, or when FILE is -, read standard input.\n\n"
+	"\t-b\tread files in binary mode\n"
+	"\t-c\tcheck MD5 sums against given list\n"
+	"\t-t\tread files in text mode (default)\n"
+	"\t-g\tread a string\n"
+	"\nThe following two options are useful only when verifying checksums:\n"
+	"\t-s,\tdon't output anything, status code shows success\n"
+	"\t-w,\twarn about improperly formated MD5 checksum lines\n"
+#endif
+	;
+#endif
+
+#if defined BB_MKDIR
+const char mkdir_usage[] =
+	"mkdir [OPTION] DIRECTORY...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCreate the DIRECTORY(ies), if they do not already exist\n\n"
+	"Options:\n"
+
+	"\t-m\tset permission mode (as in chmod), not rwxrwxrwx - umask\n"
+	"\t-p\tno error if existing, make parent directories as needed\n"
+#endif
+	;
+#endif
+
+#if defined BB_MKFIFO
+const char mkfifo_usage[] =
+	"mkfifo [OPTIONS] name\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCreates a named pipe (identical to 'mknod name p')\n\n"
+	"Options:\n"
+	"\t-m\tcreate the pipe using the specified mode (default a=rw)\n"
+#endif
+	;
+#endif
+
+#if defined BB_MKFS_MINIX
+const char mkfs_minix_usage[] =
+	"mkfs.minix [-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nMake a MINIX filesystem.\n\n"
+	"Options:\n"
+	"\t-c\t\tCheck the device for bad blocks\n"
+	"\t-n [14|30]\tSpecify the maximum length of filenames\n"
+	"\t-i INODES\tSpecify the number of inodes for the filesystem\n"
+	"\t-l FILENAME\tRead the bad blocks list from FILENAME\n"
+	"\t-v\t\tMake a Minix version 2 filesystem\n\n"
+#endif
+	;
+#endif
+
+#if defined BB_MKNOD
+const char mknod_usage[] =
+	"mknod [OPTIONS] NAME TYPE MAJOR MINOR\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCreate a special file (block, character, or pipe).\n\n"
+	"Options:\n"
+	"\t-m\tcreate the special file using the specified mode (default a=rw)\n\n"
+	"TYPEs include:\n"
+	"\tb:\tMake a block (buffered) device.\n"
+	"\tc or u:\tMake a character (un-buffered) device.\n"
+	"\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes.\n"
+#endif
+	;
+#endif
+
+#if defined BB_MKSWAP
+const char mkswap_usage[] =
+	"mkswap [-c] [-v0|-v1] device [block-count]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrepare a disk partition to be used as a swap partition.\n\n"
+	"Options:\n" "\t-c\t\tCheck for read-ability.\n"
+	"\t-v0\t\tMake version 0 swap [max 128 Megs].\n"
+	"\t-v1\t\tMake version 1 swap [big!] (default for kernels > 2.1.117).\n"
+
+	"\tblock-count\tNumber of block to use (default is entire partition).\n"
+#endif
+	;
+#endif
+
+#if defined BB_MKTEMP
+const char mktemp_usage[] =
+	"mktemp [-q] TEMPLATE\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCreates a temporary file with its name based on TEMPLATE.\n"
+	"TEMPLATE is any name with six `Xs' (i.e. /tmp/temp.XXXXXX).\n"
+#endif
+	;
+#endif
+
+#if defined BB_MORE
+const char more_usage[] =
+	"more [FILE ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nMore is a filter for viewing FILE one screenful at a time.\n"
+#endif
+	;
+#endif
+
+#if defined BB_MOUNT
+const char mount_usage[] = 
+	"mount [flags] device directory [-o options,more-options]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nMount a filesystem\n\n"
+	"Flags:\n" 
+	"\t-a:\t\tMount all filesystems in fstab.\n"
+#ifdef BB_MTAB
+	"\t-f:\t\t\"Fake\" mount. Add entry to mount table but don't mount it.\n"
+	"\t-n:\t\tDon't write a mount table entry.\n"
+#endif
+	"\t-o option:\tOne of many filesystem options, listed below.\n"
+	"\t-r:\t\tMount the filesystem read-only.\n"
+	"\t-t fs-type:\tSpecify the filesystem type.\n"
+	"\t-w:\t\tMount for reading and writing (default).\n"
+	"\n"
+	"Options for use with the \"-o\" flag:\n"
+	"\tasync/sync:\tWrites are asynchronous / synchronous.\n"
+	"\tatime/noatime:\tEnable / disable updates to inode access times.\n"
+	"\tdev/nodev:\tAllow use of special device files / disallow them.\n"
+	"\texec/noexec:\tAllow use of executable files / disallow them.\n"
+#if defined BB_FEATURE_MOUNT_LOOP
+	"\tloop:\t\tMounts a file via loop device.\n"
+#endif
+	"\tsuid/nosuid:\tAllow set-user-id-root programs / disallow them.\n"
+	"\tremount:\tRe-mount a currently-mounted filesystem, changing its flags.\n"
+	"\tro/rw:\t\tMount for read-only / read-write.\n"
+	"\nThere are EVEN MORE flags that are specific to each filesystem.\n"
+	"You'll have to see the written documentation for those.\n"
+#endif
+	;
+#endif
+
+#if defined BB_MT
+const char mt_usage[] =
+	"mt [-f device] opcode value\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nControl magnetic tape drive operation\n"
+#endif
+	;
+#endif
+
+#if defined BB_CP_MV
+const char mv_usage[] =
+	"mv SOURCE DEST\n"
+	"   or: mv SOURCE... DIRECTORY\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nRename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+#endif
+	;
+#endif
+
+#if defined BB_NC
+const char nc_usage[] =
+	"nc [IP] [port]\n" 
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nNetcat opens a pipe to IP:port\n"
+#endif
+	;
+#endif
+
+#if defined BB_NSLOOKUP
+const char nslookup_usage[] =
+	"nslookup [HOST]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nQueries the nameserver for the IP address of the given HOST\n"
+#endif
+;
+#endif
+
+#if defined BB_PING
+#if defined BB_FEATURE_SIMPLE_PING
+const char ping_usage[] =
+	"ping host\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSend ICMP ECHO_REQUEST packets to network hosts\n"
+#endif
+	;
+#else /* ! defined BB_FEATURE_SIMPLE_PING */
+const char ping_usage[] =
+	"ping [OPTION]... host\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSend ICMP ECHO_REQUEST packets to network hosts.\n\n"
+	"Options:\n"
+	"\t-c COUNT\tSend only COUNT pings.\n"
+	"\t-s SIZE\t\tSend SIZE data bytes in packets (default=56).\n"
+	"\t-q\t\tQuiet mode, only displays output at start\n"
+	"\t\t\tand when finished.\n"
+#endif
+	;
+#endif
+#endif
+
+#if defined BB_PRINTF
+const char printf_usage[] =
+	"printf FORMAT [ARGUMENT...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nFormats and prints ARGUMENT(s) according to FORMAT,\n"
+	"Where FORMAT controls the output exactly as in C printf.\n"
+#endif
+	;
+#endif
+
+#if defined BB_PS
+const char ps_usage[] =
+	"ps\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nReport process status\n"
+	"\nThis version of ps accepts no options.\n"
+#endif
+	;
+#endif
+
+#if defined BB_RM
+const char rm_usage[] =
+	"rm [OPTION]... FILE...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nRemove (unlink) the FILE(s).  You may use '--' to\n"
+	"indicate that all following arguments are non-options.\n\n"
+	"Options:\n"
+	"\t-f\t\tremove existing destinations, never prompt\n"
+	"\t-r or -R\tremove the contents of directories recursively\n"
+#endif
+	;
+#endif
+
+#if defined BB_RMDIR
+const char rmdir_usage[] =
+	"rmdir [OPTION]... DIRECTORY...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nRemove the DIRECTORY(ies), if they are empty.\n"
+#endif
+	;
+#endif
+
+#if defined BB_RMMOD
+const char rmmod_usage[] =
+	"rmmod [OPTION]... [MODULE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nUnloads the specified kernel modules from the kernel.\n\n"
+	"Options:\n" 
+	"\t-a\tTry to remove all unused kernel modules.\n"
+#endif
+	;
+#endif
+
+#if defined BB_SED
+const char sed_usage[] =
+	"sed [-Vhnef] pattern [files...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\n"
+	"-n\tsuppress automatic printing of pattern space\n"
+	"-e script\tadd the script to the commands to be executed\n"
+	"-f scriptfile\tadd the contents of script-file to the commands to be executed\n"
+	"-h\tdisplay this help message\n"
+	"-V\toutput version information and exit\n"
+	"\n"
+	"If no -e or -f is given, the first non-option argument is taken as the\n"
+	"sed script to interpret. All remaining arguments are names of input\n"
+	"files; if no input files are specified, then the standard input is read.\n"
+#endif
+	;
+#endif
+
+#if defined BB_SETKEYCODES
+const char setkeycodes_usage[] =
+	"setkeycodes SCANCODE KEYCODE ...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSet entries into the kernel's scancode-to-keycode map,\n"
+	"allowing unusual keyboards to generate usable keycodes.\n\n" 
+	"SCANCODE may be either xx or e0xx (hexadecimal),\n"
+	"and KEYCODE is given in decimal\n"
+#endif
+	;
+#endif
+
+#if defined BB_SH
+const char shell_usage[] =
+	"sh [FILE]...\n"
+	"   or: sh -c command [args]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nlash: The BusyBox command interpreter (shell).\n\n"
+#endif
+	;
+#endif
+
+#if defined BB_SLEEP
+const char sleep_usage[] =
+	"sleep N\n" 
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPause for N seconds.\n"
+#endif
+	;
+#endif
+
+#if defined BB_SORT
+const char sort_usage[] =
+	"sort [-n]"
+#ifdef BB_FEATURE_SORT_REVERSE
+	" [-r]"
+#endif
+	" [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nSorts lines of text in the specified files\n"
+#endif
+	;
+#endif
+
+#if defined BB_SWAPONOFF
+const char swapoff_usage[] =
+	"swapoff [OPTION] [device]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nStop swapping virtual memory pages on the given device.\n\n"
+	"Options:\n"
+	"\t-a\tStop swapping on all swap devices\n"
+#endif
+	;
+#endif
+
+#if defined BB_SWAPONOFF
+const char swapon_usage[] =
+	"swapon [OPTION] [device]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nStart swapping virtual memory pages on the given device.\n\n"
+	"Options:\n"
+	"\t-a\tStart swapping on all swap devices\n"
+#endif
+	;
+#endif
+
+#if defined BB_SYNC
+const char sync_usage[] =
+	"sync\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nWrite all buffered filesystem blocks to disk.\n"
+#endif
+	;
+#endif
+
+#if defined BB_SYSLOGD
+const char syslogd_usage[] =
+	"syslogd [OPTION]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nLinux system and kernel (provides klogd) logging utility.\n"
+	"Note that this version of syslogd/klogd ignores /etc/syslog.conf.\n\n"
+	"Options:\n"
+	"\t-m NUM\t\tInterval between MARK lines (default=20min, 0=off)\n"
+	"\t-n\t\tRun as a foreground process\n"
+#ifdef BB_FEATURE_KLOGD
+	"\t-K\t\tDo not start up the klogd process\n"
+#endif
+	"\t-O FILE\t\tUse an alternate log file (default=/var/log/messages)\n"
+#endif
+	;
+#endif
+
+#if defined BB_TAIL
+#if defined BB_FEATURE_SIMPLE_TAIL
+const char tail_usage[] =
+	"tail [OPTION] [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint last 10 lines of each FILE to standard output.\n"
+	"With more than one FILE, precede each with a header giving the\n"
+	"file name. With no FILE, or when FILE is -, read standard input.\n\n"
+	"Options:\n"
+	"\t-n NUM\t\tPrint last NUM lines instead of first 10\n"
+
+	"\t-f\t\tOutput data as the file grows.  This version\n"
+	"\t\t\tof 'tail -f' supports only one file at a time.\n"
+#endif
+	;
+#else /* ! defined BB_FEATURE_SIMPLE_TAIL */
+const char tail_usage[] =
+	"tail [OPTION]... [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint last 10 lines of each FILE to standard output.\n"
+	"With more than one FILE, precede each with a header giving the file name.\n"
+	"With no FILE, or when FILE is -, read standard input.\n"
+	"\n"
+	"  -c=N[kbm]       output the last N bytes\n"
+	"  -f              output appended data as the file grows\n"
+	"  -n=N            output the last N lines, instead of last 10\n"
+	"  -q              never output headers giving file names\n"
+	"  -v              always output headers giving file names\n"
+	"\n"
+	"If the first character of N (bytes or lines) is a `+', output begins with \n"
+	"the Nth item from the start of each file, otherwise, print the last N items\n"
+	"in the file.  N bytes may be suffixed by k (x1024), b (x512), or m (1024^2).\n"
+#endif
+	;
+#endif
+#endif
+
+#if defined BB_TAR
+const char tar_usage[] =
+#ifdef BB_FEATURE_TAR_CREATE
+	"tar -[cxtvO] "
+#else
+	"tar -[xtvO] "
+#endif
+#if defined BB_FEATURE_TAR_EXCLUDE
+	"[--exclude File] "
+#endif
+	"[-f tarFile] [FILE] ...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCreate, extract, or list files from a tar file.  Note that\n"
+	"this version of tar treats hard links as separate files.\n\n"
+	"Main operation mode:\n"
+#ifdef BB_FEATURE_TAR_CREATE
+	"\tc\t\tcreate\n"
+#endif
+	"\tx\t\textract\n"
+	"\tt\t\tlist\n"
+	"\nFile selection:\n"
+	"\tf\t\tname of tarfile or \"-\" for stdin\n"
+	"\tO\t\textract to stdout\n"
+#if defined BB_FEATURE_TAR_EXCLUDE
+	"\t--exclude\tfile to exclude\n"
+#endif
+	"\nInformative output:\n"
+	"\tv\t\tverbosely list files processed\n"
+#endif
+	;
+#endif
+
+#if defined BB_TEE
+const char tee_usage[] =
+	"tee [OPTION]... [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nCopy standard input to each FILE, and also to standard output.\n\n"
+	"Options:\n" "\t-a\tappend to the given FILEs, do not overwrite\n"
+#endif
+	;
+#endif
+
+#if defined BB_TELNET
+const char telnet_usage[] =
+	"telnet host [port]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nTelnet is used to establish interactive communication with another\n"
+	"computer over a network using the TELNET protocol.\n"
+#endif
+	;
+#endif
+
+#if defined BB_TEST
+const char test_usage[] =
+	"test EXPRESSION\n"
+	"or   [ EXPRESSION ]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nChecks file types and compares values returning an exit\n"
+	"code determined by the value of EXPRESSION.\n"
+#endif
+	;
+#endif
+
+#if defined BB_TOUCH
+const char touch_usage[] =
+	"touch [-c] file [file ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nUpdate the last-modified date on the given file[s].\n\n"
+	"Options:\n"
+	"\t-c\tDo not create any files\n"
+#endif
+	;
+#endif
+
+#if defined BB_TR
+const char tr_usage[] =
+	"tr [-cds] STRING1 [STRING2]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nTranslate, squeeze, and/or delete characters from\n"
+	"standard input, writing to standard output.\n\n"
+	"Options:\n"
+	"\t-c\ttake complement of STRING1\n"
+	"\t-d\tdelete input characters coded STRING1\n"
+	"\t-s\tsqueeze multiple output characters of STRING2 into one character\n"
+#endif
+	;
+#endif
+
+#if defined BB_TTY
+const char tty_usage[] =
+	"tty\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint the file name of the terminal connected to standard input.\n\n"
+	"Options:\n"
+	"\t-s\tprint nothing, only return an exit status\n"
+#endif
+	;
+#endif
+
+#if defined BB_UMOUNT
+const char umount_usage[] =
+	"umount [flags] filesystem|directory\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"Unmount file systems\n"
+	"\nFlags:\n" "\t-a:\tUnmount all file systems"
+#ifdef BB_MTAB
+	" in /etc/mtab\n\t-n:\tDon't erase /etc/mtab entries\n"
+#else
+	"\n"
+#endif
+	"\t-r:\tTry to remount devices as read-only if mount is busy\n"
+#if defined BB_FEATURE_MOUNT_FORCE
+	"\t-f:\tForce filesystem umount (i.e. unreachable NFS server)\n"
+#endif
+#if defined BB_FEATURE_MOUNT_LOOP
+	"\t-l:\tDo not free loop device (if a loop device has been used)\n"
+#endif
+#endif
+	;
+#endif
+
+#if defined BB_UNAME
+const char uname_usage[] =
+	"uname [OPTION]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint certain system information.  With no OPTION, same as -s.\n\n"
+	"Options:\n"
+	"\t-a\tprint all information\n"
+	"\t-m\tthe machine (hardware) type\n"
+	"\t-n\tprint the machine's network node hostname\n"
+	"\t-r\tprint the operating system release\n"
+	"\t-s\tprint the operating system name\n"
+
+	"\t-p\tprint the host processor type\n"
+	"\t-v\tprint the operating system version\n"
+#endif
+	;
+#endif
+
+#if defined BB_UNIQ
+const char uniq_usage[] =
+	"uniq [OPTION]... [INPUT [OUTPUT]]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nDiscard all but one of successive identical lines from INPUT\n"
+	"(or standard input), writing to OUTPUT (or standard output).\n"
+#endif
+	;
+#endif
+
+#if defined BB_UPDATE
+const char update_usage[] =
+	"update [options]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPeriodically flushes filesystem buffers.\n\n"
+	"Options:\n"
+	"\t-S\tforce use of sync(2) instead of flushing\n"
+	"\t-s SECS\tcall sync this often (default 30)\n"
+	"\t-f SECS\tflush some buffers this often (default 5)\n"
+#endif
+	;
+#endif
+
+#if defined BB_USLEEP
+const char usleep_usage[] =
+	"usleep N\n" 
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPause for N microseconds.\n"
+#endif
+	;
+#endif
+
+#if defined BB_UUDECODE
+const char uudecode_usage[] =
+	"uudecode [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nUudecode a file that is uuencoded.\n\n"
+	"Options:\n"
+	"\t-o FILE\tdirect output to FILE\n"
+#endif
+	;
+#endif
+
+#if defined BB_UUENCODE
+const char uuencode_usage[] =
+	"uuencode [OPTION] [INFILE] REMOTEFILE\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nUuencode a file.\n\n"
+	"Options:\n"
+	"\t-m\tuse base64 encoding as of RFC1521\n"
+#endif
+	;
+#endif
+
+#if defined BB_WC
+const char wc_usage[] =
+	"wc [OPTION]... [FILE]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrint line, word, and byte counts for each FILE, and a total line if\n"
+	"more than one FILE is specified.  With no FILE, read standard input.\n\n"
+	"Options:\n"
+	"\t-c\tprint the byte counts\n"
+	"\t-l\tprint the newline counts\n"
+
+	"\t-L\tprint the length of the longest line\n"
+	"\t-w\tprint the word counts\n"
+#endif
+	;
+#endif
+
+#if defined BB_WHICH
+const char which_usage[] =
+	"which [COMMAND ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nLocates a COMMAND.\n"
+#endif
+	;
+#endif
+
+#if defined BB_WHOAMI
+const char whoami_usage[] =
+	"whoami\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nPrints the user name associated with the current effective user id.\n"
+#endif
+	;
+#endif
+
+#if defined BB_YES
+const char yes_usage[] =
+	"yes [OPTION]... [STRING]...\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nRepeatedly outputs a line with all specified STRING(s), or `y'.\n"
+#endif
+	;
+#endif
diff --git a/usleep.c b/usleep.c
index da6cca9..fcdf3bb 100644
--- a/usleep.c
+++ b/usleep.c
@@ -25,12 +25,6 @@
 #include <stdlib.h>
 #include <unistd.h>
 
-const char usleep_usage[] = "usleep N\n" 
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPause for N microseconds.\n"
-#endif
-	;
-
 extern int usleep_main(int argc, char **argv)
 {
 	if ((argc < 2) || (**(argv + 1) == '-')) {
diff --git a/util-linux/dmesg.c b/util-linux/dmesg.c
index 961e532..a8c61c7 100644
--- a/util-linux/dmesg.c
+++ b/util-linux/dmesg.c
@@ -32,16 +32,6 @@
 # include <sys/klog.h>
 #endif
 
-static const char dmesg_usage[] = "dmesg [-c] [-n LEVEL] [-s SIZE]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrints or controls the kernel ring buffer\n\n"
-	"Options:\n"
-	"\t-c\t\tClears the ring buffer's contents after printing\n"
-	"\t-n LEVEL\tSets console logging level\n"
-	"\t-s SIZE\t\tUse a buffer of size SIZE\n"
-#endif
-	;
-
 int dmesg_main(int argc, char **argv)
 {
 	char *buf, c;
diff --git a/util-linux/fdflush.c b/util-linux/fdflush.c
index d993735..6bc3e7d 100644
--- a/util-linux/fdflush.c
+++ b/util-linux/fdflush.c
@@ -34,13 +34,8 @@
 	int value;
 	int fd;
 
-	if (argc <= 1 || **(++argv) == '-') {
-		usage("fdflush DEVICE\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-				"\nForces floppy disk drive to detect disk change\n"
-#endif
-				);
-	}
+	if (argc <= 1 || **(++argv) == '-')
+		usage(fdflush_usage);
 
 	fd = open(*argv, 0);
 	if (fd < 0) {
diff --git a/util-linux/freeramdisk.c b/util-linux/freeramdisk.c
index 927c169..2da2427 100644
--- a/util-linux/freeramdisk.c
+++ b/util-linux/freeramdisk.c
@@ -34,14 +34,6 @@
 /* From linux/fs.h */
 #define BLKFLSBUF  _IO(0x12,97)	/* flush buffer cache */
 
-
-static const char freeramdisk_usage[] =
-	"freeramdisk DEVICE\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nFrees all memory used by the specified ramdisk.\n"
-#endif
-	;
-
 extern int
 freeramdisk_main(int argc, char **argv)
 {
diff --git a/util-linux/fsck_minix.c b/util-linux/fsck_minix.c
index ea27c23..5807b9a 100644
--- a/util-linux/fsck_minix.c
+++ b/util-linux/fsck_minix.c
@@ -288,21 +288,6 @@
 	exit(status);
 }
 
-const char fsck_minix_usage[] =
-	"Usage: fsck.minix [-larvsmf] /dev/name\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPerforms a consistency check for MINIX filesystems.\n\n"
-	"Options:\n"
-	"\t-l\tLists all filenames\n"
-	"\t-r\tPerform interactive repairs\n"
-	"\t-a\tPerform automatic repairs\n"
-	"\t-v\tverbose\n"
-	"\t-s\tOutputs super-block information\n"
-	"\t-m\tActivates MINIX-like \"mode not cleared\" warnings\n"
-	"\t-f\tForce file system check.\n\n"
-#endif
-	;
-
 static void show_usage(void)
 {
 	usage(fsck_minix_usage);
diff --git a/util-linux/mkfs_minix.c b/util-linux/mkfs_minix.c
index 9ae4b56..dec310d 100644
--- a/util-linux/mkfs_minix.c
+++ b/util-linux/mkfs_minix.c
@@ -267,19 +267,6 @@
 	exit(8);
 }
 
-const char mkfs_minix_usage[] =
-	"mkfs.minix [-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nMake a MINIX filesystem.\n\n"
-	"Options:\n"
-	"\t-c\t\tCheck the device for bad blocks\n"
-	"\t-n [14|30]\tSpecify the maximum length of filenames\n"
-	"\t-i INODES\tSpecify the number of inodes for the filesystem\n"
-	"\t-l FILENAME\tRead the bad blocks list from FILENAME\n"
-	"\t-v\t\tMake a Minix version 2 filesystem\n\n"
-#endif
-	;
-
 static volatile void show_usage() __attribute__ ((noreturn));
 static volatile void show_usage()
 {
diff --git a/util-linux/mkswap.c b/util-linux/mkswap.c
index 5a33945..eacd881 100644
--- a/util-linux/mkswap.c
+++ b/util-linux/mkswap.c
@@ -47,20 +47,6 @@
 #include <asm/page.h>			/* for PAGE_SIZE and PAGE_SHIFT */
 				/* we also get PAGE_SIZE via getpagesize() */
 
-
-static const char mkswap_usage[] =
-	"mkswap [-c] [-v0|-v1] device [block-count]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrepare a disk partition to be used as a swap partition.\n\n"
-	"Options:\n" "\t-c\t\tCheck for read-ability.\n"
-	"\t-v0\t\tMake version 0 swap [max 128 Megs].\n"
-	"\t-v1\t\tMake version 1 swap [big!] (default for kernels > 2.1.117).\n"
-
-	"\tblock-count\tNumber of block to use (default is entire partition).\n"
-#endif
-	;
-
-
 #ifndef _IO
 /* pre-1.3.45 */
 #define BLKGETSIZE 0x1260
diff --git a/util-linux/more.c b/util-linux/more.c
index 91c2815..2334576 100644
--- a/util-linux/more.c
+++ b/util-linux/more.c
@@ -34,12 +34,6 @@
 #define bb_need_help
 #include "messages.c"
 
-static const char more_usage[] = "more [FILE ...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nMore is a filter for viewing FILE one screenful at a time.\n"
-#endif
-	;
-
 /* ED: sparc termios is broken: revert back to old termio handling. */
 #ifdef BB_FEATURE_USE_TERMIOS
 #	if #cpu(sparc)
diff --git a/util-linux/mount.c b/util-linux/mount.c
index addeb09..610d12d 100644
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -80,38 +80,6 @@
 
 extern const char mtab_file[];	/* Defined in utility.c */
 
-static const char mount_usage[] = 
-	"mount [flags] device directory [-o options,more-options]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nMount a filesystem\n\n"
-	"Flags:\n" 
-	"\t-a:\t\tMount all filesystems in fstab.\n"
-#ifdef BB_MTAB
-	"\t-f:\t\t\"Fake\" mount. Add entry to mount table but don't mount it.\n"
-	"\t-n:\t\tDon't write a mount table entry.\n"
-#endif
-	"\t-o option:\tOne of many filesystem options, listed below.\n"
-	"\t-r:\t\tMount the filesystem read-only.\n"
-	"\t-t fs-type:\tSpecify the filesystem type.\n"
-	"\t-w:\t\tMount for reading and writing (default).\n"
-	"\n"
-	"Options for use with the \"-o\" flag:\n"
-	"\tasync/sync:\tWrites are asynchronous / synchronous.\n"
-	"\tatime/noatime:\tEnable / disable updates to inode access times.\n"
-	"\tdev/nodev:\tAllow use of special device files / disallow them.\n"
-	"\texec/noexec:\tAllow use of executable files / disallow them.\n"
-#if defined BB_FEATURE_MOUNT_LOOP
-	"\tloop:\t\tMounts a file via loop device.\n"
-#endif
-	"\tsuid/nosuid:\tAllow set-user-id-root programs / disallow them.\n"
-	"\tremount:\tRe-mount a currently-mounted filesystem, changing its flags.\n"
-	"\tro/rw:\t\tMount for read-only / read-write.\n"
-	"\nThere are EVEN MORE flags that are specific to each filesystem.\n"
-	"You'll have to see the written documentation for those.\n"
-#endif
-	;
-
-
 struct mount_options {
 	const char *name;
 	unsigned long and;
diff --git a/util-linux/swaponoff.c b/util-linux/swaponoff.c
index a79b93a..6aafe51 100644
--- a/util-linux/swaponoff.c
+++ b/util-linux/swaponoff.c
@@ -35,25 +35,6 @@
 
 static int whichApp;
 
-static const char swapoff_usage[] =
-	"swapoff [OPTION] [device]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nStop swapping virtual memory pages on the given device.\n\n"
-	"Options:\n"
-	"\t-a\tStop swapping on all swap devices\n"
-#endif
-	;
-
-static const char swapon_usage[] =
-	"swapon [OPTION] [device]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nStart swapping virtual memory pages on the given device.\n\n"
-	"Options:\n"
-	"\t-a\tStart swapping on all swap devices\n"
-#endif
-	;
-
-
 #define SWAPON_APP   1
 #define SWAPOFF_APP  2
 
diff --git a/util-linux/umount.c b/util-linux/umount.c
index 1b250fd..df075f7 100644
--- a/util-linux/umount.c
+++ b/util-linux/umount.c
@@ -39,28 +39,6 @@
 extern int umount (__const char *__special_file);
 extern int umount2 (__const char *__special_file, int __flags);
 
-
-
-static const char umount_usage[] =
-	"umount [flags] filesystem|directory\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"Unmount file systems\n"
-	"\nFlags:\n" "\t-a:\tUnmount all file systems"
-#ifdef BB_MTAB
-	" in /etc/mtab\n\t-n:\tDon't erase /etc/mtab entries\n"
-#else
-	"\n"
-#endif
-	"\t-r:\tTry to remount devices as read-only if mount is busy\n"
-#if defined BB_FEATURE_MOUNT_FORCE
-	"\t-f:\tForce filesystem umount (i.e. unreachable NFS server)\n"
-#endif
-#if defined BB_FEATURE_MOUNT_LOOP
-	"\t-l:\tDo not free loop device (if a loop device has been used)\n"
-#endif
-#endif
-;
-
 struct _mtab_entry_t {
 	char *device;
 	char *mountpt;
diff --git a/uudecode.c b/uudecode.c
index 12a71a5..90bef92 100644
--- a/uudecode.c
+++ b/uudecode.c
@@ -300,15 +300,6 @@
     return read_stduu (inname);
 }
 
-static const char uudecode_usage[] =
-    "uudecode [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-    "\nUudecode a file that is uuencoded.\n\n"
-    "Options:\n"
-    "\t-o FILE\tdirect output to FILE\n"
-#endif
-;
-
 int uudecode_main (int argc,
                    char **argv)
 {
diff --git a/uuencode.c b/uuencode.c
index e107a01..1433c7f 100644
--- a/uuencode.c
+++ b/uuencode.c
@@ -180,15 +180,6 @@
   }
 }
 
-static const char uuencode_usage[] =
-    "uuencode [OPTION] [INFILE] REMOTEFILE\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-    "\nUuencode a file.\n\n"
-    "Options:\n"
-    "\t-m\tuse base64 encoding as of RFC1521\n"
-#endif
-;
-
 int uuencode_main (int argc,
                    char **argv)
 {
diff --git a/wc.c b/wc.c
index 3b0e589..058444d 100644
--- a/wc.c
+++ b/wc.c
@@ -23,19 +23,6 @@
 #include "internal.h"
 #include <stdio.h>
 
-static const char wc_usage[] = "wc [OPTION]... [FILE]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrint line, word, and byte counts for each FILE, and a total line if\n"
-	"more than one FILE is specified.  With no FILE, read standard input.\n\n"
-	"Options:\n"
-	"\t-c\tprint the byte counts\n"
-	"\t-l\tprint the newline counts\n"
-
-	"\t-L\tprint the length of the longest line\n"
-	"\t-w\tprint the word counts\n"
-#endif
-	;
-
 static int total_lines, total_words, total_chars, max_length;
 static int print_lines, print_words, print_chars, print_length;
 
diff --git a/which.c b/which.c
index 186bfda..943e10a 100644
--- a/which.c
+++ b/which.c
@@ -26,13 +26,6 @@
 #include <sys/stat.h>
 #include <sys/param.h>
 
-const char which_usage[] =
-	"which [COMMAND ...]\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nLocates a COMMAND.\n"
-#endif
-	;
-
 extern int which_main(int argc, char **argv)
 {
 	char *path_list, *test, *tmp, *path_parsed;
diff --git a/whoami.c b/whoami.c
index 01dff81..84b27fe 100644
--- a/whoami.c
+++ b/whoami.c
@@ -24,12 +24,6 @@
 #include <stdio.h>
 #include <pwd.h>
 
-static const char whoami_usage[] = "whoami\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nPrints the user name associated with the current effective user id.\n"
-#endif
-	;
-
 extern int whoami_main(int argc, char **argv)
 {
 	char *user = xmalloc(9);
diff --git a/yes.c b/yes.c
index 0191bb0..f41bbb6 100644
--- a/yes.c
+++ b/yes.c
@@ -23,13 +23,6 @@
 #include "internal.h"
 #include <stdio.h>
 
-const char yes_usage[] =
-	"yes [OPTION]... [STRING]...\n"
-#ifndef BB_FEATURE_TRIVIAL_HELP
-	"\nRepeatedly outputs a line with all specified STRING(s), or `y'.\n"
-#endif
-	;
-
 extern int yes_main(int argc, char **argv)
 {
 	int i;
