Move start_stop_daemon to debianutils.
[oweals/busybox.git] / include / usage.h
index fb126a007b71b5fa1952a30f952b71c9b5769a33..5b7db4150fe28fec3ed3ffec20846bda12c84052 100644 (file)
@@ -1,18 +1,22 @@
 #define addgroup_trivial_usage \
-       "[OPTIONS] <group_name>"
+       "[OPTIONS] group_name [user_name]"
 #define addgroup_full_usage \
        "Adds a group to the system" \
        "Options:\n" \
            "\t-g\t\tspecify gid\n"
 
 #define adduser_trivial_usage \
-       "[OPTIONS] <user_name>"
+       "[OPTIONS] user_name"
 #define adduser_full_usage \
        "Adds a user to the system" \
        "Options:\n" \
-           "\t-h\t\thome directory\n" \
-           "\t-s\t\tshell\n" \
-           "\t-g\t\tGECOS string\n"
+           "\t-h DIR\t\tAssign home directory DIR\n" \
+           "\t-g GECOS\t\tAssign gecos field GECOS\n" \
+           "\t-s SHELL\t\tAssign login shell SHELL\n" \
+           "\t-G\t\tAdd the user to existing group GROUP\n" \
+           "\t-S\t\tcreate a system user (ignored)\n" \
+           "\t-D\t\tDo not assign a password (logins still possible via ssh)\n" \
+           "\t-H\t\tDo not create the home directory\n"
 
 #define adjtimex_trivial_usage \
        "[-q] [-o offset] [-f frequency] [-p timeconstant] [-t tick]"
        "\t-x\t\textract\n" \
        "\t-v\t\tverbosely list files processed\n"
 
+#define arping_trivial_usage \
+       "[-fqbDUA] [-c count] [-w timeout] [-I device] [-s sender] target\n"
+#define arping_full_usage \
+       "Ping hosts by ARP requests/replies.\n\n" \
+       "Options:\n" \
+       "\t-f\t\tQuit on first ARP reply\n" \
+       "\t-q\t\tBe quiet\n" \
+       "\t-b\t\tKeep broadcasting, don't go unicast\n" \
+       "\t-D\t\tDuplicated address detection mode\n" \
+       "\t-U\t\tUnsolicited ARP mode, update your neighbours\n" \
+       "\t-A\t\tARP answer mode, update your neighbours\n" \
+       "\t-c count\tStop after sending count ARP request packets\n" \
+       "\t-w timeout\tTime to wait for ARP reply, in seconds\n" \
+       "\t-I device\tOutgoing interface name, default is eth0\n" \
+       "\t-s sender\tSet specific sender IP address\n" \
+       "\ttarget\t\tTarget IP address of ARP request\n"
+
 #define        awk_trivial_usage \
        "[-v var=val][-F sep] { -f progname | 'programtext' } [FILE ...]"
 #define        awk_full_usage \
        "\t-y\tDisplay the entire year."
 
 #define cat_trivial_usage \
-       "[FILE]..."
+       "[-u] [FILE]..."
 #define cat_full_usage \
-       "Concatenates FILE(s) and prints them to stdout."
+       "Concatenates FILE(s) and prints them to stdout.\n\n" \
+       "Options:\n" \
+       "\t-u\tignored since unbuffered i/o is always used"
 #define cat_example_usage \
        "$ cat /proc/uptime\n" \
        "110716.72 17.67"
        "Clear screen."
 
 #define cmp_trivial_usage \
-       "FILE1 [FILE2]"
+       "[OPTION]... FILE1 [FILE2]"
 #define cmp_full_usage \
-       "\t-s\tquiet mode - do not print\n" \
-       "Compare files."
+       "Compare files.\n\n" \
+       "Options:\n" \
+       "\t-l\tWrite the byte numbers (decimal) and values (octal)\n" \
+       "\t\t  for all differing bytes.\n" \
+       "\t-s\tquiet mode - do not print"
 
 #define cp_trivial_usage \
        "[OPTION]... SOURCE DEST"
 #define dc_full_usage \
        "This 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"
+       "i.e., 'dc 2 2 add' -> 4, and 'dc 8 8 \\* 2 2 + /' -> 16" \
+       "p - Prints the value on the top of the stack, without altering the stack.\n" \
+       "f - Prints the entire contents of the stack without altering anything.\n" \
+       "o - Pops the value off the top of the stack and uses it to set the output radix.\n" \
+       "    Only 10 and 16 are supported.\n"
+
 #define dc_example_usage \
        "$ dc 2 2 +\n" \
        "4\n" \
 #define dpkg_deb_example_usage \
        "$ dpkg-deb -X ./busybox_0.48-1_i386.deb /tmp\n"
 
+#ifdef CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K
+#define USAGE_DU_DEFALT_BLOCKSIZE_1k(a) a
+#define USAGE_NOT_DU_DEFALT_BLOCKSIZE_1k(a)
+#else
+#define USAGE_DU_DEFALT_BLOCKSIZE_1k(a)
+#define USAGE_NOT_DU_DEFALT_BLOCKSIZE_1k(a) a
+#endif
+
 #define du_trivial_usage \
-       "[-lsx" USAGE_HUMAN_READABLE("hm") USAGE_NOT_HUMAN_READABLE("") "k] [FILE]..."
+       "[-aHLdclsx" USAGE_HUMAN_READABLE("hm") "k] [FILE]..."
 #define du_full_usage \
        "Summarizes disk space used for each FILE and/or directory.\n" \
-       "Disk space is printed in units of 1024 bytes.\n\n" \
-       "Options:\n" \
+       "Disk space is printed in units of " \
+       USAGE_DU_DEFALT_BLOCKSIZE_1k("1024") USAGE_NOT_DU_DEFALT_BLOCKSIZE_1k("512") \
+       " bytes.\n\n" \
+       "Options:\n" \
+       "\t-a\tshow sizes of files in addition to directories\n" \
+       "\t-H\tfollow symbolic links that are FILE command line args\n" \
+       "\t-L\tfollow all symbolic links encountered\n" \
+       "\t-d N\tlimit output to directories (and files with -a) of depth < N\n" \
+       "\t-c\toutput a grand total\n" \
        "\t-l\tcount sizes many times if hard linked\n" \
-       "\t-s\tdisplay only a total for each argument" \
-       USAGE_HUMAN_READABLE( \
-       "\n\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n" \
-       "\t-m\tprint sizes in megabytes\n" \
+       "\t-s\tdisplay only a total for each argument\n" \
        "\t-x\tskip directories on different filesystems\n" \
-       "\t-k\tprint sizes in kilobytes(default)") USAGE_NOT_HUMAN_READABLE( \
-       "\n\t-k\tprint sizes in kilobytes(compatibility)")
+       USAGE_HUMAN_READABLE( \
+       "\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n" \
+       "\t-m\tprint sizes in megabytes\n" ) \
+       "\t-k\tprint sizes in kilobytes" USAGE_DU_DEFALT_BLOCKSIZE_1k("(default)")
 #define du_example_usage \
        "$ du\n" \
        "16      ./CVS\n" \
 #define dumpleases_trivial_usage \
        "[-r|-a] [-f LEASEFILE]"
 #define dumpleases_full_usage \
-       "Usage: dumpleases -f <file> -[r|a]\n" \
        "\t-f,\t--file=FILENAME\tLeases file to load\n" \
        "\t-r,\t--remaining\tInterepret lease times as time remaing\n" \
        "\t-a,\t--absolute\tInterepret lease times as expire time\n"
        "8|125||l4|||0|0|0|955637629|998367|0\n" \
        "6|245|tty1|1|LOGIN||0|0|0|955637630|998974|0\n" \
        "6|246|tty2|2|LOGIN||0|0|0|955637630|999498|0\n" \
-       "7|336|pts/0|vt00andersen|andersen|:0.0|0|0|0|955637763|0|0\n"
+       "7|336|pts/0|vt00|andersen|:0.0|0|0|0|955637763|0|0\n"
+
+#ifdef CONFIG_FEATURE_FANCY_ECHO
+  #define USAGE_FANCY_ECHO(a) a
+#else
+  #define USAGE_FANCY_ECHO(a) 
+#endif
 
 #define echo_trivial_usage \
-       "[-neE] [ARG ...]"
+       USAGE_FANCY_ECHO("[-neE] ") "[ARG ...]"
 #define echo_full_usage \
        "Prints the specified ARGs to stdout\n\n" \
-       "Options:\n" \
+       USAGE_FANCY_ECHO("Options:\n" \
        "\t-n\tsuppress trailing newline\n" \
        "\t-e\tinterpret backslash-escaped characters (i.e., \\t=tab)\n" \
-       "\t-E\tdisable interpretation of backslash-escaped characters"
+       "\t-E\tdisable interpretation of backslash-escaped characters")
 #define echo_example_usage \
        "$ echo "Erik is cool"\n" \
        "Erik is cool\n" \
-       "$  echo -e "Erik\\nis\\ncool"\n" \
+       USAGE_FANCY_ECHO("$  echo -e "Erik\\nis\\ncool"\n" \
        "Erik\n" \
        "is\n" \
        "cool\n" \
        "$ echo "Erik\\nis\\ncool"\n" \
-       "Erik\\nis\\ncool\n"
+       "Erik\\nis\\ncool\n")
 
 #define env_trivial_usage \
        "[-iu] [-] [name=value]... [command]"
 #define fdflush_full_usage \
        "Forces floppy disk drive to detect disk change"
 
+#define fdformat_trivial_usage \
+       "[-n] DEVICE"
+#define fdformat_full_usage \
+       "Low-level formats a floppy disk\n\n" \
+       "Options:\n" \
+       "\t-n\tDon't verify after format"
+
+#define fdisk_trivial_usage \
+       "[-l] [-v] [-b SSZ] [-u] DISK"
+#define fdisk_full_usage \
+       "Change partition table\n" \
+       "Options:\n" \
+       "-l  List partition table(s)\n" \
+       "-u  Give Start and End in sector (instead of cylinder) units\n" \
+       "-s PARTITION  Give partition size(s) in blocks\n" \
+       "-b 2048: (for certain MO disks) use 2048-byte sectors\n" \
+       "-v  Give fdisk version"
+
 #ifdef CONFIG_FEATURE_FIND_TYPE
   #define USAGE_FIND_TYPE(a) a
 #else
 #else
   #define USAGE_FIND_MTIME(a)
 #endif
+#ifdef CONFIG_FEATURE_FIND_NEWER
+  #define USAGE_FIND_NEWER(a) a
+#else
+  #define USAGE_FIND_NEWER(a)
+#endif
+#ifdef CONFIG_FEATURE_FIND_INUM
+  #define USAGE_FIND_INUM(a) a
+#else
+  #define USAGE_FIND_INUM(a)
+#endif
 
 #define find_trivial_usage \
        "[PATH...] [EXPRESSION]"
 ) USAGE_FIND_PERM( \
        "\n\t-perm PERMS\tPermissions match any of (+NNN); all of (-NNN);\n\t\t\tor exactly (NNN)" \
 ) USAGE_FIND_MTIME( \
-       "\n\t-mtime TIME\tModified time is greater than (+N); less than (-N);\n\t\t\tor exactly (N) days")
+       "\n\t-mtime TIME\tModified time is greater than (+N); less than (-N);\n\t\t\tor exactly (N) days" \
+) USAGE_FIND_NEWER( \
+       "\n\t-newer FILE\tModified time is more recent than FILE's" \
+) USAGE_FIND_INUM( \
+       "\n\t-inum N\t\tFile has inode number N")
 #define find_example_usage \
        "$ find / -name /etc/passwd\n" \
        "/etc/passwd\n"
 
+#define fold_trivial_usage \
+       "[bsw] [FILE]"
+#define fold_full_usage \
+       "Wrap input lines in each FILE (standard input by default), writing to\n" \
+       "standard output.\n\n" \
+       "Options:\n" \
+       "\t-b\tcount bytes rather than columns\n" \
+       "\t-s\tbreak at spaces\n" \
+       "\t-w\tuse WIDTH columns instead of 80\n"
+
 #define free_trivial_usage \
        ""
 #define free_full_usage \
        "\t-m\tActivates MINIX-like \"mode not cleared\" warnings\n" \
        "\t-f\tForce file system check."
 
+#define ftpget_trivial_usage \
+       "[options] remote-host local-directory remote-file"
+#define ftpget_full_usage \
+       "Retrieve a remote file via FTP.\n\n" \
+       "Options:\n" \
+       "\t-c, --continue         Continue a previous transfer\n" \
+       "\t-v, --verbose          Verbose\n" \
+       "\t-u, --username         Username to be used\n" \
+       "\t-p, --password         Password to be used\n" \
+       "\t-P, --port             Port number to be used\n" 
+
+#define ftpput_trivial_usage \
+       "[options] remote-host remote-directory local-file"
+#define ftpput_full_usage \
+       "Store a local file on a remote machine via FTP.\n\n" \
+       "Options:\n" \
+       "\t-v, --verbose          Verbose\n" \
+       "\t-u, --username         Username to be used\n" \
+       "\t-p, --password         Password to be used\n" \
+       "\t-P, --port             Port number to be used\n" 
+
 #define getopt_trivial_usage \
        "[OPTIONS]..."
 #define getopt_full_usage \
        "\t-L\t\tLocal line, so do not do carrier detect.\n" \
        "\t-m\t\tGet baud rate from modem's CONNECT status message.\n" \
        "\t-w\t\tWait for a CR or LF before sending /etc/issue.\n" \
+       "\t-n\t\tDo not prompt the user for a login name.\n" \
+       "\t-f issue_file\tDisplay issue_file instead of /etc/issue.\n" \
        "\t-l login_app\tInvoke login_app instead of /bin/login.\n" \
        "\t-t timeout\tTerminate after timeout if no username is read.\n" \
        "\t-I initstring\tSets the init string to send before anything else.\n" \
 #define halt_full_usage \
        "Halt the system."
 
+#ifdef CONFIG_FEATURE_HDPARM_GET_IDENTITY
+#define USAGE_HDPARM_IDENT(a) a
+#else
+#define USAGE_HDPARM_IDENT(a)
+#endif
+
+#ifdef CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF
+#define USAGE_SCAN_HWIF(a) a
+#else
+#define USAGE_SCAN_HWIF(a)
+#endif
+
+#ifdef CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF
+#define USAGE_UNREGISTER_HWIF(a) a
+#else
+#define USAGE_UNREGISTER_HWIF(a)
+#endif
+
+#ifdef CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET
+#define USAGE_DRIVE_RESET(a) a
+#else
+#define USAGE_DRIVE_RESET(a)
+#endif
+
+#ifdef CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF
+#define USAGE_TRISTATE_HWIF(a) a
+#else
+#define USAGE_TRISTATE_HWIF(a)
+#endif
+
+#define hdparm_trivial_usage \
+       "[options] [device] .."
+#define hdparm_full_usage \
+       "Options:" \
+       " -a   get/set fs readahead\n" \
+       " -A   set drive read-lookahead flag (0/1)\n" \
+       " -b   get/set bus state (0 == off, 1 == on, 2 == tristate)\n" \
+       " -B   set Advanced Power Management setting (1-255)\n" \
+       " -c   get/set IDE 32-bit IO setting\n" \
+       " -C   check IDE power mode status\n" \
+       " -d   get/set using_dma flag\n" \
+       " -D   enable/disable drive defect-mgmt\n" \
+       " -f   flush buffer cache for device on exit\n" \
+       " -g   display drive geometry\n" \
+       " -h   display terse usage information\n" \
+       " -i   display drive identification\n" \
+       USAGE_HDPARM_IDENT(" -I   detailed/current information directly from drive\n") \
+       USAGE_HDPARM_IDENT(" -Istdin  similar to -I, but wants /proc/ide/" "*" "/hd?/identify as input\n") \
+       " -k   get/set keep_settings_over_reset flag (0/1)\n" \
+       " -K   set drive keep_features_over_reset flag (0/1)\n" \
+       " -L   set drive doorlock (0/1) (removable harddisks only)\n" \
+       " -m   get/set multiple sector count\n" \
+       " -n   get/set ignore-write-errors flag (0/1)\n" \
+       " -p   set PIO mode on IDE interface chipset (0,1,2,3,4,...)\n" \
+       " -P   set drive prefetch count\n" \
+       " -q   change next setting quietly\n" \
+       " -Q   get/set DMA tagged-queuing depth (if supported)\n" \
+       " -r   get/set readonly flag (DANGEROUS to set)\n" \
+       USAGE_SCAN_HWIF(" -R   register an IDE interface (DANGEROUS)\n") \
+       " -S   set standby (spindown) timeout\n" \
+       " -t   perform device read timings\n" \
+       " -T   perform cache read timings\n" \
+       " -u   get/set unmaskirq flag (0/1)\n" \
+       USAGE_UNREGISTER_HWIF(" -U   un-register an IDE interface (DANGEROUS)\n") \
+       " -v   defaults; same as -mcudkrag for IDE drives\n" \
+       " -V   display program version and exit immediately\n" \
+       USAGE_DRIVE_RESET(" -w   perform device reset (DANGEROUS)\n") \
+       " -W   set drive write-caching flag (0/1) (DANGEROUS)\n" \
+       USAGE_TRISTATE_HWIF(" -x   tristate device for hotswap (0/1) (DANGEROUS)\n") \
+       " -X   set IDE xfer mode (DANGEROUS)\n" \
+       " -y   put IDE drive in standby mode\n" \
+       " -Y   put IDE drive to sleep\n" \
+       " -Z   disable Seagate auto-powersaving mode\n" \
+       " -z   re-read partition table\n"
+
+#ifdef CONFIG_FEATURE_FANCY_HEAD
+#define USAGE_FANCY_HEAD(a) a
+#else
+#define USAGE_FANCY_HEAD(a)
+#endif
+
 #define head_trivial_usage \
-       "[OPTION] [FILE]..."
+       "[OPTION]... [FILE]..."
 #define head_full_usage \
        "Print 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"
+       "\t-n NUM\t\tPrint first NUM lines instead of first 10" \
+       USAGE_FANCY_HEAD( \
+       "\n\t-c NUM\t\toutput the first NUM bytes\n" \
+       "\t-q\t\tnever output headers giving file names\n" \
+       "\t-v\t\talways output headers giving file names" )
 #define head_example_usage \
        "$ head -n 2 /etc/passwd\n" \
        "root:x:0:0:root:/root:/bin/bash\n" \
 #define hostname_example_usage \
        "$ hostname\n" \
        "sage \n"
-
+#ifdef CONFIG_FEATURE_HTTPD_BASIC_AUTH
+  #define USAGE_HTTPD_BASIC_AUTH(a) a
+#else
+  #define USAGE_HTTPD_BASIC_AUTH(a)
+#endif
+#define httpd_trivial_usage \
+       "[-p <port>] [-d/-e <string>]" USAGE_HTTPD_BASIC_AUTH(" [-c <conf file>] [-r <realm>]")
+#define httpd_full_usage \
+       "Listens for incoming http server requests.\n"\
+       "Options:\n" \
+       "\t-p PORT\tServer port (default 80).\n" \
+       USAGE_HTTPD_BASIC_AUTH("\t-c FILE\tSpecifies configuration file.  (default httpd.conf)\n\t-r REALM\tAuthentication Realm for Basic Authentication\n") \
+       "\t-e STRING\tHtml encode STRING\n" \
+       "\t-d STRING\tURL decode STRING\n" 
 #define hwclock_trivial_usage \
        "[-r|--show] [-s|--hctosys] [-w|--systohc] [-l|--localtime] [-u|--utc]"
 #define hwclock_full_usage \
        "\t-u\tthe hardware clock is kept in coordinated universal time\n" \
        "\t-l\tthe hardware clock is kept in local time"
 
+#ifdef CONFIG_SELINUX
+#define USAGE_SELINUX(a, b) a
+#else
+#define USAGE_SELINUX(a, b) b
+#endif
+
 #define id_trivial_usage \
        "[OPTIONS]... [USERNAME]"
 #define id_full_usage \
        "Options:\n" \
        "\t-g\tprints only the group ID\n" \
        "\t-u\tprints only the user ID\n" \
+       USAGE_SELINUX("\t-c\tprints only the security context\n", "") \
        "\t-n\tprint a name instead of a number (with for -ug)\n" \
        "\t-r\tprints the real user ID instead of the effective ID (with -ug)"
 #define id_example_usage \
        USAGE_IFCONFIG_MII("\t[mem_start <NN>]  [io_addr <NN>]  [irq <NN>]\n") \
        "\t[up|down] ..."
 
+#define ifup_trivial_usage \
+       "<-ahinv> <ifaces...>"
+#define ifup_full_usage \
+       "Usage: ifup <options> <ifaces...>\n\n" \
+       "Options:\n" \
+       "\t-h\tthis help\n" \
+       "\t-a\tde/configure all interfaces automatically\n" \
+       "\t-i FILE\tuse FILE for interface definitions\n" \
+       "\t-n\tprint out what would happen, but don't do it\n" \
+       "\t\t\t(note that this option doesn't disable mappings)\n" \
+       "\t-v\tprint out what would happen before doing it\n" \
+       "\t-m\tdon't run any mappings\n" \
+       "\t-f\tforce de/configuration\n"
+
+#define ifdown_trivial_usage \
+       "<-ahinv> <ifaces...>"
+#define ifdown_full_usage \
+       "Usage: ifdown <options> <ifaces...>\n\n" \
+       "Options:\n" \
+       "\t-h\tthis help\n" \
+       "\t-a\tde/configure all interfaces automatically\n" \
+       "\t-i FILE\tuse FILE for interface definitions\n" \
+       "\t-n\tprint out what would happen, but don't do it\n" \
+       "\t\t(note that this option doesn't disable mappings)\n" \
+       "\t-v\tprint out what would happen before doing it\n" \
+       "\t-m\tdon't run any mappings\n" \
+       "\t-f\tforce de/configuration\n"
+       
+#define inetd_trivial_usage \
+       "[-q len] [conf]"
+#define inetd_full_usage \
+       "Usage: [-q len] [conf]\n\n" \
+       "Option:\n" \
+       "\t-q\tSets the size of the socket listen queue to\n" \
+       "the specified value. Default is 128."
+
 #define init_trivial_usage \
        ""
 #define init_full_usage \
 "      \n" \
 "      # /sbin/getty invocations for selected ttys\n" \
 "      #\n" \
-"      tty4::respawn:/sbin/getty 38400 tty5\n" \
-"      tty5::respawn:/sbin/getty 38400 tty6\n" \
+"      tty4::respawn:/sbin/getty 38400 tty4\n" \
+"      tty5::respawn:/sbin/getty 38400 tty5\n" \
 "      \n" \
 "      \n" \
 "      # Example of how to put a getty on a serial line (for a terminal)\n" \
 "      ::shutdown:/bin/umount -a -r\n" \
 "      ::shutdown:/sbin/swapoff -a\n"
 
+#ifdef CONFIG_FEATURE_INSMOD_LOAD_MAP
+  #define USAGE_INSMOD_MAP(a) a
+#else
+  #define USAGE_INSMOD_MAP(a)
+#endif
 #define insmod_trivial_usage \
        "[OPTION]... MODULE [symbol=value]..."
 #define insmod_full_usage \
        "\t-k\tMake module autoclean-able.\n" \
        "\t-v\tverbose output\n"  \
        "\t-L\tLock to prevent simultaneous loads of a module\n" \
-       "\t-x\tdo not export externs"
+       USAGE_INSMOD_MAP("\t-m\tOutput load map to stdout") \
+       "\t-x\tdo not export externs\n"
+
+#define ip_trivial_usage \
+       "[ OPTIONS ] { address | link | route | tunnel } { COMMAND | help }"
+#define ip_full_usage \
+       "ip [ OPTIONS ] OBJECT { COMMAND | help }\n" \
+       "where  OBJECT := { link | addr | route | tunnel }\n" \
+       "OPTIONS := { -f[amily] { inet | inet6 | link } | -o[neline] }\n"
+
+#define ipaddr_trivial_usage \
+       "{ {add|del} IFADDR dev STRING | {show|flush} [ dev STRING ] [ to PREFIX ] }"
+#define ipaddr_full_usage \
+       "ipaddr {add|del} IFADDR dev STRING\n" \
+       "ipaddr {show|flush} [ dev STRING ] [ scope SCOPE-ID ]\n" \
+       "                    [ to PREFIX ] [ label PATTERN ]\n" \
+       "IFADDR := PREFIX | ADDR peer PREFIX\n" \
+       "          [ broadcast ADDR ] [ anycast ADDR ]\n" \
+       "          [ label STRING ] [ scope SCOPE-ID ]\n" \
+       "SCOPE-ID := [ host | link | global | NUMBER ]\n"
+
+#ifndef CONFIG_FEATURE_IPCALC_FANCY
+# define ipcalc_trivial_usage \
+       "[--broadcast] [--netmask] [--network] ipaddr <netmask>"
+
+# define ipcalc_full_usage \
+       "Calculate IP network settings from a IP address\n\n" \
+       "Options:\n" \
+       "\t-b\t--broadcast\tDisplay calculated broadcast address.\n" \
+       "\t-n\t--netmask\tDisplay default netmask for IP.\n" \
+       "\t-w\t--network\tDisplay calculated network address." 
+#else
+# define ipcalc_trivial_usage \
+       "[OPTION]... ipaddr <netmask>"
+
+# define ipcalc_full_usage \
+       "Calculate IP network settings from a IP address\n\n" \
+       "Options:\n" \
+       "\t-b\t--broadcast\tDisplay calculated broadcast address.\n" \
+       "\t-n\t--netmask\tDisplay default netmask for IP.\n" \
+       "\t-w\t--network\tDisplay calculated network address.\n" \
+       "\t-h\t--hostname\tDisplay first resolved host name.\n" \
+       "\t-s\t--silent\tDon't ever display error messages." 
+#endif
+
+#define ipcalc_notes_usage \
+       "ipcalc provides a simple way to calculate IP information for\n" \
+       "a host. The various options specify what information ipcalc\n" \
+       "should display on standard out. Multiple options may be\n" \
+       "specified.\n"
+
+#define iplink_trivial_usage \
+       "{ set DEVICE { up | down | arp { on | off } | show [ DEVICE ] }"
+#define iplink_full_usage \
+       "iplink set DEVICE { up | down | arp { on | off } |\n" \
+       "                     dynamic { on | off } |\n" \
+       "                     mtu MTU }\n" \
+       "iplink show [ DEVICE ]\n"
+
+#define iproute_trivial_usage \
+       "{ list | flush | { add | del | change | append | replace | monitor } ROUTE }"
+#define iproute_full_usage \
+       "iproute { list | flush } SELECTOR\n" \
+       "iproute get ADDRESS [ from ADDRESS iif STRING ]\n" \
+       "                     [ oif STRING ]  [ tos TOS ]\n" \
+       "iproute { add | del | change | append | replace | monitor } ROUTE\n" \
+       "SELECTOR := [ root PREFIX ] [ match PREFIX ] [ proto RTPROTO ]\n" \
+       "ROUTE := [ TYPE ] PREFIX [ tos TOS ] [ proto RTPROTO ]\n"
+
+#define iptunnel_trivial_usage \
+       "{ add | change | del | show } [ NAME ] [ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ] [ ttl TTL ]"
+#define iptunnel_full_usage \
+       "iptunnel { add | change | del | show } [ NAME ]\n" \
+       "          [ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ]\n" \
+       "          [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n" \
+       "          [ ttl TTL ] [ tos TOS ] [ [no]pmtudisc ] [ dev PHYS_DEV ]\n"
 
 #define kill_trivial_usage \
        "[-signal] process-id [process-id ...]"
        "$ killall apache\n" 
 
 #define klogd_trivial_usage \
-       "-n"
+       "[-c n] [-n]"
 #define klogd_full_usage \
        "Kernel logger.\n"\
        "Options:\n"\
+       "\t-c n\tSets the default log level of console messages to n.\n"\
        "\t-n\tRun as a foreground process."
 
 #define length_trivial_usage \
   #define USAGE_AUTOWIDTH(a)
 #endif
 #define ls_trivial_usage \
-       "[-1Aa" USAGE_LS_TIMESTAMPS("c") "Cd" USAGE_LS_TIMESTAMPS("e") USAGE_LS_FILETYPES("F") "iln" USAGE_LS_FILETYPES("p") USAGE_LS_FOLLOWLINKS("L") USAGE_LS_RECURSIVE("R") USAGE_LS_SORTFILES("rS") "s" USAGE_AUTOWIDTH("T") USAGE_LS_TIMESTAMPS("tu") USAGE_LS_SORTFILES("v") USAGE_AUTOWIDTH("w") "x" USAGE_LS_SORTFILES("X") USAGE_HUMAN_READABLE("h") USAGE_NOT_HUMAN_READABLE("") "k] [filenames...]"
+       "[-1Aa" USAGE_LS_TIMESTAMPS("c") "Cd" USAGE_LS_TIMESTAMPS("e") USAGE_LS_FILETYPES("F") "iln" USAGE_LS_FILETYPES("p") USAGE_LS_FOLLOWLINKS("L") USAGE_LS_RECURSIVE("R") USAGE_LS_SORTFILES("rS") "s" USAGE_AUTOWIDTH("T") USAGE_LS_TIMESTAMPS("tu") USAGE_LS_SORTFILES("v") USAGE_AUTOWIDTH("w") "x" USAGE_LS_SORTFILES("X") USAGE_HUMAN_READABLE("h") USAGE_NOT_HUMAN_READABLE("") "k" USAGE_SELINUX("K", "") "] [filenames...]"
 #define ls_full_usage \
        "List directory contents\n\n" \
        "Options:\n" \
        USAGE_LS_SORTFILES("\t-X\tsort the listing by extension\n") \
        USAGE_HUMAN_READABLE( \
        "\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n" \
-       "\t-k\tprint sizes in kilobytes(default)") USAGE_NOT_HUMAN_READABLE( \
-       "\t-k\tprint sizes in kilobytes(compatibility)") 
+       USAGE_SELINUX("\t-k\tprint security context\n\t-K\tprint security context in long format\n", ""))
 
 #define lsmod_trivial_usage \
        ""
        "\ty\tAllow write access to your terminal.\n" \
        "\tn\tDisallow write access to your terminal.\n"
 
+#define minit_trivial_usage \
+       "[-spPrRC]"
+#define minit_full_usage \
+       "[-spPrRC]"
+
 #define mkdir_trivial_usage \
        "[OPTION] DIRECTORY..."
 #define mkdir_full_usage \
        "$ mount /dev/fd0 /mnt -t msdos -o ro\n" \
        "$ mount /tmp/diskimage /opt -t ext2 -o loop\n" 
 
+#define msvc_trivial_usage \
+       "-[udorspchaitkx] service"
+#define msvc_full_usage \
+       "[option] service\n" \
+       "Where option is one of\n" \
+       "\t-u\tUp.  If the service is not running, start it.  If the service stops, restart it.\n" \
+       "\t-d\tDown.  If the service is running, stop it, do not restart it.\n" \
+       "\t-o\tOnce.  If the service is not running, start it.  Do not restart it if it stops.\n" \
+       "\t-r\tTell supervise that the service is normally running; this affects status messages.\n" \
+       "\t-s\tTell supervise that the service is normally stopped; this affects status messages.\n" \
+       "\t-p\tPause.  Send the service a STOP signal.\n" \
+       "\t-c\tContinue.  Send the service a CONT signal.\n" \
+       "\t-h\tHangup.  Send the service a HUP signal.\n" \
+       "\t-a\tAlarm.  Send the service an ALRM signal.\n" \
+       "\t-i\tInterrupt.  Send the service an INT signal.\n" \
+       "\t-t\tTerminate.  Send the service a TERM signal.\n" \
+       "\t-k\tKill.  Send the service a KILL signal.\n" \
+       "\t-x\tExit.  supervise will quit as soon as the service is down.\n"
+
 #define mt_trivial_usage \
        "[-f device] opcode value"
 #define mt_full_usage \
 #define mv_example_usage \
        "$ mv /tmp/foo /bin/bar\n" 
 
+#define nameif_trivial_usage \
+       "[-s] [-c FILE] [{IFNAME MACADDR}]"
+#define nameif_full_usage \
+               "Nameif renaming network interface while it in the down state.\n\n" \
+               "Options:\n" \
+               "\t-c FILE\t\tUse configuration file (default is /etc/mactab)\n" \
+               "\t-s\t\tUse syslog (LOCAL0 facility).\n" \
+               "\tIFNAME MACADDR\tnew_interface_name interface_mac_address\n" 
+#define nameif_example_usage \
+               "$ nameif -s dmz0 00:A0:C9:8C:F6:3F\n" \
+               " or\n" \
+               "$ nameif -c /etc/my_mactab_file\n" \
+
 #define nc_trivial_usage \
        "[OPTIONS] [IP] [port]" 
 #define nc_full_usage \
        "\t-l\tLocks (disables) the specified user account.\n" \
        "\t-u\tUnlocks (re-enables) the specified user account."
 
+#define patch_trivial_usage \
+       "[-p<num>]"
+#define patch_full_usage \
+       "[-p<num>]"
+#define patch_example_usage \
+       "$ patch -p1 <example.diff"
+
+#define pidfilehack_trivial_usage \
+       "[daemon.pid] [daemon]"
+#define pidfilehack_full_usage \
+       "service /var/run/daemon.pid /usr/sbin/daemon args...\n"
+
 #define pidof_trivial_usage \
        "process-name [process-name ...]"
 #define pidof_full_usage \
        ""
 #define ps_full_usage \
        "Report process status\n" \
-       "\nThis version of ps accepts no options."
+       USAGE_SELINUX("\nOptions:\n\t-c\tshow SE Linux context", "\nThis version of ps accepts no options.")
 #define ps_example_usage \
        "$ ps\n" \
        "  PID  Uid      Gid State Command\n" \
        "/root\n"
 
 #define rdate_trivial_usage \
-       "[OPTION] HOST"
+       "[-sp] HOST"
 #define rdate_full_usage \
        "Get and possibly set the system date and time from a remote HOST.\n\n" \
        "Options:\n" \
 #define readlink_full_usage \
        "Read a symbolic link."
 
+#define realpath_trivial_usage \
+       "pathname  ..."
+#define realpath_full_usage \
+       "return the canonicalized absolute pathnames of given arguments\n\n"
+       
 #define reboot_trivial_usage \
        ""
 #define reboot_full_usage \
        "Remove (unlink) the FILE(s).  You may use '--' to\n" \
        "indicate that all following arguments are non-options.\n\n" \
        "Options:\n" \
-       "\t-i\t\talways prompt before removing each destination" \
+       "\t-i\t\talways prompt before removing each destination\n" \
        "\t-f\t\tremove existing destinations, never prompt\n" \
        "\t-r or -R\tremove the contents of directories recursively"
 #define rm_example_usage \
 #define rmmod_full_usage \
        "Unloads the specified kernel modules from the kernel.\n\n" \
        "Options:\n" \
-       "\t-a\tTry to remove all unused kernel modules."
+       "\t-a\tRemove all unused modules (recursively)"
 #define rmmod_example_usage \
        "$ rmmod tulip\n"
 
        "\t-n\tDont resolve names.\n" \
        "\t-e\tDisplay other/more information"
 
+#define rpm_trivial_usage \
+       "-i -q[ildc]p package.rpm"
+#define rpm_full_usage \
+       "Manipulates RPM packages" \
+       "\n\nOptions:" \
+       "\n\t-i Install package" \
+       "\n\t-q Query package" \
+       "\n\t-p Query uninstalled package" \
+       "\n\t-i Show information" \
+       "\n\t-l List contents" \
+       "\n\t-d List documents" \
+       "\n\t-c List config files"
+
 #define rpm2cpio_trivial_usage \
        "package.rpm"
 #define rpm2cpio_full_usage \
 "use ash or bash.  If you just need a very simple and extremely small shell,\n" \
 "this will do the job."
 
+#define sha1sum_trivial_usage \
+       "[OPTION] [FILE]"
+#define sha1sum_full_usage \
+       "[OPTION] [FILE]"
+
+#ifdef CONFIG_FEATURE_FANCY_SLEEP
+  #define USAGE_FANCY_SLEEP(a) a
+  #define USAGE_NOT_FANCY_SLEEP(a)
+#else
+  #define USAGE_FANCY_SLEEP(a) 
+  #define USAGE_NOT_FANCY_SLEEP(a) a
+#endif
+
 #define sleep_trivial_usage \
-       "N"
+       USAGE_FANCY_SLEEP("[") "N" USAGE_FANCY_SLEEP("]...") 
 #define sleep_full_usage \
-       "Pause for N seconds."
+       USAGE_NOT_FANCY_SLEEP("Pause for N seconds.") \
+       USAGE_FANCY_SLEEP( \
+"Pause for a time equal to the total of the args given, where each arg can\n" \
+"have an optional suffix of (s)econds, (m)inutes, (h)ours, or (d)ays.")
 #define sleep_example_usage \
        "$ sleep 2\n" \
-       "[2 second delay results]\n"
-
+       "[2 second delay results]\n" \
+       USAGE_FANCY_SLEEP("$ sleep 1d 3h 22m 8s\n" \
+       "[98528 second delay results]\n")
 
 #ifdef CONFIG_FEATURE_SORT_UNIQUE
   #define USAGE_SORT_UNIQUE(a) a
        "-s <signal>\t\tsignal to send (default 15)\n"\
        "-a <pathname>\t\tprogram to start (default <executable>)\n"
 
+#define strings_trivial_usage \
+    "[-afo] [-n length] [file ... ]"
+#define strings_full_usage \
+    "Display printable strings in a binary file." \
+    "\n\nOptions:" \
+    "\n\t-f\tPrecede each string with the name of the file where it was found." \
+    "\n\t-n N\tSpecifies that at least N characters forms a sequence (default 4)" \
+    "\n\t-o\tEach string is preceded by its decimal offset in the file."
+
 #define stty_trivial_usage \
        "[-a|g] [-F DEVICE] [SETTING]..."
 #define stty_full_usage \
 #else
   #define USAGE_TAR_EXCLUDE(a)
 #endif
+#ifdef CONFIG_FEATURE_TAR_GZIP
+  #define USAGE_TAR_GZIP(a) a
+#else
+  #define USAGE_TAR_GZIP(a)
+#endif
+#ifdef CONFIG_FEATURE_TAR_BZIP2
+  #define USAGE_TAR_BZIP2(a) a
+#else
+  #define USAGE_TAR_BZIP2(a)
+#endif
+
 #define tar_trivial_usage \
-       "-[" USAGE_TAR_CREATE("c") "xtvO] " \
+       "-[" USAGE_TAR_CREATE("c") USAGE_TAR_GZIP("z") USAGE_TAR_BZIP2("j") "xtvO] " \
        USAGE_TAR_EXCLUDE("[--exclude FILE] [-X FILE]") \
        "[-f TARFILE] [-C DIR] [FILE(s)] ..."
 #define tar_full_usage \
        USAGE_TAR_CREATE("\tc\t\tcreate\n") \
        "\tx\t\textract\n" \
        "\tt\t\tlist\n" \
+       "\nArchive format selection:\n" \
+       USAGE_TAR_GZIP("\tz\t\tFilter the archive through gzip\n") \
+       USAGE_TAR_BZIP2("\tj\t\tFilter the archive through bzip2\n") \
        "\nFile selection:\n" \
        "\tf\t\tname of TARFILE or \"-\" for stdin\n" \
        "\tO\t\textract to stdout\n" \
 #define tee_full_usage \
        "Copy standard input to each FILE, and also to standard output.\n\n" \
        "Options:\n" \
-       "\t-a\tappend to the given FILEs, do not overwrite"
+       "\t-a\tappend to the given FILEs, do not overwrite\n" \
+       "\t-i\tignore interrupt signals (SIGINT)"
 #define tee_example_usage \
        "$ echo "Hello" | tee /tmp/foo\n" \
        "$ cat /tmp/foo\n" \
        "Telnet is used to establish interactive communication with another\n"\
        "computer over a network using the TELNET protocol."
 
+#ifdef CONFIG_FEATURE_TELNETD_INETD
+#define telnetd_trivial_usage \
+       "(inetd mode) [OPTION]"
+#define telnetd_full_usage \
+       "Telnetd uses incoming TELNET connections via inetd.\n"\
+       "Options:\n" \
+       "\t-l LOGIN\texec LOGIN on connect (default /bin/sh)"
+#else
 #define telnetd_trivial_usage \
        "[OPTION]"
 #define telnetd_full_usage \
        "Options:\n" \
        "\t-p PORT\tlisten for connections on PORT (default 23)\n"\
        "\t-l LOGIN\texec LOGIN on connect (default /bin/sh)"
+#endif
 
 #define test_trivial_usage \
        "EXPRESSION\n  or   [ EXPRESSION ]"
 #define udhcpc_trivial_usage \
        "[-fbnqv] [-c CLIENTID] [-H HOSTNAME] [-i INTERFACE]\n[-p pidfile] [-r IP] [-s script]"
 #define udhcpc_full_usage \
-       "\tUsage: udhcpc [OPTIONS]\n" \
        "\t-c,\t--clientid=CLIENTID\tClient identifier\n" \
        "\t-H,\t--hostname=HOSTNAME\tClient hostname\n" \
-       "\t-h,\t                   \tAlias for -h\n" \
+       "\t-h,\t                   \tAlias for -H\n" \
        "\t-f,\t--foreground\tDo not fork after getting lease\n" \
        "\t-b,\t--background\tFork to background if lease cannot be immediately negotiated.\n" \
        "\t-i,\t--interface=INTERFACE\tInterface to use (default: eth0)\n" \
        "[configfile]\n" \
 
 #define udhcpd_full_usage \
-       "\tUsage: udhcpd [configfile]\n"
+       ""
 
 #ifdef CONFIG_FEATURE_MOUNT_FORCE
   #define USAGE_MOUNT_FORCE(a) a
        "$ uname -a\n" \
        "Linux debian 2.2.15pre13 #5 Tue Mar 14 16:03:50 MST 2000 i686 unknown\n" 
 
+#define uncompress_trivial_usage \
+       "[-c] [-f] [ name ... ]"
+#define uncompress_full_usage \
+       "Uncompress .Z file[s]\n" \
+       "Options:\n" \
+       "\t-c\textract to stdout\n" \
+       "\t-f\tforce overwrite an existing file\n"
+       
 #define uniq_trivial_usage \
        "[OPTION]... [INPUT [OUTPUT]]"
 #define uniq_full_usage \
        "Options:\n" \
        "\t-c\tprefix lines by the number of occurrences\n" \
        "\t-d\tonly print duplicate lines\n" \
-       "\t-u\tonly print unique lines"
+       "\t-u\tonly print unique lines\n" \
+       "\t-f N\tskip the first N fields\n" \
+       "\t-s N\tskip the first N chars (after any skipped fields)"
 #define uniq_example_usage \
        "$ echo -e \"a\\na\\nb\\nc\\nc\\na\" | sort | uniq\n" \
        "a\n" \
        "\t-x\texclude these files\n" \
        "\t-d\textract files into this directory"
 
-#define update_trivial_usage \
-       "[options]"
-#define update_full_usage \
-       "Periodically 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)"
-
 #define uptime_trivial_usage \
        ""
 #define uptime_full_usage \
        "$ uudecode busybox busybox > busybox.uu\n" \
        "$\n"
 
+#define vconfig_trivial_usage \
+       "COMMAND [OPTIONS] ..."
+
+#define vconfig_full_usage \
+"Usage: add             [interface-name] [vlan_id] \n" \
+"       rem             [vlan-name] \n" \
+"       set_flag        [interface-name] [flag-num]       [0 | 1] \n" \
+"       set_egress_map  [vlan-name]      [skb_priority]   [vlan_qos] \n" \
+"       set_ingress_map [vlan-name]      [skb_priority]   [vlan_qos] \n" \
+"       set_name_type   [name-type] \n" 
+
 #define vi_trivial_usage \
        "[OPTION] [FILE]..."
 #define vi_full_usage \
        "Mon Dec 17 10:31:44 GMT 2000" 
 
 #define watchdog_trivial_usage \
-       "DEV"
+       "[-t <seconds>] DEV"
 #define watchdog_full_usage \
-       "Periodically write to watchdog device DEV"
+       "Periodically write to watchdog device DEV.\n" \
+       "Options:\n" \
+       "\t-t\tTimer period in seconds - default is 30."
 
 #define wc_trivial_usage \
        "[OPTION]... [FILE]..."
 #define which_example_usage \
        "$ which login\n" \
        "/bin/login\n"
+
 #define who_trivial_usage \
         " "
 #define who_full_usage \
        "Prints the user name associated with the current effective user id."
 
 #define xargs_trivial_usage \
-       "[COMMAND] [ARGS...]"
+       "[COMMAND] [-prt] [ARGS...]"
 #define xargs_full_usage \
-       "Executes COMMAND on every item given by standard input."
+       "Executes COMMAND on every item given by standard input.\n\n" \
+       "Options:\n" \
+       "\t-p\tPrompt the user about whether to run each command\n" \
+       "\t-r\tDo not run command for empty readed lines\n" \
+       "\t-t\tPrint the command line on stderr before executing it."
 #define xargs_example_usage \
        "$ ls | xargs gzip\n" \
        "$ find . -name '*.c' -print | xargs rm\n"