Changeset 2725 in MondoRescue for branches/2.2.9/mindi-busybox/include/usage.h


Ignore:
Timestamp:
Feb 25, 2011, 9:26:54 PM (13 years ago)
Author:
Bruno Cornec
Message:
  • Update mindi-busybox to 1.18.3 to avoid problems with the tar command which is now failing on recent versions with busybox 1.7.3
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2.9/mindi-busybox/include/usage.h

    r1765 r2725  
     1/* DO NOT EDIT. This file is generated from usage.src.h */
    12/* vi: set sw=8 ts=8: */
    23/*
     
    78 * 3. Start each source line with message as follows:
    89 *    |<7 spaces>"text with tabs"....
     10 * or
     11 *    |<5 spaces>"\ntext with tabs"....
    912 */
    10 
    11 #ifndef __BB_USAGE_H__
    12 #define __BB_USAGE_H__
     13#ifndef BB_USAGE_H
     14#define BB_USAGE_H 1
     15
     16
     17#define NOUSAGE_STR "\b"
     18
     19
     20#define bunzip2_trivial_usage \
     21       "[-cf] [FILE]..." \
     22
     23#define bunzip2_full_usage "\n\n" \
     24       "Decompress FILEs (or stdin)\n" \
     25     "\nOptions:" \
     26     "\n    -c  Write to stdout" \
     27     "\n    -f  Force" \
     28
     29#define bzcat_trivial_usage \
     30       "FILE" \
     31
     32#define bzcat_full_usage "\n\n" \
     33       "Decompress to stdout" \
     34
     35#define tar_trivial_usage \
     36       "-[" IF_FEATURE_TAR_CREATE("c") "xt" IF_FEATURE_SEAMLESS_GZ("z") \
     37    IF_FEATURE_SEAMLESS_BZ2("j") IF_FEATURE_SEAMLESS_LZMA("a") \
     38    IF_FEATURE_SEAMLESS_Z("Z") IF_FEATURE_TAR_NOPRESERVE_TIME("m") "vO] " \
     39    IF_FEATURE_TAR_FROM("[-X FILE] ") \
     40       "[-f TARFILE] [-C DIR] [FILE]..." \
     41
     42#define tar_full_usage "\n\n" \
     43    IF_FEATURE_TAR_CREATE("Create, extract, ") \
     44    IF_NOT_FEATURE_TAR_CREATE("Extract ") \
     45    "or list files from a tar file\n" \
     46     "\nOperation:" \
     47    IF_FEATURE_TAR_CREATE( \
     48     "\n    c   Create" \
     49    ) \
     50     "\n    x   Extract" \
     51     "\n    t   List" \
     52     "\nOptions:" \
     53     "\n    f   Name of TARFILE ('-' for stdin/out)" \
     54     "\n    C   Change to DIR before operation" \
     55     "\n    v   Verbose" \
     56    IF_FEATURE_SEAMLESS_GZ( \
     57     "\n    z   (De)compress using gzip" \
     58    ) \
     59    IF_FEATURE_SEAMLESS_BZ2( \
     60     "\n    j   (De)compress using bzip2" \
     61    ) \
     62    IF_FEATURE_SEAMLESS_LZMA( \
     63     "\n    a   (De)compress using lzma" \
     64    ) \
     65    IF_FEATURE_SEAMLESS_Z( \
     66     "\n    Z   (De)compress using compress" \
     67    ) \
     68     "\n    O   Extract to stdout" \
     69    IF_FEATURE_TAR_CREATE( \
     70     "\n    h   Follow symlinks" \
     71    ) \
     72    IF_FEATURE_TAR_NOPRESERVE_TIME( \
     73     "\n    m   Don't restore mtime" \
     74    ) \
     75    IF_FEATURE_TAR_FROM( \
     76    IF_FEATURE_TAR_LONG_OPTIONS( \
     77     "\n    exclude File to exclude" \
     78    ) \
     79     "\n    X   File with names to exclude" \
     80     "\n    T   File with names to include" \
     81    ) \
     82
     83#define tar_example_usage \
     84       "$ zcat /tmp/tarball.tar.gz | tar -xf -\n" \
     85       "$ tar -cf /tmp/tarball.tar /usr/local\n" \
     86
     87#define date_trivial_usage \
     88       "[OPTIONS] [+FMT] [TIME]" \
     89
     90#define date_full_usage "\n\n" \
     91       "Display time (using +FMT), or set time\n" \
     92     "\nOptions:" \
     93    IF_NOT_LONG_OPTS( \
     94     "\n    [-s] TIME   Set time to TIME" \
     95     "\n    -u      Work in UTC (don't convert to local time)" \
     96     "\n    -R      Output RFC-2822 compliant date string" \
     97    ) IF_LONG_OPTS( \
     98     "\n    [-s,--set] TIME Set time to TIME" \
     99     "\n    -u,--utc    Work in UTC (don't convert to local time)" \
     100     "\n    -R,--rfc-2822   Output RFC-2822 compliant date string" \
     101    ) \
     102    IF_FEATURE_DATE_ISOFMT( \
     103     "\n    -I[SPEC]    Output ISO-8601 compliant date string" \
     104     "\n            SPEC='date' (default) for date only," \
     105     "\n            'hours', 'minutes', or 'seconds' for date and" \
     106     "\n            time to the indicated precision" \
     107    ) \
     108    IF_NOT_LONG_OPTS( \
     109     "\n    -r FILE     Display last modification time of FILE" \
     110     "\n    -d TIME     Display TIME, not 'now'" \
     111    ) IF_LONG_OPTS( \
     112     "\n    -r,--reference FILE Display last modification time of FILE" \
     113     "\n    -d,--date TIME  Display TIME, not 'now'" \
     114    ) \
     115    IF_FEATURE_DATE_ISOFMT( \
     116     "\n    -D FMT      Use FMT for -d TIME conversion" \
     117    ) \
     118     "\n" \
     119     "\nRecognized TIME formats:" \
     120     "\n    hh:mm[:ss]" \
     121     "\n    [YYYY.]MM.DD-hh:mm[:ss]" \
     122     "\n    YYYY-MM-DD hh:mm[:ss]" \
     123     "\n    [[[[[YY]YY]MM]DD]hh]mm[.ss]" \
     124
     125#define date_example_usage \
     126       "$ date\n" \
     127       "Wed Apr 12 18:52:41 MDT 2000\n" \
     128
     129#define mv_trivial_usage \
     130       "[-fin] SOURCE DEST\n" \
     131       "or: mv [-fin] SOURCE... DIRECTORY" \
     132
     133#define mv_full_usage "\n\n" \
     134       "Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY\n" \
     135     "\nOptions:" \
     136     "\n    -f  Don't prompt before overwriting" \
     137     "\n    -i  Interactive, prompt before overwrite" \
     138     "\n    -n  Don't overwrite an existing file" \
     139
     140#define mv_example_usage \
     141       "$ mv /tmp/foo /bin/bar\n" \
     142
     143#define base64_trivial_usage \
     144    "[-d] [FILE]" \
     145
     146#define base64_full_usage "\n\n" \
     147       "Base64 encode or decode FILE to standard output" \
     148     "\nOptions:" \
     149     "\n    -d  Decode data" \
     150
     151#define wc_trivial_usage \
     152       "[-c"IF_UNICODE_SUPPORT("m")"lwL] [FILE]..." \
     153
     154#define wc_full_usage "\n\n" \
     155       "Count lines, words, and bytes for each FILE (or stdin)\n" \
     156     "\nOptions:" \
     157     "\n    -c  Count bytes" \
     158    IF_UNICODE_SUPPORT( \
     159     "\n    -m  Count characters" \
     160    ) \
     161     "\n    -l  Count newlines" \
     162     "\n    -w  Count words" \
     163     "\n    -L  Print longest line length" \
     164
     165#define wc_example_usage \
     166       "$ wc /etc/passwd\n" \
     167       "     31      46    1365 /etc/passwd\n" \
     168
     169#define yes_trivial_usage \
     170       "[STRING]" \
     171
     172#define yes_full_usage "\n\n" \
     173       "Repeatedly output a line with STRING, or 'y'" \
     174
     175#define tune2fs_trivial_usage \
     176       "[-c MOUNT_CNT] " \
     177       "[-i DAYS] " \
     178       "[-L LABEL] " \
     179       "BLOCKDEV" \
     180
     181#define tune2fs_full_usage "\n\n" \
     182       "Adjust filesystem options on ext[23] filesystems" \
     183
     184#define patch_trivial_usage \
     185       "[OPTIONS] [ORIGFILE [PATCHFILE]]" \
     186
     187#define patch_full_usage "\n\n" \
     188    IF_LONG_OPTS( \
     189       "    -p,--strip N        Strip N leading components from file names" \
     190     "\n    -i,--input DIFF     Read DIFF instead of stdin" \
     191     "\n    -R,--reverse        Reverse patch" \
     192     "\n    -N,--forward        Ignore already applied patches" \
     193     "\n    --dry-run       Don't actually change files" \
     194     "\n    -E,--remove-empty-files Remove output files if they become empty" \
     195    ) \
     196    IF_NOT_LONG_OPTS( \
     197       "    -p N    Strip N leading components from file names" \
     198     "\n    -i DIFF Read DIFF instead of stdin" \
     199     "\n    -R  Reverse patch" \
     200     "\n    -N  Ignore already applied patches" \
     201     "\n    -E  Remove output files if they become empty" \
     202    ) \
     203
     204#define patch_example_usage \
     205       "$ patch -p1 < example.diff\n" \
     206       "$ patch -p0 -i example.diff" \
     207
     208#define find_trivial_usage \
     209       "[PATH]... [EXPRESSION]" \
     210
     211#define find_full_usage "\n\n" \
     212       "Search for files. The default PATH is the current directory,\n" \
     213       "default EXPRESSION is '-print'\n" \
     214     "\nEXPRESSION may consist of:" \
     215     "\n    -follow     Follow symlinks" \
     216    IF_FEATURE_FIND_XDEV( \
     217     "\n    -xdev       Don't descend directories on other filesystems" \
     218    ) \
     219    IF_FEATURE_FIND_MAXDEPTH( \
     220     "\n    -maxdepth N Descend at most N levels. -maxdepth 0 applies" \
     221     "\n            tests/actions to command line arguments only" \
     222    ) \
     223     "\n    -mindepth N Don't act on first N levels" \
     224     "\n    -name PATTERN   File name (w/o directory name) matches PATTERN" \
     225     "\n    -iname PATTERN  Case insensitive -name" \
     226    IF_FEATURE_FIND_PATH( \
     227     "\n    -path PATTERN   Path matches PATTERN" \
     228    ) \
     229    IF_FEATURE_FIND_REGEX( \
     230     "\n    -regex PATTERN  Path matches regex PATTERN" \
     231    ) \
     232    IF_FEATURE_FIND_TYPE( \
     233     "\n    -type X     File type is X (X is one of: f,d,l,b,c,...)" \
     234    ) \
     235    IF_FEATURE_FIND_PERM( \
     236     "\n    -perm NNN   Permissions match any of (+NNN), all of (-NNN)," \
     237     "\n            or exactly NNN" \
     238    ) \
     239    IF_FEATURE_FIND_MTIME( \
     240     "\n    -mtime DAYS Modified time is greater than (+N), less than (-N)," \
     241     "\n            or exactly N days" \
     242    ) \
     243    IF_FEATURE_FIND_MMIN( \
     244     "\n    -mmin MINS  Modified time is greater than (+N), less than (-N)," \
     245     "\n            or exactly N minutes" \
     246    ) \
     247    IF_FEATURE_FIND_NEWER( \
     248     "\n    -newer FILE Modified time is more recent than FILE's" \
     249    ) \
     250    IF_FEATURE_FIND_INUM( \
     251     "\n    -inum N     File has inode number N" \
     252    ) \
     253    IF_FEATURE_FIND_USER( \
     254     "\n    -user NAME  File is owned by user NAME (numeric user ID allowed)" \
     255    ) \
     256    IF_FEATURE_FIND_GROUP( \
     257     "\n    -group NAME File belongs to group NAME (numeric group ID allowed)" \
     258    ) \
     259    IF_FEATURE_FIND_DEPTH( \
     260     "\n    -depth      Process directory name after traversing it" \
     261    ) \
     262    IF_FEATURE_FIND_SIZE( \
     263     "\n    -size N[bck]    File size is N (c:bytes,k:kbytes,b:512 bytes(def.))" \
     264     "\n            +/-N: file size is bigger/smaller than N" \
     265    ) \
     266    IF_FEATURE_FIND_LINKS( \
     267     "\n    -links N    Number of links is greater than (+N), less than (-N)," \
     268     "\n            or exactly N" \
     269    ) \
     270     "\n    -print      Print (default and assumed)" \
     271    IF_FEATURE_FIND_PRINT0( \
     272     "\n    -print0     Delimit output with null characters rather than" \
     273     "\n            newlines" \
     274    ) \
     275    IF_FEATURE_FIND_CONTEXT( \
     276     "\n    -context    File has specified security context" \
     277    ) \
     278    IF_FEATURE_FIND_EXEC( \
     279     "\n    -exec CMD ARG ; Run CMD with all instances of {} replaced by the" \
     280     "\n            matching files" \
     281    ) \
     282    IF_FEATURE_FIND_PRUNE( \
     283     "\n    -prune      Stop traversing current subtree" \
     284    ) \
     285    IF_FEATURE_FIND_DELETE( \
     286     "\n    -delete     Delete files, turns on -depth option" \
     287    ) \
     288    IF_FEATURE_FIND_PAREN( \
     289     "\n    (EXPR)      Group an expression" \
     290    ) \
     291
     292#define find_example_usage \
     293       "$ find / -name passwd\n" \
     294       "/etc/passwd\n" \
     295
     296#define grep_trivial_usage \
     297       "[-HhnlLoqvsriw" \
     298       "F" \
     299    IF_FEATURE_GREP_EGREP_ALIAS("E") \
     300    IF_EXTRA_COMPAT("z") \
     301       "] [-m N] " \
     302    IF_FEATURE_GREP_CONTEXT("[-A/B/C N] ") \
     303       "PATTERN/-e PATTERN.../-f FILE [FILE]..." \
     304
     305#define grep_full_usage "\n\n" \
     306       "Search for PATTERN in FILEs (or stdin)\n" \
     307     "\nOptions:" \
     308     "\n    -H  Add 'filename:' prefix" \
     309     "\n    -h  Do not add 'filename:' prefix" \
     310     "\n    -n  Add 'line_no:' prefix" \
     311     "\n    -l  Show only names of files that match" \
     312     "\n    -L  Show only names of files that don't match" \
     313     "\n    -c  Show only count of matching lines" \
     314     "\n    -o  Show only the matching part of line" \
     315     "\n    -q  Quiet. Return 0 if PATTERN is found, 1 otherwise" \
     316     "\n    -v  Select non-matching lines" \
     317     "\n    -s  Suppress open and read errors" \
     318     "\n    -r  Recurse" \
     319     "\n    -i  Ignore case" \
     320     "\n    -w  Match whole words only" \
     321     "\n    -F  PATTERN is a literal (not regexp)" \
     322    IF_FEATURE_GREP_EGREP_ALIAS( \
     323     "\n    -E  PATTERN is an extended regexp" \
     324    ) \
     325    IF_EXTRA_COMPAT( \
     326     "\n    -z  Input is NUL terminated" \
     327    ) \
     328     "\n    -m N    Match up to N times per file" \
     329    IF_FEATURE_GREP_CONTEXT( \
     330     "\n    -A N    Print N lines of trailing context" \
     331     "\n    -B N    Print N lines of leading context" \
     332     "\n    -C N    Same as '-A N -B N'" \
     333    ) \
     334     "\n    -e PTRN Pattern to match" \
     335     "\n    -f FILE Read pattern from file" \
     336
     337#define grep_example_usage \
     338       "$ grep root /etc/passwd\n" \
     339       "root:x:0:0:root:/root:/bin/bash\n" \
     340       "$ grep ^[rR]oo. /etc/passwd\n" \
     341       "root:x:0:0:root:/root:/bin/bash\n" \
     342
     343#define egrep_trivial_usage NOUSAGE_STR \
     344
     345#define egrep_full_usage "" \
     346
     347#define fgrep_trivial_usage NOUSAGE_STR \
     348
     349#define fgrep_full_usage "" \
     350
     351#define xargs_trivial_usage \
     352       "[OPTIONS] [PROG ARGS]" \
     353
     354#define xargs_full_usage "\n\n" \
     355       "Run PROG on every item given by stdin\n" \
     356     "\nOptions:" \
     357    IF_FEATURE_XARGS_SUPPORT_CONFIRMATION( \
     358     "\n    -p  Ask user whether to run each command" \
     359    ) \
     360     "\n    -r  Don't run command if input is empty" \
     361    IF_FEATURE_XARGS_SUPPORT_ZERO_TERM( \
     362     "\n    -0  Input is separated by NUL characters" \
     363    ) \
     364     "\n    -t  Print the command on stderr before execution" \
     365     "\n    -e[STR] STR stops input processing" \
     366     "\n    -n N    Pass no more than N args to PROG" \
     367     "\n    -s N    Pass command line of no more than N bytes" \
     368    IF_FEATURE_XARGS_SUPPORT_TERMOPT( \
     369     "\n    -x  Exit if size is exceeded" \
     370    ) \
     371
     372#define xargs_example_usage \
     373       "$ ls | xargs gzip\n" \
     374       "$ find . -name '*.c' -print | xargs rm\n" \
     375
     376#define bootchartd_trivial_usage \
     377       "start [PROG ARGS]|stop|init" \
     378
     379#define bootchartd_full_usage "\n\n" \
     380       "Create /var/log/bootchart.tgz with boot chart data\n" \
     381     "\nOptions:" \
     382     "\nstart: start background logging; with PROG, run PROG, then kill logging with USR1" \
     383     "\nstop: send USR1 to all bootchartd processes" \
     384     "\ninit: start background logging; stop when getty/xdm is seen (for init scripts)" \
     385     "\nUnder PID 1: as init, then exec $bootchart_init, /init, /sbin/init" \
     386
     387#define halt_trivial_usage \
     388       "[-d DELAY] [-n] [-f]" IF_FEATURE_WTMP(" [-w]") \
     389
     390#define halt_full_usage "\n\n" \
     391       "Halt the system\n" \
     392     "\nOptions:" \
     393     "\n    -d SEC  Delay interval" \
     394     "\n    -n  Do not sync" \
     395     "\n    -f  Force (don't go through init)" \
     396    IF_FEATURE_WTMP( \
     397     "\n    -w  Only write a wtmp record" \
     398    ) \
     399
     400#define poweroff_trivial_usage \
     401       "[-d DELAY] [-n] [-f]" \
     402
     403#define poweroff_full_usage "\n\n" \
     404       "Halt and shut off power\n" \
     405     "\nOptions:" \
     406     "\n    -d SEC  Delay interval" \
     407     "\n    -n  Do not sync" \
     408     "\n    -f  Force (don't go through init)" \
     409
     410#define reboot_trivial_usage \
     411       "[-d DELAY] [-n] [-f]" \
     412
     413#define reboot_full_usage "\n\n" \
     414       "Reboot the system\n" \
     415     "\nOptions:" \
     416     "\n    -d SEC  Delay interval" \
     417     "\n    -n  Do not sync" \
     418     "\n    -f  Force (don't go through init)" \
     419
     420#define linuxrc_trivial_usage NOUSAGE_STR \
     421
     422#define linuxrc_full_usage "" \
     423
     424#define init_trivial_usage \
     425       "" \
     426
     427#define init_full_usage "\n\n" \
     428       "Init is the parent of all processes" \
     429
     430#define init_notes_usage \
     431    "This version of init is designed to be run only by the kernel.\n" \
     432    "\n" \
     433    "BusyBox init doesn't support multiple runlevels. The runlevels field of\n" \
     434    "the /etc/inittab file is completely ignored by BusyBox init. If you want\n" \
     435    "runlevels, use sysvinit.\n" \
     436    "\n" \
     437    "BusyBox init works just fine without an inittab. If no inittab is found,\n" \
     438    "it has the following default behavior:\n" \
     439    "\n" \
     440    "   ::sysinit:/etc/init.d/rcS\n" \
     441    "   ::askfirst:/bin/sh\n" \
     442    "   ::ctrlaltdel:/sbin/reboot\n" \
     443    "   ::shutdown:/sbin/swapoff -a\n" \
     444    "   ::shutdown:/bin/umount -a -r\n" \
     445    "   ::restart:/sbin/init\n" \
     446    "\n" \
     447    "if it detects that /dev/console is _not_ a serial console, it will also run:\n" \
     448    "\n" \
     449    "   tty2::askfirst:/bin/sh\n" \
     450    "   tty3::askfirst:/bin/sh\n" \
     451    "   tty4::askfirst:/bin/sh\n" \
     452    "\n" \
     453    "If you choose to use an /etc/inittab file, the inittab entry format is as follows:\n" \
     454    "\n" \
     455    "   <id>:<runlevels>:<action>:<process>\n" \
     456    "\n" \
     457    "   <id>:\n" \
     458    "\n" \
     459    "       WARNING: This field has a non-traditional meaning for BusyBox init!\n" \
     460    "       The id field is used by BusyBox init to specify the controlling tty for\n" \
     461    "       the specified process to run on. The contents of this field are\n" \
     462    "       appended to \"/dev/\" and used as-is. There is no need for this field to\n" \
     463    "       be unique, although if it isn't you may have strange results. If this\n" \
     464    "       field is left blank, the controlling tty is set to the console. Also\n" \
     465    "       note that if BusyBox detects that a serial console is in use, then only\n" \
     466    "       entries whose controlling tty is either the serial console or /dev/null\n" \
     467    "       will be run. BusyBox init does nothing with utmp. We don't need no\n" \
     468    "       stinkin' utmp.\n" \
     469    "\n" \
     470    "   <runlevels>:\n" \
     471    "\n" \
     472    "       The runlevels field is completely ignored.\n" \
     473    "\n" \
     474    "   <action>:\n" \
     475    "\n" \
     476    "       Valid actions include: sysinit, respawn, askfirst, wait,\n" \
     477    "       once, restart, ctrlaltdel, and shutdown.\n" \
     478    "\n" \
     479    "       The available actions can be classified into two groups: actions\n" \
     480    "       that are run only once, and actions that are re-run when the specified\n" \
     481    "       process exits.\n" \
     482    "\n" \
     483    "       Run only-once actions:\n" \
     484    "\n" \
     485    "           'sysinit' is the first item run on boot. init waits until all\n" \
     486    "           sysinit actions are completed before continuing. Following the\n" \
     487    "           completion of all sysinit actions, all 'wait' actions are run.\n" \
     488    "           'wait' actions, like 'sysinit' actions, cause init to wait until\n" \
     489    "           the specified task completes. 'once' actions are asynchronous,\n" \
     490    "           therefore, init does not wait for them to complete. 'restart' is\n" \
     491    "           the action taken to restart the init process. By default this should\n" \
     492    "           simply run /sbin/init, but can be a script which runs pivot_root or it\n" \
     493    "           can do all sorts of other interesting things. The 'ctrlaltdel' init\n" \
     494    "           actions are run when the system detects that someone on the system\n" \
     495    "           console has pressed the CTRL-ALT-DEL key combination. Typically one\n" \
     496    "           wants to run 'reboot' at this point to cause the system to reboot.\n" \
     497    "           Finally the 'shutdown' action specifies the actions to taken when\n" \
     498    "           init is told to reboot. Unmounting filesystems and disabling swap\n" \
     499    "           is a very good here.\n" \
     500    "\n" \
     501    "       Run repeatedly actions:\n" \
     502    "\n" \
     503    "           'respawn' actions are run after the 'once' actions. When a process\n" \
     504    "           started with a 'respawn' action exits, init automatically restarts\n" \
     505    "           it. Unlike sysvinit, BusyBox init does not stop processes from\n" \
     506    "           respawning out of control. The 'askfirst' actions acts just like\n" \
     507    "           respawn, except that before running the specified process it\n" \
     508    "           displays the line \"Please press Enter to activate this console.\"\n" \
     509    "           and then waits for the user to press enter before starting the\n" \
     510    "           specified process.\n" \
     511    "\n" \
     512    "       Unrecognized actions (like initdefault) will cause init to emit an\n" \
     513    "       error message, and then go along with its business. All actions are\n" \
     514    "       run in the order they appear in /etc/inittab.\n" \
     515    "\n" \
     516    "   <process>:\n" \
     517    "\n" \
     518    "       Specifies the process to be executed and its command line.\n" \
     519    "\n" \
     520    "Example /etc/inittab file:\n" \
     521    "\n" \
     522    "   # This is run first except when booting in single-user mode\n" \
     523    "   #\n" \
     524    "   ::sysinit:/etc/init.d/rcS\n" \
     525    "   \n" \
     526    "   # /bin/sh invocations on selected ttys\n" \
     527    "   #\n" \
     528    "   # Start an \"askfirst\" shell on the console (whatever that may be)\n" \
     529    "   ::askfirst:-/bin/sh\n" \
     530    "   # Start an \"askfirst\" shell on /dev/tty2-4\n" \
     531    "   tty2::askfirst:-/bin/sh\n" \
     532    "   tty3::askfirst:-/bin/sh\n" \
     533    "   tty4::askfirst:-/bin/sh\n" \
     534    "   \n" \
     535    "   # /sbin/getty invocations for selected ttys\n" \
     536    "   #\n" \
     537    "   tty4::respawn:/sbin/getty 38400 tty4\n" \
     538    "   tty5::respawn:/sbin/getty 38400 tty5\n" \
     539    "   \n" \
     540    "   \n" \
     541    "   # Example of how to put a getty on a serial line (for a terminal)\n" \
     542    "   #\n" \
     543    "   #::respawn:/sbin/getty -L ttyS0 9600 vt100\n" \
     544    "   #::respawn:/sbin/getty -L ttyS1 9600 vt100\n" \
     545    "   #\n" \
     546    "   # Example how to put a getty on a modem line\n" \
     547    "   #::respawn:/sbin/getty 57600 ttyS2\n" \
     548    "   \n" \
     549    "   # Stuff to do when restarting the init process\n" \
     550    "   ::restart:/sbin/init\n" \
     551    "   \n" \
     552    "   # Stuff to do before rebooting\n" \
     553    "   ::ctrlaltdel:/sbin/reboot\n" \
     554    "   ::shutdown:/bin/umount -a -r\n" \
     555    "   ::shutdown:/sbin/swapoff -a\n" \
     556
     557#define mesg_trivial_usage \
     558       "[y|n]" \
     559
     560#define mesg_full_usage "\n\n" \
     561       "Control write access to your terminal\n" \
     562       "    y   Allow write access to your terminal\n" \
     563       "    n   Disallow write access to your terminal" \
     564
     565#define add_shell_trivial_usage \
     566       "SHELL..." \
     567
     568#define add_shell_full_usage "\n\n" \
     569       "Add SHELLs to /etc/shells" \
     570
     571#define remove_shell_trivial_usage \
     572       "SHELL..." \
     573
     574#define remove_shell_full_usage "\n\n" \
     575       "Remove SHELLs from /etc/shells" \
     576
     577#define conspy_trivial_usage \
     578    "[-vcsndf] [-x COL] [-y LINE] [CONSOLE_NO]" \
     579
     580#define conspy_full_usage "\n\n" \
     581     "A text-mode VNC like program for Linux virtual consoles." \
     582     "\nTo exit, quickly press ESC 3 times." \
     583     "\n" \
     584     "\nOptions:" \
     585     "\n    -v  Don't send keystrokes to the console" \
     586     "\n    -c  Create missing devices in /dev" \
     587     "\n    -s  Open a SHELL session" \
     588     "\n    -n  Black & white" \
     589     "\n    -d  Dump console to stdout" \
     590     "\n    -f  Follow cursor" \
     591     "\n    -x COL  Starting column" \
     592     "\n    -y LINE Starting line" \
     593
     594#define dc_trivial_usage \
     595       "EXPRESSION..." \
     596
     597#define dc_full_usage "\n\n" \
     598       "Tiny RPN calculator. Operations:\n" \
     599       "+, add, -, sub, *, mul, /, div, %, mod, **, exp, and, or, not, eor,\n" \
     600       "p - print top of the stack (without popping),\n" \
     601       "f - print entire stack,\n" \
     602       "o - pop the value and set output radix (must be 10, 16, 8 or 2).\n" \
     603       "Examples: 'dc 2 2 add' -> 4, 'dc 8 8 * 2 2 + /' -> 16" \
     604
     605#define dc_example_usage \
     606       "$ dc 2 2 + p\n" \
     607       "4\n" \
     608       "$ dc 8 8 \\* 2 2 + / p\n" \
     609       "16\n" \
     610       "$ dc 0 1 and p\n" \
     611       "0\n" \
     612       "$ dc 0 1 or p\n" \
     613       "1\n" \
     614       "$ echo 72 9 div 8 mul p | dc\n" \
     615       "64\n" \
     616
     617#define nandwrite_trivial_usage \
     618    "[-p] [-s ADDR] MTD_DEVICE [FILE]" \
     619
     620#define nandwrite_full_usage "\n\n" \
     621    "Write to the specified MTD device\n" \
     622     "\nOptions:" \
     623     "\n    -p  Pad to page size" \
     624     "\n    -s ADDR Start address" \
     625
     626#define nanddump_trivial_usage \
     627    "[-o] [-b] [-s ADDR] [-f FILE] MTD_DEVICE" \
     628
     629#define nanddump_full_usage "\n\n" \
     630    "Dump the sepcified MTD device\n" \
     631     "\nOptions:" \
     632     "\n    -o  Omit oob data" \
     633     "\n    -b  Omit bad block from the dump" \
     634     "\n    -s ADDR Start address" \
     635     "\n    -l LEN  Length" \
     636     "\n    -f FILE Dump to file ('-' for stdout)" \
     637
     638#define ubiattach_trivial_usage \
     639       "-m MTD_NUM [-d UBI_NUM] UBI_CTRL_DEV" \
     640
     641#define ubiattach_full_usage "\n\n" \
     642       "Attach MTD device to UBI\n" \
     643     "\nOptions:" \
     644     "\n    -m MTD_NUM  MTD device number to attach" \
     645     "\n    -d UBI_NUM  UBI device number to assign" \
     646
     647#define ubidetach_trivial_usage \
     648       "-d UBI_NUM UBI_CTRL_DEV" \
     649
     650#define ubidetach_full_usage "\n\n" \
     651       "Detach MTD device from UBI\n" \
     652     "\nOptions:" \
     653     "\n    -d UBI_NUM  UBI device number" \
     654
     655#if !ENABLE_MODPROBE_SMALL \
     656
     657#define depmod_trivial_usage NOUSAGE_STR \
     658
     659#define depmod_full_usage "" \
     660
     661#endif \
     662
     663#if !ENABLE_MODPROBE_SMALL \
     664
     665#define insmod_trivial_usage \
     666    IF_FEATURE_2_4_MODULES("[OPTIONS] MODULE ") \
     667    IF_NOT_FEATURE_2_4_MODULES("FILE ") \
     668    "[SYMBOL=VALUE]..." \
     669
     670#define insmod_full_usage "\n\n" \
     671       "Load the specified kernel modules into the kernel" \
     672    IF_FEATURE_2_4_MODULES( "\n" \
     673     "\nOptions:" \
     674     "\n    -f  Force module to load into the wrong kernel version" \
     675     "\n    -k  Make module autoclean-able" \
     676     "\n    -v  Verbose" \
     677     "\n    -q  Quiet" \
     678     "\n    -L  Lock: prevent simultaneous loads" \
     679    IF_FEATURE_INSMOD_LOAD_MAP( \
     680     "\n    -m  Output load map to stdout" \
     681    ) \
     682     "\n    -x  Don't export externs" \
     683    ) \
     684
     685#endif \
     686
     687#if !ENABLE_MODPROBE_SMALL \
     688
     689#define lsmod_trivial_usage \
     690       "" \
     691
     692#define lsmod_full_usage "\n\n" \
     693       "List the currently loaded kernel modules" \
     694
     695#endif \
     696
     697#define modinfo_trivial_usage \
     698       "[-adlp0] [-F keyword] MODULE" \
     699
     700#define modinfo_full_usage "\n\n" \
     701       "Options:" \
     702     "\n    -a      Shortcut for '-F author'" \
     703     "\n    -d      Shortcut for '-F description'" \
     704     "\n    -l      Shortcut for '-F license'" \
     705     "\n    -p      Shortcut for '-F parm'" \
     706     "\n    -F keyword  Keyword to look for" \
     707     "\n    -0      Separate output with NULs" \
     708
     709#define modinfo_example_usage \
     710       "$ modinfo -F vermagic loop\n" \
     711
     712#if !ENABLE_MODPROBE_SMALL \
     713
     714#define modprobe_notes_usage \
     715    "modprobe can (un)load a stack of modules, passing each module options (when\n" \
     716    "loading). modprobe uses a configuration file to determine what option(s) to\n" \
     717    "pass each module it loads.\n" \
     718    "\n" \
     719    "The configuration file is searched (in this order):\n" \
     720    "\n" \
     721    "    /etc/modprobe.conf (2.6 only)\n" \
     722    "    /etc/modules.conf\n" \
     723    "    /etc/conf.modules (deprecated)\n" \
     724    "\n" \
     725    "They all have the same syntax (see below). If none is present, it is\n" \
     726    "_not_ an error; each loaded module is then expected to load without\n" \
     727    "options. Once a file is found, the others are tested for.\n" \
     728    "\n" \
     729    "/etc/modules.conf entry format:\n" \
     730    "\n" \
     731    "  alias <alias_name> <mod_name>\n" \
     732    "    Makes it possible to modprobe alias_name, when there is no such module.\n" \
     733    "    It makes sense if your mod_name is long, or you want a more representative\n" \
     734    "    name for that module (eg. 'scsi' in place of 'aha7xxx').\n" \
     735    "    This makes it also possible to use a different set of options (below) for\n" \
     736    "    the module and the alias.\n" \
     737    "    A module can be aliased more than once.\n" \
     738    "\n" \
     739    "  options <mod_name|alias_name> <symbol=value...>\n" \
     740    "    When loading module mod_name (or the module aliased by alias_name), pass\n" \
     741    "    the \"symbol=value\" pairs as option to that module.\n" \
     742    "\n" \
     743    "Sample /etc/modules.conf file:\n" \
     744    "\n" \
     745    "  options tulip irq=3\n" \
     746    "  alias tulip tulip2\n" \
     747    "  options tulip2 irq=4 io=0x308\n" \
     748    "\n" \
     749    "Other functionality offered by 'classic' modprobe is not available in\n" \
     750    "this implementation.\n" \
     751    "\n" \
     752    "If module options are present both in the config file, and on the command line,\n" \
     753    "then the options from the command line will be passed to the module _after_\n" \
     754    "the options from the config file. That way, you can have defaults in the config\n" \
     755    "file, and override them for a specific usage from the command line.\n" \
     756
     757#define modprobe_example_usage \
     758       "(with the above /etc/modules.conf):\n\n" \
     759       "$ modprobe tulip\n" \
     760       "   will load the module 'tulip' with default option 'irq=3'\n\n" \
     761       "$ modprobe tulip irq=5\n" \
     762       "   will load the module 'tulip' with option 'irq=5', thus overriding the default\n\n" \
     763       "$ modprobe tulip2\n" \
     764       "   will load the module 'tulip' with default options 'irq=4 io=0x308',\n" \
     765       "   which are the default for alias 'tulip2'\n\n" \
     766       "$ modprobe tulip2 irq=8\n" \
     767       "   will load the module 'tulip' with default options 'irq=4 io=0x308 irq=8',\n" \
     768       "   which are the default for alias 'tulip2' overridden by the option 'irq=8'\n\n" \
     769       "   from the command line\n\n" \
     770       "$ modprobe tulip2 irq=2 io=0x210\n" \
     771       "   will load the module 'tulip' with default options 'irq=4 io=0x308 irq=4 io=0x210',\n" \
     772       "   which are the default for alias 'tulip2' overridden by the options 'irq=2 io=0x210'\n\n" \
     773       "   from the command line\n" \
     774
     775#define modprobe_trivial_usage \
     776    "[-alrqvs" \
     777    IF_FEATURE_MODPROBE_BLACKLIST("b") \
     778    "] MODULE [symbol=value]..." \
     779
     780#define modprobe_full_usage "\n\n" \
     781       "Options:" \
     782     "\n    -a  Load multiple MODULEs" \
     783     "\n    -l  List (MODULE is a pattern)" \
     784     "\n    -r  Remove MODULE (stacks) or do autoclean" \
     785     "\n    -q  Quiet" \
     786     "\n    -v  Verbose" \
     787     "\n    -s  Log to syslog" \
     788    IF_FEATURE_MODPROBE_BLACKLIST( \
     789     "\n    -b  Apply blacklist to module names too" \
     790    ) \
     791
     792#endif /* !ENABLE_MODPROBE_SMALL */ \
     793
     794#if ENABLE_MODPROBE_SMALL \
     795
     796#define depmod_trivial_usage NOUSAGE_STR \
     797
     798#define depmod_full_usage "" \
     799
     800#define lsmod_trivial_usage \
     801       "" \
     802
     803#define lsmod_full_usage "\n\n" \
     804       "List the currently loaded kernel modules" \
     805
     806#define insmod_trivial_usage \
     807    IF_FEATURE_2_4_MODULES("[OPTIONS] MODULE ") \
     808    IF_NOT_FEATURE_2_4_MODULES("FILE ") \
     809    "[SYMBOL=VALUE]..." \
     810
     811#define insmod_full_usage "\n\n" \
     812       "Load the specified kernel modules into the kernel" \
     813    IF_FEATURE_2_4_MODULES( "\n" \
     814     "\nOptions:" \
     815     "\n    -f  Force module to load into the wrong kernel version" \
     816     "\n    -k  Make module autoclean-able" \
     817     "\n    -v  Verbose" \
     818     "\n    -q  Quiet" \
     819     "\n    -L  Lock: prevent simultaneous loads" \
     820    IF_FEATURE_INSMOD_LOAD_MAP( \
     821     "\n    -m  Output load map to stdout" \
     822    ) \
     823     "\n    -x  Don't export externs" \
     824    ) \
     825
     826#define rmmod_trivial_usage \
     827       "[-wfa] [MODULE]..." \
     828
     829#define rmmod_full_usage "\n\n" \
     830       "Unload kernel modules\n" \
     831     "\nOptions:" \
     832     "\n    -w  Wait until the module is no longer used" \
     833     "\n    -f  Force unload" \
     834     "\n    -a  Remove all unused modules (recursively)" \
     835
     836#define rmmod_example_usage \
     837       "$ rmmod tulip\n" \
     838
     839#define modprobe_trivial_usage \
     840    "[-qfwrsv] MODULE [symbol=value]..." \
     841
     842#define modprobe_full_usage "\n\n" \
     843       "Options:" \
     844     "\n    -r  Remove MODULE (stacks) or do autoclean" \
     845     "\n    -q  Quiet" \
     846     "\n    -v  Verbose" \
     847     "\n    -f  Force" \
     848     "\n    -w  Wait for unload" \
     849     "\n    -s  Report via syslog instead of stderr" \
     850
     851#endif \
     852
     853#if !ENABLE_MODPROBE_SMALL \
     854
     855#define rmmod_trivial_usage \
     856       "[-wfa] [MODULE]..." \
     857
     858#define rmmod_full_usage "\n\n" \
     859       "Unload kernel modules\n" \
     860     "\nOptions:" \
     861     "\n    -w  Wait until the module is no longer used" \
     862     "\n    -f  Force unload" \
     863     "\n    -a  Remove all unused modules (recursively)" \
     864
     865#define rmmod_example_usage \
     866       "$ rmmod tulip\n" \
     867
     868#endif \
     869
     870#define nbdclient_trivial_usage \
     871       "HOST PORT BLOCKDEV" \
     872
     873#define nbdclient_full_usage "\n\n" \
     874       "Connect to HOST and provide a network block device on BLOCKDEV" \
     875
     876#if ENABLE_NC_110_COMPAT \
     877
     878#define nc_trivial_usage \
     879       "[OPTIONS] HOST PORT  - connect" \
     880    IF_NC_SERVER("\n" \
     881       "nc [OPTIONS] -l -p PORT [HOST] [PORT]  - listen" \
     882    ) \
     883
     884#define nc_full_usage "\n\n" \
     885       "Options:" \
     886     "\n    -e PROG Run PROG after connect (must be last)" \
     887    IF_NC_SERVER( \
     888     "\n    -l  Listen mode, for inbound connects" \
     889    ) \
     890     "\n    -p PORT Local port" \
     891     "\n    -s ADDR Local address" \
     892     "\n    -w SEC  Timeout for connects and final net reads" \
     893    IF_NC_EXTRA( \
     894     "\n    -i SEC  Delay interval for lines sent" /* ", ports scanned" */ \
     895    ) \
     896     "\n    -n  Don't do DNS resolution" \
     897     "\n    -u  UDP mode" \
     898     "\n    -v  Verbose" \
     899    IF_NC_EXTRA( \
     900     "\n    -o FILE Hex dump traffic" \
     901     "\n    -z  Zero-I/O mode (scanning)" \
     902    ) \
     903
     904#endif \
     905
     906#if !ENABLE_NC_110_COMPAT \
     907
     908#if ENABLE_NC_SERVER || ENABLE_NC_EXTRA \
     909
     910#define NC_OPTIONS_STR "\n\nOptions:" \
     911
     912#else \
     913
     914#define NC_OPTIONS_STR \
     915
     916#endif \
     917
     918#define nc_trivial_usage \
     919    IF_NC_EXTRA("[-iN] [-wN] ")IF_NC_SERVER("[-l] [-p PORT] ") \
     920       "["IF_NC_EXTRA("-f FILE|")"IPADDR PORT]"IF_NC_EXTRA(" [-e PROG]") \
     921
     922#define nc_full_usage "\n\n" \
     923       "Open a pipe to IP:PORT" IF_NC_EXTRA(" or FILE") \
     924    NC_OPTIONS_STR \
     925    IF_NC_EXTRA( \
     926     "\n    -e PROG Run PROG after connect" \
     927    IF_NC_SERVER( \
     928     "\n    -l  Listen mode, for inbound connects" \
     929    IF_NC_EXTRA( \
     930     "\n        (use -l twice with -e for persistent server)") \
     931     "\n    -p PORT Local port" \
     932    ) \
     933     "\n    -w SEC  Timeout for connect" \
     934     "\n    -i SEC  Delay interval for lines sent" \
     935     "\n    -f FILE Use file (ala /dev/ttyS0) instead of network" \
     936    ) \
     937
     938#define nc_notes_usage "" \
     939    IF_NC_EXTRA( \
     940       "To use netcat as a terminal emulator on a serial port:\n\n" \
     941       "$ stty 115200 -F /dev/ttyS0\n" \
     942       "$ stty raw -echo -ctlecho && nc -f /dev/ttyS0\n" \
     943    ) \
     944
     945#define nc_example_usage \
     946       "$ nc foobar.somedomain.com 25\n" \
     947       "220 foobar ESMTP Exim 3.12 #1 Sat, 15 Apr 2000 00:03:02 -0600\n" \
     948       "help\n" \
     949       "214-Commands supported:\n" \
     950       "214-    HELO EHLO MAIL RCPT DATA AUTH\n" \
     951       "214     NOOP QUIT RSET HELP\n" \
     952       "quit\n" \
     953       "221 foobar closing connection\n" \
     954
     955#endif \
     956
     957#define netstat_trivial_usage \
     958       "[-"IF_ROUTE("r")"al] [-tuwx] [-en"IF_FEATURE_NETSTAT_WIDE("W")IF_FEATURE_NETSTAT_PRG("p")"]" \
     959
     960#define netstat_full_usage "\n\n" \
     961       "Display networking information\n" \
     962     "\nOptions:" \
     963    IF_ROUTE( \
     964     "\n    -r  Routing table" \
     965    ) \
     966     "\n    -a  All sockets" \
     967     "\n    -l  Listening sockets" \
     968     "\n        Else: connected sockets" \
     969     "\n    -t  TCP sockets" \
     970     "\n    -u  UDP sockets" \
     971     "\n    -w  Raw sockets" \
     972     "\n    -x  Unix sockets" \
     973     "\n        Else: all socket types" \
     974     "\n    -e  Other/more information" \
     975     "\n    -n  Don't resolve names" \
     976    IF_FEATURE_NETSTAT_WIDE( \
     977     "\n    -W  Wide display" \
     978    ) \
     979    IF_FEATURE_NETSTAT_PRG( \
     980     "\n    -p  Show PID/program name for sockets" \
     981    ) \
     982
     983#define iostat_trivial_usage \
     984       "[-c] [-d] [-t] [-z] [-k|-m] [ALL|BLOCKDEV...] [INTERVAL [COUNT]]" \
     985
     986#define iostat_full_usage "\n\n" \
     987       "Report CPU and I/O statistics\n" \
     988     "\nOptions:" \
     989     "\n    -c  Show CPU utilization" \
     990     "\n    -d  Show device utilization" \
     991     "\n    -t  Print current time" \
     992     "\n    -z  Omit devices with no activity" \
     993     "\n    -k  Use kb/s" \
     994     "\n    -m  Use Mb/s" \
     995
     996#define mpstat_trivial_usage \
     997       "[-A] [-I SUM|CPU|ALL|SCPU] [-u] [-P num|ALL] [INTERVAL [COUNT]]" \
     998
     999#define mpstat_full_usage "\n\n" \
     1000       "Per-processor statistics\n" \
     1001     "\nOptions:" \
     1002     "\n    -A          Same as -I ALL -u -P ALL" \
     1003     "\n    -I SUM|CPU|ALL|SCPU Report interrupt statistics" \
     1004     "\n    -P num|ALL      Processor to monitor" \
     1005     "\n    -u          Report CPU utilization" \
     1006
     1007#define pmap_trivial_usage \
     1008       "[-x][-q] PID" \
     1009
     1010#define pmap_full_usage "\n\n" \
     1011       "Display detailed precesses' memory usage\n" \
     1012       "\nOptions:" \
     1013       "\n     -x              show details" \
     1014       "\n     -q              quiet" \
     1015
     1016#define powertop_trivial_usage \
     1017       "" \
     1018
     1019#define powertop_full_usage "\n\n" \
     1020       "Analyze power consumption on Intel-based laptops\n" \
     1021
     1022#define smemcap_trivial_usage ">SMEMDATA.TAR" \
     1023
     1024#define smemcap_full_usage "\n\n" \
     1025       "Collect memory usage data in /proc and write it to stdout" \
     1026
     1027#define ash_trivial_usage NOUSAGE_STR \
     1028
     1029#define ash_full_usage "" \
     1030
     1031#define sh_trivial_usage NOUSAGE_STR \
     1032
     1033#define sh_full_usage "" \
     1034
     1035#define bash_trivial_usage NOUSAGE_STR \
     1036
     1037#define bash_full_usage "" \
     1038
     1039#define cttyhack_trivial_usage \
     1040       "PROG ARGS" \
     1041
     1042#define cttyhack_full_usage "\n\n" \
     1043       "Give PROG a controlling tty if possible." \
     1044     "\nExample for /etc/inittab (for busybox init):" \
     1045     "\n    ::respawn:/bin/cttyhack /bin/sh" \
     1046     "\nGiving controlling tty to shell running with PID 1:" \
     1047     "\n    $ exec cttyhack sh" \
     1048     "\nStarting interactive shell from boot shell script:" \
     1049     "\n    setsid cttyhack sh" \
     1050
     1051#define hush_trivial_usage NOUSAGE_STR \
     1052
     1053#define hush_full_usage "" \
     1054
     1055#define msh_trivial_usage NOUSAGE_STR \
     1056
     1057#define msh_full_usage "" \
     1058
     1059#define sh_trivial_usage NOUSAGE_STR \
     1060
     1061#define sh_full_usage "" \
     1062
     1063#define bash_trivial_usage NOUSAGE_STR \
     1064
     1065#define bash_full_usage "" \
     1066
     1067#define blockdev_trivial_usage \
     1068    "OPTION BLOCKDEV" \
     1069
     1070#define blockdev_full_usage "\n\n" \
     1071       "Options:" \
     1072     "\n    --setro     Set ro" \
     1073     "\n    --setrw     Set rw" \
     1074     "\n    --getro     Get ro" \
     1075     "\n    --getss     Get sector size" \
     1076     "\n    --getbsz    Get block size" \
     1077     "\n    --setbsz BYTES  Set block size" \
     1078     "\n    --getsize   Get device size in 512-byte sectors" \
     1079     "\n    --getsize64 Get device size in bytes" \
     1080     "\n    --flushbufs Flush buffers" \
     1081     "\n    --rereadpt  Reread partition table" \
     1082
     1083#define rev_trivial_usage \
     1084    "[FILE]..." \
     1085
     1086#define rev_full_usage "\n\n" \
     1087    "Reverse lines of FILE" \
     1088
     1089#if defined CONFIG_UDHCP_DEBUG && CONFIG_UDHCP_DEBUG >= 1 \
     1090
     1091# define IF_UDHCP_VERBOSE(...) __VA_ARGS__ \
     1092
     1093#else \
     1094
     1095# define IF_UDHCP_VERBOSE(...) \
     1096
     1097#endif \
     1098
     1099#define udhcpc_trivial_usage \
     1100       "[-fbnq"IF_UDHCP_VERBOSE("v")"oCR] [-i IFACE] [-r IP] [-s PROG] [-p PIDFILE]\n" \
     1101       "    [-H HOSTNAME] [-V VENDOR] [-x OPT:VAL]... [-O OPT]..." IF_FEATURE_UDHCP_PORT(" [-P N]") \
     1102
     1103#define udhcpc_full_usage "\n" \
     1104    IF_LONG_OPTS( \
     1105     "\n    -i,--interface IFACE    Interface to use (default eth0)" \
     1106     "\n    -p,--pidfile FILE   Create pidfile" \
     1107     "\n    -s,--script PROG    Run PROG at DHCP events (default "CONFIG_UDHCPC_DEFAULT_SCRIPT")" \
     1108     "\n    -t,--retries N      Send up to N discover packets" \
     1109     "\n    -T,--timeout N      Pause between packets (default 3 seconds)" \
     1110     "\n    -A,--tryagain N     Wait N seconds after failure (default 20)" \
     1111     "\n    -f,--foreground     Run in foreground" \
     1112    USE_FOR_MMU( \
     1113     "\n    -b,--background     Background if lease is not obtained" \
     1114    ) \
     1115     "\n    -n,--now        Exit if lease is not obtained" \
     1116     "\n    -q,--quit       Exit after obtaining lease" \
     1117     "\n    -R,--release        Release IP on exit" \
     1118     "\n    -S,--syslog     Log to syslog too" \
     1119    IF_FEATURE_UDHCP_PORT( \
     1120     "\n    -P,--client-port N  Use port N (default 68)" \
     1121    ) \
     1122    IF_FEATURE_UDHCPC_ARPING( \
     1123     "\n    -a,--arping     Use arping to validate offered address" \
     1124    ) \
     1125     "\n    -O,--request-option OPT Request option OPT from server (cumulative)" \
     1126     "\n    -o,--no-default-options Don't request any options (unless -O is given)" \
     1127     "\n    -r,--request IP     Request this IP address" \
     1128     "\n    -x OPT:VAL      Include option OPT in sent packets (cumulative)" \
     1129     "\n                Examples of string, numeric, and hex byte opts:" \
     1130     "\n                -x hostname:bbox - option 12" \
     1131     "\n                -x lease:3600 - option 51 (lease time)" \
     1132     "\n                -x 0x3d:0100BEEFC0FFEE - option 61 (client id)" \
     1133     "\n    -F,--fqdn NAME      Ask server to update DNS mapping for NAME" \
     1134     "\n    -H,-h,--hostname NAME   Send NAME as client hostname (default none)" \
     1135     "\n    -V,--vendorclass VENDOR Vendor identifier (default 'udhcp VERSION')" \
     1136     "\n    -C,--clientid-none  Don't send MAC as client identifier" \
     1137    IF_UDHCP_VERBOSE( \
     1138     "\n    -v          Verbose" \
     1139    ) \
     1140    ) \
     1141    IF_NOT_LONG_OPTS( \
     1142     "\n    -i IFACE    Interface to use (default eth0)" \
     1143     "\n    -p FILE     Create pidfile" \
     1144     "\n    -s PROG     Run PROG at DHCP events (default "CONFIG_UDHCPC_DEFAULT_SCRIPT")" \
     1145     "\n    -t N        Send up to N discover packets" \
     1146     "\n    -T N        Pause between packets (default 3 seconds)" \
     1147     "\n    -A N        Wait N seconds (default 20) after failure" \
     1148     "\n    -f      Run in foreground" \
     1149    USE_FOR_MMU( \
     1150     "\n    -b      Background if lease is not obtained" \
     1151    ) \
     1152     "\n    -n      Exit if lease is not obtained" \
     1153     "\n    -q      Exit after obtaining lease" \
     1154     "\n    -R      Release IP on exit" \
     1155     "\n    -S      Log to syslog too" \
     1156    IF_FEATURE_UDHCP_PORT( \
     1157     "\n    -P N        Use port N (default 68)" \
     1158    ) \
     1159    IF_FEATURE_UDHCPC_ARPING( \
     1160     "\n    -a      Use arping to validate offered address" \
     1161    ) \
     1162     "\n    -O OPT      Request option OPT from server (cumulative)" \
     1163     "\n    -o      Don't request any options (unless -O is given)" \
     1164     "\n    -r IP       Request this IP address" \
     1165     "\n    -x OPT:VAL  Include option OPT in sent packets (cumulative)" \
     1166     "\n            Examples of string, numeric, and hex byte opts:" \
     1167     "\n            -x hostname:bbox - option 12" \
     1168     "\n            -x lease:3600 - option 51 (lease time)" \
     1169     "\n            -x 0x3d:0100BEEFC0FFEE - option 61 (client id)" \
     1170     "\n    -F NAME     Ask server to update DNS mapping for NAME" \
     1171     "\n    -H,-h NAME  Send NAME as client hostname (default none)" \
     1172     "\n    -V VENDOR   Vendor identifier (default 'udhcp VERSION')" \
     1173     "\n    -C      Don't send MAC as client identifier" \
     1174    IF_UDHCP_VERBOSE( \
     1175     "\n    -v      Verbose" \
     1176    ) \
     1177    ) \
     1178
     1179#define acpid_trivial_usage \
     1180       "[-d] [-c CONFDIR] [-l LOGFILE] [-a ACTIONFILE] [-M MAPFILE] [-e PROC_EVENT_FILE] [-p PIDFILE]"
     1181#define acpid_full_usage "\n\n" \
     1182       "Listen to ACPI events and spawn specific helpers on event arrival\n" \
     1183     "\nOptions:" \
     1184     "\n    -c DIR  Config directory [/etc/acpi]" \
     1185     "\n    -d  Don't daemonize, (implies -f)" \
     1186     "\n    -e FILE /proc event file [/proc/acpi/event]" \
     1187     "\n    -f  Run in foreground" \
     1188     "\n    -l FILE Log file [/var/log/acpid.log]" \
     1189     "\n    -p FILE Pid file [/var/run/acpid.pid]" \
     1190     "\n    -a FILE Action file [/etc/acpid.conf]" \
     1191     "\n    -M FILE Map file [/etc/acpi.map]" \
     1192    IF_FEATURE_ACPID_COMPAT( \
     1193     "\n\nAccept and ignore compatibility options -g -m -s -S -v" \
     1194    )
     1195
     1196#define acpid_example_usage \
     1197       "Without -e option, acpid uses all /dev/input/event* files\n" \
     1198       "# acpid\n" \
     1199       "# acpid -l /var/log/my-acpi-log\n" \
     1200       "# acpid -e /proc/acpi/event\n"
    131201
    141202#define addgroup_trivial_usage \
    15        "[-g GID]"USE_FEATURE_ADDUSER_TO_GROUP(" [user_name]")" group_name"
    16 #define addgroup_full_usage \
    17        "Add a group to the system"USE_FEATURE_ADDUSER_TO_GROUP(" or add an user to a group") \
    18        "\n\nOptions:\n" \
    19        "    -g GID  Specify gid"
     1203       "[-g GID] " IF_FEATURE_ADDUSER_TO_GROUP("[USER] ") "GROUP"
     1204#define addgroup_full_usage "\n\n" \
     1205       "Add a group " IF_FEATURE_ADDUSER_TO_GROUP("or add a user to a group") "\n" \
     1206     "\nOptions:" \
     1207     "\n    -g GID  Group id" \
     1208     "\n    -S  Create a system group" \
    201209
    211210#define adduser_trivial_usage \
    22        "[OPTIONS] user_name"
    23 #define adduser_full_usage \
    24        "Add a user to the system" \
    25        "\n\nOptions:\n" \
    26        "    -h DIR      Home directory\n" \
    27        "    -g GECOS    GECOS field\n" \
    28        "    -s SHELL    Login shell\n" \
    29        "    -G GROUP    Add user to existing group\n" \
    30        "    -S      Create a system user (ignored)\n" \
    31        "    -D      Do not assign a password (logins still possible via ssh)\n" \
    32        "    -H      Do not create home directory"
     1211       "[OPTIONS] USER"
     1212#define adduser_full_usage "\n\n" \
     1213       "Add a user\n" \
     1214     "\nOptions:" \
     1215     "\n    -h DIR      Home directory" \
     1216     "\n    -g GECOS    GECOS field" \
     1217     "\n    -s SHELL    Login shell" \
     1218     "\n    -G GRP      Add user to existing group" \
     1219     "\n    -S      Create a system user" \
     1220     "\n    -D      Don't assign a password" \
     1221     "\n    -H      Don't create home directory" \
     1222     "\n    -u UID      User id" \
    331223
    341224#define adjtimex_trivial_usage \
    35        "[-q] [-o offset] [-f frequency] [-p timeconstant] [-t tick]"
    36 #define adjtimex_full_usage \
    37        "Read and optionally set system timebase parameters.\n" \
    38        "See adjtimex(2)." \
    39        "\n\nOptions:\n" \
    40        "    -q      Quiet\n" \
    41        "    -o offset   Time offset, microseconds\n" \
    42        "    -f frequency    Frequency adjust, integer kernel units (65536 is 1ppm)\n" \
    43        "            (positive values make the system clock run faster)\n" \
    44        "    -t tick     Microseconds per tick, usually 10000\n" \
    45        "    -p timeconstant"
     1225       "[-q] [-o OFF] [-f FREQ] [-p TCONST] [-t TICK]"
     1226#define adjtimex_full_usage "\n\n" \
     1227       "Read and optionally set system timebase parameters. See adjtimex(2)\n" \
     1228     "\nOptions:" \
     1229     "\n    -q  Quiet" \
     1230     "\n    -o OFF  Time offset, microseconds" \
     1231     "\n    -f FREQ Frequency adjust, integer kernel units (65536 is 1ppm)" \
     1232     "\n        (positive values make clock run faster)" \
     1233     "\n    -t TICK Microseconds per tick, usually 10000" \
     1234     "\n    -p TCONST" \
    461235
    471236#define ar_trivial_usage \
    481237       "[-o] [-v] [-p] [-t] [-x] ARCHIVE FILES"
    49 #define ar_full_usage \
    50        "Extract or list FILES from an ar archive" \
    51        "\n\nOptions:\n" \
    52        "    -o  Preserve original dates\n" \
    53        "    -p  Extract to stdout\n" \
    54        "    -t  List\n" \
    55        "    -x  Extract\n" \
    56        "    -v  Verbose"
     1238#define ar_full_usage "\n\n" \
     1239       "Extract or list FILES from an ar archive\n" \
     1240     "\nOptions:" \
     1241     "\n    -o  Preserve original dates" \
     1242     "\n    -p  Extract to stdout" \
     1243     "\n    -t  List" \
     1244     "\n    -x  Extract" \
     1245     "\n    -v  Verbose" \
    571246
    581247#define arp_trivial_usage \
    59        "\n" \
    60        "[-vn]   [-H type] [-i if] -a [hostname]\n" \
    61        "[-v]          [-i if] -d hostname [pub]\n" \
    62        "[-v]    [-H type] [-i if] -s hostname hw_addr [temp]\n" \
    63        "[-v]    [-H type] [-i if] -s hostname hw_addr [netmask nm] pub\n" \
    64        "[-v]    [-H type] [-i if] -Ds hostname ifa [netmask nm] pub\n"
    65 #define arp_full_usage \
    66        "Manipulate the system ARP cache" \
    67        "\n\nOptions:" \
     1248     "\n[-vn]   [-H HWTYPE] [-i IF] -a [HOSTNAME]" \
     1249     "\n[-v]            [-i IF] -d HOSTNAME [pub]" \
     1250     "\n[-v]    [-H HWTYPE] [-i IF] -s HOSTNAME HWADDR [temp]" \
     1251     "\n[-v]    [-H HWTYPE] [-i IF] -s HOSTNAME HWADDR [netmask MASK] pub" \
     1252     "\n[-v]    [-H HWTYPE] [-i IF] -Ds HOSTNAME IFACE [netmask MASK] pub"
     1253#define arp_full_usage "\n\n" \
     1254       "Manipulate ARP cache\n" \
     1255     "\nOptions:" \
    681256       "\n  -a      Display (all) hosts" \
    69        "\n  -s      Set a new ARP entry" \
     1257       "\n  -s      Set new ARP entry" \
    701258       "\n  -d      Delete a specified entry" \
    711259       "\n  -v      Verbose" \
    721260       "\n  -n      Don't resolve names" \
    73        "\n  -i if       Specify network interface (e.g. eth0)" \
     1261       "\n  -i IF       Network interface" \
    741262       "\n  -D      Read <hwaddr> from given device" \
    75        "\n  -A, -p      Specify protocol family" \
    76        "\n  -H hwtype   Specify hardware address type"
     1263       "\n  -A,-p AF    Protocol family" \
     1264       "\n  -H HWTYPE   Hardware address type" \
    771265
    781266#define arping_trivial_usage \
    79        "[-fqbDUA] [-c count] [-w timeout] [-i device] [-s sender] target"
    80 #define arping_full_usage \
    81        "Ping hosts by ARP requests/replies" \
    82        "\n\nOptions:\n" \
    83        "    -f      Quit on first ARP reply\n" \
    84        "    -q      Quiet\n" \
    85        "    -b      Keep broadcasting, don't go unicast\n" \
    86        "    -D      Duplicated address detection mode\n" \
    87        "    -U      Unsolicited ARP mode, update your neighbours\n" \
    88        "    -A      ARP answer mode, update your neighbours\n" \
    89        "    -c count    Stop after sending count ARP request packets\n" \
    90        "    -w timeout  Time to wait for ARP reply, in seconds\n" \
    91        "    -I device   Outgoing interface name, default is eth0\n" \
    92        "    -s sender   Set specific sender IP address\n" \
    93        "    target      Target IP address of ARP request"
    94 
    95 #define ash_trivial_usage \
    96        "[FILE]...\n" \
    97        "or: ash -c command [args]..."
    98 #define ash_full_usage \
    99        "The ash shell (command interpreter)"
     1267       "[-fqbDUA] [-c CNT] [-w TIMEOUT] [-I IFACE] [-s SRC_IP] DST_IP"
     1268#define arping_full_usage "\n\n" \
     1269       "Send ARP requests/replies\n" \
     1270     "\nOptions:" \
     1271     "\n    -f      Quit on first ARP reply" \
     1272     "\n    -q      Quiet" \
     1273     "\n    -b      Keep broadcasting, don't go unicast" \
     1274     "\n    -D      Duplicated address detection mode" \
     1275     "\n    -U      Unsolicited ARP mode, update your neighbors" \
     1276     "\n    -A      ARP answer mode, update your neighbors" \
     1277     "\n    -c N        Stop after sending N ARP requests" \
     1278     "\n    -w TIMEOUT  Time to wait for ARP reply, seconds" \
     1279     "\n    -I IFACE    Interface to use (default eth0)" \
     1280     "\n    -s SRC_IP   Sender IP address" \
     1281     "\n    DST_IP      Target IP address" \
    1001282
    1011283#define awk_trivial_usage \
    102        "[OPTION]... [program-text] [FILE ...]"
    103 #define awk_full_usage \
    104        "Options:\n" \
    105        "    -v var=val  Set variable\n" \
    106        "    -F sep      Use 'sep' as field separator\n" \
    107        "    -f filename Read program from file"
     1284       "[OPTIONS] [AWK_PROGRAM] [FILE]..."
     1285#define awk_full_usage "\n\n" \
     1286       "Options:" \
     1287     "\n    -v VAR=VAL  Set variable" \
     1288     "\n    -F SEP      Use SEP as field separator" \
     1289     "\n    -f FILE     Read program from FILE" \
    1081290
    1091291#define basename_trivial_usage \
    1101292       "FILE [SUFFIX]"
    111 #define basename_full_usage \
    112        "Strip directory path and suffixes from FILE.\n" \
    113        "If specified, also remove any trailing SUFFIX."
     1293#define basename_full_usage "\n\n" \
     1294       "Strip directory path and .SUFFIX from FILE\n"
    1141295#define basename_example_usage \
    1151296       "$ basename /usr/local/bin/foo\n" \
     
    1201301       "bar"
    1211302
    122 #define bunzip2_trivial_usage \
    123        "[OPTION]... [FILE]"
    124 #define bunzip2_full_usage \
    125        "Uncompress FILE (or standard input if FILE is '-' or omitted)" \
    126        "\n\nOptions:\n" \
    127        "    -c  Write output to standard output\n" \
    128        "    -f  Force"
     1303#define beep_trivial_usage \
     1304       "-f FREQ -l LEN -d DELAY -r COUNT -n"
     1305#define beep_full_usage "\n\n" \
     1306       "Options:" \
     1307     "\n    -f  Frequency in Hz" \
     1308     "\n    -l  Length in ms" \
     1309     "\n    -d  Delay in ms" \
     1310     "\n    -r  Repetitions" \
     1311     "\n    -n  Start new tone" \
     1312
     1313#define blkid_trivial_usage \
     1314       ""
     1315#define blkid_full_usage "\n\n" \
     1316       "Print UUIDs of all filesystems"
     1317
     1318#define brctl_trivial_usage \
     1319       "COMMAND [BRIDGE [INTERFACE]]"
     1320#define brctl_full_usage "\n\n" \
     1321       "Manage ethernet bridges\n" \
     1322     "\nCommands:" \
     1323    IF_FEATURE_BRCTL_SHOW( \
     1324     "\n    show            Show a list of bridges" \
     1325    ) \
     1326     "\n    addbr BRIDGE        Create BRIDGE" \
     1327     "\n    delbr BRIDGE        Delete BRIDGE" \
     1328     "\n    addif BRIDGE IFACE  Add IFACE to BRIDGE" \
     1329     "\n    delif BRIDGE IFACE  Delete IFACE from BRIDGE" \
     1330    IF_FEATURE_BRCTL_FANCY( \
     1331     "\n    setageing BRIDGE TIME       Set ageing time" \
     1332     "\n    setfd BRIDGE TIME       Set bridge forward delay" \
     1333     "\n    sethello BRIDGE TIME        Set hello time" \
     1334     "\n    setmaxage BRIDGE TIME       Set max message age" \
     1335     "\n    setpathcost BRIDGE COST     Set path cost" \
     1336     "\n    setportprio BRIDGE PRIO     Set port priority" \
     1337     "\n    setbridgeprio BRIDGE PRIO   Set bridge priority" \
     1338     "\n    stp BRIDGE [1/yes/on|0/no/off]  STP on/off" \
     1339    ) \
     1340
     1341#define bzip2_trivial_usage \
     1342       "[OPTIONS] [FILE]..."
     1343#define bzip2_full_usage "\n\n" \
     1344       "Compress FILEs (or stdin) with bzip2 algorithm\n" \
     1345     "\nOptions:" \
     1346     "\n    -1..9   Compression level" \
     1347     "\n    -d  Decompress" \
     1348     "\n    -c  Write to stdout" \
     1349     "\n    -f  Force" \
    1291350
    1301351#define busybox_notes_usage \
    1311352       "Hello world!\n"
    1321353
    133 #define bzcat_trivial_usage \
     1354#define lzop_trivial_usage \
     1355       "[-cfvd123456789CF] [FILE]..."
     1356#define lzop_full_usage "\n\n" \
     1357       "Options:" \
     1358     "\n    -1..9   Compression level" \
     1359     "\n    -d  Decompress" \
     1360     "\n    -c  Write to stdout" \
     1361     "\n    -f  Force" \
     1362     "\n    -v  Verbose" \
     1363     "\n    -F  Don't store or verify checksum" \
     1364     "\n    -C  Also write checksum of compressed block" \
     1365
     1366#define lzopcat_trivial_usage \
     1367       "[-vCF] [FILE]..."
     1368#define lzopcat_full_usage "\n\n" \
     1369       "    -v  Verbose" \
     1370     "\n    -F  Don't store or verify checksum" \
     1371
     1372#define unlzop_trivial_usage \
     1373       "[-cfvCF] [FILE]..."
     1374#define unlzop_full_usage "\n\n" \
     1375       "Options:" \
     1376     "\n    -c  Write to stdout" \
     1377     "\n    -f  Force" \
     1378     "\n    -v  Verbose" \
     1379     "\n    -F  Don't store or verify checksum" \
     1380
     1381#define unlzma_trivial_usage \
     1382       "[-cf] [FILE]..."
     1383#define unlzma_full_usage "\n\n" \
     1384       "Decompress FILE (or stdin)\n" \
     1385     "\nOptions:" \
     1386     "\n    -c  Write to stdout" \
     1387     "\n    -f  Force" \
     1388
     1389#define lzma_trivial_usage \
     1390       "-d [-cf] [FILE]..."
     1391#define lzma_full_usage "\n\n" \
     1392       "Decompress FILE (or stdin)\n" \
     1393     "\nOptions:" \
     1394     "\n    -d  Decompress" \
     1395     "\n    -c  Write to stdout" \
     1396     "\n    -f  Force" \
     1397
     1398#define lzcat_trivial_usage \
    1341399       "FILE"
    135 #define bzcat_full_usage \
    136        "Uncompress to stdout"
    137 
    138 #define unlzma_trivial_usage \
    139        "[OPTION]... [FILE]"
    140 #define unlzma_full_usage \
    141        "Uncompress FILE (or standard input if FILE is '-' or omitted)" \
    142        "\n\nOptions:\n" \
    143        "    -c  Write output to standard output\n" \
    144        "    -f  Force"
    145 
    146 #define lzmacat_trivial_usage \
     1400#define lzcat_full_usage "\n\n" \
     1401       "Decompress to stdout"
     1402
     1403#define unxz_trivial_usage \
     1404       "[-cf] [FILE]..."
     1405#define unxz_full_usage "\n\n" \
     1406       "Decompress FILE (or stdin)\n" \
     1407     "\nOptions:" \
     1408     "\n    -c  Write to stdout" \
     1409     "\n    -f  Force" \
     1410
     1411#define xz_trivial_usage \
     1412       "-d [-cf] [FILE]..."
     1413#define xz_full_usage "\n\n" \
     1414       "Decompress FILE (or stdin)\n" \
     1415     "\nOptions:" \
     1416     "\n    -d  Decompress" \
     1417     "\n    -c  Write to stdout" \
     1418     "\n    -f  Force" \
     1419
     1420#define xzcat_trivial_usage \
    1471421       "FILE"
    148 #define lzmacat_full_usage \
    149        "Uncompress to stdout"
     1422#define xzcat_full_usage "\n\n" \
     1423       "Decompress to stdout"
    1501424
    1511425#define cal_trivial_usage \
    152        "[-jy] [[month] year]"
    153 #define cal_full_usage \
    154        "Display a calendar" \
    155        "\n\nOptions:" \
    156        "\n  -j  Use julian dates" \
    157        "\n  -y  Display the entire year"
     1426       "[-jy] [[MONTH] YEAR]"
     1427#define cal_full_usage "\n\n" \
     1428       "Display a calendar\n" \
     1429     "\nOptions:" \
     1430     "\n    -j  Use julian dates" \
     1431     "\n    -y  Display the entire year" \
    1581432
    1591433#define cat_trivial_usage \
    160        "[-u] [FILE]..."
    161 #define cat_full_usage \
    162        "Concatenate FILE(s) and print them to stdout" \
    163        "\n\nOptions:" \
    164        "\n  -u  Use unbuffered i/o (ignored)"
     1434       "[FILE]..."
     1435#define cat_full_usage "\n\n" \
     1436       "Concatenate FILEs and print them to stdout" \
     1437
    1651438#define cat_example_usage \
    1661439       "$ cat /proc/uptime\n" \
     
    1691442#define catv_trivial_usage \
    1701443       "[-etv] [FILE]..."
    171 #define catv_full_usage \
    172        "Display nonprinting characters as ^x or M-x" \
    173        "\n\nOptions:\n" \
    174        "    -e  End each line with $\n" \
    175        "    -t  Show tabs as ^I\n" \
    176        "    -v  Don't use ^x or M-x escapes"
     1444#define catv_full_usage "\n\n" \
     1445       "Display nonprinting characters as ^x or M-x\n" \
     1446     "\nOptions:" \
     1447     "\n    -e  End each line with $" \
     1448     "\n    -t  Show tabs as ^I" \
     1449     "\n    -v  Don't use ^x or M-x escapes" \
     1450
     1451#define chat_trivial_usage \
     1452       "EXPECT [SEND [EXPECT [SEND...]]]"
     1453#define chat_full_usage "\n\n" \
     1454       "Useful for interacting with a modem connected to stdin/stdout.\n" \
     1455       "A script consists of one or more \"expect-send\" pairs of strings,\n" \
     1456       "each pair is a pair of arguments. Example:\n" \
     1457       "chat '' ATZ OK ATD123456 CONNECT '' ogin: pppuser word: ppppass '~'" \
     1458
    1771459#define chattr_trivial_usage \
    178        "[-R] [-+=AacDdijsStTu] [-v version] files..."
    179 #define chattr_full_usage \
    180        "Change file attributes on an ext2 fs\n\n" \
    181        "Modifiers:\n" \
    182        "    -   Remove attributes\n" \
    183        "    +   Add attributes\n" \
    184        "    =   Set attributes\n" \
    185        "Attributes:\n" \
    186        "    A   Don't track atime\n" \
    187        "    a   Append mode only\n" \
    188        "    c   Enable compress\n" \
    189        "    D   Write dir contents synchronously\n" \
    190        "    d   Do not backup with dump\n" \
    191        "    i   Cannot be modified (immutable)\n" \
    192        "    j   Write all data to journal first\n" \
    193        "    s   Zero disk storage when deleted\n" \
    194        "    S   Write file contents synchronously\n" \
    195        "    t   Disable tail-merging of partial blocks with other files\n" \
    196        "    u   Allow file to be undeleted\n" \
    197        "Options:\n" \
    198        "    -R  Recursively list subdirectories\n" \
    199        "    -v  Set the file's version/generation number"
     1460       "[-R] [-+=AacDdijsStTu] [-v VERSION] [FILE]..."
     1461#define chattr_full_usage "\n\n" \
     1462       "Change file attributes on an ext2 fs\n" \
     1463     "\nModifiers:" \
     1464     "\n    -   Remove attributes" \
     1465     "\n    +   Add attributes" \
     1466     "\n    =   Set attributes" \
     1467     "\nAttributes:" \
     1468     "\n    A   Don't track atime" \
     1469     "\n    a   Append mode only" \
     1470     "\n    c   Enable compress" \
     1471     "\n    D   Write dir contents synchronously" \
     1472     "\n    d   Don't backup with dump" \
     1473     "\n    i   Cannot be modified (immutable)" \
     1474     "\n    j   Write all data to journal first" \
     1475     "\n    s   Zero disk storage when deleted" \
     1476     "\n    S   Write file contents synchronously" \
     1477     "\n    t   Disable tail-merging of partial blocks with other files" \
     1478     "\n    u   Allow file to be undeleted" \
     1479     "\nOptions:" \
     1480     "\n    -R  Recurse" \
     1481     "\n    -v  Set the file's version/generation number" \
    2001482
    2011483#define chcon_trivial_usage \
    202        "[OPTIONS] CONTEXT FILE...\n" \
    203        "    chcon [OPTIONS] [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE...\n" \
    204        "    chcon [OPTIONS] --reference=RFILE FILE...\n"
    205 #define chcon_full_usage \
     1484       "[OPTIONS] CONTEXT FILE..." \
     1485       "\n  chcon [OPTIONS] [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE..." \
     1486    IF_FEATURE_CHCON_LONG_OPTIONS( \
     1487       "\n  chcon [OPTIONS] --reference=RFILE FILE..." \
     1488    )
     1489#define chcon_full_usage "\n\n" \
    2061490       "Change the security context of each FILE to CONTEXT\n" \
    207        "\n  -v, --verbose       Verbose" \
    208        "\n  -c, --changes       Report changes made" \
    209        "\n  -h, --no-dereference    Affect symlinks instead of their targets" \
    210        "\n  -f, --silent, --quiet   Suppress most error messages" \
    211        "\n  --reference=RFILE   Use RFILE's group instead of using a CONTEXT value" \
    212        "\n  -u, --user=USER     Set user USER in the target security context" \
    213        "\n  -r, --role=ROLE     Set role ROLE in the target security context" \
    214        "\n  -t, --type=TYPE     Set type TYPE in the target security context" \
    215        "\n  -l, --range=RANGE   Set range RANGE in the target security context" \
    216        "\n  -R, --recursive     Recurse subdirectories" \
     1491    IF_FEATURE_CHCON_LONG_OPTIONS( \
     1492     "\n    -v,--verbose        Verbose" \
     1493     "\n    -c,--changes        Report changes made" \
     1494     "\n    -h,--no-dereference Affect symlinks instead of their targets" \
     1495     "\n    -f,--silent,--quiet Suppress most error messages" \
     1496     "\n    --reference=RFILE   Use RFILE's group instead of using a CONTEXT value" \
     1497     "\n    -u,--user=USER      Set user/role/type/range in the target" \
     1498     "\n    -r,--role=ROLE      security context" \
     1499     "\n    -t,--type=TYPE" \
     1500     "\n    -l,--range=RANGE" \
     1501     "\n    -R,--recursive      Recurse" \
     1502    ) \
     1503    IF_NOT_FEATURE_CHCON_LONG_OPTIONS( \
     1504     "\n    -v  Verbose" \
     1505     "\n    -c  Report changes made" \
     1506     "\n    -h  Affect symlinks instead of their targets" \
     1507     "\n    -f  Suppress most error messages" \
     1508     "\n    -u USER Set user/role/type/range in the target security context" \
     1509     "\n    -r ROLE" \
     1510     "\n    -t TYPE" \
     1511     "\n    -l RNG" \
     1512     "\n    -R  Recurse" \
     1513    )
    2171514
    2181515#define chmod_trivial_usage \
    219        "[-R"USE_DESKTOP("cvf")"] MODE[,MODE]... FILE..."
    220 #define chmod_full_usage \
     1516       "[-R"IF_DESKTOP("cvf")"] MODE[,MODE]... FILE..."
     1517#define chmod_full_usage "\n\n" \
    2211518       "Each MODE is one or more of the letters ugoa, one of the\n" \
    222        "symbols +-= and one or more of the letters rwxst" \
    223        "\n\nOptions:" \
    224        "\n  -R  Recurse directories" \
    225     USE_DESKTOP( \
    226        "\n  -c  List changed files" \
    227        "\n  -v  List all files" \
    228        "\n  -f  Hide errors" \
     1519       "symbols +-= and one or more of the letters rwxst\n" \
     1520     "\nOptions:" \
     1521     "\n    -R  Recurse" \
     1522    IF_DESKTOP( \
     1523     "\n    -c  List changed files" \
     1524     "\n    -v  List all files" \
     1525     "\n    -f  Hide errors" \
    2291526    )
    2301527#define chmod_example_usage \
     
    2391536
    2401537#define chgrp_trivial_usage \
    241        "[-RhLHP"USE_DESKTOP("cvf")"]... GROUP FILE..."
    242 #define chgrp_full_usage \
    243        "Change the group membership of each FILE to GROUP" \
    244        "\n\nOptions:" \
    245        "\n  -R  Recurse directories" \
    246        "\n  -h  Affect symlinks instead of symlink targets" \
    247        "\n  -L  Traverse all symlinks to directories" \
    248        "\n  -H  Traverse symlinks on command line only" \
    249        "\n  -P  Do not traverse symlinks (default)" \
    250     USE_DESKTOP( \
    251        "\n  -c  List changed files" \
    252        "\n  -v  Verbose" \
    253        "\n  -f  Hide errors" \
     1538       "[-RhLHP"IF_DESKTOP("cvf")"]... GROUP FILE..."
     1539#define chgrp_full_usage "\n\n" \
     1540       "Change the group membership of each FILE to GROUP\n" \
     1541     "\nOptions:" \
     1542     "\n    -R  Recurse" \
     1543     "\n    -h  Affect symlinks instead of symlink targets" \
     1544     "\n    -L  Traverse all symlinks to directories" \
     1545     "\n    -H  Traverse symlinks on command line only" \
     1546     "\n    -P  Don't traverse symlinks (default)" \
     1547    IF_DESKTOP( \
     1548     "\n    -c  List changed files" \
     1549     "\n    -v  Verbose" \
     1550     "\n    -f  Hide errors" \
    2541551    )
    2551552#define chgrp_example_usage \
     
    2611558
    2621559#define chown_trivial_usage \
    263        "[-RhLHP"USE_DESKTOP("cvf")"]... OWNER[<.|:>[GROUP]] FILE..."
    264 #define chown_full_usage \
    265        "Change the owner and/or group of each FILE to OWNER and/or GROUP" \
    266        "\n\nOptions:" \
    267        "\n  -R  Recurse directories" \
    268        "\n  -h  Affect symlinks instead of symlink targets" \
    269        "\n  -L  Traverse all symlinks to directories" \
    270        "\n  -H  Traverse symlinks on command line only" \
    271        "\n  -P  Do not traverse symlinks (default)" \
    272     USE_DESKTOP( \
    273        "\n  -c  List changed files" \
    274        "\n  -v  List all files" \
    275        "\n  -f  Hide errors" \
     1560       "[-RhLHP"IF_DESKTOP("cvf")"]... OWNER[<.|:>[GROUP]] FILE..."
     1561#define chown_full_usage "\n\n" \
     1562       "Change the owner and/or group of each FILE to OWNER and/or GROUP\n" \
     1563     "\nOptions:" \
     1564     "\n    -R  Recurse" \
     1565     "\n    -h  Affect symlinks instead of symlink targets" \
     1566     "\n    -L  Traverse all symlinks to directories" \
     1567     "\n    -H  Traverse symlinks on command line only" \
     1568     "\n    -P  Don't traverse symlinks (default)" \
     1569    IF_DESKTOP( \
     1570     "\n    -c  List changed files" \
     1571     "\n    -v  List all files" \
     1572     "\n    -f  Hide errors" \
    2761573    )
    2771574#define chown_example_usage \
     
    2861583
    2871584#define chpst_trivial_usage \
    288        "[-vP012] [-u user[:group]] [-U user[:group]] [-e dir] " \
    289        "[-/ dir] [-n nice] [-m bytes] [-d bytes] [-o files] " \
    290        "[-p processes] [-f bytes] [-c bytes] prog args"
    291 #define chpst_full_usage \
    292        "Change the process state and run specified program" \
    293        "\n\nOptions:\n" \
    294        "    -u user[:grp]   Set uid and gid\n" \
    295        "    -U user[:grp]   Set environment variables UID and GID\n" \
    296        "    -e dir      Set environment variables as specified by files\n" \
    297        "            in the directory: file=1st_line_of_file\n" \
    298        "    -/ dir      Chroot to dir\n" \
    299        "    -n inc      Add inc to nice value\n" \
    300        "    -m bytes    Limit data segment, stack segment, locked physical pages,\n" \
    301        "            and total of all segment per process to bytes bytes each\n" \
    302        "    -d bytes    Limit data segment\n" \
    303        "    -o n        Limit the number of open file descriptors per process to n\n" \
    304        "    -p n        Limit number of processes per uid to n\n" \
    305        "    -f bytes    Limit output file size to bytes bytes\n" \
    306        "    -c bytes    Limit core file size to bytes bytes\n" \
    307        "    -v      Verbose\n" \
    308        "    -P      Run prog in a new process group\n" \
    309        "    -0      Close standard input\n" \
    310        "    -1      Close standard output\n" \
    311        "    -2      Close standard error"
     1585       "[-vP012] [-u USER[:GRP]] [-U USER[:GRP]] [-e DIR]\n" \
     1586       "    [-/ DIR] [-n NICE] [-m BYTES] [-d BYTES] [-o N]\n" \
     1587       "    [-p N] [-f BYTES] [-c BYTES] PROG ARGS"
     1588#define chpst_full_usage "\n\n" \
     1589       "Change the process state, run PROG\n" \
     1590     "\nOptions:" \
     1591     "\n    -u USER[:GRP]   Set uid and gid" \
     1592     "\n    -U USER[:GRP]   Set $UID and $GID in environment" \
     1593     "\n    -e DIR      Set environment variables as specified by files" \
     1594     "\n            in DIR: file=1st_line_of_file" \
     1595     "\n    -/ DIR      Chroot to DIR" \
     1596     "\n    -n NICE     Add NICE to nice value" \
     1597     "\n    -m BYTES    Same as -d BYTES -s BYTES -l BYTES" \
     1598     "\n    -d BYTES    Limit data segment" \
     1599     "\n    -o N        Limit number of open files per process" \
     1600     "\n    -p N        Limit number of processes per uid" \
     1601     "\n    -f BYTES    Limit output file sizes" \
     1602     "\n    -c BYTES    Limit core file size" \
     1603     "\n    -v      Verbose" \
     1604     "\n    -P      Create new process group" \
     1605     "\n    -0      Close stdin" \
     1606     "\n    -1      Close stdout" \
     1607     "\n    -2      Close stderr" \
     1608
    3121609#define setuidgid_trivial_usage \
    313        "account prog args"
    314 #define setuidgid_full_usage \
    315        "Set uid and gid to account's uid and gid, removing all supplementary\n" \
    316        "groups, then run prog"
     1610       "USER PROG ARGS"
     1611#define setuidgid_full_usage "\n\n" \
     1612       "Set uid and gid to USER's uid and gid, drop supplementary group ids,\n" \
     1613       "run PROG"
    3171614#define envuidgid_trivial_usage \
    318        "account prog args"
    319 #define envuidgid_full_usage \
    320        "Set $UID to account's uid and $GID to account's gid, then run prog"
     1615       "USER PROG ARGS"
     1616#define envuidgid_full_usage "\n\n" \
     1617       "Set $UID to USER's uid and $GID to USER's gid, run PROG"
    3211618#define envdir_trivial_usage \
    322        "dir prog args"
    323 #define envdir_full_usage \
     1619       "DIR PROG ARGS"
     1620#define envdir_full_usage "\n\n" \
    3241621       "Set various environment variables as specified by files\n" \
    325        "in the directory dir, then run prog"
     1622       "in the directory DIR, run PROG"
    3261623#define softlimit_trivial_usage \
    327        "[-a allbytes] [-c corebytes] [-d databytes] [-f filebytes] " \
    328        "[-l lockbytes] [-m membytes] [-o openfiles] [-p processes] " \
    329        "[-r residentbytes] [-s stackbytes] [-t cpusecs] prog args"
    330 #define softlimit_full_usage \
    331        "Set soft resource limits, then run prog" \
    332        "\n\nOptions:\n" \
    333        "    -m n    Same as -d n -s n -l n -a n\n" \
    334        "    -d n    Limit the data segment per process to n bytes\n" \
    335        "    -s n    Limit the stack segment per process to n bytes\n" \
    336        "    -l n    Limit the locked physical pages per process to n bytes\n" \
    337        "    -a n    Limit the total of all segments per process to n bytes\n" \
    338        "    -o n    Limit the number of open file descriptors per process to n\n" \
    339        "    -p n    Limit the number of processes per uid to n\n" \
    340        "Options controlling file sizes:\n" \
    341        "    -f n    Limit output file sizes to n bytes\n" \
    342        "    -c n    Limit core file sizes to n bytes\n" \
    343        "Efficiency opts:\n" \
    344        "    -r n    Limit the resident set size to n bytes. This limit is not\n" \
    345        "        enforced unless physical memory is full\n" \
    346        "    -t n    Limit the CPU time to n seconds. This limit is not enforced\n" \
    347        "        except that the process receives a SIGXCPU signal after n seconds\n" \
    348        "\n" \
    349        "Some options may have no effect on some operating systems\n" \
    350        "n may be =, indicating that soft limit should be set equal to hard limit"
     1624       "[-a BYTES] [-m BYTES] [-d BYTES] [-s BYTES] [-l BYTES]\n" \
     1625       "    [-f BYTES] [-c BYTES] [-r BYTES] [-o N] [-p N] [-t N]\n" \
     1626       "    PROG ARGS"
     1627#define softlimit_full_usage "\n\n" \
     1628       "Set soft resource limits, then run PROG\n" \
     1629     "\nOptions:" \
     1630     "\n    -a BYTES    Limit total size of all segments" \
     1631     "\n    -m BYTES    Same as -d BYTES -s BYTES -l BYTES -a BYTES" \
     1632     "\n    -d BYTES    Limit data segment" \
     1633     "\n    -s BYTES    Limit stack segment" \
     1634     "\n    -l BYTES    Limit locked memory size" \
     1635     "\n    -o N        Limit number of open files per process" \
     1636     "\n    -p N        Limit number of processes per uid" \
     1637     "\nOptions controlling file sizes:" \
     1638     "\n    -f BYTES    Limit output file sizes" \
     1639     "\n    -c BYTES    Limit core file size" \
     1640     "\nEfficiency opts:" \
     1641     "\n    -r BYTES    Limit resident set size" \
     1642     "\n    -t N        Limit CPU time, process receives" \
     1643     "\n            a SIGXCPU after N seconds" \
    3511644
    3521645#define chroot_trivial_usage \
    353        "NEWROOT [COMMAND...]"
    354 #define chroot_full_usage \
    355        "Run COMMAND with root directory set to NEWROOT"
     1646       "NEWROOT [PROG ARGS]"
     1647#define chroot_full_usage "\n\n" \
     1648       "Run PROG with root directory set to NEWROOT"
    3561649#define chroot_example_usage \
    3571650       "$ ls -l /bin/ls\n" \
     
    3641657#define chvt_trivial_usage \
    3651658       "N"
    366 #define chvt_full_usage \
     1659#define chvt_full_usage "\n\n" \
    3671660       "Change the foreground virtual terminal to /dev/ttyN"
    3681661
    3691662#define cksum_trivial_usage \
    3701663       "FILES..."
    371 #define cksum_full_usage \
     1664#define cksum_full_usage "\n\n" \
    3721665       "Calculate the CRC32 checksums of FILES"
    3731666
    3741667#define clear_trivial_usage \
    3751668       ""
    376 #define clear_full_usage \
     1669#define clear_full_usage "\n\n" \
    3771670       "Clear screen"
    3781671
    3791672#define cmp_trivial_usage \
    380        "[-l] [-s] FILE1 [FILE2" USE_DESKTOP(" [SKIP1 [SKIP2]") "]]"
    381 #define cmp_full_usage \
    382        "Compares FILE1 vs stdin if FILE2 is not specified" \
    383        "\n\nOptions:\n" \
    384        "    -l  Write the byte numbers (decimal) and values (octal)\n" \
    385        "        for all differing bytes\n" \
    386        "    -s  Quiet"
     1673       "[-l] [-s] FILE1 [FILE2" IF_DESKTOP(" [SKIP1 [SKIP2]]") "]"
     1674#define cmp_full_usage "\n\n" \
     1675       "Compare FILE1 with FILE2 (or stdin)\n" \
     1676     "\nOptions:" \
     1677     "\n    -l  Write the byte numbers (decimal) and values (octal)" \
     1678     "\n        for all differing bytes" \
     1679     "\n    -s  Quiet" \
    3871680
    3881681#define comm_trivial_usage \
    3891682       "[-123] FILE1 FILE2"
    390 #define comm_full_usage \
    391        "Compare FILE1 to FILE2, or to stdin if - is specified" \
    392        "\n\nOptions:\n" \
    393        "    -1  Suppress lines unique to FILE1\n" \
    394        "    -2  Suppress lines unique to FILE2\n" \
    395        "    -3  Suppress lines common to both files"
     1683#define comm_full_usage "\n\n" \
     1684       "Compare FILE1 with FILE2\n" \
     1685     "\nOptions:" \
     1686     "\n    -1  Suppress lines unique to FILE1" \
     1687     "\n    -2  Suppress lines unique to FILE2" \
     1688     "\n    -3  Suppress lines common to both files" \
    3961689
    3971690#define bbconfig_trivial_usage \
    3981691       ""
    399 #define bbconfig_full_usage \
    400        "Print the config file which built busybox"
    401 
    402 #define bbsh_trivial_usage \
    403        "[FILE]...\n" \
    404        "or: bbsh -c command [args]..."
    405 #define bbsh_full_usage \
    406        "The bbsh shell (command interpreter)"
     1692#define bbconfig_full_usage "\n\n" \
     1693       "Print the config file used by busybox build"
    4071694
    4081695#define chrt_trivial_usage \
    409        "[OPTION]... [prio] [pid | command [arg]...]"
    410 #define chrt_full_usage \
    411        "manipulate real-time attributes of a process" \
    412        "\n\nOptions:\n" \
    413        "    -p  operate on pid\n" \
    414        "    -r  set scheduling policy to SCHED_RR\n" \
    415        "    -f  set scheduling policy to SCHED_FIFO\n" \
    416        "    -o  set scheduling policy to SCHED_OTHER\n" \
    417        "    -m  show min and max priorities"
     1696       "[-prfom] [PRIO] [PID | PROG ARGS]"
     1697#define chrt_full_usage "\n\n" \
     1698       "Change scheduling priority and class for a process\n" \
     1699     "\nOptions:" \
     1700     "\n    -p  Operate on PID" \
     1701     "\n    -r  Set SCHED_RR class" \
     1702     "\n    -f  Set SCHED_FIFO class" \
     1703     "\n    -o  Set SCHED_OTHER class" \
     1704     "\n    -m  Show min/max priorities" \
    4181705
    4191706#define chrt_example_usage \
     
    4221709       "You need CAP_SYS_NICE privileges to set scheduling attributes of a process"
    4231710
     1711#define nice_trivial_usage \
     1712       "[-n ADJUST] [PROG ARGS]"
     1713#define nice_full_usage "\n\n" \
     1714       "Change scheduling priority, run PROG\n" \
     1715     "\nOptions:" \
     1716     "\n    -n ADJUST   Adjust priority by ADJUST" \
     1717
     1718#define renice_trivial_usage \
     1719       "{{-n INCREMENT} | PRIORITY} [[-p | -g | -u] ID...]"
     1720#define renice_full_usage "\n\n" \
     1721       "Change scheduling priority for a running process\n" \
     1722     "\nOptions:" \
     1723     "\n    -n  Adjust current nice value (smaller is faster)" \
     1724     "\n    -p  Process id(s) (default)" \
     1725     "\n    -g  Process group id(s)" \
     1726     "\n    -u  Process user name(s) and/or id(s)" \
     1727
     1728#define ionice_trivial_usage \
     1729    "[-c 1-3] [-n 0-7] [-p PID] [PROG]"
     1730#define ionice_full_usage "\n\n" \
     1731       "Change I/O priority and class\n" \
     1732     "\nOptions:" \
     1733     "\n    -c  Class. 1:realtime 2:best-effort 3:idle" \
     1734     "\n    -n  Priority" \
     1735
    4241736#define cp_trivial_usage \
    425        "[OPTION]... SOURCE DEST"
    426 #define cp_full_usage \
    427        "Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY" \
    428        "\n\nOptions:" \
    429        "\n  -a  Same as -dpR" \
    430     USE_SELINUX( \
    431        "\n  -c  Preserves security context" \
    432     ) \
    433        "\n  -d,-P   Preserve links" \
    434        "\n  -H,-L   Dereference all symlinks (default)" \
    435        "\n  -p  Preserve file attributes if possible" \
    436        "\n  -f  Force overwrite" \
    437        "\n  -i  Prompt before overwrite" \
    438        "\n  -R,-r   Recurse directories" \
    439        "\n  -l,-s   Create (sym)links"
     1737       "[OPTIONS] SOURCE DEST"
     1738#define cp_full_usage "\n\n" \
     1739       "Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY\n" \
     1740     "\nOptions:" \
     1741     "\n    -a  Same as -dpR" \
     1742    IF_SELINUX( \
     1743     "\n    -c  Preserve security context" \
     1744    ) \
     1745     "\n    -R,-r   Recurse" \
     1746     "\n    -d,-P   Preserve symlinks (default if -R)" \
     1747     "\n    -L  Follow all symlinks" \
     1748     "\n    -H  Follow symlinks on command line" \
     1749     "\n    -p  Preserve file attributes if possible" \
     1750     "\n    -f  Overwrite" \
     1751     "\n    -i  Prompt before overwrite" \
     1752     "\n    -l,-s   Create (sym)links" \
    4401753
    4411754#define cpio_trivial_usage \
    442        "-[dimtuv][F cpiofile]"
    443 #define cpio_full_usage \
    444        "Extract or list files from a cpio archive\n" \
    445        "Main operation mode:\n" \
    446        "    d   Make leading directories\n" \
    447        "    i   Extract\n" \
    448        "    m   Preserve mtime\n" \
    449        "    t   List\n" \
    450        "    v   Verbose\n" \
    451        "    u   Unconditional overwrite\n" \
    452        "    F   Input from file"
     1755       "[-dmvu] [-F FILE]" IF_FEATURE_CPIO_O(" [-H newc]") \
     1756       " [-ti"IF_FEATURE_CPIO_O("o")"]" IF_FEATURE_CPIO_P(" [-p DIR]")
     1757#define cpio_full_usage "\n\n" \
     1758       "Extract or list files from a cpio archive" \
     1759    IF_FEATURE_CPIO_O(", or" \
     1760     "\ncreate an archive" IF_FEATURE_CPIO_P(" (-o) or copy files (-p)") \
     1761        " using file list on stdin" \
     1762    ) \
     1763     "\n" \
     1764     "\nMain operation mode:" \
     1765     "\n    -t  List" \
     1766     "\n    -i  Extract" \
     1767    IF_FEATURE_CPIO_O( \
     1768     "\n    -o  Create (requires -H newc)" \
     1769    ) \
     1770    IF_FEATURE_CPIO_P( \
     1771     "\n    -p DIR  Copy files to DIR" \
     1772    ) \
     1773     "\nOptions:" \
     1774     "\n    -d  Make leading directories" \
     1775     "\n    -m  Preserve mtime" \
     1776     "\n    -v  Verbose" \
     1777     "\n    -u  Overwrite" \
     1778     "\n    -F FILE Input (-t,-i,-p) or output (-o) file" \
     1779    IF_FEATURE_CPIO_O( \
     1780     "\n    -H newc Archive format" \
     1781    ) \
    4531782
    4541783#define crond_trivial_usage \
    455        "-d[#] -c crondir -f -b"
    456 #define crond_full_usage \
    457        "    -d [#] -l [#] -S -L logfile -f -b -c dir\n" \
    458        "    -d num  Debug level\n" \
    459        "    -l num  Log level (8 - default)\n" \
    460        "    -S  Log to syslogd (default)\n" \
    461        "    -L file Log to file\n" \
    462        "    -f  Run in foreground\n" \
    463        "    -b  Run in background (default)\n" \
    464        "    -c dir  Working dir"
     1784       "-fbS -l N " IF_FEATURE_CROND_D("-d N ") "-L LOGFILE -c DIR"
     1785#define crond_full_usage "\n\n" \
     1786       "    -f  Foreground" \
     1787     "\n    -b  Background (default)" \
     1788     "\n    -S  Log to syslog (default)" \
     1789     "\n    -l  Set log level. 0 is the most verbose, default 8" \
     1790    IF_FEATURE_CROND_D( \
     1791     "\n    -d  Set log level, log to stderr" \
     1792    ) \
     1793     "\n    -L  Log to file" \
     1794     "\n    -c  Working dir" \
    4651795
    4661796#define crontab_trivial_usage \
    467        "[-c dir] {file|-}|[-u|-l|-e|-d user]"
    468 #define crontab_full_usage \
    469        "    file [opts] Replace crontab from file\n" \
    470        "    - [opts]    Replace crontab from stdin\n" \
    471        "    -u user     Specify user\n" \
    472        "    -l [user]   List crontab for user\n" \
    473        "    -e [user]   Edit crontab for user\n" \
    474        "    -d [user]   Delete crontab for user\n" \
    475        "    -c dir      Specify crontab directory"
     1797       "[-c DIR] [-u USER] [-ler]|[FILE]"
     1798#define crontab_full_usage "\n\n" \
     1799       "    -c  Crontab directory" \
     1800     "\n    -u  User" \
     1801     "\n    -l  List crontab" \
     1802     "\n    -e  Edit crontab" \
     1803     "\n    -r  Delete crontab" \
     1804     "\n    FILE    Replace crontab by FILE ('-': stdin)" \
    4761805
    4771806#define cryptpw_trivial_usage \
    478        "[-a des|md5] [string]"
    479 #define cryptpw_full_usage \
    480        "Outputs crypted string.\n" \
    481        "If string isn't supplied on cmdline, reads it from stdin.\n" \
    482        "\nOptions:" \
    483        "\n  -a  Algorithm to use (default: md5)"
     1807       "[OPTIONS] [PASSWORD] [SALT]"
     1808/* We do support -s, we just don't mention it */
     1809#define cryptpw_full_usage "\n\n" \
     1810       "Crypt the PASSWORD using crypt(3)\n" \
     1811     "\nOptions:" \
     1812    IF_LONG_OPTS( \
     1813     "\n    -P,--password-fd=N  Read password from fd N" \
     1814/*   "\n    -s,--stdin      Use stdin; like -P0" */ \
     1815     "\n    -m,--method=TYPE    Encryption method TYPE" \
     1816     "\n    -S,--salt=SALT" \
     1817    ) \
     1818    IF_NOT_LONG_OPTS( \
     1819     "\n    -P N    Read password from fd N" \
     1820/*   "\n    -s  Use stdin; like -P0" */ \
     1821     "\n    -m TYPE Encryption method TYPE" \
     1822     "\n    -S SALT" \
     1823    ) \
     1824
     1825/* mkpasswd is an alias to cryptpw */
     1826
     1827#define mkpasswd_trivial_usage \
     1828       "[OPTIONS] [PASSWORD] [SALT]"
     1829/* We do support -s, we just don't mention it */
     1830#define mkpasswd_full_usage "\n\n" \
     1831       "Crypt the PASSWORD using crypt(3)\n" \
     1832     "\nOptions:" \
     1833    IF_LONG_OPTS( \
     1834     "\n    -P,--password-fd=N  Read password from fd N" \
     1835/*   "\n    -s,--stdin      Use stdin; like -P0" */ \
     1836     "\n    -m,--method=TYPE    Encryption method TYPE" \
     1837     "\n    -S,--salt=SALT" \
     1838    ) \
     1839    IF_NOT_LONG_OPTS( \
     1840     "\n    -P N    Read password from fd N" \
     1841/*   "\n    -s  Use stdin; like -P0" */ \
     1842     "\n    -m TYPE Encryption method TYPE" \
     1843     "\n    -S SALT" \
     1844    ) \
    4841845
    4851846#define cut_trivial_usage \
    486        "[OPTION]... [FILE]..."
    487 #define cut_full_usage \
    488        "Print selected fields from each input FILE to standard output" \
    489        "\n\nOptions:\n" \
    490        "    -b LIST Output only bytes from LIST\n" \
    491        "    -c LIST Output only characters from LIST\n" \
    492        "    -d CHAR Use CHAR instead of tab as the field delimiter\n" \
    493        "    -s  Output only the lines containing delimiter\n" \
    494        "    -f N    Print only these fields\n" \
    495        "    -n  Ignored"
     1847       "[OPTIONS] [FILE]..."
     1848#define cut_full_usage "\n\n" \
     1849       "Print selected fields from each input FILE to stdout\n" \
     1850     "\nOptions:" \
     1851     "\n    -b LIST Output only bytes from LIST" \
     1852     "\n    -c LIST Output only characters from LIST" \
     1853     "\n    -d CHAR Use CHAR instead of tab as the field delimiter" \
     1854     "\n    -s  Output only the lines containing delimiter" \
     1855     "\n    -f N    Print only these fields" \
     1856     "\n    -n  Ignored" \
     1857
    4961858#define cut_example_usage \
    4971859       "$ echo \"Hello world\" | cut -f 1 -d ' '\n" \
     
    5001862       "world\n"
    5011863
    502 #define date_trivial_usage \
    503        "[OPTION]... [MMDDhhmm[[CC]YY][.ss]] [+FORMAT]"
    504 #define date_full_usage \
    505        "Display current time in the given FORMAT, or set system date" \
    506        "\n\nOptions:\n" \
    507        "    -R      Outputs RFC-822 compliant date string\n" \
    508        "    -d STRING   Displays time described by STRING, not 'now'\n" \
    509     USE_FEATURE_DATE_ISOFMT( \
    510        "    -I[TIMESPEC]    Outputs an ISO-8601 compliant date/time string\n" \
    511        "            TIMESPEC='date' (or missing) for date only,\n" \
    512        "            'hours', 'minutes', or 'seconds' for date and,\n" \
    513        "            time to the indicated precision\n" \
    514        "    -D hint     Use 'hint' as date format, via strptime()\n" \
    515     ) \
    516        "    -s      Sets time described by STRING\n" \
    517        "    -r FILE     Displays the last modification time of FILE\n" \
    518        "    -u      Prints or sets Coordinated Universal Time"
    519 #define date_example_usage \
    520        "$ date\n" \
    521        "Wed Apr 12 18:52:41 MDT 2000\n"
    522 
    523 #define dc_trivial_usage \
    524        "expression ..."
    525 #define dc_full_usage \
    526        "This is a Tiny RPN calculator that understands the\n" \
    527        "following operations: +, add, -, sub, *, mul, /, div, %, mod, " \
    528        "**, exp, and, or, not, eor.\n" \
    529        "For example: 'dc 2 2 add' -> 4, and 'dc 8 8 \\* 2 2 + /' -> 16." \
    530        "\n\nOptions:\n" \
    531        "p - Prints the value on the top of the stack, without altering the stack\n" \
    532        "f - Prints the entire contents of the stack without altering anything\n" \
    533        "o - Pops the value off the top of the stack and uses it to set the output radix\n" \
    534        "    Only 10 and 16 are supported"
    535 #define dc_example_usage \
    536        "$ dc 2 2 + p\n" \
    537        "4\n" \
    538        "$ dc 8 8 \\* 2 2 + / p\n" \
    539        "16\n" \
    540        "$ dc 0 1 and p\n" \
    541        "0\n" \
    542        "$ dc 0 1 or p\n" \
    543        "1\n" \
    544        "$ echo 72 9 div 8 mul p | dc\n" \
    545        "64\n"
    546 
    5471864#define dd_trivial_usage \
    548        "[if=FILE] [of=FILE] " USE_FEATURE_DD_IBS_OBS("[ibs=N] [obs=N] ") "[bs=N] [count=N] [skip=N]\n" \
    549        "    [seek=N]" USE_FEATURE_DD_IBS_OBS(" [conv=notrunc|noerror|sync]")
    550 #define dd_full_usage \
    551        "Copy a file with converting and formatting" \
    552        "\n\nOptions:\n" \
    553        "    if=FILE     Read from FILE instead of stdin\n" \
    554        "    of=FILE     Write to FILE instead of stdout\n" \
    555        "    bs=N        Read and write N bytes at a time\n" \
    556     USE_FEATURE_DD_IBS_OBS( \
    557        "    ibs=N       Read N bytes at a time\n") \
    558     USE_FEATURE_DD_IBS_OBS( \
    559        "    obs=N       Write N bytes at a time\n") \
    560        "    count=N     Copy only N input blocks\n" \
    561        "    skip=N      Skip N input blocks\n" \
    562        "    seek=N      Skip N output blocks\n" \
    563     USE_FEATURE_DD_IBS_OBS( \
    564        "    conv=notrunc    Don't truncate output file\n" \
    565        "    conv=noerror    Continue after read errors\n" \
    566        "    conv=sync   Pad blocks with zeros\n") \
    567        "\n" \
    568        "Numbers may be suffixed by c (x1), w (x2), b (x512), kD (x1000), k (x1024),\n" \
    569        "MD (x1000000), M (x1048576), GD (x1000000000) or G (x1073741824)"
     1865       "[if=FILE] [of=FILE] " IF_FEATURE_DD_IBS_OBS("[ibs=N] [obs=N] ") "[bs=N] [count=N] [skip=N]\n" \
     1866       "    [seek=N]" IF_FEATURE_DD_IBS_OBS(" [conv=notrunc|noerror|sync|fsync]")
     1867#define dd_full_usage "\n\n" \
     1868       "Copy a file with converting and formatting\n" \
     1869     "\nOptions:" \
     1870     "\n    if=FILE     Read from FILE instead of stdin" \
     1871     "\n    of=FILE     Write to FILE instead of stdout" \
     1872     "\n    bs=N        Read and write N bytes at a time" \
     1873    IF_FEATURE_DD_IBS_OBS( \
     1874     "\n    ibs=N       Read N bytes at a time" \
     1875    ) \
     1876    IF_FEATURE_DD_IBS_OBS( \
     1877     "\n    obs=N       Write N bytes at a time" \
     1878    ) \
     1879     "\n    count=N     Copy only N input blocks" \
     1880     "\n    skip=N      Skip N input blocks" \
     1881     "\n    seek=N      Skip N output blocks" \
     1882    IF_FEATURE_DD_IBS_OBS( \
     1883     "\n    conv=notrunc    Don't truncate output file" \
     1884     "\n    conv=noerror    Continue after read errors" \
     1885     "\n    conv=sync   Pad blocks with zeros" \
     1886     "\n    conv=fsync  Physically write data out before finishing" \
     1887    ) \
     1888     "\n" \
     1889     "\nNumbers may be suffixed by c (x1), w (x2), b (x512), kD (x1000), k (x1024)," \
     1890     "\nMD (x1000000), M (x1048576), GD (x1000000000) or G (x1073741824)" \
     1891
    5701892#define dd_example_usage \
    5711893       "$ dd if=/dev/zero of=/dev/ram1 bs=1M count=4\n" \
     
    5751897#define deallocvt_trivial_usage \
    5761898       "[N]"
    577 #define deallocvt_full_usage \
     1899#define deallocvt_full_usage "\n\n" \
    5781900       "Deallocate unused virtual terminal /dev/ttyN"
    5791901
    5801902#define delgroup_trivial_usage \
    581     USE_FEATURE_DEL_USER_FROM_GROUP("[USER] ")"GROUP"
    582 #define delgroup_full_usage \
     1903    IF_FEATURE_DEL_USER_FROM_GROUP("[USER] ")"GROUP"
     1904#define delgroup_full_usage "\n\n" \
    5831905       "Delete group GROUP from the system" \
    584     USE_FEATURE_DEL_USER_FROM_GROUP(" or user USER from group GROUP")
     1906    IF_FEATURE_DEL_USER_FROM_GROUP(" or user USER from group GROUP")
    5851907
    5861908#define deluser_trivial_usage \
    5871909       "USER"
    588 #define deluser_full_usage \
    589        "Delete user USER from the system"
     1910#define deluser_full_usage "\n\n" \
     1911       "Delete USER from the system"
     1912
     1913#define devmem_trivial_usage \
     1914    "ADDRESS [WIDTH [VALUE]]"
     1915
     1916#define devmem_full_usage "\n\n" \
     1917       "Read/write from physical address\n" \
     1918     "\n    ADDRESS Address to act upon" \
     1919     "\n    WIDTH   Width (8/16/...)" \
     1920     "\n    VALUE   Data to be written" \
    5901921
    5911922#define devfsd_trivial_usage \
    592        "mntpnt [-v]" \
    593     USE_DEVFSD_FG_NP("[-fg][-np]" )
    594 #define devfsd_full_usage \
    595        "Manage devfs permissions and old device name symlinks" \
    596        "\n\nOptions:" \
    597        "\n  mntpnt  The mount point where devfs is mounted" \
    598        "\n  -v  Print the protocol version numbers for devfsd" \
    599        "\n      and the kernel-side protocol version and exits" \
    600     USE_DEVFSD_FG_NP( \
    601        "\n  -fg Run the daemon in the foreground" \
    602        "\n  -np Exit after parsing the configuration file" \
    603        "\n      and processing synthetic REGISTER events," \
    604        "\n      do not poll for events")
     1923       "mntpnt [-v]" IF_DEVFSD_FG_NP("[-fg][-np]")
     1924#define devfsd_full_usage "\n\n" \
     1925       "Manage devfs permissions and old device name symlinks\n" \
     1926     "\nOptions:" \
     1927     "\n    mntpnt  The mount point where devfs is mounted" \
     1928     "\n    -v  Print the protocol version numbers for devfsd" \
     1929     "\n        and the kernel-side protocol version and exit" \
     1930    IF_DEVFSD_FG_NP( \
     1931     "\n    -fg Run in foreground" \
     1932     "\n    -np Exit after parsing the configuration file" \
     1933     "\n        and processing synthetic REGISTER events," \
     1934     "\n        don't poll for events" \
     1935    )
    6051936
    6061937#define df_trivial_usage \
    607        "[-" USE_FEATURE_HUMAN_READABLE("hm") "k] [FILESYSTEM ...]"
    608 #define df_full_usage \
    609        "Print the filesystem space used and space available" \
    610     USE_FEATURE_HUMAN_READABLE( \
    611        "\n\nOptions control size display:" \
    612        "\n  -h  Human readable (e.g. 1K 243M 2G)" \
    613        "\n  -m  1024*1024 blocks" \
    614        "\n  -k  1024 blocks") \
    615     SKIP_FEATURE_HUMAN_READABLE( \
    616        "\n\nOptions:" \
    617        "\n  -k  Ignored")
     1938    "[-Pk" \
     1939    IF_FEATURE_HUMAN_READABLE("mh") \
     1940    IF_FEATURE_DF_FANCY("ai] [-B SIZE") \
     1941    "] [FILESYSTEM]..."
     1942#define df_full_usage "\n\n" \
     1943       "Print filesystem usage statistics\n" \
     1944     "\nOptions:" \
     1945     "\n    -P  POSIX output format" \
     1946     "\n    -k  1024-byte blocks (default)" \
     1947    IF_FEATURE_HUMAN_READABLE( \
     1948     "\n    -m  1M-byte blocks" \
     1949     "\n    -h  Human readable (e.g. 1K 243M 2G)" \
     1950    ) \
     1951    IF_FEATURE_DF_FANCY( \
     1952     "\n    -a  Show all filesystems" \
     1953     "\n    -i  Inodes" \
     1954     "\n    -B SIZE Blocksize" \
     1955    ) \
     1956
    6181957#define df_example_usage \
    6191958       "$ df\n" \
    620        "Filesystem           1k-blocks      Used Available Use% Mounted on\n" \
     1959       "Filesystem           1K-blocks      Used Available Use% Mounted on\n" \
    6211960       "/dev/sda3              8690864   8553540    137324  98% /\n" \
    6221961       "/dev/sda1                64216     36364     27852  57% /boot\n" \
    6231962       "$ df /dev/sda3\n" \
    624        "Filesystem           1k-blocks      Used Available Use% Mounted on\n" \
    625        "/dev/sda3              8690864   8553540    137324  98% /\n"
     1963       "Filesystem           1K-blocks      Used Available Use% Mounted on\n" \
     1964       "/dev/sda3              8690864   8553540    137324  98% /\n" \
     1965       "$ POSIXLY_CORRECT=sure df /dev/sda3\n" \
     1966       "Filesystem         512B-blocks      Used Available Use% Mounted on\n" \
     1967       "/dev/sda3             17381728  17107080    274648  98% /\n" \
     1968       "$ POSIXLY_CORRECT=yep df -P /dev/sda3\n" \
     1969       "Filesystem          512-blocks      Used Available Capacity Mounted on\n" \
     1970       "/dev/sda3             17381728  17107080    274648      98% /\n"
    6261971
    6271972#define dhcprelay_trivial_usage \
    628        "[client_device_list] [server_device]"
    629 #define dhcprelay_full_usage \
    630        "Relay dhcp requests from client devices to server device"
    631 
    632 #define dhcprelay_trivial_usage \
    633        "[client_device_list] [server_device]"
    634 #define dhcprelay_full_usage \
    635        "Relay dhcp requests from client devices to server device"
     1973       "CLIENT_IFACE[,CLIENT_IFACE2]... SERVER_IFACE [SERVER_IP]"
     1974#define dhcprelay_full_usage "\n\n" \
     1975       "Relay DHCP requests between clients and server" \
    6361976
    6371977#define diff_trivial_usage \
    638        "[-abdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2"
    639 #define diff_full_usage \
     1978       "[-abBdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2"
     1979#define diff_full_usage "\n\n" \
    6401980       "Compare files line by line and output the differences between them.\n" \
    641        "This diff implementation only supports unified diffs." \
    642        "\n\nOptions:\n" \
    643        "    -a  Treat all files as text\n" \
    644        "    -b  Ignore changes in the amount of whitespace\n" \
    645        "    -d  Try hard to find a smaller set of changes\n" \
    646        "    -i  Ignore case differences\n" \
    647        "    -L  Use LABEL instead of the filename in the unified header\n" \
    648        "    -N  Treat absent files as empty\n" \
    649        "    -q  Output only whether files differ\n" \
    650        "    -r  Recursively compare subdirectories\n" \
    651        "    -S  Start with FILE when comparing directories\n" \
    652        "    -T  Make tabs line up by prefixing a tab when necessary\n" \
    653        "    -s  Report when two files are the same\n" \
    654        "    -t  Expand tabs to spaces in output\n" \
    655        "    -U  Output LINES lines of context\n" \
    656        "    -w  Ignore all whitespace"
     1981       "This implementation supports unified diffs only.\n" \
     1982     "\nOptions:" \
     1983     "\n    -a  Treat all files as text" \
     1984     "\n    -b  Ignore changes in the amount of whitespace" \
     1985     "\n    -B  Ignore changes whose lines are all blank" \
     1986     "\n    -d  Try hard to find a smaller set of changes" \
     1987     "\n    -i  Ignore case differences" \
     1988     "\n    -L  Use LABEL instead of the filename in the unified header" \
     1989     "\n    -N  Treat absent files as empty" \
     1990     "\n    -q  Output only whether files differ" \
     1991     "\n    -r  Recurse" \
     1992     "\n    -S  Start with FILE when comparing directories" \
     1993     "\n    -T  Make tabs line up by prefixing a tab when necessary" \
     1994     "\n    -s  Report when two files are the same" \
     1995     "\n    -t  Expand tabs to spaces in output" \
     1996     "\n    -U  Output LINES lines of context" \
     1997     "\n    -w  Ignore all whitespace" \
    6571998
    6581999#define dirname_trivial_usage \
    6592000       "FILENAME"
    660 #define dirname_full_usage \
     2001#define dirname_full_usage "\n\n" \
    6612002       "Strip non-directory suffix from FILENAME"
    6622003#define dirname_example_usage \
     
    6682009#define dmesg_trivial_usage \
    6692010       "[-c] [-n LEVEL] [-s SIZE]"
    670 #define dmesg_full_usage \
    671        "Print or control the kernel ring buffer" \
    672        "\n\nOptions:\n" \
    673        "    -c      Clears the ring buffer's contents after printing\n" \
    674        "    -n LEVEL    Sets console logging level\n" \
    675        "    -s SIZE     Use a buffer of size SIZE"
     2011#define dmesg_full_usage "\n\n" \
     2012       "Print or control the kernel ring buffer\n" \
     2013     "\nOptions:" \
     2014     "\n    -c      Clear ring buffer after printing" \
     2015     "\n    -n LEVEL    Set console logging level" \
     2016     "\n    -s SIZE     Buffer size" \
    6762017
    6772018#define dnsd_trivial_usage \
    678        "[-c config] [-t seconds] [-p port] [-i iface-ip] [-d]"
    679 #define dnsd_full_usage \
    680        "Small and static DNS server daemon" \
    681        "\n\nOptions:\n" \
    682        "    -c  Config filename\n" \
    683        "    -t  TTL in seconds\n" \
    684        "    -p  Listening port\n" \
    685        "    -i  Listening ip (default all)\n" \
    686        "    -d  Daemonize"
     2019       "[-dvs] [-c CONFFILE] [-t TTL_SEC] [-p PORT] [-i ADDR]"
     2020#define dnsd_full_usage "\n\n" \
     2021       "Small static DNS server daemon\n" \
     2022     "\nOptions:" \
     2023     "\n    -c FILE Config file" \
     2024     "\n    -t SEC  TTL" \
     2025     "\n    -p PORT Listen on PORT" \
     2026     "\n    -i ADDR Listen on ADDR" \
     2027     "\n    -d  Daemonize" \
     2028     "\n    -v  Verbose" \
     2029     "\n    -s  Send successful replies only. Use this if you want" \
     2030     "\n        to use /etc/resolv.conf with two nameserver lines:" \
     2031     "\n            nameserver DNSD_SERVER" \
     2032     "\n            nameserver NORNAL_DNS_SERVER" \
    6872033
    6882034#define dos2unix_trivial_usage \
    689        "[option] [FILE]"
    690 #define dos2unix_full_usage \
    691        "Convert FILE from dos format to unix format. When no option\n" \
    692        "is given, the input is converted to the opposite output format.\n" \
    693        "When no file is given, use stdin for input and stdout for output." \
    694        "\n\nOptions:\n" \
    695        "    -u  Output will be in UNIX format\n" \
    696        "    -d  Output will be in DOS format"
     2035       "[-ud] [FILE]"
     2036#define dos2unix_full_usage "\n\n" \
     2037       "Convert FILE in-place from DOS to Unix format.\n" \
     2038       "When no file is given, use stdin/stdout.\n" \
     2039     "\nOptions:" \
     2040     "\n    -u  dos2unix" \
     2041     "\n    -d  unix2dos" \
     2042
     2043#define unix2dos_trivial_usage \
     2044       "[-ud] [FILE]"
     2045#define unix2dos_full_usage "\n\n" \
     2046       "Convert FILE in-place from Unix to DOS format.\n" \
     2047       "When no file is given, use stdin/stdout.\n" \
     2048     "\nOptions:" \
     2049     "\n    -u  dos2unix" \
     2050     "\n    -d  unix2dos" \
    6972051
    6982052#define dpkg_trivial_usage \
    699        "[-ilCPru] [-F option] package_name"
    700 #define dpkg_full_usage \
    701        "Install, remove and manage Debian packages" \
    702        "\n\nOptions:\n" \
    703        "    -i      Install the package\n" \
    704        "    -l      List of installed packages\n" \
    705        "    -C      Configure an unpackaged package\n" \
    706        "    -F depends  Ignore dependency problems\n" \
    707        "    -P      Purge all files of a package\n" \
    708        "    -r      Remove all but the configuration files for a package\n" \
    709        "    -u      Unpack a package, but don't configure it"
     2053       "[-ilCPru] [-F OPT] PACKAGE"
     2054#define dpkg_full_usage "\n\n" \
     2055       "Install, remove and manage Debian packages\n" \
     2056     "\nOptions:" \
     2057    IF_LONG_OPTS( \
     2058     "\n    -i,--install    Install the package" \
     2059     "\n    -l,--list   List of installed packages" \
     2060     "\n    --configure Configure an unpackaged package" \
     2061     "\n    -P,--purge  Purge all files of a package" \
     2062     "\n    -r,--remove Remove all but the configuration files for a package" \
     2063     "\n    --unpack    Unpack a package, but don't configure it" \
     2064     "\n    --force-depends Ignore dependency problems" \
     2065     "\n    --force-confnew Overwrite existing config files when installing" \
     2066     "\n    --force-confold Keep old config files when installing" \
     2067    ) \
     2068    IF_NOT_LONG_OPTS( \
     2069     "\n    -i      Install the package" \
     2070     "\n    -l      List of installed packages" \
     2071     "\n    -C      Configure an unpackaged package" \
     2072     "\n    -P      Purge all files of a package" \
     2073     "\n    -r      Remove all but the configuration files for a package" \
     2074     "\n    -u      Unpack a package, but don't configure it" \
     2075     "\n    -F depends  Ignore dependency problems" \
     2076     "\n    -F confnew  Overwrite existing config files when installing" \
     2077     "\n    -F confold  Keep old config files when installing" \
     2078    )
    7102079
    7112080#define dpkg_deb_trivial_usage \
    7122081       "[-cefxX] FILE [argument]"
    713 #define dpkg_deb_full_usage \
    714        "Perform actions on Debian packages (.debs)" \
    715        "\n\nOptions:\n" \
    716        "    -c  List contents of filesystem tree\n" \
    717        "    -e  Extract control files to [argument] directory\n" \
    718        "    -f  Display control field name starting with [argument]\n" \
    719        "    -x  Extract packages filesystem tree to directory\n" \
    720        "    -X  Verbose extract"
     2082#define dpkg_deb_full_usage "\n\n" \
     2083       "Perform actions on Debian packages (.debs)\n" \
     2084     "\nOptions:" \
     2085     "\n    -c  List contents of filesystem tree" \
     2086     "\n    -e  Extract control files to [argument] directory" \
     2087     "\n    -f  Display control field name starting with [argument]" \
     2088     "\n    -x  Extract packages filesystem tree to directory" \
     2089     "\n    -X  Verbose extract" \
     2090
    7212091#define dpkg_deb_example_usage \
    7222092       "$ dpkg-deb -X ./busybox_0.48-1_i386.deb /tmp\n"
    7232093
    7242094#define du_trivial_usage \
    725        "[-aHLdclsx" USE_FEATURE_HUMAN_READABLE("hm") "k] [FILE]..."
    726 #define du_full_usage \
     2095       "[-aHLdclsx" IF_FEATURE_HUMAN_READABLE("hm") "k] [FILE]..."
     2096#define du_full_usage "\n\n" \
    7272097       "Summarize disk space used for each FILE and/or directory.\n" \
    7282098       "Disk space is printed in units of " \
    729     USE_FEATURE_DU_DEFAULT_BLOCKSIZE_1K("1024") \
    730     SKIP_FEATURE_DU_DEFAULT_BLOCKSIZE_1K("512") \
    731        " bytes." \
    732        "\n\nOptions:\n" \
    733        "    -a  Show sizes of files in addition to directories\n" \
    734        "    -H  Follow symlinks that are FILE command line args\n" \
    735        "    -L  Follow all symlinks encountered\n" \
    736        "    -d N    Limit output to directories (and files with -a) of depth < N\n" \
    737        "    -c  Output a grand total\n" \
    738        "    -l  Count sizes many times if hard linked\n" \
    739        "    -s  Display only a total for each argument\n" \
    740        "    -x  Skip directories on different filesystems\n" \
    741     USE_FEATURE_HUMAN_READABLE( \
    742        "    -h  Print sizes in human readable format (e.g., 1K 243M 2G )\n" \
    743        "    -m  Print sizes in megabytes\n" \
    744     ) \
    745        "    -k  Print sizes in kilobytes" \
    746     USE_FEATURE_DU_DEFAULT_BLOCKSIZE_1K("(default)")
     2099    IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K("1024") \
     2100    IF_NOT_FEATURE_DU_DEFAULT_BLOCKSIZE_1K("512") \
     2101       " bytes.\n" \
     2102     "\nOptions:" \
     2103     "\n    -a  Show file sizes too" \
     2104     "\n    -L  Follow all symlinks" \
     2105     "\n    -H  Follow symlinks on command line" \
     2106     "\n    -d N    Limit output to directories (and files with -a) of depth < N" \
     2107     "\n    -c  Show grand total" \
     2108     "\n    -l  Count sizes many times if hard linked" \
     2109     "\n    -s  Display only a total for each argument" \
     2110     "\n    -x  Skip directories on different filesystems" \
     2111    IF_FEATURE_HUMAN_READABLE( \
     2112     "\n    -h  Sizes in human readable format (e.g., 1K 243M 2G )" \
     2113     "\n    -m  Sizes in megabytes" \
     2114    ) \
     2115     "\n    -k  Sizes in kilobytes" \
     2116            IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(" (default)") \
     2117
    7472118#define du_example_usage \
    7482119       "$ du\n" \
     
    7602131#define dumpkmap_trivial_usage \
    7612132       "> keymap"
    762 #define dumpkmap_full_usage \
    763        "Print out a binary keyboard translation table to standard output"
     2133#define dumpkmap_full_usage "\n\n" \
     2134       "Print a binary keyboard translation table to stdout"
    7642135#define dumpkmap_example_usage \
    7652136       "$ dumpkmap > keymap\n"
     
    7672138#define dumpleases_trivial_usage \
    7682139       "[-r|-a] [-f LEASEFILE]"
    769 #define dumpleases_full_usage \
    770        "Display DHCP leases granted by udhcpd" \
    771        "\n\nOptions:\n" \
    772        "    -f, --file=FILENAME Leases file to load\n" \
    773        "    -r, --remaining     Interpret lease times as time remaining\n" \
    774        "    -a, --absolute      Interpret lease times as expire time"
    775 
     2140#define dumpleases_full_usage "\n\n" \
     2141       "Display DHCP leases granted by udhcpd\n" \
     2142     "\nOptions:" \
     2143    IF_LONG_OPTS( \
     2144     "\n    -f,--file=FILE  Lease file" \
     2145     "\n    -r,--remaining  Show remaining time" \
     2146     "\n    -a,--absolute   Show expiration time" \
     2147    ) \
     2148    IF_NOT_LONG_OPTS( \
     2149     "\n    -f FILE Lease file" \
     2150     "\n    -r  Show remaining time" \
     2151     "\n    -a  Show expiration time" \
     2152    )
     2153
     2154/*
    7762155#define e2fsck_trivial_usage \
    7772156       "[-panyrcdfvstDFSV] [-b superblock] [-B blocksize] " \
     
    7792158       "[-l|-L bad_blocks_file] [-C fd] [-j external_journal] " \
    7802159       "[-E extended-options] device"
    781 #define e2fsck_full_usage \
    782        "Check ext2/ext3 file system" \
    783        "\n\nOptions:\n" \
    784        "    -p      Automatic repair (no questions)\n" \
    785        "    -n      Make no changes to the filesystem\n" \
    786        "    -y      Assume 'yes' to all questions\n" \
    787        "    -c      Check for bad blocks and add them to the badblock list\n" \
    788        "    -f      Force checking even if filesystem is marked clean\n" \
    789        "    -v      Verbose\n" \
    790        "    -b superblock   Use alternative superblock\n" \
    791        "    -B blocksize    Force blocksize when looking for superblock\n" \
    792        "    -j journal  Set location of the external journal\n" \
    793        "    -l file     Add to badblocks list\n" \
    794        "    -L file     Set badblocks list"
     2160#define e2fsck_full_usage "\n\n" \
     2161       "Check ext2/ext3 file system\n" \
     2162     "\nOptions:" \
     2163     "\n    -p      Automatic repair (no questions)" \
     2164     "\n    -n      Make no changes to the filesystem" \
     2165     "\n    -y      Assume 'yes' to all questions" \
     2166     "\n    -c      Check for bad blocks and add them to the badblock list" \
     2167     "\n    -f      Force checking even if filesystem is marked clean" \
     2168     "\n    -v      Verbose" \
     2169     "\n    -b superblock   Use alternative superblock" \
     2170     "\n    -B blocksize    Force blocksize when looking for superblock" \
     2171     "\n    -j journal  Set location of the external journal" \
     2172     "\n    -l file     Add to badblocks list" \
     2173     "\n    -L file     Set badblocks list" \
     2174*/
    7952175
    7962176#define echo_trivial_usage \
    797     USE_FEATURE_FANCY_ECHO("[-neE] ") "[ARG ...]"
    798 #define echo_full_usage \
     2177    IF_FEATURE_FANCY_ECHO("[-neE] ") "[ARG]..."
     2178#define echo_full_usage "\n\n" \
    7992179       "Print the specified ARGs to stdout" \
    800     USE_FEATURE_FANCY_ECHO( \
    801        "\n\nOptions:\n" \
    802        "    -n  Suppress trailing newline\n" \
    803        "    -e  Interpret backslash-escaped characters (i.e., \\t=tab)\n" \
    804        "    -E  Disable interpretation of backslash-escaped characters" \
     2180    IF_FEATURE_FANCY_ECHO( "\n" \
     2181     "\nOptions:" \
     2182     "\n    -n  Suppress trailing newline" \
     2183     "\n    -e  Interpret backslash escapes (i.e., \\t=tab)" \
     2184     "\n    -E  Don't interpret backslash escapes (default)" \
    8052185    )
    8062186#define echo_example_usage \
    8072187       "$ echo \"Erik is cool\"\n" \
    8082188       "Erik is cool\n" \
    809     USE_FEATURE_FANCY_ECHO("$ echo -e \"Erik\\nis\\ncool\"\n" \
     2189    IF_FEATURE_FANCY_ECHO("$ echo -e \"Erik\\nis\\ncool\"\n" \
    8102190       "Erik\n" \
    8112191       "is\n" \
     
    8162196#define eject_trivial_usage \
    8172197       "[-t] [-T] [DEVICE]"
    818 #define eject_full_usage \
    819        "Eject specified DEVICE (or default /dev/cdrom)" \
    820        "\n\nOptions:\n" \
    821        "    -t  Close tray\n" \
    822        "    -T  Open/close tray (toggle)"
     2198#define eject_full_usage "\n\n" \
     2199       "Eject DEVICE or default /dev/cdrom\n" \
     2200     "\nOptions:" \
     2201    IF_FEATURE_EJECT_SCSI( \
     2202     "\n    -s  SCSI device" \
     2203    ) \
     2204     "\n    -t  Close tray" \
     2205     "\n    -T  Open/close tray (toggle)" \
    8232206
    8242207#define ed_trivial_usage ""
     
    8262209
    8272210#define env_trivial_usage \
    828        "[-iu] [-] [name=value]... [command]"
    829 #define env_full_usage \
    830        "Print the current environment or run a program after setting\n" \
    831        "up the specified environment" \
    832        "\n\nOptions:\n" \
    833        "    -, -i   Start with an empty environment\n" \
    834        "    -u  Remove variable from the environment"
     2211       "[-iu] [-] [name=value]... [PROG ARGS]"
     2212#define env_full_usage "\n\n" \
     2213       "Print the current environment or run PROG after setting up\n" \
     2214       "the specified environment\n" \
     2215     "\nOptions:" \
     2216     "\n    -, -i   Start with an empty environment" \
     2217     "\n    -u  Remove variable from the environment" \
    8352218
    8362219#define ether_wake_trivial_usage \
    8372220       "[-b] [-i iface] [-p aa:bb:cc:dd[:ee:ff]] MAC"
    838 #define ether_wake_full_usage \
     2221#define ether_wake_full_usage "\n\n" \
    8392222       "Send a magic packet to wake up sleeping machines.\n" \
    8402223       "MAC must be a station address (00:11:22:33:44:55) or\n" \
    841        "a hostname with a known 'ethers' entry." \
    842        "\n\nOptions:\n" \
    843        "    -b      Send wake-up packet to the broadcast address\n" \
    844        "    -i iface    Use interface ifname instead of the default \"eth0\"\n" \
    845        "    -p pass     Append the four or six byte password PW to the packet"
     2224       "a hostname with a known 'ethers' entry.\n" \
     2225     "\nOptions:" \
     2226     "\n    -b      Send wake-up packet to the broadcast address" \
     2227     "\n    -i iface    Interface to use (default eth0)" \
     2228     "\n    -p pass     Append four or six byte password PW to the packet" \
    8462229
    8472230#define expand_trivial_usage \
    848        "[-i] [-t NUM] [FILE|-]"
    849 #define expand_full_usage \
    850        "Convert tabs to spaces, writing to standard output." \
    851        "\n\nOptions:" \
    852        "\n  -i" USE_FEATURE_EXPAND_LONG_OPTIONS(",--initial") \
    853        "    Do not convert tabs after non blanks" \
    854        "\n  -t" USE_FEATURE_EXPAND_LONG_OPTIONS(",--tabs=N") \
    855        "    Tabstops every N chars"
     2231       "[-i] [-t N] [FILE]..."
     2232#define expand_full_usage "\n\n" \
     2233       "Convert tabs to spaces, writing to stdout\n" \
     2234     "\nOptions:" \
     2235    IF_FEATURE_EXPAND_LONG_OPTIONS( \
     2236     "\n    -i,--initial    Don't convert tabs after non blanks" \
     2237     "\n    -t,--tabs=N Tabstops every N chars" \
     2238    ) \
     2239    IF_NOT_FEATURE_EXPAND_LONG_OPTIONS( \
     2240     "\n    -i  Don't convert tabs after non blanks" \
     2241     "\n    -t  Tabstops every N chars" \
     2242    )
    8562243
    8572244#define expr_trivial_usage \
    8582245       "EXPRESSION"
    859 #define expr_full_usage \
    860        "Print the value of EXPRESSION to standard output.\n\n" \
     2246#define expr_full_usage "\n\n" \
     2247       "Print the value of EXPRESSION to stdout\n" \
     2248    "\n" \
    8612249       "EXPRESSION may be:\n" \
    862        "    ARG1 |  ARG2    ARG1 if it is neither null nor 0, otherwise ARG2\n" \
    863        "    ARG1 &  ARG2    ARG1 if neither argument is null or 0, otherwise 0\n" \
    864        "    ARG1 <  ARG2    ARG1 is less than ARG2\n" \
    865        "    ARG1 <= ARG2    ARG1 is less than or equal to ARG2\n" \
    866        "    ARG1 =  ARG2    ARG1 is equal to ARG2\n" \
    867        "    ARG1 != ARG2    ARG1 is unequal to ARG2\n" \
    868        "    ARG1 >= ARG2    ARG1 is greater than or equal to ARG2\n" \
    869        "    ARG1 >  ARG2    ARG1 is greater than ARG2\n" \
    870        "    ARG1 +  ARG2    Sum of ARG1 and ARG2\n" \
    871        "    ARG1 -  ARG2    Difference of ARG1 and ARG2\n" \
    872        "    ARG1 *  ARG2    Product of ARG1 and ARG2\n" \
    873        "    ARG1 /  ARG2    Quotient of ARG1 divided by ARG2\n" \
    874        "    ARG1 %  ARG2    Remainder of ARG1 divided by ARG2\n" \
     2250       "    ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n" \
     2251       "    ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n" \
     2252       "    ARG1 < ARG2 1 if ARG1 is less than ARG2, else 0. Similarly:\n" \
     2253       "    ARG1 <= ARG2\n" \
     2254       "    ARG1 = ARG2\n" \
     2255       "    ARG1 != ARG2\n" \
     2256       "    ARG1 >= ARG2\n" \
     2257       "    ARG1 > ARG2\n" \
     2258       "    ARG1 + ARG2 Sum of ARG1 and ARG2. Similarly:\n" \
     2259       "    ARG1 - ARG2\n" \
     2260       "    ARG1 * ARG2\n" \
     2261       "    ARG1 / ARG2\n" \
     2262       "    ARG1 % ARG2\n" \
    8752263       "    STRING : REGEXP     Anchored pattern match of REGEXP in STRING\n" \
    8762264       "    match STRING REGEXP Same as STRING : REGEXP\n" \
     
    8812269       "                it is a keyword like 'match' or an\n" \
    8822270       "                operator like '/'\n" \
    883        "    (EXPRESSION)        Value of EXPRESSION\n\n" \
     2271       "    (EXPRESSION)        Value of EXPRESSION\n" \
     2272       "\n" \
    8842273       "Beware that many operators need to be escaped or quoted for shells.\n" \
    8852274       "Comparisons are arithmetic if both ARGs are numbers, else\n" \
     
    8902279#define fakeidentd_trivial_usage \
    8912280       "[-fiw] [-b ADDR] [STRING]"
    892 #define fakeidentd_full_usage \
    893        "Provide fake ident (auth) service" \
    894        "\n\nOptions:" \
    895        "\n  -f  Run in foreground" \
    896        "\n  -i  Inetd mode" \
    897        "\n  -w  Inetd 'wait' mode" \
    898        "\n  -b ADDR Bind to specified address" \
    899        "\n  STRING  Ident answer string (default is 'nobody')"
     2281#define fakeidentd_full_usage "\n\n" \
     2282       "Provide fake ident (auth) service\n" \
     2283     "\nOptions:" \
     2284     "\n    -f  Run in foreground" \
     2285     "\n    -i  Inetd mode" \
     2286     "\n    -w  Inetd 'wait' mode" \
     2287     "\n    -b ADDR Bind to specified address" \
     2288     "\n    STRING  Ident answer string (default: nobody)" \
    9002289
    9012290#define false_trivial_usage \
    9022291       ""
    903 #define false_full_usage \
     2292#define false_full_usage "\n\n" \
    9042293       "Return an exit code of FALSE (1)"
     2294
    9052295#define false_example_usage \
    9062296       "$ false\n" \
     
    9082298       "1\n"
    9092299
     2300#define fbsplash_trivial_usage \
     2301       "-s IMGFILE [-c] [-d DEV] [-i INIFILE] [-f CMD]"
     2302#define fbsplash_full_usage "\n\n" \
     2303       "Options:" \
     2304     "\n    -s  Image" \
     2305     "\n    -c  Hide cursor" \
     2306     "\n    -d  Framebuffer device (default /dev/fb0)" \
     2307     "\n    -i  Config file (var=value):" \
     2308     "\n            BAR_LEFT,BAR_TOP,BAR_WIDTH,BAR_HEIGHT" \
     2309     "\n            BAR_R,BAR_G,BAR_B" \
     2310     "\n    -f  Control pipe (else exit after drawing image)" \
     2311     "\n            commands: 'NN' (% for progress bar) or 'exit'" \
     2312
    9102313#define fbset_trivial_usage \
    911        "[options] [mode]"
    912 #define fbset_full_usage \
     2314       "[OPTIONS] [MODE]"
     2315#define fbset_full_usage "\n\n" \
    9132316       "Show and modify frame buffer settings"
     2317
    9142318#define fbset_example_usage \
    9152319       "$ fbset\n" \
     
    9242328#define fdflush_trivial_usage \
    9252329       "DEVICE"
    926 #define fdflush_full_usage \
     2330#define fdflush_full_usage "\n\n" \
    9272331       "Force floppy disk drive to detect disk change"
    9282332
    9292333#define fdformat_trivial_usage \
    9302334       "[-n] DEVICE"
    931 #define fdformat_full_usage \
    932        "Format floppy disk" \
    933        "\n\nOptions:\n" \
    934        "    -n  Don't verify after format"
     2335#define fdformat_full_usage "\n\n" \
     2336       "Format floppy disk\n" \
     2337     "\nOptions:" \
     2338     "\n    -n  Don't verify after format" \
     2339
     2340/* Looks like someone forgot to add this to config system */
     2341#ifndef ENABLE_FEATURE_FDISK_BLKSIZE
     2342# define ENABLE_FEATURE_FDISK_BLKSIZE 0
     2343# define IF_FEATURE_FDISK_BLKSIZE(a)
     2344#endif
    9352345
    9362346#define fdisk_trivial_usage \
    937        "[-luv] [-C CYLINDERS] [-H HEADS] [-S SECTORS] [-b SSZ] DISK"
    938 #define fdisk_full_usage \
    939        "Change partition table" \
    940        "\n\nOptions:\n" \
    941        "    -l      List partition table(s)\n" \
    942        "    -u      Give Start and End in sector (instead of cylinder) units\n" \
    943        "    -s PARTITION    Give partition size(s) in blocks\n" \
    944        "    -b 2048     (for certain MO disks) use 2048-byte sectors\n" \
    945        "    -C CYLINDERS    Set the number of cylinders\n" \
    946        "    -H HEADS    Set the number of heads\n" \
    947        "    -S SECTORS  Set the number of sectors\n" \
    948        "    -v      Give fdisk version"
    949 
    950 #define find_trivial_usage \
    951        "[PATH...] [EXPRESSION]"
    952 #define find_full_usage \
    953        "Search for files in a directory hierarchy. The default PATH is\n" \
    954        "the current directory, default EXPRESSION is '-print'\n" \
    955      "\nEXPRESSION may consist of:" \
    956      "\n    -follow     Dereference symlinks" \
    957     USE_FEATURE_FIND_XDEV( \
    958      "\n    -xdev       Don't descend directories on other filesystems") \
    959     USE_FEATURE_FIND_MAXDEPTH( \
    960      "\n    -maxdepth N Descend at most N levels. -maxdepth 0 applies" \
    961      "\n            tests/actions to command line arguments only") \
    962      "\n    -name PATTERN   File name (w/o directory name) matches PATTERN" \
    963     USE_FEATURE_FIND_PATH( \
    964      "\n    -path PATTERN   Path matches PATTERN") \
    965     USE_FEATURE_FIND_REGEX( \
    966      "\n    -regex PATTERN  Path matches regex PATTERN") \
    967     USE_FEATURE_FIND_TYPE( \
    968      "\n    -type X     File type is X (X is one of: f,d,l,b,c,...)") \
    969     USE_FEATURE_FIND_PERM( \
    970      "\n    -perm NNN   Permissions match any of (+NNN), all of (-NNN)," \
    971      "\n            or exactly (NNN)") \
    972     USE_FEATURE_FIND_MTIME( \
    973      "\n    -mtime DAYS Modified time is greater than (+N), less than (-N)," \
    974      "\n            or exactly (N) days") \
    975     USE_FEATURE_FIND_MMIN( \
    976      "\n    -mmin MINS  Modified time is greater than (+N), less than (-N)," \
    977      "\n            or exactly (N) minutes") \
    978     USE_FEATURE_FIND_NEWER( \
    979      "\n    -newer FILE Modified time is more recent than FILE's") \
    980     USE_FEATURE_FIND_INUM( \
    981      "\n    -inum N     File has inode number N") \
    982     USE_FEATURE_FIND_USER( \
    983      "\n    -user NAME  File is owned by user NAME (numeric user ID allowed)") \
    984     USE_FEATURE_FIND_GROUP( \
    985      "\n    -group NAME File belongs to group NAME (numeric group ID allowed)") \
    986     USE_FEATURE_FIND_DEPTH( \
    987      "\n    -depth      Process directory name after traversing it") \
    988     USE_FEATURE_FIND_SIZE( \
    989      "\n    -size N[bck]    File size is N (c:bytes,k:kbytes,b:512 bytes(def.))." \
    990      "\n            +/-N: file size is bigger/smaller than N") \
    991      "\n    -print      Print (default and assumed)" \
    992     USE_FEATURE_FIND_PRINT0( \
    993      "\n    -print0     Delimit output with null characters rather than" \
    994      "\n            newlines") \
    995     USE_FEATURE_FIND_CONTEXT ( \
    996      "\n    -context    File has specified security context") \
    997     USE_FEATURE_FIND_EXEC( \
    998      "\n    -exec CMD ARG ; Execute CMD with all instances of {} replaced by the" \
    999      "\n            matching files") \
    1000     USE_FEATURE_FIND_PRUNE( \
    1001      "\n    -prune      Stop traversing current subtree") \
    1002     USE_FEATURE_FIND_DELETE( \
    1003      "\n    -delete     Delete files, turns on -depth option") \
    1004     USE_FEATURE_FIND_PAREN( \
    1005      "\n    (EXPR)      Group an expression") \
    1006 
    1007 #define find_example_usage \
    1008        "$ find / -name passwd\n" \
    1009        "/etc/passwd\n"
     2347       "[-ul" IF_FEATURE_FDISK_BLKSIZE("s") "] " \
     2348       "[-C CYLINDERS] [-H HEADS] [-S SECTORS] [-b SSZ] DISK"
     2349#define fdisk_full_usage "\n\n" \
     2350       "Change partition table\n" \
     2351     "\nOptions:" \
     2352     "\n    -u      Start and End are in sectors (instead of cylinders)" \
     2353     "\n    -l      Show partition table for each DISK, then exit" \
     2354    IF_FEATURE_FDISK_BLKSIZE( \
     2355     "\n    -s      Show partition sizes in kb for each DISK, then exit" \
     2356    ) \
     2357     "\n    -b 2048     (for certain MO disks) use 2048-byte sectors" \
     2358     "\n    -C CYLINDERS    Set number of cylinders/heads/sectors" \
     2359     "\n    -H HEADS" \
     2360     "\n    -S SECTORS" \
     2361
     2362#define fgconsole_trivial_usage \
     2363    ""
     2364#define fgconsole_full_usage "\n\n" \
     2365    "Get active console"
     2366
     2367#define findfs_trivial_usage \
     2368       "LABEL=label or UUID=uuid"
     2369#define findfs_full_usage "\n\n" \
     2370       "Find a filesystem device based on a label or UUID"
     2371#define findfs_example_usage \
     2372       "$ findfs LABEL=MyDevice"
     2373
     2374#define flash_lock_trivial_usage \
     2375       "MTD_DEVICE OFFSET SECTORS"
     2376#define flash_lock_full_usage "\n\n" \
     2377       "Lock part or all of an MTD device. If SECTORS is -1, then all sectors\n" \
     2378       "will be locked, regardless of the value of OFFSET"
     2379
     2380#define flash_unlock_trivial_usage \
     2381       "MTD_DEVICE"
     2382#define flash_unlock_full_usage "\n\n" \
     2383       "Unlock an MTD device"
     2384
     2385#define flash_eraseall_trivial_usage \
     2386       "[-jq] MTD_DEVICE"
     2387#define flash_eraseall_full_usage "\n\n" \
     2388       "Erase an MTD device\n" \
     2389     "\nOptions:" \
     2390     "\n    -j  Format the device for jffs2" \
     2391     "\n    -q  Don't display progress messages" \
     2392
     2393#define flashcp_trivial_usage \
     2394       "-v FILE MTD_DEVICE"
     2395#define flashcp_full_usage "\n\n" \
     2396       "Copy an image to MTD device\n" \
     2397     "\nOptions:" \
     2398     "\n    -v  Verbose" \
     2399
     2400#define flock_trivial_usage \
     2401       "[-sxun] FD|{FILE [-c] PROG ARGS}"
     2402#define flock_full_usage "\n\n" \
     2403       "[Un]lock file descriptor, or lock FILE, run PROG\n" \
     2404     "\nOptions:" \
     2405     "\n    -s  Shared lock" \
     2406     "\n    -x  Exclusive lock (default)" \
     2407     "\n    -u  Unlock FD" \
     2408     "\n    -n  Fail rather than wait" \
    10102409
    10112410#define fold_trivial_usage \
    1012        "[-bs] [-w WIDTH] [FILE]"
    1013 #define fold_full_usage \
    1014        "Wrap input lines in each FILE (standard input by default), writing to\n" \
    1015        "standard output" \
    1016        "\n\nOptions:\n" \
    1017        "    -b  Count bytes rather than columns\n" \
    1018        "    -s  Break at spaces\n" \
    1019        "    -w  Use WIDTH columns instead of 80"
     2411       "[-bs] [-w WIDTH] [FILE]..."
     2412#define fold_full_usage "\n\n" \
     2413       "Wrap input lines in each FILE (or stdin), writing to stdout\n" \
     2414     "\nOptions:" \
     2415     "\n    -b  Count bytes rather than columns" \
     2416     "\n    -s  Break at spaces" \
     2417     "\n    -w  Use WIDTH columns instead of 80" \
    10202418
    10212419#define free_trivial_usage \
    1022        ""
    1023 #define free_full_usage \
     2420       "" IF_DESKTOP("[-b/k/m/g]")
     2421#define free_full_usage "\n\n" \
    10242422       "Display the amount of free and used system memory"
    10252423#define free_example_usage \
     
    10322430#define freeramdisk_trivial_usage \
    10332431       "DEVICE"
    1034 #define freeramdisk_full_usage \
     2432#define freeramdisk_full_usage "\n\n" \
    10352433       "Free all memory used by the specified ramdisk"
    10362434#define freeramdisk_example_usage \
     
    10382436
    10392437#define fsck_trivial_usage \
    1040        "[-ANPRTV] [-C fd] [-t fstype] [fs-options] [filesys ...]"
    1041 #define fsck_full_usage \
    1042        "Check and repair filesystems" \
    1043        "\n\nOptions:\n" \
    1044        "    -A  Walk /etc/fstab and check all filesystems\n" \
    1045        "    -N  Don't execute, just show what would be done\n" \
    1046        "    -P  When using -A, check filesystems in parallel\n" \
    1047        "    -R  When using -A, skip the root filesystem\n" \
    1048        "    -T  Don't show title on startup\n" \
    1049        "    -V  Verbose\n" \
    1050        "    -C n    Write status information to specified filedescriptor\n" \
    1051        "    -t type List of filesystem types to check"
     2438       "[-ANPRTV] [-C FD] [-t FSTYPE] [FS_OPTS] [BLOCKDEV]..."
     2439#define fsck_full_usage "\n\n" \
     2440       "Check and repair filesystems\n" \
     2441     "\nOptions:" \
     2442     "\n    -A  Walk /etc/fstab and check all filesystems" \
     2443     "\n    -N  Don't execute, just show what would be done" \
     2444     "\n    -P  With -A, check filesystems in parallel" \
     2445     "\n    -R  With -A, skip the root filesystem" \
     2446     "\n    -T  Don't show title on startup" \
     2447     "\n    -V  Verbose" \
     2448     "\n    -C n    Write status information to specified filedescriptor" \
     2449     "\n    -t TYPE List of filesystem types to check" \
    10522450
    10532451#define fsck_minix_trivial_usage \
    1054        "[-larvsmf] /dev/name"
    1055 #define fsck_minix_full_usage \
    1056        "Perform a consistency check for MINIX filesystems" \
    1057        "\n\nOptions:\n" \
    1058        "    -l  Lists all filenames\n" \
    1059        "    -r  Perform interactive repairs\n" \
    1060        "    -a  Perform automatic repairs\n" \
    1061        "    -v  Verbose\n" \
    1062        "    -s  Outputs super-block information\n" \
    1063        "    -m  Activates MINIX-like \"mode not cleared\" warnings\n" \
    1064        "    -f  Force file system check"
     2452       "[-larvsmf] BLOCKDEV"
     2453#define fsck_minix_full_usage "\n\n" \
     2454       "Check MINIX filesystem\n" \
     2455     "\nOptions:" \
     2456     "\n    -l  List all filenames" \
     2457     "\n    -r  Perform interactive repairs" \
     2458     "\n    -a  Perform automatic repairs" \
     2459     "\n    -v  Verbose" \
     2460     "\n    -s  Output superblock information" \
     2461     "\n    -m  Show \"mode not cleared\" warnings" \
     2462     "\n    -f  Force file system check" \
     2463
     2464#define ftpd_trivial_usage \
     2465       "[-wvS] [-t N] [-T N] [DIR]"
     2466#define ftpd_full_usage "\n\n" \
     2467       "Anonymous FTP server\n" \
     2468       "\n" \
     2469       "ftpd should be used as an inetd service.\n" \
     2470       "ftpd's line for inetd.conf:\n" \
     2471       "    21 stream tcp nowait root ftpd ftpd /files/to/serve\n" \
     2472       "It also can be ran from tcpsvd:\n" \
     2473       "    tcpsvd -vE 0.0.0.0 21 ftpd /files/to/serve\n" \
     2474     "\nOptions:" \
     2475     "\n    -w  Allow upload" \
     2476     "\n    -v  Log to stderr" \
     2477     "\n    -S  Log to syslog" \
     2478     "\n    -t,-T   Idle and absolute timeouts" \
     2479     "\n    DIR Change root to this directory" \
    10652480
    10662481#define ftpget_trivial_usage \
    1067        "[options] remote-host local-file remote-file"
    1068 #define ftpget_full_usage \
    1069        "Retrieve a remote file via FTP" \
    1070        "\n\nOptions:\n" \
    1071        "    -c, --continue  Continue a previous transfer\n" \
    1072        "    -v, --verbose   Verbose\n" \
    1073        "    -u, --username  Username to be used\n" \
    1074        "    -p, --password  Password to be used\n" \
    1075        "    -P, --port  Port number to be used"
     2482       "[OPTIONS] HOST [LOCAL_FILE] REMOTE_FILE"
     2483#define ftpget_full_usage "\n\n" \
     2484       "Retrieve a remote file via FTP\n" \
     2485     "\nOptions:" \
     2486    IF_FEATURE_FTPGETPUT_LONG_OPTIONS( \
     2487     "\n    -c,--continue   Continue previous transfer" \
     2488     "\n    -v,--verbose    Verbose" \
     2489     "\n    -u,--username   Username" \
     2490     "\n    -p,--password   Password" \
     2491     "\n    -P,--port   Port number" \
     2492    ) \
     2493    IF_NOT_FEATURE_FTPGETPUT_LONG_OPTIONS( \
     2494     "\n    -c  Continue previous transfer" \
     2495     "\n    -v  Verbose" \
     2496     "\n    -u  Username" \
     2497     "\n    -p  Password" \
     2498     "\n    -P  Port number" \
     2499    )
    10762500
    10772501#define ftpput_trivial_usage \
    1078        "[options] remote-host remote-file local-file"
    1079 #define ftpput_full_usage \
    1080        "Store a local file on a remote machine via FTP" \
    1081        "\n\nOptions:\n" \
    1082        "    -v, --verbose   Verbose\n" \
    1083        "    -u, --username  Username to be used\n" \
    1084        "    -p, --password  Password to be used\n" \
    1085        "    -P, --port  Port number to be used"
     2502       "[OPTIONS] HOST [REMOTE_FILE] LOCAL_FILE"
     2503#define ftpput_full_usage "\n\n" \
     2504       "Store a local file on a remote machine via FTP\n" \
     2505     "\nOptions:" \
     2506    IF_FEATURE_FTPGETPUT_LONG_OPTIONS( \
     2507     "\n    -v,--verbose    Verbose" \
     2508     "\n    -u,--username   Username" \
     2509     "\n    -p,--password   Password" \
     2510     "\n    -P,--port   Port number" \
     2511    ) \
     2512    IF_NOT_FEATURE_FTPGETPUT_LONG_OPTIONS( \
     2513     "\n    -v  Verbose" \
     2514     "\n    -u  Username" \
     2515     "\n    -p  Password" \
     2516     "\n    -P  Port number" \
     2517    )
    10862518
    10872519#define fuser_trivial_usage \
    1088        "[options] file OR port/proto"
    1089 #define fuser_full_usage \
    1090        "Options:\n" \
    1091        "    -m  Show all processes on the same mounted fs\n" \
    1092        "    -k  Kill all processes that match\n" \
    1093        "    -s  Don't print or kill anything\n" \
    1094        "    -4  When using port/proto only search IPv4 space\n" \
    1095        "    -6  When using port/proto only search IPv6 space\n" \
    1096        "    -SIGNAL When used with -k, this signal will be used to kill"
    1097 
    1098 #define getenforce_trivial_usage
    1099 #define getenforce_full_usage
     2520       "[OPTIONS] FILE or PORT/PROTO"
     2521#define fuser_full_usage "\n\n" \
     2522       "Find processes which use FILEs or PORTs\n" \
     2523     "\nOptions:" \
     2524     "\n    -m  Find processes which use same fs as FILEs" \
     2525     "\n    -4,-6   Search only IPv4/IPv6 space" \
     2526     "\n    -s  Don't display PIDs" \
     2527     "\n    -k  Kill found processes" \
     2528     "\n    -SIGNAL Signal to send (default: KILL)" \
     2529
     2530#define getenforce_trivial_usage NOUSAGE_STR
     2531#define getenforce_full_usage ""
    11002532
    11012533#define getopt_trivial_usage \
    1102        "[OPTIONS]..."
    1103 #define getopt_full_usage \
    1104        "Parse command options\n" \
    1105        "    -a, --alternative       Allow long options starting with single -\n" \
    1106        "    -l, --longoptions=longopts  Long options to be recognized\n" \
    1107        "    -n, --name=progname     The name under which errors are reported\n" \
    1108        "    -o, --options=optstring     Short options to be recognized\n" \
    1109        "    -q, --quiet         Disable error reporting by getopt(3)\n" \
    1110        "    -Q, --quiet-output      No normal output\n" \
    1111        "    -s, --shell=shell       Set shell quoting conventions\n" \
    1112        "    -T, --test          Test for getopt(1) version\n" \
    1113        "    -u, --unquoted          Do not quote the output"
     2534       "[OPTIONS]"
     2535#define getopt_full_usage "\n\n" \
     2536       "Options:" \
     2537    IF_LONG_OPTS( \
     2538     "\n    -a,--alternative        Allow long options starting with single -" \
     2539     "\n    -l,--longoptions=longopts   Long options to be recognized" \
     2540     "\n    -n,--name=progname      The name under which errors are reported" \
     2541     "\n    -o,--options=optstring      Short options to be recognized" \
     2542     "\n    -q,--quiet          Disable error reporting by getopt(3)" \
     2543     "\n    -Q,--quiet-output       No normal output" \
     2544     "\n    -s,--shell=shell        Set shell quoting conventions" \
     2545     "\n    -T,--test           Test for getopt(1) version" \
     2546     "\n    -u,--unquoted           Don't quote the output" \
     2547    ) \
     2548    IF_NOT_LONG_OPTS( \
     2549     "\n    -a      Allow long options starting with single -" \
     2550     "\n    -l longopts Long options to be recognized" \
     2551     "\n    -n progname The name under which errors are reported" \
     2552     "\n    -o optstring    Short options to be recognized" \
     2553     "\n    -q      Disable error reporting by getopt(3)" \
     2554     "\n    -Q      No normal output" \
     2555     "\n    -s shell    Set shell quoting conventions" \
     2556     "\n    -T      Test for getopt(1) version" \
     2557     "\n    -u      Don't quote the output" \
     2558    )
    11142559#define getopt_example_usage \
    11152560       "$ cat getopt.test\n" \
     
    11172562       "GETOPT=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \\\n" \
    11182563       "       -n 'example.busybox' -- \"$@\"`\n" \
    1119        "if [ $? != 0 ]; then  exit 1; fi\n" \
     2564       "if [ $? != 0 ]; then exit 1; fi\n" \
    11202565       "eval set -- \"$GETOPT\"\n" \
    11212566       "while true; do\n" \
     
    11352580#define getsebool_trivial_usage \
    11362581       "-a or getsebool boolean..."
    1137 #define getsebool_full_usage \
    1138        "    -a  Show all SELinux booleans"
     2582#define getsebool_full_usage "\n\n" \
     2583       "    -a  Show all selinux booleans"
    11392584
    11402585#define getty_trivial_usage \
    1141        "[OPTIONS]... baud_rate,... line [termtype]"
    1142 #define getty_full_usage \
    1143        "Open a tty, prompt for a login name, then invoke /bin/login" \
    1144        "\n\nOptions:\n" \
    1145        "    -h      Enable hardware (RTS/CTS) flow control\n" \
    1146        "    -i      Do not display /etc/issue before running login\n" \
    1147        "    -L      Local line, so do not do carrier detect\n" \
    1148        "    -m      Get baud rate from modem's CONNECT status message\n" \
    1149        "    -w      Wait for a CR or LF before sending /etc/issue\n" \
    1150        "    -n      Do not prompt the user for a login name\n" \
    1151        "    -f issue_file   Display issue_file instead of /etc/issue\n" \
    1152        "    -l login_app    Invoke login_app instead of /bin/login\n" \
    1153        "    -t timeout  Terminate after timeout if no username is read\n" \
    1154        "    -I initstring   Sets the init string to send before anything else\n" \
    1155        "    -H login_host   Log login_host into the utmp file as the hostname"
    1156 
    1157 #define grep_trivial_usage \
    1158        "[-HhrilLnqvso" \
    1159     USE_DESKTOP("w") \
    1160        "eF" \
    1161     USE_FEATURE_GREP_EGREP_ALIAS("E") \
    1162     USE_FEATURE_GREP_CONTEXT("ABC") \
    1163        "] PATTERN [FILEs...]"
    1164 #define grep_full_usage \
    1165        "Search for PATTERN in each FILE or standard input" \
    1166        "\n\nOptions:" \
    1167        "\n  -H  Prefix output lines with filename where match was found" \
    1168        "\n  -h  Suppress the prefixing filename on output" \
    1169        "\n  -r  Recurse subdirectories" \
    1170        "\n  -i  Ignore case distinctions" \
    1171        "\n  -l  List names of files that match" \
    1172        "\n  -L  List names of files that do not match" \
    1173        "\n  -n  Print line number with output lines" \
    1174        "\n  -q  Quiet. Returns 0 if PATTERN was found, 1 otherwise" \
    1175        "\n  -v  Select non-matching lines" \
    1176        "\n  -s  Suppress file open/read error messages" \
    1177        "\n  -c  Only print count of matching lines" \
    1178        "\n  -o  Show only the part of a line that matches PATTERN" \
    1179        "\n  -m MAX  Match up to MAX times per file" \
    1180     USE_DESKTOP( \
    1181        "\n  -w  Match whole words only") \
    1182        "\n  -F  PATTERN is a set of newline-separated strings" \
    1183     USE_FEATURE_GREP_EGREP_ALIAS( \
    1184        "\n  -E  PATTERN is an extended regular expression") \
    1185        "\n  -e PTRN Pattern to match" \
    1186        "\n  -f FILE Read pattern from file" \
    1187     USE_FEATURE_GREP_CONTEXT( \
    1188        "\n  -A  Print NUM lines of trailing context" \
    1189        "\n  -B  Print NUM lines of leading context" \
    1190        "\n  -C  Print NUM lines of output context") \
    1191 
    1192 #define grep_example_usage \
    1193        "$ grep root /etc/passwd\n" \
    1194        "root:x:0:0:root:/root:/bin/bash\n" \
    1195        "$ grep ^[rR]oo. /etc/passwd\n" \
    1196        "root:x:0:0:root:/root:/bin/bash\n"
     2586       "[OPTIONS] BAUD_RATE TTY [TERMTYPE]"
     2587#define getty_full_usage "\n\n" \
     2588       "Open a tty, prompt for a login name, then invoke /bin/login\n" \
     2589     "\nOptions:" \
     2590     "\n    -h      Enable hardware (RTS/CTS) flow control" \
     2591     "\n    -i      Don't display /etc/issue before running login" \
     2592     "\n    -L      Local line, don't do carrier detect" \
     2593     "\n    -m      Get baud rate from modem's CONNECT status message" \
     2594     "\n    -w      Wait for a CR or LF before sending /etc/issue" \
     2595     "\n    -n      Don't prompt the user for a login name" \
     2596     "\n    -f ISSUE_FILE   Display ISSUE_FILE instead of /etc/issue" \
     2597     "\n    -l LOGIN    Invoke LOGIN instead of /bin/login" \
     2598     "\n    -t SEC      Terminate after SEC if no username is read" \
     2599     "\n    -I INITSTR  Send INITSTR before anything else" \
     2600     "\n    -H HOST     Log HOST into the utmp file as the hostname" \
    11972601
    11982602#define gunzip_trivial_usage \
    1199        "[OPTION]... FILE"
    1200 #define gunzip_full_usage \
    1201        "Uncompress FILE (or standard input if FILE is '-')" \
    1202        "\n\nOptions:\n" \
    1203        "    -c  Write output to standard output\n" \
    1204        "    -f  Force read when source is a terminal\n" \
    1205        "    -t  Test compressed file integrity"
     2603       "[-cft] [FILE]..."
     2604#define gunzip_full_usage "\n\n" \
     2605       "Decompress FILEs (or stdin)\n" \
     2606     "\nOptions:" \
     2607     "\n    -c  Write to stdout" \
     2608     "\n    -f  Force" \
     2609     "\n    -t  Test file integrity" \
     2610
    12062611#define gunzip_example_usage \
    12072612       "$ ls -la /tmp/BusyBox*\n" \
     
    12122617
    12132618#define gzip_trivial_usage \
    1214        "[OPTION]... [FILE]..."
    1215 #define gzip_full_usage \
    1216        "Compress FILE(s) with maximum compression.\n" \
    1217        "When FILE is '-' or unspecified, reads standard input. Implies -c." \
    1218        "\n\nOptions:\n" \
    1219        "    -c  Write output to standard output instead of FILE.gz\n" \
    1220        "    -d  Decompress\n" \
    1221        "    -f  Force write when destination is a terminal"
     2619       "[-cfd] [FILE]..."
     2620#define gzip_full_usage "\n\n" \
     2621       "Compress FILEs (or stdin)\n" \
     2622     "\nOptions:" \
     2623     "\n    -d  Decompress" \
     2624     "\n    -c  Write to stdout" \
     2625     "\n    -f  Force" \
     2626
    12222627#define gzip_example_usage \
    12232628       "$ ls -la /tmp/busybox*\n" \
     
    12272632       "-rw-rw-r--    1 andersen andersen   554058 Apr 14 17:49 /tmp/busybox.tar.gz\n"
    12282633
    1229 #define halt_trivial_usage \
    1230        "[-d delay] [-n] [-f]"
    1231 #define halt_full_usage \
    1232        "Halt the system" \
    1233        "\n\nOptions:\n" \
    1234        "    -d  Delay interval for halting\n" \
    1235        "    -n  No call to sync()\n" \
    1236        "    -f  Force halt (don't go through init)"
    1237 
    12382634#define hdparm_trivial_usage \
    1239        "[options] [device] .."
    1240 #define hdparm_full_usage \
    1241     USE_FEATURE_HDPARM_GET_IDENTITY( \
    1242        "If no device name is specified try to read from stdin.\n\n") \
    1243        "Options:\n" \
    1244        "    -a  Get/set fs readahead\n" \
    1245        "    -A  Set drive read-lookahead flag (0/1)\n" \
    1246        "    -b  Get/set bus state (0 == off, 1 == on, 2 == tristate)\n" \
    1247        "    -B  Set Advanced Power Management setting (1-255)\n" \
    1248        "    -c  Get/set IDE 32-bit IO setting\n" \
    1249        "    -C  Check IDE power mode status\n" \
    1250     USE_FEATURE_HDPARM_HDIO_GETSET_DMA( \
    1251        "    -d  Get/set using_dma flag\n") \
    1252        "    -D  Enable/disable drive defect-mgmt\n" \
    1253        "    -f  Flush buffer cache for device on exit\n" \
    1254        "    -g  Display drive geometry\n" \
    1255        "    -h  Display terse usage information\n" \
    1256     USE_FEATURE_HDPARM_GET_IDENTITY( \
    1257        "    -i  Display drive identification\n") \
    1258     USE_FEATURE_HDPARM_GET_IDENTITY( \
    1259        "    -I  Detailed/current information directly from drive\n") \
    1260        "    -k  Get/set keep_settings_over_reset flag (0/1)\n" \
    1261        "    -K  Set drive keep_features_over_reset flag (0/1)\n" \
    1262        "    -L  Set drive doorlock (0/1) (removable harddisks only)\n" \
    1263        "    -m  Get/set multiple sector count\n" \
    1264        "    -n  Get/set ignore-write-errors flag (0/1)\n" \
    1265        "    -p  Set PIO mode on IDE interface chipset (0,1,2,3,4,...)\n" \
    1266        "    -P  Set drive prefetch count\n" \
    1267        "    -q  Change next setting quietly\n" \
    1268        "    -Q  Get/set DMA tagged-queuing depth (if supported)\n" \
    1269        "    -r  Get/set readonly flag (DANGEROUS to set)\n" \
    1270     USE_FEATURE_HDPARM_HDIO_SCAN_HWIF( \
    1271        "    -R  Register an IDE interface (DANGEROUS)\n") \
    1272        "    -S  Set standby (spindown) timeout\n" \
    1273        "    -t  Perform device read timings\n" \
    1274        "    -T  Perform cache read timings\n" \
    1275        "    -u  Get/set unmaskirq flag (0/1)\n" \
    1276     USE_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF( \
    1277        "    -U  Un-register an IDE interface (DANGEROUS)\n") \
    1278        "    -v  Defaults; same as -mcudkrag for IDE drives\n" \
    1279        "    -V  Display program version and exit immediately\n" \
    1280     USE_FEATURE_HDPARM_HDIO_DRIVE_RESET( \
    1281        "    -w  Perform device reset (DANGEROUS)\n") \
    1282        "    -W  Set drive write-caching flag (0/1) (DANGEROUS)\n" \
    1283     USE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF( \
    1284        "    -x  Tristate device for hotswap (0/1) (DANGEROUS)\n") \
    1285        "    -X  Set IDE xfer mode (DANGEROUS)\n" \
    1286        "    -y  Put IDE drive in standby mode\n" \
    1287        "    -Y  Put IDE drive to sleep\n" \
    1288        "    -Z  Disable Seagate auto-powersaving mode\n" \
    1289        "    -z  Re-read partition table"
     2635       "[OPTIONS] [DEVICE]"
     2636#define hdparm_full_usage "\n\n" \
     2637       "Options:" \
     2638     "\n    -a  Get/set fs readahead" \
     2639     "\n    -A  Set drive read-lookahead flag (0/1)" \
     2640     "\n    -b  Get/set bus state (0 == off, 1 == on, 2 == tristate)" \
     2641     "\n    -B  Set Advanced Power Management setting (1-255)" \
     2642     "\n    -c  Get/set IDE 32-bit IO setting" \
     2643     "\n    -C  Check IDE power mode status" \
     2644    IF_FEATURE_HDPARM_HDIO_GETSET_DMA( \
     2645     "\n    -d  Get/set using_dma flag") \
     2646     "\n    -D  Enable/disable drive defect-mgmt" \
     2647     "\n    -f  Flush buffer cache for device on exit" \
     2648     "\n    -g  Display drive geometry" \
     2649     "\n    -h  Display terse usage information" \
     2650    IF_FEATURE_HDPARM_GET_IDENTITY( \
     2651     "\n    -i  Display drive identification") \
     2652    IF_FEATURE_HDPARM_GET_IDENTITY( \
     2653     "\n    -I  Detailed/current information directly from drive") \
     2654     "\n    -k  Get/set keep_settings_over_reset flag (0/1)" \
     2655     "\n    -K  Set drive keep_features_over_reset flag (0/1)" \
     2656     "\n    -L  Set drive doorlock (0/1) (removable harddisks only)" \
     2657     "\n    -m  Get/set multiple sector count" \
     2658     "\n    -n  Get/set ignore-write-errors flag (0/1)" \
     2659     "\n    -p  Set PIO mode on IDE interface chipset (0,1,2,3,4,...)" \
     2660     "\n    -P  Set drive prefetch count" \
     2661/*   "\n    -q  Change next setting quietly" - not supported ib bbox */ \
     2662     "\n    -Q  Get/set DMA tagged-queuing depth (if supported)" \
     2663     "\n    -r  Get/set readonly flag (DANGEROUS to set)" \
     2664    IF_FEATURE_HDPARM_HDIO_SCAN_HWIF( \
     2665     "\n    -R  Register an IDE interface (DANGEROUS)") \
     2666     "\n    -S  Set standby (spindown) timeout" \
     2667     "\n    -t  Perform device read timings" \
     2668     "\n    -T  Perform cache read timings" \
     2669     "\n    -u  Get/set unmaskirq flag (0/1)" \
     2670    IF_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF( \
     2671     "\n    -U  Unregister an IDE interface (DANGEROUS)") \
     2672     "\n    -v  Defaults; same as -mcudkrag for IDE drives" \
     2673     "\n    -V  Display program version and exit immediately" \
     2674    IF_FEATURE_HDPARM_HDIO_DRIVE_RESET( \
     2675     "\n    -w  Perform device reset (DANGEROUS)") \
     2676     "\n    -W  Set drive write-caching flag (0/1) (DANGEROUS)" \
     2677    IF_FEATURE_HDPARM_HDIO_TRISTATE_HWIF( \
     2678     "\n    -x  Tristate device for hotswap (0/1) (DANGEROUS)") \
     2679     "\n    -X  Set IDE xfer mode (DANGEROUS)" \
     2680     "\n    -y  Put IDE drive in standby mode" \
     2681     "\n    -Y  Put IDE drive to sleep" \
     2682     "\n    -Z  Disable Seagate auto-powersaving mode" \
     2683     "\n    -z  Reread partition table" \
    12902684
    12912685#define head_trivial_usage \
    1292        "[OPTION]... [FILE]..."
    1293 #define head_full_usage \
    1294        "Print first 10 lines of each FILE to standard output.\n" \
    1295        "With more than one FILE, precede each with a header giving the\n" \
    1296        "file name. With no FILE, or when FILE is -, read standard input." \
    1297        "\n\nOptions:" \
    1298        "\n  -n NUM  Print first NUM lines instead of first 10" \
    1299     USE_FEATURE_FANCY_HEAD( \
    1300        "\n  -c NUM  Output the first NUM bytes" \
    1301        "\n  -q  Never output headers giving file names" \
    1302        "\n  -v  Always output headers giving file names")
     2686       "[OPTIONS] [FILE]..."
     2687#define head_full_usage "\n\n" \
     2688       "Print first 10 lines of each FILE (or stdin) to stdout.\n" \
     2689       "With more than one FILE, precede each with a filename header.\n" \
     2690     "\nOptions:" \
     2691     "\n    -n N[kbm]   Print first N lines" \
     2692    IF_FEATURE_FANCY_HEAD( \
     2693     "\n    -c N[kbm]   Print first N bytes" \
     2694     "\n    -q      Never print headers" \
     2695     "\n    -v      Always print headers" \
     2696    ) \
     2697     "\n" \
     2698     "\nN may be suffixed by k (x1024), b (x512), or m (x1024^2)." \
     2699
    13032700#define head_example_usage \
    13042701       "$ head -n 2 /etc/passwd\n" \
     
    13062703       "daemon:x:1:1:daemon:/usr/sbin:/bin/sh\n"
    13072704
     2705#define tail_trivial_usage \
     2706       "[OPTIONS] [FILE]..."
     2707#define tail_full_usage "\n\n" \
     2708       "Print last 10 lines of each FILE (or stdin) to stdout.\n" \
     2709       "With more than one FILE, precede each with a filename header.\n" \
     2710     "\nOptions:" \
     2711     "\n    -f      Print data as file grows" \
     2712    IF_FEATURE_FANCY_TAIL( \
     2713     "\n    -s SECONDS  Wait SECONDS between reads with -f" \
     2714    ) \
     2715     "\n    -n N[kbm]   Print last N lines" \
     2716    IF_FEATURE_FANCY_TAIL( \
     2717     "\n    -c N[kbm]   Print last N bytes" \
     2718     "\n    -q      Never print headers" \
     2719     "\n    -v      Always print headers" \
     2720     "\n" \
     2721     "\nN may be suffixed by k (x1024), b (x512), or m (x1024^2)." \
     2722     "\nIf N starts with a '+', output begins with the Nth item from the start" \
     2723     "\nof each file, not from the end." \
     2724    ) \
     2725
     2726#define tail_example_usage \
     2727       "$ tail -n 1 /etc/resolv.conf\n" \
     2728       "nameserver 10.0.0.1\n"
     2729
    13082730#define hexdump_trivial_usage \
    1309        "[-[bcCdefnosvx]] [OPTION] FILE"
    1310 #define hexdump_full_usage \
    1311        "Display file(s) or standard input in a user specified format" \
    1312        "\n\nOptions:\n" \
    1313        "    -b      One-byte octal display\n" \
    1314        "    -c      One-byte character display\n" \
    1315        "    -C      Canonical hex+ASCII, 16 bytes per line\n" \
    1316        "    -d      Two-byte decimal display\n" \
    1317        "    -e FORMAT STRING\n" \
    1318        "    -f FORMAT FILE\n" \
    1319        "    -n LENGTH   Interpret only length bytes of input\n" \
    1320        "    -o      Two-byte octal display\n" \
    1321        "    -s OFFSET   Skip offset bytes\n" \
    1322        "    -v      Display all input data\n" \
    1323        "    -x      Two-byte hexadecimal display"
     2731       "[-bcCdefnosvx" IF_FEATURE_HEXDUMP_REVERSE("R") "] [FILE]..."
     2732#define hexdump_full_usage "\n\n" \
     2733       "Display FILEs (or stdin) in a user specified format\n" \
     2734     "\nOptions:" \
     2735     "\n    -b      One-byte octal display" \
     2736     "\n    -c      One-byte character display" \
     2737     "\n    -C      Canonical hex+ASCII, 16 bytes per line" \
     2738     "\n    -d      Two-byte decimal display" \
     2739     "\n    -e FORMAT STRING" \
     2740     "\n    -f FORMAT FILE" \
     2741     "\n    -n LENGTH   Interpret only LENGTH bytes of input" \
     2742     "\n    -o      Two-byte octal display" \
     2743     "\n    -s OFFSET   Skip OFFSET bytes" \
     2744     "\n    -v      Display all input data" \
     2745     "\n    -x      Two-byte hexadecimal display" \
     2746    IF_FEATURE_HEXDUMP_REVERSE( \
     2747     "\n    -R      Reverse of 'hexdump -Cv'") \
     2748
     2749#define hd_trivial_usage \
     2750       "FILE..."
     2751#define hd_full_usage "\n\n" \
     2752       "hd is an alias for hexdump -C"
    13242753
    13252754#define hostid_trivial_usage \
    13262755       ""
    1327 #define hostid_full_usage \
     2756#define hostid_full_usage "\n\n" \
    13282757       "Print out a unique 32-bit identifier for the machine"
    13292758
    13302759#define hostname_trivial_usage \
    1331        "[OPTION] {hostname | -F FILE}"
    1332 #define hostname_full_usage \
    1333        "Get or set the hostname or DNS domain name. If a hostname is given\n" \
    1334        "(or FILE with the -F parameter), the host name will be set." \
    1335        "\n\nOptions:\n" \
    1336        "    -s  Short\n" \
    1337        "    -i  Addresses for the hostname\n" \
    1338        "    -d  DNS domain name\n" \
    1339        "    -f  Fully qualified domain name\n" \
    1340        "    -F FILE Use the contents of FILE to specify the hostname"
     2760       "[OPTIONS] [HOSTNAME | -F FILE]"
     2761#define hostname_full_usage "\n\n" \
     2762       "Get or set hostname or DNS domain name\n" \
     2763     "\nOptions:" \
     2764     "\n    -s  Short" \
     2765     "\n    -i  Addresses for the hostname" \
     2766     "\n    -d  DNS domain name" \
     2767     "\n    -f  Fully qualified domain name" \
     2768     "\n    -F FILE Use FILE's content as hostname" \
     2769
    13412770#define hostname_example_usage \
    13422771       "$ hostname\n" \
    13432772       "sage\n"
    13442773
     2774#define dnsdomainname_trivial_usage NOUSAGE_STR
     2775#define dnsdomainname_full_usage ""
     2776
    13452777#define httpd_trivial_usage \
    1346        "[-c conffile]" \
    1347        " [-p [ip:]port]" \
    1348        " [-i] [-f] [-v[v]]" \
    1349     USE_FEATURE_HTTPD_SETUID(" [-u user[:grp]]") \
    1350     USE_FEATURE_HTTPD_BASIC_AUTH(" [-r realm]") \
    1351     USE_FEATURE_HTTPD_AUTH_MD5(" [-m pass]") \
    1352        " [-h home]" \
    1353        " [-d/-e string]"
    1354 #define httpd_full_usage \
    1355        "Listen for incoming HTTP requests" \
    1356        "\n\nOptions:" \
    1357        "\n  -c FILE     Configuration file (default httpd.conf)" \
    1358        "\n  -p [IP:]PORT    Bind to ip:port (default *:80)" \
    1359        "\n  -i      Inetd mode" \
    1360        "\n  -f      Do not daemonize" \
    1361        "\n  -v[v]       Verbose" \
    1362     USE_FEATURE_HTTPD_SETUID( \
    1363        "\n  -u USER[:GRP]   Set uid/gid after binding to port") \
    1364     USE_FEATURE_HTTPD_BASIC_AUTH( \
    1365        "\n  -r REALM    Authentication Realm for Basic Authentication") \
    1366     USE_FEATURE_HTTPD_AUTH_MD5( \
    1367        "\n  -m PASS     Crypt PASS with md5 algorithm") \
    1368        "\n  -h HOME     Home directory (default .)" \
    1369        "\n  -e STRING   HTML encode STRING" \
    1370        "\n  -d STRING   URL decode STRING" \
     2778       "[-ifv[v]]" \
     2779       " [-c CONFFILE]" \
     2780       " [-p [IP:]PORT]" \
     2781    IF_FEATURE_HTTPD_SETUID(" [-u USER[:GRP]]") \
     2782    IF_FEATURE_HTTPD_BASIC_AUTH(" [-r REALM]") \
     2783       " [-h HOME]\n" \
     2784       "or httpd -d/-e" IF_FEATURE_HTTPD_AUTH_MD5("/-m") " STRING"
     2785#define httpd_full_usage "\n\n" \
     2786       "Listen for incoming HTTP requests\n" \
     2787     "\nOptions:" \
     2788     "\n    -i      Inetd mode" \
     2789     "\n    -f      Don't daemonize" \
     2790     "\n    -v[v]       Verbose" \
     2791     "\n    -p [IP:]PORT    Bind to IP:PORT (default *:80)" \
     2792    IF_FEATURE_HTTPD_SETUID( \
     2793     "\n    -u USER[:GRP]   Set uid/gid after binding to port") \
     2794    IF_FEATURE_HTTPD_BASIC_AUTH( \
     2795     "\n    -r REALM    Authentication Realm for Basic Authentication") \
     2796     "\n    -h HOME     Home directory (default .)" \
     2797     "\n    -c FILE     Configuration file (default {/etc,HOME}/httpd.conf)" \
     2798    IF_FEATURE_HTTPD_AUTH_MD5( \
     2799     "\n    -m STRING   MD5 crypt STRING") \
     2800     "\n    -e STRING   HTML encode STRING" \
     2801     "\n    -d STRING   URL decode STRING" \
    13712802
    13722803#define hwclock_trivial_usage \
     2804    IF_FEATURE_HWCLOCK_LONG_OPTIONS( \
    13732805       "[-r|--show] [-s|--hctosys] [-w|--systohc]" \
    13742806       " [-l|--localtime] [-u|--utc]" \
    1375        " [-f FILE]"
    1376 #define hwclock_full_usage \
    1377        "Query and set a hardware clock (RTC)" \
    1378        "\n\nOptions:\n" \
    1379        "    -r  Read hardware clock and print result\n" \
    1380        "    -s  Set the system time from the hardware clock\n" \
    1381        "    -w  Set the hardware clock to the current system time\n" \
    1382        "    -u  The hardware clock is kept in coordinated universal time\n" \
    1383        "    -l  The hardware clock is kept in local time\n" \
    1384        "    -f FILE Use the specified clock (e.g. /dev/rtc2)"
     2807       " [-f FILE]" \
     2808    ) \
     2809    IF_NOT_FEATURE_HWCLOCK_LONG_OPTIONS( \
     2810       "[-r] [-s] [-w] [-l] [-u] [-f FILE]" \
     2811    )
     2812#define hwclock_full_usage "\n\n" \
     2813       "Query and set hardware clock (RTC)\n" \
     2814     "\nOptions:" \
     2815     "\n    -r  Show hardware clock time" \
     2816     "\n    -s  Set system time from hardware clock" \
     2817     "\n    -w  Set hardware clock to system time" \
     2818     "\n    -u  Hardware clock is in UTC" \
     2819     "\n    -l  Hardware clock is in local time" \
     2820     "\n    -f FILE Use specified device (e.g. /dev/rtc2)" \
    13852821
    13862822#define id_trivial_usage \
    1387        "[OPTIONS]... [USERNAME]"
    1388 #define id_full_usage \
    1389        "Print information for USERNAME or the current user" \
    1390        "\n\nOptions:\n" \
    1391     USE_SELINUX( \
    1392        "    -Z  prints only the security context\n" \
    1393     ) \
    1394        "    -g  Prints only the group ID\n" \
    1395        "    -u  Prints only the user ID\n" \
    1396        "    -n  Print a name instead of a number\n" \
    1397        "    -r  Prints the real user ID instead of the effective ID"
     2823       "[OPTIONS] [USER]"
     2824#define id_full_usage "\n\n" \
     2825       "Print information about USER or the current user\n" \
     2826     "\nOptions:" \
     2827    IF_SELINUX( \
     2828     "\n    -Z  Security context" \
     2829    ) \
     2830     "\n    -u  User ID" \
     2831     "\n    -g  Group ID" \
     2832     "\n    -G  Supplementary group IDs" \
     2833     "\n    -n  Print names instead of numbers" \
     2834     "\n    -r  Print real ID instead of effective ID" \
     2835
    13982836#define id_example_usage \
    13992837       "$ id\n" \
     
    14012839
    14022840#define ifconfig_trivial_usage \
    1403     USE_FEATURE_IFCONFIG_STATUS("[-a]") " interface [address]"
    1404 #define ifconfig_full_usage \
    1405        "Configure a network interface" \
    1406        "\n\nOptions:\n" \
    1407     USE_FEATURE_IPV6( \
     2841    IF_FEATURE_IFCONFIG_STATUS("[-a]") " interface [address]"
     2842#define ifconfig_full_usage "\n\n" \
     2843       "Configure a network interface\n" \
     2844     "\nOptions:" \
     2845     "\n" \
     2846    IF_FEATURE_IPV6( \
    14082847       "    [add ADDRESS[/PREFIXLEN]]\n") \
    1409     USE_FEATURE_IPV6( \
     2848    IF_FEATURE_IPV6( \
    14102849       "    [del ADDRESS[/PREFIXLEN]]\n") \
    14112850       "    [[-]broadcast [ADDRESS]] [[-]pointopoint [ADDRESS]]\n" \
    14122851       "    [netmask ADDRESS] [dstaddr ADDRESS]\n" \
    1413     USE_FEATURE_IFCONFIG_SLIP( \
     2852    IF_FEATURE_IFCONFIG_SLIP( \
    14142853       "    [outfill NN] [keepalive NN]\n") \
    1415        "    " USE_FEATURE_IFCONFIG_HW("[hw ether ADDRESS] ") "[metric NN] [mtu NN]\n" \
     2854       "    " IF_FEATURE_IFCONFIG_HW("[hw ether" IF_FEATURE_HWIB("|infiniband")" ADDRESS] ") "[metric NN] [mtu NN]\n" \
    14162855       "    [[-]trailers] [[-]arp] [[-]allmulti]\n" \
    14172856       "    [multicast] [[-]promisc] [txqueuelen NN] [[-]dynamic]\n" \
    1418     USE_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ( \
     2857    IF_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ( \
    14192858       "    [mem_start NN] [io_addr NN] [irq NN]\n") \
    14202859       "    [up|down] ..."
    14212860
     2861#define ifenslave_trivial_usage \
     2862       "[-cdf] MASTER_IFACE SLAVE_IFACE..."
     2863#define ifenslave_full_usage "\n\n" \
     2864       "Configure network interfaces for parallel routing\n" \
     2865     "\nOptions:" \
     2866     "\n    -c,--change-active  Change active slave" \
     2867     "\n    -d,--detach     Remove slave interface from bonding device" \
     2868     "\n    -f,--force      Force, even if interface is not Ethernet" \
     2869/*   "\n    -r,--receive-slave  Create a receive-only slave" */
     2870
     2871#define ifenslave_example_usage \
     2872       "To create a bond device, simply follow these three steps:\n" \
     2873       "- ensure that the required drivers are properly loaded:\n" \
     2874       "  # modprobe bonding ; modprobe <3c59x|eepro100|pcnet32|tulip|...>\n" \
     2875       "- assign an IP address to the bond device:\n" \
     2876       "  # ifconfig bond0 <addr> netmask <mask> broadcast <bcast>\n" \
     2877       "- attach all the interfaces you need to the bond device:\n" \
     2878       "  # ifenslave bond0 eth0 eth1 eth2\n" \
     2879       "  If bond0 didn't have a MAC address, it will take eth0's. Then, all\n" \
     2880       "  interfaces attached AFTER this assignment will get the same MAC addr.\n\n" \
     2881       "  To detach a dead interface without setting the bond device down:\n" \
     2882       "  # ifenslave -d bond0 eth1\n\n" \
     2883       "  To set the bond device down and automatically release all the slaves:\n" \
     2884       "  # ifconfig bond0 down\n\n" \
     2885       "  To change active slave:\n" \
     2886       "  # ifenslave -c bond0 eth0\n" \
     2887
     2888#define ifplugd_trivial_usage \
     2889       "[OPTIONS]"
     2890#define ifplugd_full_usage "\n\n" \
     2891       "Network interface plug detection daemon\n" \
     2892     "\nOptions:" \
     2893     "\n    -n      Don't daemonize" \
     2894     "\n    -s      Don't log to syslog" \
     2895     "\n    -i IFACE    Interface" \
     2896     "\n    -f/-F       Treat link detection error as link down/link up" \
     2897     "\n            (otherwise exit on error)" \
     2898     "\n    -a      Don't up interface at each link probe" \
     2899     "\n    -M      Monitor creation/destruction of interface" \
     2900     "\n            (otherwise it must exist)" \
     2901     "\n    -r PROG     Script to run" \
     2902     "\n    -x ARG      Extra argument for script" \
     2903     "\n    -I      Don't exit on nonzero exit code from script" \
     2904     "\n    -p      Don't run script on daemon startup" \
     2905     "\n    -q      Don't run script on daemon quit" \
     2906     "\n    -l      Run script on startup even if no cable is detected" \
     2907     "\n    -t SECS     Poll time in seconds" \
     2908     "\n    -u SECS     Delay before running script after link up" \
     2909     "\n    -d SECS     Delay after link down" \
     2910     "\n    -m MODE     API mode (mii, priv, ethtool, wlan, iff, auto)" \
     2911     "\n    -k      Kill running daemon" \
     2912
    14222913#define ifup_trivial_usage \
    1423        "[-ahinv] ifaces..."
    1424 #define ifup_full_usage \
    1425        "Options:\n" \
    1426        "    -a  De/configure all interfaces automatically\n" \
    1427        "    -i FILE Use FILE for interface definitions\n" \
    1428        "    -n  Print out what would happen, but don't do it\n" \
    1429        "        (note that this option doesn't disable mappings)\n" \
    1430        "    -v  Print out what would happen before doing it\n" \
    1431        "    -m  Don't run any mappings\n" \
    1432        "    -f  Force de/configuration"
     2914       "[-an"IF_FEATURE_IFUPDOWN_MAPPING("m")"vf] [-i FILE] IFACE..."
     2915#define ifup_full_usage "\n\n" \
     2916       "Options:" \
     2917     "\n    -a  De/configure all interfaces automatically" \
     2918     "\n    -i FILE Use FILE for interface definitions" \
     2919     "\n    -n  Print out what would happen, but don't do it" \
     2920    IF_FEATURE_IFUPDOWN_MAPPING( \
     2921     "\n        (note: doesn't disable mappings)" \
     2922     "\n    -m  Don't run any mappings" \
     2923    ) \
     2924     "\n    -v  Print out what would happen before doing it" \
     2925     "\n    -f  Force de/configuration" \
    14332926
    14342927#define ifdown_trivial_usage \
    1435        "[-ahinv] ifaces..."
    1436 #define ifdown_full_usage \
    1437        "Options:\n" \
    1438        "    -a  De/configure all interfaces automatically\n" \
    1439        "    -i FILE Use FILE for interface definitions\n" \
    1440        "    -n  Print out what would happen, but don't do it\n" \
    1441        "        (note that this option doesn't disable mappings)\n" \
    1442        "    -v  Print out what would happen before doing it\n" \
    1443        "    -m  Don't run any mappings\n" \
    1444        "    -f  Force de/configuration"
     2928       "[-an"IF_FEATURE_IFUPDOWN_MAPPING("m")"vf] [-i FILE] IFACE..."
     2929#define ifdown_full_usage "\n\n" \
     2930       "Options:" \
     2931     "\n    -a  De/configure all interfaces automatically" \
     2932     "\n    -i FILE Use FILE for interface definitions" \
     2933     "\n    -n  Print out what would happen, but don't do it" \
     2934    IF_FEATURE_IFUPDOWN_MAPPING( \
     2935     "\n        (note: doesn't disable mappings)" \
     2936     "\n    -m  Don't run any mappings" \
     2937    ) \
     2938     "\n    -v  Print out what would happen before doing it" \
     2939     "\n    -f  Force de/configuration" \
    14452940
    14462941#define inetd_trivial_usage \
    1447        "[-f] [-q len] [conf]"
    1448 #define inetd_full_usage \
    1449        "Listen for network connections and launch programs" \
    1450        "\n\nOptions:\n" \
    1451        "    -f  Run in foreground\n" \
    1452        "    -q N    Set the size of the socket listen queue to N\n" \
    1453        "        (default: 128)"
    1454 
    1455 #define init_trivial_usage \
    1456        ""
    1457 #define init_full_usage \
    1458        "Init is the parent of all processes"
    1459 #define init_notes_usage \
    1460 "This version of init is designed to be run only by the kernel.\n" \
    1461 "\n" \
    1462 "BusyBox init doesn't support multiple runlevels. The runlevels field of\n" \
    1463 "the /etc/inittab file is completely ignored by BusyBox init. If you want\n" \
    1464 "runlevels, use sysvinit.\n" \
    1465 "\n" \
    1466 "BusyBox init works just fine without an inittab. If no inittab is found,\n" \
    1467 "it has the following default behavior:\n" \
    1468 "\n" \
    1469 "   ::sysinit:/etc/init.d/rcS\n" \
    1470 "   ::askfirst:/bin/sh\n" \
    1471 "   ::ctrlaltdel:/sbin/reboot\n" \
    1472 "   ::shutdown:/sbin/swapoff -a\n" \
    1473 "   ::shutdown:/bin/umount -a -r\n" \
    1474 "   ::restart:/sbin/init\n" \
    1475 "\n" \
    1476 "if it detects that /dev/console is _not_ a serial console, it will also run:\n" \
    1477 "\n" \
    1478 "   tty2::askfirst:/bin/sh\n" \
    1479 "   tty3::askfirst:/bin/sh\n" \
    1480 "   tty4::askfirst:/bin/sh\n" \
    1481 "\n" \
    1482 "If you choose to use an /etc/inittab file, the inittab entry format is as follows:\n" \
    1483 "\n" \
    1484 "   <id>:<runlevels>:<action>:<process>\n" \
    1485 "\n" \
    1486 "   <id>:\n" \
    1487 "\n" \
    1488 "       WARNING: This field has a non-traditional meaning for BusyBox init!\n" \
    1489 "       The id field is used by BusyBox init to specify the controlling tty for\n" \
    1490 "       the specified process to run on. The contents of this field are\n" \
    1491 "       appended to \"/dev/\" and used as-is. There is no need for this field to\n" \
    1492 "       be unique, although if it isn't you may have strange results. If this\n" \
    1493 "       field is left blank, the controlling tty is set to the console. Also\n" \
    1494 "       note that if BusyBox detects that a serial console is in use, then only\n" \
    1495 "       entries whose controlling tty is either the serial console or /dev/null\n" \
    1496 "       will be run. BusyBox init does nothing with utmp. We don't need no\n" \
    1497 "       stinkin' utmp.\n" \
    1498 "\n" \
    1499 "   <runlevels>:\n" \
    1500 "\n" \
    1501 "       The runlevels field is completely ignored.\n" \
    1502 "\n" \
    1503 "   <action>:\n" \
    1504 "\n" \
    1505 "       Valid actions include: sysinit, respawn, askfirst, wait,\n" \
    1506 "       once, restart, ctrlaltdel, and shutdown.\n" \
    1507 "\n" \
    1508 "       The available actions can be classified into two groups: actions\n" \
    1509 "       that are run only once, and actions that are re-run when the specified\n" \
    1510 "       process exits.\n" \
    1511 "\n" \
    1512 "       Run only-once actions:\n" \
    1513 "\n" \
    1514 "           'sysinit' is the first item run on boot. init waits until all\n" \
    1515 "           sysinit actions are completed before continuing. Following the\n" \
    1516 "           completion of all sysinit actions, all 'wait' actions are run.\n" \
    1517 "           'wait' actions, like 'sysinit' actions, cause init to wait until\n" \
    1518 "           the specified task completes. 'once' actions are asynchronous,\n" \
    1519 "           therefore, init does not wait for them to complete. 'restart' is\n" \
    1520 "           the action taken to restart the init process. By default this should\n" \
    1521 "           simply run /sbin/init, but can be a script which runs pivot_root or it\n" \
    1522 "           can do all sorts of other interesting things. The 'ctrlaltdel' init\n" \
    1523 "           actions are run when the system detects that someone on the system\n" \
    1524 "           console has pressed the CTRL-ALT-DEL key combination. Typically one\n" \
    1525 "           wants to run 'reboot' at this point to cause the system to reboot.\n" \
    1526 "           Finally the 'shutdown' action specifies the actions to taken when\n" \
    1527 "           init is told to reboot. Unmounting filesystems and disabling swap\n" \
    1528 "           is a very good here.\n" \
    1529 "\n" \
    1530 "       Run repeatedly actions:\n" \
    1531 "\n" \
    1532 "           'respawn' actions are run after the 'once' actions. When a process\n" \
    1533 "           started with a 'respawn' action exits, init automatically restarts\n" \
    1534 "           it. Unlike sysvinit, BusyBox init does not stop processes from\n" \
    1535 "           respawning out of control. The 'askfirst' actions acts just like\n" \
    1536 "           respawn, except that before running the specified process it\n" \
    1537 "           displays the line \"Please press Enter to activate this console.\"\n" \
    1538 "           and then waits for the user to press enter before starting the\n" \
    1539 "           specified process.\n" \
    1540 "\n" \
    1541 "       Unrecognized actions (like initdefault) will cause init to emit an\n" \
    1542 "       error message, and then go along with its business. All actions are\n" \
    1543 "       run in the order they appear in /etc/inittab.\n" \
    1544 "\n" \
    1545 "   <process>:\n" \
    1546 "\n" \
    1547 "       Specifies the process to be executed and its command line.\n" \
    1548 "\n" \
    1549 "Example /etc/inittab file:\n" \
    1550 "\n" \
    1551 "   # This is run first except when booting in single-user mode\n" \
    1552 "   #\n" \
    1553 "   ::sysinit:/etc/init.d/rcS\n" \
    1554 "   \n" \
    1555 "   # /bin/sh invocations on selected ttys\n" \
    1556 "   #\n" \
    1557 "   # Start an \"askfirst\" shell on the console (whatever that may be)\n" \
    1558 "   ::askfirst:-/bin/sh\n" \
    1559 "   # Start an \"askfirst\" shell on /dev/tty2-4\n" \
    1560 "   tty2::askfirst:-/bin/sh\n" \
    1561 "   tty3::askfirst:-/bin/sh\n" \
    1562 "   tty4::askfirst:-/bin/sh\n" \
    1563 "   \n" \
    1564 "   # /sbin/getty invocations for selected ttys\n" \
    1565 "   #\n" \
    1566 "   tty4::respawn:/sbin/getty 38400 tty4\n" \
    1567 "   tty5::respawn:/sbin/getty 38400 tty5\n" \
    1568 "   \n" \
    1569 "   \n" \
    1570 "   # Example of how to put a getty on a serial line (for a terminal)\n" \
    1571 "   #\n" \
    1572 "   #::respawn:/sbin/getty -L ttyS0 9600 vt100\n" \
    1573 "   #::respawn:/sbin/getty -L ttyS1 9600 vt100\n" \
    1574 "   #\n" \
    1575 "   # Example how to put a getty on a modem line\n" \
    1576 "   #::respawn:/sbin/getty 57600 ttyS2\n" \
    1577 "   \n" \
    1578 "   # Stuff to do when restarting the init process\n" \
    1579 "   ::restart:/sbin/init\n" \
    1580 "   \n" \
    1581 "   # Stuff to do before rebooting\n" \
    1582 "   ::ctrlaltdel:/sbin/reboot\n" \
    1583 "   ::shutdown:/bin/umount -a -r\n" \
    1584 "   ::shutdown:/sbin/swapoff -a\n"
    1585 
    1586 #define insmod_trivial_usage \
    1587        "[OPTION]... MODULE [symbol=value]..."
    1588 #define insmod_full_usage \
    1589        "Load the specified kernel modules into the kernel" \
    1590        "\n\nOptions:\n" \
    1591        "    -f  Force module to load into the wrong kernel version\n" \
    1592        "    -k  Make module autoclean-able\n" \
    1593        "    -v  Verbose\n" \
    1594        "    -q  Quiet\n" \
    1595        "    -L  Lock to prevent simultaneous loads of a module\n" \
    1596     USE_FEATURE_INSMOD_LOAD_MAP( \
    1597        "    -m  Output load map to stdout\n") \
    1598        "    -o NAME Set internal module name to NAME\n" \
    1599        "    -x  Do not export externs"
    1600 
     2942       "[-fe] [-q N] [-R N] [CONFFILE]"
     2943#define inetd_full_usage "\n\n" \
     2944       "Listen for network connections and launch programs\n" \
     2945     "\nOptions:" \
     2946     "\n    -f  Run in foreground" \
     2947     "\n    -e  Log to stderr" \
     2948     "\n    -q N    Socket listen queue (default: 128)" \
     2949     "\n    -R N    Pause services after N connects/min" \
     2950     "\n        (default: 0 - disabled)" \
     2951
     2952#define inotifyd_trivial_usage \
     2953    "PROG FILE1[:MASK]..."
     2954#define inotifyd_full_usage "\n\n" \
     2955       "Run PROG on filesystem changes." \
     2956     "\nWhen a filesystem event matching MASK occurs on FILEn," \
     2957     "\nPROG ACTUAL_EVENTS FILEn [SUBFILE] is run." \
     2958     "\nEvents:" \
     2959     "\n    a   File is accessed" \
     2960     "\n    c   File is modified" \
     2961     "\n    e   Metadata changed" \
     2962     "\n    w   Writable file is closed" \
     2963     "\n    0   Unwritable file is closed" \
     2964     "\n    r   File is opened" \
     2965     "\n    D   File is deleted" \
     2966     "\n    M   File is moved" \
     2967     "\n    u   Backing fs is unmounted" \
     2968     "\n    o   Event queue overflowed" \
     2969     "\n    x   File can't be watched anymore" \
     2970     "\nIf watching a directory:" \
     2971     "\n    m   Subfile is moved into dir" \
     2972     "\n    y   Subfile is moved out of dir" \
     2973     "\n    n   Subfile is created" \
     2974     "\n    d   Subfile is deleted" \
     2975     "\n" \
     2976     "\ninotifyd waits for PROG to exit." \
     2977     "\nWhen x event happens for all FILEs, inotifyd exits." \
     2978
     2979/* -v, -b, -c are ignored */
    16012980#define install_trivial_usage \
    1602        "[-cgmops] [sources] dest|directory"
    1603 #define install_full_usage \
    1604        "Copy files and set attributes" \
    1605        "\n\nOptions:\n" \
    1606        "    -c  Copy the file, default\n" \
    1607        "    -d  Create directories\n" \
    1608        "    -g  Set group ownership\n" \
    1609        "    -m  Set permission modes\n" \
    1610        "    -o  Set ownership\n" \
    1611        "    -p  Preserve date\n" \
    1612        "    -s  Strip symbol tables" \
    1613     USE_SELINUX( \
    1614        "\n  -Z  Set security context of copy" \
     2981    "[-cdDsp] [-o USER] [-g GRP] [-m MODE] [SOURCE]... DEST"
     2982#define install_full_usage "\n\n" \
     2983       "Copy files and set attributes\n" \
     2984     "\nOptions:" \
     2985     "\n    -c  Just copy (default)" \
     2986     "\n    -d  Create directories" \
     2987     "\n    -D  Create leading target directories" \
     2988     "\n    -s  Strip symbol table" \
     2989     "\n    -p  Preserve date" \
     2990     "\n    -o USER Set ownership" \
     2991     "\n    -g GRP  Set group ownership" \
     2992     "\n    -m MODE Set permissions" \
     2993    IF_SELINUX( \
     2994     "\n    -Z  Set security context" \
    16152995    )
    1616 /* would need to make the " | " optional depending on more than one selected */
     2996
     2997/* would need to make the " | " optional depending on more than one selected: */
    16172998#define ip_trivial_usage \
    16182999       "[OPTIONS] {" \
    1619     USE_FEATURE_IP_ADDRESS("address | ") \
    1620     USE_FEATURE_IP_ROUTE("route | ") \
    1621     USE_FEATURE_IP_LINK("link | ") \
    1622     USE_FEATURE_IP_TUNNEL("tunnel | ") \
    1623     USE_FEATURE_IP_RULE("rule") \
     3000    IF_FEATURE_IP_ADDRESS("address | ") \
     3001    IF_FEATURE_IP_ROUTE("route | ") \
     3002    IF_FEATURE_IP_LINK("link | ") \
     3003    IF_FEATURE_IP_TUNNEL("tunnel | ") \
     3004    IF_FEATURE_IP_RULE("rule") \
    16243005       "} {COMMAND}"
    1625 #define ip_full_usage \
     3006#define ip_full_usage "\n\n" \
    16263007       "ip [OPTIONS] OBJECT {COMMAND}\n" \
    16273008       "where OBJECT := {" \
    1628     USE_FEATURE_IP_ADDRESS("address | ") \
    1629     USE_FEATURE_IP_ROUTE("route | ") \
    1630     USE_FEATURE_IP_LINK("link | ") \
    1631     USE_FEATURE_IP_TUNNEL("tunnel | ") \
    1632     USE_FEATURE_IP_RULE("rule") \
     3009    IF_FEATURE_IP_ADDRESS("address | ") \
     3010    IF_FEATURE_IP_ROUTE("route | ") \
     3011    IF_FEATURE_IP_LINK("link | ") \
     3012    IF_FEATURE_IP_TUNNEL("tunnel | ") \
     3013    IF_FEATURE_IP_RULE("rule") \
    16333014       "}\n" \
    1634        "OPTIONS := { -f[amily] { inet | inet6 | link } | -o[neline] }"
     3015       "OPTIONS := { -f[amily] { inet | inet6 | link } | -o[neline] }" \
    16353016
    16363017#define ipaddr_trivial_usage \
    16373018       "{ {add|del} IFADDR dev STRING | {show|flush}\n" \
    16383019       "        [dev STRING] [to PREFIX] }"
    1639 #define ipaddr_full_usage \
     3020#define ipaddr_full_usage "\n\n" \
    16403021       "ipaddr {add|delete} IFADDR dev STRING\n" \
    16413022       "ipaddr {show|flush} [dev STRING] [scope SCOPE-ID]\n" \
     
    16443025       "    [broadcast ADDR] [anycast ADDR]\n" \
    16453026       "    [label STRING] [scope SCOPE-ID]\n" \
    1646        "    SCOPE-ID := [host | link | global | NUMBER]"
     3027       "    SCOPE-ID := [host | link | global | NUMBER]" \
    16473028
    16483029#define ipcalc_trivial_usage \
    1649        "[OPTION]... ADDRESS[[/]NETMASK] [NETMASK]"
    1650 #define ipcalc_full_usage \
    1651        "Calculate IP network settings from a IP address" \
    1652        "\n\nOptions:" \
    1653        "\n  -b  --broadcast Display calculated broadcast address" \
    1654        "\n  -n  --network   Display calculated network address" \
    1655        "\n  -m  --netmask   Display default netmask for IP" \
    1656     USE_FEATURE_IPCALC_FANCY( \
    1657        "\n  -p  --prefix    Display the prefix for IP/NETMASK" \
    1658        "\n  -h  --hostname  Display first resolved host name" \
    1659        "\n  -s  --silent    Don't ever display error messages")
     3030       "[OPTIONS] ADDRESS[[/]NETMASK] [NETMASK]"
     3031#define ipcalc_full_usage "\n\n" \
     3032       "Calculate IP network settings from a IP address\n" \
     3033     "\nOptions:" \
     3034    IF_FEATURE_IPCALC_LONG_OPTIONS( \
     3035     "\n    -b,--broadcast  Display calculated broadcast address" \
     3036     "\n    -n,--network    Display calculated network address" \
     3037     "\n    -m,--netmask    Display default netmask for IP" \
     3038    IF_FEATURE_IPCALC_FANCY( \
     3039     "\n    -p,--prefix Display the prefix for IP/NETMASK" \
     3040     "\n    -h,--hostname   Display first resolved host name" \
     3041     "\n    -s,--silent Don't ever display error messages" \
     3042    ) \
     3043    ) \
     3044    IF_NOT_FEATURE_IPCALC_LONG_OPTIONS( \
     3045     "\n    -b  Display calculated broadcast address" \
     3046     "\n    -n  Display calculated network address" \
     3047     "\n    -m  Display default netmask for IP" \
     3048    IF_FEATURE_IPCALC_FANCY( \
     3049     "\n    -p  Display the prefix for IP/NETMASK" \
     3050     "\n    -h  Display first resolved host name" \
     3051     "\n    -s  Don't ever display error messages" \
     3052    ) \
     3053    )
    16603054
    16613055#define ipcrm_trivial_usage \
    1662        "[-[MQS] key] [-[mqs] id]"
    1663 #define ipcrm_full_usage \
    1664        "The upper-case options MQS are used to remove a shared memory segment by a\n" \
    1665        "segment by a shmkey value. The lower-case options mqs are used\n" \
    1666        "to remove a segment by shmid value.\n" \
    1667        "\n\nOptions:\n" \
    1668        "    -[mM]   Remove the memory segment after the last detach\n" \
    1669        "    -[qQ]   Remove the message queue\n" \
    1670        "    -[sS]   Remove the semaphore"
     3056       "[-MQS key] [-mqs id]"
     3057#define ipcrm_full_usage "\n\n" \
     3058       "Upper-case options MQS remove an object by shmkey value.\n" \
     3059       "Lower-case options remove an object by shmid value.\n" \
     3060     "\nOptions:" \
     3061     "\n    -mM Remove memory segment after last detach" \
     3062     "\n    -qQ Remove message queue" \
     3063     "\n    -sS Remove semaphore" \
    16713064
    16723065#define ipcs_trivial_usage \
    16733066       "[[-smq] -i shmid] | [[-asmq] [-tcplu]]"
    1674 #define ipcs_full_usage \
    1675        "    -i  Specify a specific resource id\n" \
    1676        "Resource specification:\n" \
    1677        "    -m  Shared memory segments\n" \
    1678        "    -q  Message queues\n" \
    1679        "    -s  Semaphore arrays\n" \
    1680        "    -a  All (default)\n" \
    1681        "Output format:\n" \
    1682        "    -t  Time\n" \
    1683        "    -c  Creator\n" \
    1684        "    -p  Pid\n" \
    1685        "    -l  Limits\n" \
    1686        "    -u  Summary"
     3067#define ipcs_full_usage "\n\n" \
     3068       "    -i  Show specific resource" \
     3069     "\nResource specification:" \
     3070     "\n    -m  Shared memory segments" \
     3071     "\n    -q  Message queues" \
     3072     "\n    -s  Semaphore arrays" \
     3073     "\n    -a  All (default)" \
     3074     "\nOutput format:" \
     3075     "\n    -t  Time" \
     3076     "\n    -c  Creator" \
     3077     "\n    -p  Pid" \
     3078     "\n    -l  Limits" \
     3079     "\n    -u  Summary" \
    16873080
    16883081#define iplink_trivial_usage \
    16893082       "{ set DEVICE { up | down | arp { on | off } | show [DEVICE] }"
    1690 #define iplink_full_usage \
     3083#define iplink_full_usage "\n\n" \
    16913084       "iplink set DEVICE { up | down | arp | multicast { on | off } |\n" \
    16923085       "            dynamic { on | off } |\n" \
    16933086       "            mtu MTU }\n" \
    1694        "iplink show [DEVICE]"
     3087       "iplink show [DEVICE]" \
    16953088
    16963089#define iproute_trivial_usage \
    16973090       "{ list | flush | { add | del | change | append |\n" \
    16983091       "        replace | monitor } ROUTE }"
    1699 #define iproute_full_usage \
     3092#define iproute_full_usage "\n\n" \
    17003093       "iproute { list | flush } SELECTOR\n" \
    17013094       "iproute get ADDRESS [from ADDRESS iif STRING]\n" \
     
    17033096       "iproute { add | del | change | append | replace | monitor } ROUTE\n" \
    17043097       "            SELECTOR := [root PREFIX] [match PREFIX] [proto RTPROTO]\n" \
    1705        "            ROUTE := [TYPE] PREFIX [tos TOS] [proto RTPROTO]"
     3098       "            ROUTE := [TYPE] PREFIX [tos TOS] [proto RTPROTO]\n" \
     3099       "                [metric METRIC]" \
    17063100
    17073101#define iprule_trivial_usage \
    17083102       "{[list | add | del] RULE}"
    1709 #define iprule_full_usage \
     3103#define iprule_full_usage "\n\n" \
    17103104       "iprule [list | add | del] SELECTOR ACTION\n" \
    17113105       "    SELECTOR := [from PREFIX] [to PREFIX] [tos TOS] [fwmark FWMARK]\n" \
     
    17143108       "            [prohibit | reject | unreachable]\n" \
    17153109       "            [realms [SRCREALM/]DSTREALM]\n" \
    1716        "    TABLE_ID := [local | main | default | NUMBER]"
     3110       "    TABLE_ID := [local | main | default | NUMBER]" \
    17173111
    17183112#define iptunnel_trivial_usage \
     
    17203114       "    [mode { ipip | gre | sit }]\n" \
    17213115       "    [remote ADDR] [local ADDR] [ttl TTL]"
    1722 #define iptunnel_full_usage \
     3116#define iptunnel_full_usage "\n\n" \
    17233117       "iptunnel { add | change | del | show } [NAME]\n" \
    17243118       "    [mode { ipip | gre | sit }] [remote ADDR] [local ADDR]\n" \
    17253119       "    [[i|o]seq] [[i|o]key KEY] [[i|o]csum]\n" \
    1726        "    [ttl TTL] [tos TOS] [[no]pmtudisc] [dev PHYS_DEV]"
     3120       "    [ttl TTL] [tos TOS] [[no]pmtudisc] [dev PHYS_DEV]" \
     3121
     3122#define kbd_mode_trivial_usage \
     3123       "[-a|k|s|u] [-C TTY]"
     3124#define kbd_mode_full_usage "\n\n" \
     3125       "Report or set the keyboard mode\n" \
     3126     "\nOptions:" \
     3127     "\n    -a  Default (ASCII)" \
     3128     "\n    -k  Medium-raw (keyboard)" \
     3129     "\n    -s  Raw (scancode)" \
     3130     "\n    -u  Unicode (utf-8)" \
     3131     "\n    -C TTY  Affect TTY instead of /dev/tty" \
    17273132
    17283133#define kill_trivial_usage \
    1729        "[-l] [-signal] process-id [process-id ...]"
    1730 #define kill_full_usage \
    1731        "Send a signal (default is TERM) to the specified process(es)" \
    1732        "\n\nOptions:\n" \
    1733        "    -l  List all signal names and numbers"
     3134       "[-l] [-SIG] PID..."
     3135#define kill_full_usage "\n\n" \
     3136       "Send a signal (default: TERM) to given PIDs\n" \
     3137     "\nOptions:" \
     3138     "\n    -l  List all signal names and numbers" \
     3139/*   "\n    -s SIG  Yet another way of specifying SIG" */ \
     3140
    17343141#define kill_example_usage \
    17353142       "$ ps | grep apache\n" \
     
    17433150
    17443151#define killall_trivial_usage \
    1745        "[-l] [-q] [-signal] process-name [process-name ...]"
    1746 #define killall_full_usage \
    1747        "Send a signal (default is TERM) to the specified process(es)" \
    1748        "\n\nOptions:\n" \
    1749        "    -l  List all signal names and numbers\n" \
    1750        "    -q  Do not complain if no processes were killed"
     3152       "[-l] [-q] [-SIG] PROCESS_NAME..."
     3153#define killall_full_usage "\n\n" \
     3154       "Send a signal (default: TERM) to given processes\n" \
     3155     "\nOptions:" \
     3156     "\n    -l  List all signal names and numbers" \
     3157/*   "\n    -s SIG  Yet another way of specifying SIG" */ \
     3158     "\n    -q  Don't complain if no processes were killed" \
     3159
    17513160#define killall_example_usage \
    17523161       "$ killall apache\n"
    17533162
    17543163#define killall5_trivial_usage \
    1755        "[-l] [-signal]"
    1756 #define killall5_full_usage \
    1757        "Send a signal (default is TERM) to all processes outside current session" \
    1758        "\n\nOptions:\n" \
    1759        "    -l  List all signal names and numbers\n" \
     3164       "[-l] [-SIG] [-o PID]..."
     3165#define killall5_full_usage "\n\n" \
     3166       "Send a signal (default: TERM) to all processes outside current session\n" \
     3167     "\nOptions:" \
     3168     "\n    -l  List all signal names and numbers" \
     3169     "\n    -o PID  Don't signal this PID" \
     3170/*   "\n    -s SIG  Yet another way of specifying SIG" */ \
    17603171
    17613172#define klogd_trivial_usage \
    1762        "[-c n] [-n]"
    1763 #define klogd_full_usage \
    1764        "Kernel logger" \
    1765        "\n\nOptions:\n" \
    1766        "    -c n    Sets the default log level of console messages to n\n" \
    1767        "    -n  Run as foreground process"
     3173       "[-c N] [-n]"
     3174#define klogd_full_usage "\n\n" \
     3175       "Kernel logger\n" \
     3176     "\nOptions:" \
     3177     "\n    -c N    Only messages with level < N are printed to console" \
     3178     "\n    -n  Run in foreground" \
    17683179
    17693180#define length_trivial_usage \
    17703181       "STRING"
    1771 #define length_full_usage \
    1772        "Print out the length of the specified STRING"
     3182#define length_full_usage "\n\n" \
     3183       "Print STRING's length"
     3184
    17733185#define length_example_usage \
    17743186       "$ length Hello\n" \
     
    17763188
    17773189#define less_trivial_usage \
    1778        "[-EMNmh~?] FILE1 FILE2..."
    1779 #define less_full_usage \
    1780        "View a file or list of files. The position within files can be\n" \
    1781        "changed, and files can be manipulated in various ways." \
    1782        "\n\nOptions:\n" \
    1783        "    -E  Quit once the end of a file is reached\n" \
    1784        "    -M  Display a status line containing the current line numbers\n" \
    1785        "        and the percentage through the file\n" \
    1786        "    -N  Prefix line numbers to each line\n" \
    1787        "    -m  Display a status line containing the percentage through the\n" \
    1788        "        file\n" \
    1789        "    -~  Suppress ~s displayed when input past the end of the file is\n" \
    1790        "        reached"
     3190       "[-EMNmh~I?] [FILE]..."
     3191#define less_full_usage "\n\n" \
     3192       "View FILE (or stdin) one screenful at a time\n" \
     3193     "\nOptions:" \
     3194     "\n    -E  Quit once the end of a file is reached" \
     3195     "\n    -M,-m   Display status line with line numbers" \
     3196     "\n        and percentage through the file" \
     3197     "\n    -N  Prefix line number to each line" \
     3198     "\n    -I  Ignore case in all searches" \
     3199     "\n    -~  Suppress ~s displayed past the end of the file" \
     3200
     3201#define linux32_trivial_usage NOUSAGE_STR
     3202#define linux32_full_usage ""
     3203#define linux64_trivial_usage NOUSAGE_STR
     3204#define linux64_full_usage ""
    17913205
    17923206#define setarch_trivial_usage \
    1793        "personality program [args ...]"
    1794 #define setarch_full_usage \
     3207       "personality PROG ARGS"
     3208#define setarch_full_usage "\n\n" \
    17953209       "Personality may be:\n" \
    17963210       "    linux32     Set 32bit uname emulation\n" \
    1797        "    linux64     Set 64bit uname emulation"
     3211       "    linux64     Set 64bit uname emulation" \
    17983212
    17993213#define ln_trivial_usage \
    1800        "[OPTION] TARGET... LINK_NAME|DIRECTORY"
    1801 #define ln_full_usage \
    1802        "Create a link named LINK_NAME or DIRECTORY to the specified TARGET.\n" \
    1803        "You may use '--' to indicate that all following arguments are non-options." \
    1804        "\n\nOptions:\n" \
    1805        "    -s  Make symlinks instead of hardlinks\n" \
    1806        "    -f  Remove existing destination files\n" \
    1807        "    -n  No dereference symlinks - treat like normal file\n" \
    1808        "    -b  Make a backup of the target (if exists) before link operation\n" \
    1809        "    -S suf  Use suffix instead of ~ when making backup files"
     3214       "[OPTIONS] TARGET... LINK|DIR"
     3215#define ln_full_usage "\n\n" \
     3216       "Create a link LINK or DIR/TARGET to the specified TARGET(s)\n" \
     3217     "\nOptions:" \
     3218     "\n    -s  Make symlinks instead of hardlinks" \
     3219     "\n    -f  Remove existing destinations" \
     3220     "\n    -n  Don't dereference symlinks - treat like normal file" \
     3221     "\n    -b  Make a backup of the target (if exists) before link operation" \
     3222     "\n    -S suf  Use suffix instead of ~ when making backup files" \
     3223
    18103224#define ln_example_usage \
    18113225       "$ ln -s BusyBox /tmp/ls\n" \
     
    18133227       "lrwxrwxrwx    1 root     root            7 Apr 12 18:39 ls -> BusyBox*\n"
    18143228
    1815 #define load_policy_trivial_usage \
    1816        "[FILE]"
    1817 #define load_policy_full_usage
     3229#define load_policy_trivial_usage NOUSAGE_STR
     3230#define load_policy_full_usage ""
    18183231
    18193232#define loadfont_trivial_usage \
    18203233       "< font"
    1821 #define loadfont_full_usage \
    1822        "Load a console font from standard input"
     3234#define loadfont_full_usage "\n\n" \
     3235       "Load a console font from stdin" \
     3236/*   "\n    -C TTY  Affect TTY instead of /dev/tty" */ \
     3237
    18233238#define loadfont_example_usage \
    18243239       "$ loadfont < /etc/i18n/fontname\n"
     
    18263241#define loadkmap_trivial_usage \
    18273242       "< keymap"
    1828 #define loadkmap_full_usage \
    1829        "Load a binary keyboard translation table from standard input"
     3243#define loadkmap_full_usage "\n\n" \
     3244       "Load a binary keyboard translation table from stdin\n" \
     3245/*   "\n    -C TTY  Affect TTY instead of /dev/tty" */ \
     3246
    18303247#define loadkmap_example_usage \
    18313248       "$ loadkmap < /etc/i18n/lang-keymap\n"
    18323249
    18333250#define logger_trivial_usage \
    1834        "[OPTION]... [MESSAGE]"
    1835 #define logger_full_usage \
    1836        "Write MESSAGE to the system log. If MESSAGE is omitted, log stdin." \
    1837        "\n\nOptions:\n" \
    1838        "    -s  Log to stderr as well as the system log\n" \
    1839        "    -t TAG  Log using the specified tag (defaults to user name)\n" \
    1840        "    -p PRIO Enter the message with the specified priority.\n" \
    1841        "        This may be numerical or a 'facility.level' pair."
     3251       "[OPTIONS] [MESSAGE]"
     3252#define logger_full_usage "\n\n" \
     3253       "Write MESSAGE (or stdin) to syslog\n" \
     3254     "\nOptions:" \
     3255     "\n    -s  Log to stderr as well as the system log" \
     3256     "\n    -t TAG  Log using the specified tag (defaults to user name)" \
     3257     "\n    -p PRIO Priority (numeric or facility.level pair)" \
     3258
    18423259#define logger_example_usage \
    18433260       "$ logger \"hello\"\n"
    18443261
    18453262#define login_trivial_usage \
    1846        "[OPTION]... [username] [ENV=VAR ...]"
    1847 #define login_full_usage \
    1848        "Begin a new session on the system" \
    1849        "\n\nOptions:\n" \
    1850        "    -f  Do not authenticate (user already authenticated)\n" \
    1851        "    -h  Name of the remote host for this login\n" \
    1852        "    -p  Preserve environment"
     3263       "[-p] [-h HOST] [[-f] USER]"
     3264#define login_full_usage "\n\n" \
     3265       "Begin a new session on the system\n" \
     3266     "\nOptions:" \
     3267     "\n    -f  Don't authenticate (user already authenticated)" \
     3268     "\n    -h  Name of the remote host" \
     3269     "\n    -p  Preserve environment" \
    18533270
    18543271#define logname_trivial_usage \
    18553272       ""
    1856 #define logname_full_usage \
     3273#define logname_full_usage "\n\n" \
    18573274       "Print the name of the current user"
    18583275#define logname_example_usage \
     
    18613278
    18623279#define logread_trivial_usage \
    1863        "[OPTION]..."
    1864 #define logread_full_usage \
    1865        "Show the messages from syslogd (using circular buffer)" \
    1866        "\n\nOptions:\n" \
    1867        "    -f  Output data as the log grows"
     3280       "[-f]"
     3281#define logread_full_usage "\n\n" \
     3282       "Show messages in syslogd's circular buffer\n" \
     3283     "\nOptions:" \
     3284     "\n    -f  Output data as log grows" \
    18683285
    18693286#define losetup_trivial_usage \
    1870        "[-o OFFSET] [-d] LOOPDEVICE [FILE]]"
    1871 #define losetup_full_usage \
    1872        "(Dis)associate LOOPDEVICE with FILE, or display current associations" \
    1873        "\n\nOptions:\n" \
    1874        "    -d      Disassociate LOOPDEVICE\n" \
    1875        "    -o OFFSET   Start OFFSET bytes into FILE"
     3287       "[-o OFS] LOOPDEV FILE - associate loop devices\n" \
     3288       "    losetup -d LOOPDEV - disassociate\n" \
     3289       "    losetup [-f] - show"
     3290#define losetup_full_usage "\n\n" \
     3291       "Options:" \
     3292     "\n    -o OFS  Start OFS bytes into FILE" \
     3293     "\n    -f  Show first free loop device" \
     3294
    18763295#define losetup_notes_usage \
    18773296       "No arguments will display all current associations.\n" \
     
    18803299       "and filename of the file the loop device is currently bound to.\n\n" \
    18813300       "Two arguments (losetup /dev/loop1 file.img) create a new association,\n" \
    1882        "with an optional offset (-o 12345). Encryption is not yet supported.\n\n"
     3301       "with an optional offset (-o 12345). Encryption is not yet supported.\n" \
     3302       "losetup -f will show the first loop free loop device\n\n"
     3303
     3304#define lpd_trivial_usage \
     3305       "SPOOLDIR [HELPER [ARGS]]"
     3306#define lpd_full_usage "\n\n" \
     3307       "SPOOLDIR must contain (symlinks to) device nodes or directories" \
     3308     "\nwith names matching print queue names. In the first case, jobs are" \
     3309     "\nsent directly to the device. Otherwise each job is stored in queue" \
     3310     "\ndirectory and HELPER program is called. Name of file to print" \
     3311     "\nis passed in $DATAFILE variable." \
     3312     "\nExample:" \
     3313     "\n    tcpsvd -E 0 515 softlimit -m 999999 lpd /var/spool ./print" \
     3314
     3315#define lpq_trivial_usage \
     3316       "[-P queue[@host[:port]]] [-U USERNAME] [-d JOBID]... [-fs]"
     3317#define lpq_full_usage "\n\n" \
     3318       "Options:" \
     3319     "\n    -P  lp service to connect to (else uses $PRINTER)" \
     3320     "\n    -d  Delete jobs" \
     3321     "\n    -f  Force any waiting job to be printed" \
     3322     "\n    -s  Short display" \
     3323
     3324#define lpr_trivial_usage \
     3325       "-P queue[@host[:port]] -U USERNAME -J TITLE -Vmh [FILE]..."
     3326/* -C CLASS exists too, not shown.
     3327 * CLASS is supposed to be printed on banner page, if one is requested */
     3328#define lpr_full_usage "\n\n" \
     3329       "Options:" \
     3330     "\n    -P  lp service to connect to (else uses $PRINTER)"\
     3331     "\n    -m  Send mail on completion" \
     3332     "\n    -h  Print banner page too" \
     3333     "\n    -V  Verbose" \
    18833334
    18843335#define ls_trivial_usage \
    1885        "[-1Aa" USE_FEATURE_LS_TIMESTAMPS("c") "Cd" \
    1886     USE_FEATURE_LS_TIMESTAMPS("e") USE_FEATURE_LS_FILETYPES("F") "iln" \
    1887     USE_FEATURE_LS_FILETYPES("p") USE_FEATURE_LS_FOLLOWLINKS("L") \
    1888     USE_FEATURE_LS_RECURSIVE("R") USE_FEATURE_LS_SORTFILES("rS") "s" \
    1889     USE_FEATURE_AUTOWIDTH("T") USE_FEATURE_LS_TIMESTAMPS("tu") \
    1890     USE_FEATURE_LS_SORTFILES("v") USE_FEATURE_AUTOWIDTH("w") "x" \
    1891     USE_FEATURE_LS_SORTFILES("X") USE_FEATURE_HUMAN_READABLE("h") "k" \
    1892     USE_SELINUX("K") "] [filenames...]"
    1893 #define ls_full_usage \
    1894        "List directory contents" \
    1895        "\n\nOptions:" \
    1896        "\n  -1  List files in a single column" \
    1897        "\n  -A  Do not list implied . and .." \
    1898        "\n  -a  Do not hide entries starting with ." \
    1899        "\n  -C  List entries by columns" \
    1900     USE_FEATURE_LS_TIMESTAMPS( \
    1901        "\n  -c  With -l: show ctime") \
    1902     USE_FEATURE_LS_COLOR( \
    1903        "\n  --color[={always,never,auto}]   Control coloring") \
    1904        "\n  -d  List directory entries instead of contents" \
    1905     USE_FEATURE_LS_TIMESTAMPS( \
    1906        "\n  -e  List both full date and full time") \
    1907     USE_FEATURE_LS_FILETYPES( \
    1908        "\n  -F  Append indicator (one of */=@|) to entries") \
    1909        "\n  -i  List the i-node for each file" \
    1910        "\n  -l  Use a long listing format" \
    1911        "\n  -n  List numeric UIDs and GIDs instead of names" \
    1912     USE_FEATURE_LS_FILETYPES( \
    1913        "\n  -p  Append indicator (one of /=@|) to entries") \
    1914     USE_FEATURE_LS_FOLLOWLINKS( \
    1915        "\n  -L  List entries pointed to by symlinks") \
    1916     USE_FEATURE_LS_RECURSIVE( \
    1917        "\n  -R  List subdirectories recursively") \
    1918     USE_FEATURE_LS_SORTFILES( \
    1919        "\n  -r  Sort the listing in reverse order") \
    1920     USE_FEATURE_LS_SORTFILES( \
    1921        "\n  -S  Sort the listing by file size") \
    1922        "\n  -s  List the size of each file, in blocks" \
    1923     USE_FEATURE_AUTOWIDTH( \
    1924        "\n  -T NUM  Assume Tabstop every NUM columns") \
    1925     USE_FEATURE_LS_TIMESTAMPS( \
    1926        "\n  -t  With -l: show modification time") \
    1927     USE_FEATURE_LS_TIMESTAMPS( \
    1928        "\n  -u  With -l: show access time") \
    1929     USE_FEATURE_LS_SORTFILES( \
    1930        "\n  -v  Sort the listing by version") \
    1931     USE_FEATURE_AUTOWIDTH( \
    1932        "\n  -w NUM  Assume the terminal is NUM columns wide") \
    1933        "\n  -x  List entries by lines instead of by columns" \
    1934     USE_FEATURE_LS_SORTFILES( \
    1935        "\n  -X  Sort the listing by extension") \
    1936     USE_FEATURE_HUMAN_READABLE( \
    1937        "\n  -h  Print sizes in human readable format (e.g., 1K 243M 2G)") \
    1938     USE_SELINUX( \
    1939        "\n  -k  Print security context") \
    1940     USE_SELINUX( \
    1941        "\n  -K  Print security context in long format") \
    1942     USE_SELINUX( \
    1943        "\n  -Z  Print security context and permission")
     3336       "[-1Aa" IF_FEATURE_LS_TIMESTAMPS("c") "Cd" \
     3337    IF_FEATURE_LS_TIMESTAMPS("e") IF_FEATURE_LS_FILETYPES("F") "iln" \
     3338    IF_FEATURE_LS_FILETYPES("p") IF_FEATURE_LS_FOLLOWLINKS("L") \
     3339    IF_FEATURE_LS_RECURSIVE("R") IF_FEATURE_LS_SORTFILES("rS") "s" \
     3340    IF_FEATURE_AUTOWIDTH("T") IF_FEATURE_LS_TIMESTAMPS("tu") \
     3341    IF_FEATURE_LS_SORTFILES("v") IF_FEATURE_AUTOWIDTH("w") "x" \
     3342    IF_FEATURE_LS_SORTFILES("X") IF_FEATURE_HUMAN_READABLE("h") "k" \
     3343    IF_SELINUX("K") "] [FILE]..."
     3344#define ls_full_usage "\n\n" \
     3345       "List directory contents\n" \
     3346     "\nOptions:" \
     3347     "\n    -1  List in a single column" \
     3348     "\n    -A  Don't list . and .." \
     3349     "\n    -a  Don't hide entries starting with ." \
     3350     "\n    -C  List by columns" \
     3351    IF_FEATURE_LS_TIMESTAMPS( \
     3352     "\n    -c  With -l: sort by ctime") \
     3353    IF_FEATURE_LS_COLOR( \
     3354     "\n    --color[={always,never,auto}]   Control coloring") \
     3355     "\n    -d  List directory entries instead of contents" \
     3356    IF_FEATURE_LS_TIMESTAMPS( \
     3357     "\n    -e  List full date and time") \
     3358    IF_FEATURE_LS_FILETYPES( \
     3359     "\n    -F  Append indicator (one of */=@|) to entries") \
     3360     "\n    -i  List inode numbers" \
     3361     "\n    -l  Long listing format" \
     3362     "\n    -n  List numeric UIDs and GIDs instead of names" \
     3363    IF_FEATURE_LS_FILETYPES( \
     3364     "\n    -p  Append indicator (one of /=@|) to entries") \
     3365    IF_FEATURE_LS_FOLLOWLINKS( \
     3366     "\n    -L  List entries pointed to by symlinks") \
     3367    IF_FEATURE_LS_RECURSIVE( \
     3368     "\n    -R  Recurse") \
     3369    IF_FEATURE_LS_SORTFILES( \
     3370     "\n    -r  Sort in reverse order") \
     3371    IF_FEATURE_LS_SORTFILES( \
     3372     "\n    -S  Sort by file size") \
     3373     "\n    -s  List the size of each file, in blocks" \
     3374    IF_FEATURE_AUTOWIDTH( \
     3375     "\n    -T N    Assume tabstop every N columns") \
     3376    IF_FEATURE_LS_TIMESTAMPS( \
     3377     "\n    -t  With -l: sort by modification time") \
     3378    IF_FEATURE_LS_TIMESTAMPS( \
     3379     "\n    -u  With -l: sort by access time") \
     3380    IF_FEATURE_LS_SORTFILES( \
     3381     "\n    -v  Sort by version") \
     3382    IF_FEATURE_AUTOWIDTH( \
     3383     "\n    -w N    Assume the terminal is N columns wide") \
     3384     "\n    -x  List by lines" \
     3385    IF_FEATURE_LS_SORTFILES( \
     3386     "\n    -X  Sort by extension") \
     3387    IF_FEATURE_HUMAN_READABLE( \
     3388     "\n    -h  List sizes in human readable format (1K 243M 2G)") \
     3389    IF_SELINUX( \
     3390     "\n    -k  List security context") \
     3391    IF_SELINUX( \
     3392     "\n    -K  List security context in long format") \
     3393    IF_SELINUX( \
     3394     "\n    -Z  List security context and permission") \
    19443395
    19453396#define lsattr_trivial_usage \
    1946        "[-Radlv] [files...]"
    1947 #define lsattr_full_usage \
    1948        "List file attributes on an ext2 fs" \
    1949        "\n\nOptions:\n" \
    1950        "    -R  Recursively list subdirectories\n" \
    1951        "    -a  Do not hide entries starting with .\n" \
    1952        "    -d  List directory entries instead of contents\n" \
    1953        "    -l  Print long flag names\n" \
    1954        "    -v  List the file's version/generation number"
    1955 
    1956 #define lsmod_trivial_usage \
    1957        ""
    1958 #define lsmod_full_usage \
    1959        "List the currently loaded kernel modules"
     3397       "[-Radlv] [FILE]..."
     3398#define lsattr_full_usage "\n\n" \
     3399       "List file attributes on an ext2 fs\n" \
     3400     "\nOptions:" \
     3401     "\n    -R  Recurse" \
     3402     "\n    -a  Don't hide entries starting with ." \
     3403     "\n    -d  List directory entries instead of contents" \
     3404     "\n    -l  List long flag names" \
     3405     "\n    -v  List the file's version/generation number" \
     3406
     3407#define lspci_trivial_usage \
     3408       "[-mk]"
     3409#define lspci_full_usage "\n\n" \
     3410       "List all PCI devices" \
     3411     "\n" \
     3412     "\n    -m  Parseable output" \
     3413     "\n    -k  Show driver" \
     3414
     3415#define lsusb_trivial_usage NOUSAGE_STR
     3416#define lsusb_full_usage ""
    19603417
    19613418#if ENABLE_FEATURE_MAKEDEVS_LEAF
    19623419#define makedevs_trivial_usage \
    19633420       "NAME TYPE MAJOR MINOR FIRST LAST [s]"
    1964 #define makedevs_full_usage \
    1965        "Create a range of block or character special files\n\n" \
    1966        "TYPEs include:\n" \
    1967        "    b:  Make a block (buffered) device\n" \
    1968        "    c or u: Make a character (un-buffered) device\n" \
    1969        "    p:  Make a named pipe. MAJOR and MINOR are ignored for named pipes\n" \
    1970        "\n" \
    1971        "FIRST specifies the number appended to NAME to create the first device.\n" \
    1972        "LAST specifies the number of the last item that should be created\n" \
    1973        "If 's' is the last argument, the base device is created as well.\n\n" \
    1974        "For example:\n" \
    1975        "    makedevs /dev/ttyS c 4 66 2 63   ->  ttyS2-ttyS63\n" \
    1976        "    makedevs /dev/hda b 3 0 0 8 s    ->  hda,hda1-hda8"
     3421#define makedevs_full_usage "\n\n" \
     3422       "Create a range of block or character special files" \
     3423     "\n" \
     3424     "\nTYPE is:" \
     3425     "\n    b   Block device" \
     3426     "\n    c   Character device" \
     3427     "\n    f   FIFO, MAJOR and MINOR are ignored" \
     3428     "\n" \
     3429     "\nFIRST..LAST specify numbers appended to NAME." \
     3430     "\nIf 's' is the last argument, the base device is created as well." \
     3431     "\n" \
     3432     "\nExamples:" \
     3433     "\n    makedevs /dev/ttyS c 4 66 2 63   ->  ttyS2-ttyS63" \
     3434     "\n    makedevs /dev/hda b 3 0 0 8 s    ->  hda,hda1-hda8"
    19773435#define makedevs_example_usage \
    19783436       "# makedevs /dev/ttyS c 4 66 2 63\n" \
     
    19853443#define makedevs_trivial_usage \
    19863444       "[-d device_table] rootdir"
    1987 #define makedevs_full_usage \
     3445#define makedevs_full_usage "\n\n" \
    19883446       "Create a range of special files as specified in a device table.\n" \
    19893447       "Device table entries take the form of:\n" \
    19903448       "<type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>\n" \
    19913449       "Where name is the file name, type can be one of:\n" \
    1992        "    f   A regular file\n" \
     3450       "    f   Regular file\n" \
    19933451       "    d   Directory\n" \
    1994        "    c   Character special device file\n" \
    1995        "    b   Block special device file\n" \
     3452       "    c   Character device\n" \
     3453       "    b   Block device\n" \
    19963454       "    p   Fifo (named pipe)\n" \
    19973455       "uid is the user id for the target file, gid is the group id for the\n" \
     
    20163474#endif
    20173475
     3476#define makemime_trivial_usage \
     3477       "[OPTIONS] [FILE]..."
     3478#define makemime_full_usage "\n\n" \
     3479       "Create multipart MIME-encoded message from FILEs\n" \
     3480/*     "Transfer encoding is base64, disposition is inline (not attachment)\n" */ \
     3481     "\nOptions:" \
     3482     "\n    -o FILE Output. Default: stdout" \
     3483     "\n    -a HDR  Add header. Examples:" \
     3484     "\n        \"From: user@host.org\", \"Date: `date -R`\"" \
     3485     "\n    -c CT   Content type. Default: text/plain" \
     3486     "\n    -C CS   Charset. Default: " CONFIG_FEATURE_MIME_CHARSET \
     3487/*   "\n    -e ENC  Transfer encoding. Ignored. base64 is assumed" */ \
     3488     "\n" \
     3489     "\nOther options are silently ignored" \
     3490
     3491#define man_trivial_usage \
     3492       "[-aw] [MANPAGE]..."
     3493#define man_full_usage "\n\n" \
     3494       "Format and display manual page\n" \
     3495     "\nOptions:" \
     3496     "\n    -a      Display all pages" \
     3497     "\n    -w  Show page locations" \
     3498
    20183499#define matchpathcon_trivial_usage \
    20193500       "[-n] [-N] [-f file_contexts_file] [-p prefix] [-V]"
    2020 #define matchpathcon_full_usage \
    2021        "    -n  Do not display path" \
    2022        "\n  -N  Do not use translations" \
    2023        "\n  -f  Use alternate file_context file" \
    2024        "\n  -p  Use prefix to speed translations" \
    2025        "\n  -V  Verify file context on disk matches defaults"
     3501#define matchpathcon_full_usage "\n\n" \
     3502       "    -n  Don't display path" \
     3503     "\n    -N  Don't use translations" \
     3504     "\n    -f  Use alternate file_context file" \
     3505     "\n    -p  Use prefix to speed translations" \
     3506     "\n    -V  Verify file context on disk matches defaults" \
    20263507
    20273508#define md5sum_trivial_usage \
    2028        "[OPTION] [FILEs...]" \
    2029     USE_FEATURE_MD5_SHA1_SUM_CHECK("\n   or: md5sum [OPTION] -c [FILE]")
    2030 #define md5sum_full_usage \
    2031        "Print" USE_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " MD5 checksums" \
    2032        "\n\nOptions:\n" \
    2033        "With no FILE, or when FILE is -, read standard input." \
    2034     USE_FEATURE_MD5_SHA1_SUM_CHECK("\n\n" \
    2035        "    -c  Check MD5 sums against given list\n" \
    2036        "\nThe following two options are useful only when verifying checksums:\n" \
    2037        "    -s  Don't output anything, status code shows success\n" \
    2038        "    -w  Warn about improperly formatted MD5 checksum lines")
     3509       "[FILE]..." \
     3510    IF_FEATURE_MD5_SHA1_SUM_CHECK("\n   or: md5sum -c [-sw] [FILE]")
     3511#define md5sum_full_usage "\n\n" \
     3512       "Print" IF_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " MD5 checksums" \
     3513    IF_FEATURE_MD5_SHA1_SUM_CHECK( "\n" \
     3514     "\nOptions:" \
     3515     "\n    -c  Check sums against given list" \
     3516     "\n    -s  Don't output anything, status code shows success" \
     3517     "\n    -w  Warn about improperly formatted checksum lines" \
     3518    )
     3519
    20393520#define md5sum_example_usage \
    20403521       "$ md5sum < busybox\n" \
     
    20473528       "^D\n"
    20483529
     3530#define sha1sum_trivial_usage \
     3531       "[FILE]..." \
     3532    IF_FEATURE_MD5_SHA1_SUM_CHECK("\n   or: sha1sum -c [-sw] [FILE]")
     3533#define sha1sum_full_usage "\n\n" \
     3534       "Print" IF_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA1 checksums" \
     3535    IF_FEATURE_MD5_SHA1_SUM_CHECK( "\n" \
     3536     "\nOptions:" \
     3537     "\n    -c  Check sums against given list" \
     3538     "\n    -s  Don't output anything, status code shows success" \
     3539     "\n    -w  Warn about improperly formatted checksum lines" \
     3540    )
     3541
     3542#define sha256sum_trivial_usage \
     3543       "[FILE]..." \
     3544    IF_FEATURE_MD5_SHA1_SUM_CHECK("\n   or: sha256sum -c [-sw] [FILE]")
     3545#define sha256sum_full_usage "\n\n" \
     3546       "Print" IF_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA256 checksums" \
     3547    IF_FEATURE_MD5_SHA1_SUM_CHECK( "\n" \
     3548     "\nOptions:" \
     3549     "\n    -c  Check sums against given list" \
     3550     "\n    -s  Don't output anything, status code shows success" \
     3551     "\n    -w  Warn about improperly formatted checksum lines" \
     3552    )
     3553
     3554#define sha512sum_trivial_usage \
     3555       "[FILE]..." \
     3556    IF_FEATURE_MD5_SHA1_SUM_CHECK("\n   or: sha512sum -c [-sw] [FILE]")
     3557#define sha512sum_full_usage "\n\n" \
     3558       "Print" IF_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA512 checksums" \
     3559    IF_FEATURE_MD5_SHA1_SUM_CHECK( "\n" \
     3560     "\nOptions:" \
     3561     "\n    -c  Check sums against given list" \
     3562     "\n    -s  Don't output anything, status code shows success" \
     3563     "\n    -w  Warn about improperly formatted checksum lines" \
     3564    )
     3565
    20493566#define mdev_trivial_usage \
    20503567       "[-s]"
    2051 #define mdev_full_usage \
    2052        "    -s  Scan /sys and populate /dev during system boot\n\n" \
    2053        "Called with no options (via hotplug) it uses environment variables\n" \
    2054        "to determine which device to add/remove."
     3568#define mdev_full_usage "\n\n" \
     3569       "    -s  Scan /sys and populate /dev during system boot\n" \
     3570       "\n" \
     3571       "It can be run by kernel as a hotplug helper. To activate it:\n" \
     3572       " echo /sbin/mdev > /proc/sys/kernel/hotplug\n" \
     3573    IF_FEATURE_MDEV_CONF( \
     3574       "It uses /etc/mdev.conf with lines\n" \
     3575       "[-]DEVNAME UID:GID PERM" \
     3576            IF_FEATURE_MDEV_RENAME(" [>|=PATH]") \
     3577            IF_FEATURE_MDEV_EXEC(" [@|$|*PROG]") \
     3578    ) \
     3579
    20553580#define mdev_notes_usage "" \
    2056     USE_FEATURE_MDEV_CONFIG( \
     3581    IF_FEATURE_MDEV_CONFIG( \
    20573582       "The mdev config file contains lines that look like:\n" \
    20583583       "  hd[a-z][0-9]* 0:3 660\n\n" \
    20593584       "That's device name (with regex match), uid:gid, and permissions.\n\n" \
    2060     USE_FEATURE_MDEV_EXEC( \
     3585    IF_FEATURE_MDEV_EXEC( \
    20613586       "Optionally, that can be followed (on the same line) by a special character\n" \
    20623587       "and a command line to run after creating/before deleting the corresponding\n" \
     
    20683593       "the /dev directory, and use system() which calls /bin/sh.\n\n" \
    20693594    ) \
    2070        "Config file parsing stops on the first matching line. If no config\n"\
    2071        "entry is matched, devices are created with default 0:0 660. (Make\n"\
     3595       "Config file parsing stops on the first matching line. If no config\n" \
     3596       "entry is matched, devices are created with default 0:0 660. (Make\n" \
    20723597       "the last line match .* to override this.)\n\n" \
    20733598    )
    20743599
    2075 #define mesg_trivial_usage \
    2076        "[y|n]"
    2077 #define mesg_full_usage \
    2078        "Control write access to your terminal\n" \
    2079        "    y   Allow write access to your terminal\n" \
    2080        "    n   Disallow write access to your terminal"
     3600#define microcom_trivial_usage \
     3601       "[-d DELAY] [-t TIMEOUT] [-s SPEED] [-X] TTY"
     3602#define microcom_full_usage "\n\n" \
     3603       "Copy bytes for stdin to TTY and from TTY to stdout\n" \
     3604     "\nOptions:" \
     3605     "\n    -d  Wait up to DELAY ms for TTY output before sending every" \
     3606     "\n        next byte to it" \
     3607     "\n    -t  Exit if both stdin and TTY are silent for TIMEOUT ms" \
     3608     "\n    -s  Set serial line to SPEED" \
     3609     "\n    -X  Disable special meaning of NUL and Ctrl-X from stdin" \
    20813610
    20823611#define mkdir_trivial_usage \
    2083        "[OPTION] DIRECTORY..."
    2084 #define mkdir_full_usage \
    2085        "Create the DIRECTORY(ies) if they do not already exist" \
    2086        "\n\nOptions:\n" \
    2087        "    -m  Set permission mode (as in chmod), not rwxrwxrwx - umask\n" \
    2088        "    -p  No error if existing, make parent directories as needed" \
    2089     USE_SELINUX( \
    2090        "\n  -Z  Set security context" \
     3612       "[OPTIONS] DIRECTORY..."
     3613#define mkdir_full_usage "\n\n" \
     3614       "Create DIRECTORY\n" \
     3615     "\nOptions:" \
     3616     "\n    -m MODE Mode" \
     3617     "\n    -p  No error if exists; make parent directories as needed" \
     3618    IF_SELINUX( \
     3619     "\n    -Z  Set security context" \
    20913620    )
    20923621
     
    20993628       "$ mkdir -p /tmp/foo/bar/baz\n"
    21003629
    2101 #define mke2fs_trivial_usage \
    2102        "[-c|-l filename] [-b block-size] [-f fragment-size] [-g blocks-per-group] " \
    2103        "[-i bytes-per-inode] [-j] [-J journal-options] [-N number-of-inodes] [-n] " \
    2104        "[-m reserved-blocks-percentage] [-o creator-os] [-O feature[,...]] [-q] " \
    2105        "[r fs-revision-level] [-E extended-options] [-v] [-F] [-L volume-label] " \
    2106        "[-M last-mounted-directory] [-S] [-T filesystem-type] " \
    2107        "device [blocks-count]"
    2108 #define mke2fs_full_usage \
    2109        "    -b size     Block size in bytes\n" \
    2110        "    -c      Check for bad blocks before creating\n" \
    2111        "    -E opts     Set extended options\n" \
    2112        "    -f size     Fragment size in bytes\n" \
    2113        "    -F      Force (ignore sanity checks)\n" \
    2114        "    -g num      Number of blocks in a block group\n" \
    2115        "    -i ratio    The bytes/inode ratio\n" \
    2116        "    -j      Create a journal (ext3)\n" \
    2117        "    -J opts     Set journal options (size/device)\n" \
    2118        "    -l file     Read bad blocks list from file\n" \
    2119        "    -L lbl      Set the volume label\n" \
    2120        "    -m percent  Percent of fs blocks to reserve for admin\n" \
    2121        "    -M dir      Set last mounted directory\n" \
    2122        "    -n      Do not actually create anything\n" \
    2123        "    -N num      Number of inodes to create\n" \
    2124        "    -o os       Set the 'creator os' field\n" \
    2125        "    -O features Dir_index/filetype/has_journal/journal_dev/sparse_super\n" \
    2126        "    -q      Quiet\n" \
    2127        "    -r rev      Set filesystem revision\n" \
    2128        "    -S      Write superblock and group descriptors only\n" \
    2129        "    -T fs-type  Set usage type (news/largefile/largefile4)\n" \
    2130        "    -v      Verbose"
    2131 
    21323630#define mkfifo_trivial_usage \
    2133        "[OPTIONS] name"
    2134 #define mkfifo_full_usage \
    2135        "Create a named pipe (identical to 'mknod name p')" \
    2136        "\n\nOptions:\n" \
    2137        "    -m  Create the pipe using the specified mode (default a=rw)" \
    2138     USE_SELINUX( \
    2139        "\n  -Z  Set security context" \
     3631       "[-m MODE] " IF_SELINUX("[-Z] ") "NAME"
     3632#define mkfifo_full_usage "\n\n" \
     3633       "Create named pipe\n" \
     3634     "\nOptions:" \
     3635     "\n    -m MODE Mode (default a=rw)" \
     3636    IF_SELINUX( \
     3637     "\n    -Z  Set security context" \
    21403638    )
    21413639
     3640#define mkfs_ext2_trivial_usage \
     3641       "[-Fn] " \
     3642       /* "[-c|-l filename] " */ \
     3643       "[-b BLK_SIZE] " \
     3644       /* "[-f fragment-size] [-g blocks-per-group] " */ \
     3645       "[-i INODE_RATIO] [-I INODE_SIZE] " \
     3646       /* "[-j] [-J journal-options] [-N number-of-inodes] " */ \
     3647       "[-m RESERVED_PERCENT] " \
     3648       /* "[-o creator-os] [-O feature[,...]] [-q] " */ \
     3649       /* "[r fs-revision-level] [-E extended-options] [-v] [-F] " */ \
     3650       "[-L LABEL] " \
     3651       /* "[-M last-mounted-directory] [-S] [-T filesystem-type] " */ \
     3652       "BLOCKDEV [KBYTES]"
     3653#define mkfs_ext2_full_usage "\n\n" \
     3654       "    -b BLK_SIZE Block size, bytes" \
     3655/*   "\n    -c      Check device for bad blocks" */ \
     3656/*   "\n    -E opts     Set extended options" */ \
     3657/*   "\n    -f size     Fragment size in bytes" */ \
     3658     "\n    -F      Force" \
     3659/*   "\n    -g N        Number of blocks in a block group" */ \
     3660     "\n    -i RATIO    Max number of files is filesystem_size / RATIO" \
     3661     "\n    -I BYTES    Inode size (min 128)" \
     3662/*   "\n    -j      Create a journal (ext3)" */ \
     3663/*   "\n    -J opts     Set journal options (size/device)" */ \
     3664/*   "\n    -l file     Read bad blocks list from file" */ \
     3665     "\n    -L LBL      Volume label" \
     3666     "\n    -m PERCENT  Percent of blocks to reserve for admin" \
     3667/*   "\n    -M dir      Set last mounted directory" */ \
     3668     "\n    -n      Dry run" \
     3669/*   "\n    -N N        Number of inodes to create" */ \
     3670/*   "\n    -o os       Set the 'creator os' field" */ \
     3671/*   "\n    -O features Dir_index/filetype/has_journal/journal_dev/sparse_super" */ \
     3672/*   "\n    -q      Quiet" */ \
     3673/*   "\n    -r rev      Set filesystem revision" */ \
     3674/*   "\n    -S      Write superblock and group descriptors only" */ \
     3675/*   "\n    -T fs-type  Set usage type (news/largefile/largefile4)" */ \
     3676/*   "\n    -v      Verbose" */ \
     3677
    21423678#define mkfs_minix_trivial_usage \
    2143        "[-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]"
    2144 #define mkfs_minix_full_usage \
    2145        "Make a MINIX filesystem" \
    2146        "\n\nOptions:\n" \
    2147        "    -c      Check the device for bad blocks\n" \
    2148        "    -n [14|30]  Specify the maximum length of filenames\n" \
    2149        "    -i INODES   Specify the number of inodes for the filesystem\n" \
    2150        "    -l FILENAME Read the bad blocks list from FILENAME\n" \
    2151        "    -v      Make a Minix version 2 filesystem"
     3679       "[-c | -l FILE] [-nXX] [-iXX] BLOCKDEV [KBYTES]"
     3680#define mkfs_minix_full_usage "\n\n" \
     3681       "Make a MINIX filesystem\n" \
     3682     "\nOptions:" \
     3683     "\n    -c      Check device for bad blocks" \
     3684     "\n    -n [14|30]  Maximum length of filenames" \
     3685     "\n    -i INODES   Number of inodes for the filesystem" \
     3686     "\n    -l FILE     Read bad blocks list from FILE" \
     3687     "\n    -v      Make version 2 filesystem" \
     3688
     3689#define mkfs_reiser_trivial_usage \
     3690       "[-f] [-l LABEL] BLOCKDEV [4K-BLOCKS]"
     3691
     3692#define mkfs_reiser_full_usage "\n\n" \
     3693       "Make a ReiserFS V3 filesystem\n" \
     3694     "\nOptions:" \
     3695     "\n    -f  Force" \
     3696     "\n    -l LBL  Volume label" \
     3697
     3698#define mkfs_vfat_trivial_usage \
     3699       "[-v] [-n LABEL] BLOCKDEV [KBYTES]"
     3700/* Accepted but ignored:
     3701       "[-c] [-C] [-I] [-l bad-block-file] [-b backup-boot-sector] "
     3702       "[-m boot-msg-file] [-i volume-id] "
     3703       "[-s sectors-per-cluster] [-S logical-sector-size] [-f number-of-FATs] "
     3704       "[-h hidden-sectors] [-F fat-size] [-r root-dir-entries] [-R reserved-sectors] "
     3705*/
     3706#define mkfs_vfat_full_usage "\n\n" \
     3707       "Make a FAT32 filesystem\n" \
     3708     "\nOptions:" \
     3709/*   "\n    -c  Check device for bad blocks" */ \
     3710     "\n    -v  Verbose" \
     3711/*   "\n    -I  Allow to use entire disk device (e.g. /dev/hda)" */ \
     3712     "\n    -n LBL  Volume label" \
    21523713
    21533714#define mknod_trivial_usage \
    2154        "[OPTIONS] NAME TYPE MAJOR MINOR"
    2155 #define mknod_full_usage \
    2156        "Create a special file (block, character, or pipe)" \
    2157        "\n\nOptions:\n" \
    2158        "    -m  Create the special file using the specified mode (default a=rw)" \
    2159        "\n\nTYPEs include:\n" \
    2160        "    b:  Make a block (buffered) device\n" \
    2161        "    c or u: Make a character (un-buffered) device\n" \
    2162        "    p:  Make a named pipe. MAJOR and MINOR are ignored for named pipes" \
    2163     USE_SELINUX( \
    2164        "\n  -Z  Set security context" \
    2165     )
     3715       "[-m MODE] " IF_SELINUX("[-Z] ") "NAME TYPE MAJOR MINOR"
     3716#define mknod_full_usage "\n\n" \
     3717       "Create a special file (block, character, or pipe)\n" \
     3718     "\nOptions:" \
     3719     "\n    -m MODE Creation mode (default a=rw)" \
     3720    IF_SELINUX( \
     3721     "\n    -Z  Set security context" \
     3722    ) \
     3723     "\nTYPE:" \
     3724     "\n    b   Block device" \
     3725     "\n    c or u  Character device" \
     3726     "\n    p   Named pipe (MAJOR and MINOR are ignored)" \
    21663727
    21673728#define mknod_example_usage \
     
    21703731
    21713732#define mkswap_trivial_usage \
    2172        "[-c] [-v0|-v1] device [block-count]"
    2173 #define mkswap_full_usage \
    2174        "Prepare a disk partition to be used as swap partition" \
    2175        "\n\nOptions:\n" \
    2176        "    -c      Check for read-ability\n" \
    2177        "    -v0     Make version 0 swap [max 128 Megs]\n" \
    2178        "    -v1     Make version 1 swap [big!] (default for kernels > 2.1.117)\n" \
    2179        "    block-count Number of block to use (default is entire partition)"
     3733       "[-L LBL] BLOCKDEV [KBYTES]"
     3734#define mkswap_full_usage "\n\n" \
     3735       "Prepare BLOCKDEV to be used as swap partition\n" \
     3736     "\nOptions:" \
     3737     "\n    -L LBL  Label" \
    21803738
    21813739#define mktemp_trivial_usage \
    2182        "[-dq] TEMPLATE"
    2183 #define mktemp_full_usage \
    2184        "Create a temporary file with its name based on TEMPLATE.\n" \
    2185        "TEMPLATE is any name with six 'Xs' (i.e., /tmp/temp.XXXXXX)." \
    2186        "\n\nOptions:\n" \
    2187        "    -d  Make a directory instead of a file\n" \
    2188        "    -q  Fail silently if an error occurs"
     3740       "[-dt] [-p DIR] [TEMPLATE]"
     3741#define mktemp_full_usage "\n\n" \
     3742       "Create a temporary file with name based on TEMPLATE and print its name.\n" \
     3743       "TEMPLATE must end with XXXXXX (e.g. [/dir/]nameXXXXXX).\n" \
     3744     "\nOptions:" \
     3745     "\n    -d  Make a directory instead of a file" \
     3746/*   "\n    -q  Fail silently if an error occurs" - we ignore it */ \
     3747     "\n    -t  Generate a path rooted in temporary directory" \
     3748     "\n    -p DIR  Use DIR as a temporary directory (implies -t)" \
     3749     "\n" \
     3750     "\nFor -t or -p, directory is chosen as follows:" \
     3751     "\n$TMPDIR if set, else -p DIR, else /tmp" \
     3752
    21893753#define mktemp_example_usage \
    21903754       "$ mktemp /tmp/temp.XXXXXX\n" \
     
    21933757       "-rw-------    1 andersen andersen        0 Apr 25 17:10 /tmp/temp.mWiLjM\n"
    21943758
    2195 #define modprobe_trivial_usage \
    2196        "[-knqrsv] MODULE [symbol=value ...]"
    2197 #define modprobe_full_usage \
    2198        "Options:\n" \
    2199        "    -k  Make module autoclean-able\n" \
    2200        "    -n  Just show what would be done\n" \
    2201        "    -q  Quiet\n" \
    2202        "    -r  Remove module (stacks) or do autoclean\n" \
    2203        "    -s  Report via syslog instead of stderr\n" \
    2204        "    -v  Verbose"
    2205 #define modprobe_notes_usage \
    2206 "modprobe can (un)load a stack of modules, passing each module options (when\n" \
    2207 "loading). modprobe uses a configuration file to determine what option(s) to\n" \
    2208 "pass each module it loads.\n" \
    2209 "\n" \
    2210 "The configuration file is searched (in order) amongst:\n" \
    2211 "\n" \
    2212 "    /etc/modprobe.conf (2.6 only)\n" \
    2213 "    /etc/modules.conf\n" \
    2214 "    /etc/conf.modules (deprecated)\n" \
    2215 "\n" \
    2216 "They all have the same syntax (see below). If none is present, it is\n" \
    2217 "_not_ an error; each loaded module is then expected to load without\n" \
    2218 "options. Once a file is found, the others are tested for.\n" \
    2219 "\n" \
    2220 "/etc/modules.conf entry format:\n" \
    2221 "\n" \
    2222 "  alias <alias_name> <mod_name>\n" \
    2223 "    Makes it possible to modprobe alias_name, when there is no such module.\n" \
    2224 "    It makes sense if your mod_name is long, or you want a more representative\n" \
    2225 "    name for that module (eg. 'scsi' in place of 'aha7xxx').\n" \
    2226 "    This makes it also possible to use a different set of options (below) for\n" \
    2227 "    the module and the alias.\n" \
    2228 "    A module can be aliased more than once.\n" \
    2229 "\n" \
    2230 "  options <mod_name|alias_name> <symbol=value ...>\n" \
    2231 "    When loading module mod_name (or the module aliased by alias_name), pass\n" \
    2232 "    the \"symbol=value\" pairs as option to that module.\n" \
    2233 "\n" \
    2234 "Sample /etc/modules.conf file:\n" \
    2235 "\n" \
    2236 "  options tulip irq=3\n" \
    2237 "  alias tulip tulip2\n" \
    2238 "  options tulip2 irq=4 io=0x308\n" \
    2239 "\n" \
    2240 "Other functionality offered by 'classic' modprobe is not available in\n" \
    2241 "this implementation.\n" \
    2242 "\n" \
    2243 "If module options are present both in the config file, and on the command line,\n" \
    2244 "then the options from the command line will be passed to the module _after_\n" \
    2245 "the options from the config file. That way, you can have defaults in the config\n" \
    2246 "file, and override them for a specific usage from the command line.\n"
    2247 #define modprobe_example_usage \
    2248        "(with the above /etc/modules.conf):\n\n" \
    2249        "$ modprobe tulip\n" \
    2250        "   will load the module 'tulip' with default option 'irq=3'\n\n" \
    2251        "$ modprobe tulip irq=5\n" \
    2252        "   will load the module 'tulip' with option 'irq=5', thus overriding the default\n\n" \
    2253        "$ modprobe tulip2\n" \
    2254        "   will load the module 'tulip' with default options 'irq=4 io=0x308',\n" \
    2255        "   which are the default for alias 'tulip2'\n\n" \
    2256        "$ modprobe tulip2 irq=8\n" \
    2257        "   will load the module 'tulip' with default options 'irq=4 io=0x308 irq=8',\n" \
    2258        "   which are the default for alias 'tulip2' overridden by the option 'irq=8'\n\n" \
    2259        "   from the command line\n\n" \
    2260        "$ modprobe tulip2 irq=2 io=0x210\n" \
    2261        "   will load the module 'tulip' with default options 'irq=4 io=0x308 irq=4 io=0x210',\n" \
    2262        "   which are the default for alias 'tulip2' overridden by the options 'irq=2 io=0x210'\n\n" \
    2263        "   from the command line\n"
    2264 
    22653759#define more_trivial_usage \
    2266        "[FILE ...]"
    2267 #define more_full_usage \
    2268        "View FILE or standard input one screenful at a time"
     3760       "[FILE]..."
     3761#define more_full_usage "\n\n" \
     3762       "View FILE (or stdin) one screenful at a time"
     3763
    22693764#define more_example_usage \
    22703765       "$ dmesg | more\n"
    22713766
    22723767#define mount_trivial_usage \
    2273        "[flags] DEVICE NODE [-o options,more-options]"
    2274 #define mount_full_usage \
    2275        "Mount a filesystem. Filesystem autodetection requires /proc be mounted." \
    2276        "\n\nOptions:\n" \
    2277        "    -a      Mount all filesystems in fstab\n" \
    2278     USE_FEATURE_MTAB_SUPPORT( \
    2279        "    -f      \"Fake\" Add entry to mount table but don't mount it\n" \
    2280        "    -n      Don't write a mount table entry\n" \
    2281     ) \
    2282        "    -o option   One of many filesystem options, listed below\n" \
    2283        "    -r      Mount the filesystem read-only\n" \
    2284        "    -t fs-type  Specify the filesystem type\n" \
    2285        "    -w      Mount for reading and writing (default)\n" \
    2286        "\n" \
    2287        "Options for use with the \"-o\" flag:\n" \
    2288     USE_FEATURE_MOUNT_LOOP( \
    2289        "    loop        Ignored (loop devices are autodetected)\n" \
    2290     ) \
    2291     USE_FEATURE_MOUNT_FLAGS( \
    2292        "    [a]sync     Writes are asynchronous / synchronous\n" \
    2293        "    [no]atime   Disable / enable updates to inode access times\n" \
    2294        "    [no]diratime    Disable / enable atime updates to directories\n" \
    2295        "    [no]dev     Allow use of special device files / disallow them\n" \
    2296        "    [no]exec    Allow use of executable files / disallow them\n" \
    2297        "    [no]suid    Allow set-user-id-root programs / disallow them\n" \
    2298        "    [r]shared   Convert [recursively] to a shared subtree\n" \
    2299        "    [r]slave    Convert [recursively] to a slave subtree\n" \
    2300        "    [r]private  Convert [recursively] to a private subtree\n" \
    2301        "    [un]bindable    Make mount point [un]able to be bind mounted\n" \
    2302        "    bind        Bind a directory to an additional location\n" \
    2303        "    move        Relocate an existing mount point\n" \
    2304     ) \
    2305        "    remount     Remount a mounted filesystem, changing its flags\n" \
    2306        "    ro/rw       Mount for read-only / read-write\n" \
    2307        "\n" \
    2308        "There are EVEN MORE flags that are specific to each filesystem\n" \
    2309        "You'll have to see the written documentation for those filesystems"
     3768       "[OPTIONS] [-o OPTS] DEVICE NODE"
     3769#define mount_full_usage "\n\n" \
     3770       "Mount a filesystem. Filesystem autodetection requires /proc.\n" \
     3771     "\nOptions:" \
     3772     "\n    -a      Mount all filesystems in fstab" \
     3773    IF_FEATURE_MOUNT_FAKE( \
     3774    IF_FEATURE_MTAB_SUPPORT( \
     3775     "\n    -f      Update /etc/mtab, but don't mount" \
     3776    ) \
     3777    IF_NOT_FEATURE_MTAB_SUPPORT( \
     3778     "\n    -f      Dry run" \
     3779    ) \
     3780    ) \
     3781    IF_FEATURE_MOUNT_HELPERS( \
     3782     "\n    -i      Don't run mount helper" \
     3783    ) \
     3784    IF_FEATURE_MTAB_SUPPORT( \
     3785     "\n    -n      Don't update /etc/mtab" \
     3786    ) \
     3787     "\n    -r      Read-only mount" \
     3788     "\n    -w      Read-write mount (default)" \
     3789     "\n    -t FSTYPE   Filesystem type" \
     3790     "\n    -O OPT      Mount only filesystems with option OPT (-a only)" \
     3791     "\n-o OPT:" \
     3792    IF_FEATURE_MOUNT_LOOP( \
     3793     "\n    loop        Ignored (loop devices are autodetected)" \
     3794    ) \
     3795    IF_FEATURE_MOUNT_FLAGS( \
     3796     "\n    [a]sync     Writes are [a]synchronous" \
     3797     "\n    [no]atime   Disable/enable updates to inode access times" \
     3798     "\n    [no]diratime    Disable/enable atime updates to directories" \
     3799     "\n    [no]relatime    Disable/enable atime updates relative to modification time" \
     3800     "\n    [no]dev     (Dis)allow use of special device files" \
     3801     "\n    [no]exec    (Dis)allow use of executable files" \
     3802     "\n    [no]suid    (Dis)allow set-user-id-root programs" \
     3803     "\n    [r]shared   Convert [recursively] to a shared subtree" \
     3804     "\n    [r]slave    Convert [recursively] to a slave subtree" \
     3805     "\n    [r]private  Convert [recursively] to a private subtree" \
     3806     "\n    [un]bindable    Make mount point [un]able to be bind mounted" \
     3807     "\n    bind        Bind a file or directory to another location" \
     3808     "\n    move        Relocate an existing mount point" \
     3809    ) \
     3810     "\n    remount     Remount a mounted filesystem, changing flags" \
     3811     "\n    ro/rw       Same as -r/-w" \
     3812     "\n" \
     3813     "\nThere are filesystem-specific -o flags." \
     3814
    23103815#define mount_example_usage \
    23113816       "$ mount\n" \
     
    23203825
    23213826#define mountpoint_trivial_usage \
    2322        "[-q] <[-d] DIR | -x DEVICE>"
    2323 #define mountpoint_full_usage \
    2324        "mountpoint checks if the directory is a mountpoint" \
    2325        "\n\nOptions:\n" \
    2326        "    -q  Quiet\n" \
    2327        "    -d  Print major/minor device number of the filesystem\n" \
    2328        "    -x  Print major/minor device number of the blockdevice"
     3827       "[-q] <[-dn] DIR | -x DEVICE>"
     3828#define mountpoint_full_usage "\n\n" \
     3829       "Check if the directory is a mountpoint\n" \
     3830     "\nOptions:" \
     3831     "\n    -q  Quiet" \
     3832     "\n    -d  Print major/minor device number of the filesystem" \
     3833     "\n    -n  Print device name of the filesystem" \
     3834     "\n    -x  Print major/minor device number of the blockdevice" \
     3835
    23293836#define mountpoint_example_usage \
    23303837       "$ mountpoint /proc\n" \
     
    23353842#define mt_trivial_usage \
    23363843       "[-f device] opcode value"
    2337 #define mt_full_usage \
     3844#define mt_full_usage "\n\n" \
    23383845       "Control magnetic tape drive operation\n" \
    2339        "\nAvailable Opcodes:\n\n" \
     3846       "\n" \
     3847       "Available Opcodes:\n" \
     3848       "\n" \
    23403849       "bsf bsfm bsr bss datacompression drvbuffer eof eom erase\n" \
    23413850       "fsf fsfm fsr fss load lock mkpart nop offline ras1 ras2\n" \
    23423851       "ras3 reset retension rewind rewoffline seek setblk setdensity\n" \
    2343        "setpart tell unload unlock weof wset"
    2344 
    2345 #define mv_trivial_usage \
    2346        "[OPTION]... SOURCE DEST\n" \
    2347        "or: mv [OPTION]... SOURCE... DIRECTORY"
    2348 #define mv_full_usage \
    2349        "Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY" \
    2350        "\n\nOptions:\n" \
    2351        "    -f  Don't prompt before overwriting\n" \
    2352        "    -i  Interactive, prompt before overwrite"
    2353 #define mv_example_usage \
    2354        "$ mv /tmp/foo /bin/bar\n"
     3852       "setpart tell unload unlock weof wset" \
    23553853
    23563854#define nameif_trivial_usage \
    23573855       "[-s] [-c FILE] [{IFNAME MACADDR}]"
    2358 #define nameif_full_usage \
    2359        "Rename network interface while it in the down state" \
    2360        "\n\nOptions:\n" \
    2361        "    -c FILE     Use configuration file (default is /etc/mactab)\n" \
    2362        "    -s      Use syslog (LOCAL0 facility)\n" \
    2363        "    IFNAME MACADDR  new_interface_name interface_mac_address"
     3856#define nameif_full_usage "\n\n" \
     3857       "Rename network interface while it in the down state\n" \
     3858     "\nOptions:" \
     3859     "\n    -c FILE     Use configuration file (default: /etc/mactab)" \
     3860     "\n    -s      Use syslog (LOCAL0 facility)" \
     3861     "\n    IFNAME MACADDR  new_interface_name interface_mac_address" \
     3862
    23643863#define nameif_example_usage \
    23653864       "$ nameif -s dmz0 00:A0:C9:8C:F6:3F\n" \
     
    23673866       "$ nameif -c /etc/my_mactab_file\n" \
    23683867
    2369 #if !ENABLE_DESKTOP
    2370 
    2371 #if ENABLE_NC_SERVER || ENABLE_NC_EXTRA
    2372 #define NC_OPTIONS_STR "\n\nOptions:"
    2373 #else
    2374 #define NC_OPTIONS_STR
    2375 #endif
    2376 
    2377 #define nc_trivial_usage \
    2378     USE_NC_EXTRA("[-iN] [-wN] ")USE_NC_SERVER("[-l] [-p PORT] ") \
    2379        "["USE_NC_EXTRA("-f FILENAME|")"IPADDR PORTNUM]"USE_NC_EXTRA(" [-e COMMAND]")
    2380 #define nc_full_usage \
    2381        "Open a pipe to IP:port" USE_NC_EXTRA(" or file") \
    2382     NC_OPTIONS_STR \
    2383     USE_NC_EXTRA( \
    2384        "\n  -e  Exec rest of command line after connect" \
    2385        "\n  -i SECS Delay interval for lines sent" \
    2386        "\n  -w SECS Timeout for connect" \
    2387        "\n  -f FILE Use file (ala /dev/ttyS0) instead of network" \
    2388     ) \
    2389     USE_NC_SERVER( \
    2390        "\n  -l  Listen mode, for inbound connects" \
    2391     USE_NC_EXTRA( \
    2392        "\n      (use -l twice with -e for persistent server)") \
    2393        "\n  -p PORT Local port number" \
    2394     )
    2395 
    2396 #define nc_notes_usage "" \
    2397     USE_NC_EXTRA( \
    2398        "To use netcat as a terminal emulator on a serial port:\n\n" \
    2399        "$ stty 115200 -F /dev/ttyS0\n" \
    2400        "$ stty raw -echo -ctlecho && nc -f /dev/ttyS0\n" \
    2401     )
    2402 
    2403 #define nc_example_usage \
    2404        "$ nc foobar.somedomain.com 25\n" \
    2405        "220 foobar ESMTP Exim 3.12 #1 Sat, 15 Apr 2000 00:03:02 -0600\n" \
    2406        "help\n" \
    2407        "214-Commands supported:\n" \
    2408        "214-    HELO EHLO MAIL RCPT DATA AUTH\n" \
    2409        "214     NOOP QUIT RSET HELP\n" \
    2410        "quit\n" \
    2411        "221 foobar closing connection\n"
    2412 
    2413 #else /* DESKTOP nc - much more compatible with nc 1.10 */
    2414 
    2415 #define nc_trivial_usage \
    2416        "[-options] hostname port  - connect" \
    2417     USE_NC_SERVER("\nnc [-options] -l -p port [hostname] [port]  - listen")
    2418 #define nc_full_usage \
    2419     USE_NC_SERVER( \
    2420        "-l      Listen mode, for inbound connects\n" \
    2421     ) \
    2422        "-n      Do not do DNS resolution" \
    2423      "\n-s addr     Local address" \
    2424      "\n-p port     Local port" \
    2425      "\n-u      UDP mode" \
    2426      "\n-v      Verbose (cumulative: -vv)" \
    2427      "\n-w secs     Timeout for connects and final net reads" \
    2428     USE_NC_EXTRA( \
    2429      "\n-i sec      Delay interval for lines sent" /* ", ports scanned" */ \
    2430      "\n-o file     Hex dump of traffic" \
    2431      "\n-z      Zero-I/O mode (scanning)" \
    2432     ) \
    2433      "\n-e prog [args]  Program to exec after connect (must be last)" \
    2434 /*   "\n-r      Randomize local and remote ports" */
    2435 /*   "\n-g gateway  Source-routing hop point[s], up to 8" */
    2436 /*   "\n-G num      Source-routing pointer: 4, 8, 12, ..." */
    2437 /*   "\nport numbers can be individual or ranges: lo-hi [inclusive]" */
    2438 
    2439 #endif
    2440 
    2441 #define netstat_trivial_usage \
    2442        "[-laentuwxr"USE_FEATURE_NETSTAT_WIDE("W")"]"
    2443 #define netstat_full_usage \
    2444        "Display networking information" \
    2445      "\n\nOptions:" \
    2446      "\n    -l  Display listening server sockets" \
    2447      "\n    -a  Display all sockets (default: connected)" \
    2448      "\n    -e  Display other/more information" \
    2449      "\n    -n  Don't resolve names" \
    2450      "\n    -t  Tcp sockets" \
    2451      "\n    -u  Udp sockets" \
    2452      "\n    -w  Raw sockets" \
    2453      "\n    -x  Unix sockets" \
    2454      "\n    -r  Display routing table" \
    2455     USE_FEATURE_NETSTAT_WIDE( \
    2456      "\n    -W  Display with no column truncation" \
    2457     )
    2458 
    2459 #define nice_trivial_usage \
    2460        "[-n ADJUST] [COMMAND [ARG] ...]"
    2461 #define nice_full_usage \
    2462        "Run a program with modified scheduling priority" \
    2463        "\n\nOptions:\n" \
    2464        "    -n ADJUST   Adjust the scheduling priority by ADJUST"
    2465 
    24663868#define nmeter_trivial_usage \
    24673869       "format_string"
    2468 #define nmeter_full_usage \
     3870#define nmeter_full_usage "\n\n" \
    24693871       "Monitor system in real time\n\n" \
    24703872       "Format specifiers:\n" \
    2471        "%Nc or %[cN]    Monitor CPU. N - bar size, default 10\n" \
     3873       " %Nc or %[cN]   Monitor CPU. N - bar size, default 10\n" \
    24723874       "        (displays: S:system U:user N:niced D:iowait I:irq i:softirq)\n" \
    2473        "%[niface]   Monitor network interface 'iface'\n" \
    2474        "%m      Monitor allocated memory\n" \
    2475        "%[mf]       Monitor free memory\n" \
    2476        "%[mt]       Monitor total memory\n" \
    2477        "%s      Monitor allocated swap\n" \
    2478        "%f      Monitor number of used file descriptors\n" \
    2479        "%Ni     Monitor total/specific IRQ rate\n" \
    2480        "%x      Monitor context switch rate\n" \
    2481        "%p      Monitor forks\n" \
    2482        "%[pn]       Monitor # of processes\n" \
    2483        "%b      Monitor block io\n" \
    2484        "%Nt     Show time (with N decimal points)\n" \
    2485        "%Nd     Milliseconds between updates (default=1000)\n" \
    2486        "%r      Print <cr> instead of <lf> at EOL"
     3875       " %[niface]  Monitor network interface 'iface'\n" \
     3876       " %m     Monitor allocated memory\n" \
     3877       " %[mf]      Monitor free memory\n" \
     3878       " %[mt]      Monitor total memory\n" \
     3879       " %s     Monitor allocated swap\n" \
     3880       " %f     Monitor number of used file descriptors\n" \
     3881       " %Ni        Monitor total/specific IRQ rate\n" \
     3882       " %x     Monitor context switch rate\n" \
     3883       " %p     Monitor forks\n" \
     3884       " %[pn]      Monitor # of processes\n" \
     3885       " %b     Monitor block io\n" \
     3886       " %Nt        Show time (with N decimal points)\n" \
     3887       " %Nd        Milliseconds between updates (default:1000)\n" \
     3888       " %r     Print <cr> instead of <lf> at EOL" \
     3889
    24873890#define nmeter_example_usage \
    24883891       "nmeter '%250d%t %20c int %i bio %b mem %m forks%p'"
    24893892
    24903893#define nohup_trivial_usage \
    2491        "COMMAND [ARGS]"
    2492 #define nohup_full_usage \
    2493        "Run a command immune to hangups, with output to a non-tty"
     3894       "PROG ARGS"
     3895#define nohup_full_usage "\n\n" \
     3896       "Run PROG immune to hangups, with output to a non-tty"
    24943897#define nohup_example_usage \
    24953898       "$ nohup make &"
     
    24973900#define nslookup_trivial_usage \
    24983901       "[HOST] [SERVER]"
    2499 #define nslookup_full_usage \
     3902#define nslookup_full_usage "\n\n" \
    25003903       "Query the nameserver for the IP address of the given HOST\n" \
    25013904       "optionally using a specified DNS server"
     
    25083911       "Address:    127.0.0.1\n"
    25093912
     3913#define ntpd_trivial_usage \
     3914    "[-dnqNw"IF_FEATURE_NTPD_SERVER("l")"] [-S PROG] [-p PEER]..."
     3915#define ntpd_full_usage "\n\n" \
     3916       "NTP client/server\n" \
     3917     "\nOptions:" \
     3918     "\n    -d  Verbose" \
     3919     "\n    -n  Do not daemonize" \
     3920     "\n    -q  Quit after clock is set" \
     3921     "\n    -N  Run at high priority" \
     3922     "\n    -w  Do not set time (only query peers), implies -n" \
     3923    IF_FEATURE_NTPD_SERVER( \
     3924     "\n    -l  Run as server on port 123" \
     3925    ) \
     3926     "\n    -S PROG Run PROG after stepping time, stratum change, and every 11 mins" \
     3927     "\n    -p PEER Obtain time from PEER (may be repeated)" \
     3928
    25103929#define od_trivial_usage \
    2511        "[-aBbcDdeFfHhIiLlOovXx] [FILE]"
    2512 #define od_full_usage \
     3930       "[-aBbcDdeFfHhIiLlOovXx] " IF_DESKTOP("[-t TYPE] ") "[FILE]"
     3931#define od_full_usage "\n\n" \
    25133932       "Write an unambiguous representation, octal bytes by default, of FILE\n" \
    2514        "to standard output. With no FILE, or when FILE is -, read standard input."
     3933       "(or stdin) to stdout"
    25153934
    25163935#define openvt_trivial_usage \
    2517        "VTNUM COMMAND [ARGS...]"
    2518 #define openvt_full_usage \
    2519        "Start a command on a new virtual terminal"
     3936       "[-c N] [-sw] [PROG ARGS]"
     3937#define openvt_full_usage "\n\n" \
     3938       "Start PROG on a new virtual terminal\n" \
     3939     "\nOptions:" \
     3940     "\n    -c N    Use specified VT" \
     3941     "\n    -s  Switch to the VT" \
     3942/*   "\n    -l  Run PROG as login shell (by prepending '-')" */ \
     3943     "\n    -w  Wait for PROG to exit" \
     3944
    25203945#define openvt_example_usage \
    25213946       "openvt 2 /bin/ash\n"
    25223947
     3948/*
     3949#define parse_trivial_usage \
     3950       "[-n MAXTOKENS] [-m MINTOKENS] [-d DELIMS] [-f FLAGS] FILE..."
     3951#define parse_full_usage ""
     3952*/
     3953
    25233954#define passwd_trivial_usage \
    2524        "[OPTION] [name]"
    2525 #define passwd_full_usage \
    2526        "Change a user password. If no name is specified,\n" \
    2527        "changes the password for the current user." \
    2528        "\n\nOptions:\n" \
    2529        "    -a  Define which algorithm shall be used for the password\n" \
    2530        "        (choices: des, md5)\n" /* ", sha1)" */ \
    2531        "    -d  Delete the password for the specified user account\n" \
    2532        "    -l  Locks (disables) the specified user account\n" \
    2533        "    -u  Unlocks (re-enables) the specified user account"
     3955       "[OPTIONS] [USER]"
     3956#define passwd_full_usage "\n\n" \
     3957       "Change USER's password. If no USER is specified,\n" \
     3958       "changes the password for the current user.\n" \
     3959     "\nOptions:" \
     3960     "\n    -a ALG  Algorithm to use for password (des, md5)" /* ", sha1)" */ \
     3961     "\n    -d  Delete password for the account" \
     3962     "\n    -l  Lock (disable) account" \
     3963     "\n    -u  Unlock (re-enable) account" \
    25343964
    25353965#define chpasswd_trivial_usage \
    2536        "[--md5|--encrypt]"
    2537 #define chpasswd_full_usage \
    2538        "Read user:password information from stdin\n" \
    2539        "and update /etc/passwd accordingly." \
    2540        "\n\nOptions:" \
    2541        "\n  -e, --encrypt   Supplied passwords are in encrypted form" \
    2542        "\n  -m, --md5   Use MD5 encryption instead of DES"
    2543 
    2544 #define patch_trivial_usage \
    2545        "[-p num] [-i diff]"
    2546 #define patch_full_usage \
    2547        "    -p NUM  Strip NUM leading components from file names\n" \
    2548        "    -i DIFF Read DIFF instead of stdin"
    2549 #define patch_example_usage \
    2550        "$ patch -p1 < example.diff\n" \
    2551        "$ patch -p0 -i example.diff"
     3966    IF_LONG_OPTS("[--md5|--encrypted]") IF_NOT_LONG_OPTS("[-m|-e]")
     3967#define chpasswd_full_usage "\n\n" \
     3968       "Read user:password from stdin and update /etc/passwd\n" \
     3969     "\nOptions:" \
     3970    IF_LONG_OPTS( \
     3971     "\n    -e,--encrypted  Supplied passwords are in encrypted form" \
     3972     "\n    -m,--md5    Use MD5 encryption instead of DES" \
     3973    ) \
     3974    IF_NOT_LONG_OPTS( \
     3975     "\n    -e  Supplied passwords are in encrypted form" \
     3976     "\n    -m  Use MD5 encryption instead of DES" \
     3977    )
     3978
     3979#define pgrep_trivial_usage \
     3980       "[-flnovx] [-s SID|-P PPID|PATTERN]"
     3981#define pgrep_full_usage "\n\n" \
     3982       "Display process(es) selected by regex PATTERN\n" \
     3983     "\nOptions:" \
     3984     "\n    -l  Show command name too" \
     3985     "\n    -f  Match against entire command line" \
     3986     "\n    -n  Show the newest process only" \
     3987     "\n    -o  Show the oldest process only" \
     3988     "\n    -v  Negate the match" \
     3989     "\n    -x  Match whole name (not substring)" \
     3990     "\n    -s  Match session ID (0 for current)" \
     3991     "\n    -P  Match parent process ID" \
    25523992
    25533993#if (ENABLE_FEATURE_PIDOF_SINGLE || ENABLE_FEATURE_PIDOF_OMIT)
    2554 #define USAGE_PIDOF "Options:"
     3994#define pidof_trivial_usage \
     3995       "[OPTIONS] [NAME]..."
     3996#define USAGE_PIDOF "\n\nOptions:"
    25553997#else
    2556 #define USAGE_PIDOF "\nThis version of pidof accepts no options."
     3998#define pidof_trivial_usage \
     3999       "[NAME]..."
     4000#define USAGE_PIDOF /* none */
    25574001#endif
    2558 
    2559 #define pidof_trivial_usage \
    2560        "process-name [OPTION] [process-name ...]"
    2561 
    2562 #define pidof_full_usage \
    2563        "List the PIDs of all processes with names that match the\n" \
    2564        "names on the command line\n" \
     4002#define pidof_full_usage "\n\n" \
     4003       "List PIDs of all processes with names that match NAMEs" \
    25654004    USAGE_PIDOF \
    2566     USE_FEATURE_PIDOF_SINGLE( \
    2567        "\n  -s  Display only a single PID") \
    2568     USE_FEATURE_PIDOF_OMIT( \
    2569        "\n  -o PID  Omit given pid") \
    2570     USE_FEATURE_PIDOF_OMIT( \
    2571        "\n      Use %PPID to omit the parent pid of pidof itself")
     4005    IF_FEATURE_PIDOF_SINGLE( \
     4006     "\n    -s  Show only one PID" \
     4007    ) \
     4008    IF_FEATURE_PIDOF_OMIT( \
     4009     "\n    -o PID  Omit given pid" \
     4010     "\n        Use %PPID to omit pid of pidof's parent" \
     4011    ) \
     4012
    25724013#define pidof_example_usage \
    25734014       "$ pidof init\n" \
    25744015       "1\n" \
    2575     USE_FEATURE_PIDOF_OMIT( \
     4016    IF_FEATURE_PIDOF_OMIT( \
    25764017       "$ pidof /bin/sh\n20351 5973 5950\n") \
    2577     USE_FEATURE_PIDOF_OMIT( \
     4018    IF_FEATURE_PIDOF_OMIT( \
    25784019       "$ pidof /bin/sh -o %PPID\n20351 5950")
    25794020
     
    25814022#define ping_trivial_usage \
    25824023       "host"
    2583 #define ping_full_usage \
     4024#define ping_full_usage "\n\n" \
    25844025       "Send ICMP ECHO_REQUEST packets to network hosts"
    25854026#define ping6_trivial_usage \
    25864027       "host"
    2587 #define ping6_full_usage \
     4028#define ping6_full_usage "\n\n" \
    25884029       "Send ICMP ECHO_REQUEST packets to network hosts"
    25894030#else
    25904031#define ping_trivial_usage \
    2591        "[OPTION]... host"
    2592 #define ping_full_usage \
    2593        "Send ICMP ECHO_REQUEST packets to network hosts" \
    2594        "\n\nOptions:\n" \
    2595        "    -4, -6      Force IPv4 or IPv6 hostname resolution\n" \
    2596        "    -c CNT      Send only CNT pings\n" \
    2597        "    -s SIZE     Send SIZE data bytes in packets (default=56)\n" \
    2598        "    -I iface/IP Use interface or IP address as source\n" \
    2599        "    -q      Quiet, only displays output at start\n" \
    2600        "            and when finished"
     4032       "[OPTIONS] HOST"
     4033#define ping_full_usage "\n\n" \
     4034       "Send ICMP ECHO_REQUEST packets to network hosts\n" \
     4035     "\nOptions:" \
     4036     "\n    -4,-6       Force IP or IPv6 name resolution" \
     4037     "\n    -c CNT      Send only CNT pings" \
     4038     "\n    -s SIZE     Send SIZE data bytes in packets (default:56)" \
     4039     "\n    -I IFACE/IP Use interface or IP address as source" \
     4040     "\n    -W SEC      Seconds to wait for the first response (default:10)" \
     4041     "\n            (after all -c CNT packets are sent)" \
     4042     "\n    -w SEC      Seconds until ping exits (default:infinite)" \
     4043     "\n            (can exit earlier with -c CNT)" \
     4044     "\n    -q      Quiet, only displays output at start" \
     4045     "\n            and when finished" \
     4046
    26014047#define ping6_trivial_usage \
    2602        "[OPTION]... host"
    2603 #define ping6_full_usage \
    2604        "Send ICMP ECHO_REQUEST packets to network hosts" \
    2605        "\n\nOptions:\n" \
    2606        "    -c CNT      Send only CNT pings\n" \
    2607        "    -s SIZE     Send SIZE data bytes in packets (default=56)\n" \
    2608        "    -I iface/IP Use interface or IP address as source\n" \
    2609        "    -q      Quiet, only displays output at start\n" \
    2610        "            and when finished"
     4048       "[OPTIONS] HOST"
     4049#define ping6_full_usage "\n\n" \
     4050       "Send ICMP ECHO_REQUEST packets to network hosts\n" \
     4051     "\nOptions:" \
     4052     "\n    -c CNT      Send only CNT pings" \
     4053     "\n    -s SIZE     Send SIZE data bytes in packets (default:56)" \
     4054     "\n    -I IFACE/IP Use interface or IP address as source" \
     4055     "\n    -q      Quiet, only displays output at start" \
     4056     "\n            and when finished" \
     4057
    26114058#endif
    26124059#define ping_example_usage \
     
    26274074       "round-trip min/avg/max = 20.1/20.1/20.1 ms\n"
    26284075
     4076#define pipe_progress_trivial_usage NOUSAGE_STR
     4077#define pipe_progress_full_usage ""
     4078
    26294079#define pivot_root_trivial_usage \
    26304080       "NEW_ROOT PUT_OLD"
    2631 #define pivot_root_full_usage \
     4081#define pivot_root_full_usage "\n\n" \
    26324082       "Move the current root file system to PUT_OLD and make NEW_ROOT\n" \
    26334083       "the new root file system"
    26344084
    2635 #define poweroff_trivial_usage \
    2636        "[-d delay] [-n] [-f]"
    2637 #define poweroff_full_usage \
    2638        "Halt and shut off power" \
    2639        "\n\nOptions:\n" \
    2640        "    -d  Delay interval for halting\n" \
    2641        "    -n  No call to sync()\n" \
    2642        "    -f  Force power off (don't go through init)"
     4085#define pkill_trivial_usage \
     4086       "[-l|-SIGNAL] [-fnovx] [-s SID|-P PPID|PATTERN]"
     4087#define pkill_full_usage "\n\n" \
     4088       "Send a signal to process(es) selected by regex PATTERN\n" \
     4089     "\nOptions:" \
     4090     "\n    -l  List all signals" \
     4091     "\n    -f  Match against entire command line" \
     4092     "\n    -n  Signal the newest process only" \
     4093     "\n    -o  Signal the oldest process only" \
     4094     "\n    -v  Negate the match" \
     4095     "\n    -x  Match whole name (not substring)" \
     4096     "\n    -s  Match session ID (0 for current)" \
     4097     "\n    -P  Match parent process ID" \
     4098
     4099#define popmaildir_trivial_usage \
     4100       "[OPTIONS] MAILDIR [CONN_HELPER ARGS]"
     4101#define popmaildir_full_usage "\n\n" \
     4102       "Fetch content of remote mailbox to local maildir\n" \
     4103     "\nOptions:" \
     4104/*   "\n    -b      Binary mode. Ignored" */ \
     4105/*   "\n    -d      Debug. Ignored" */ \
     4106/*   "\n    -m      Show used memory. Ignored" */ \
     4107/*   "\n    -V      Show version. Ignored" */ \
     4108/*   "\n    -c      Use tcpclient. Ignored" */ \
     4109/*   "\n    -a      Use APOP protocol. Implied. If server supports APOP -> use it" */ \
     4110     "\n    -s      Skip authorization" \
     4111     "\n    -T      Get messages with TOP instead of RETR" \
     4112     "\n    -k      Keep retrieved messages on the server" \
     4113     "\n    -t SEC      Network timeout" \
     4114    IF_FEATURE_POPMAILDIR_DELIVERY( \
     4115     "\n    -F \"PROG ARGS\"    Filter program (may be repeated)" \
     4116     "\n    -M \"PROG ARGS\"    Delivery program" \
     4117    ) \
     4118     "\n" \
     4119     "\nFetch from plain POP3 server:" \
     4120     "\npopmaildir -k DIR nc pop3.server.com 110 <user_and_pass.txt" \
     4121     "\nFetch from SSLed POP3 server and delete fetched emails:" \
     4122     "\npopmaildir DIR -- openssl s_client -quiet -connect pop3.server.com:995 <user_and_pass.txt"
     4123/*   "\n    -R BYTES    Remove old messages on the server >= BYTES. Ignored" */
     4124/*   "\n    -Z N1-N2    Remove messages from N1 to N2 (dangerous). Ignored" */
     4125/*   "\n    -L BYTES    Don't retrieve new messages >= BYTES. Ignored" */
     4126/*   "\n    -H LINES    Type first LINES of a message. Ignored" */
     4127#define popmaildir_example_usage \
     4128       "$ popmaildir -k ~/Maildir -- nc pop.drvv.ru 110 [<password_file]\n" \
     4129       "$ popmaildir ~/Maildir -- openssl s_client -quiet -connect pop.gmail.com:995 [<password_file]\n"
    26434130
    26444131#define printenv_trivial_usage \
    2645        "[VARIABLES...]"
    2646 #define printenv_full_usage \
    2647        "Print all or part of environment.\n" \
    2648        "If no environment VARIABLE specified, print them all."
     4132       "[VARIABLE]..."
     4133#define printenv_full_usage "\n\n" \
     4134       "Print environment VARIABLEs.\n" \
     4135       "If no VARIABLE specified, print all."
    26494136
    26504137#define printf_trivial_usage \
    2651        "FORMAT [ARGUMENT...]"
    2652 #define printf_full_usage \
     4138       "FORMAT [ARGUMENT]..."
     4139#define printf_full_usage "\n\n" \
    26534140       "Format and print ARGUMENT(s) according to FORMAT,\n" \
    26544141       "where FORMAT controls the output exactly as in C printf"
     
    26614148
    26624149#define ps_trivial_usage \
    2663        ""
    2664 #define ps_full_usage \
    2665        "Report process status" \
    2666        "\n\nOptions:" \
    2667        "\n  -o col1,col2=header Select columns for display" \
     4150       "[-o COL1,COL2=HEADER]" IF_FEATURE_SHOW_THREADS(" [-T]")
     4151#define ps_full_usage "\n\n" \
     4152       "Show list of processes\n" \
     4153     "\nOptions:" \
     4154     "\n    -o COL1,COL2=HEADER Select columns for display" \
     4155    IF_FEATURE_SHOW_THREADS( \
     4156     "\n    -T          Show threads" \
     4157    )
    26684158
    26694159#else /* !ENABLE_DESKTOP */
    26704160
    2671 #if !defined CONFIG_SELINUX && !ENABLE_FEATURE_PS_WIDE
     4161#if !ENABLE_SELINUX && !ENABLE_FEATURE_PS_WIDE
    26724162#define USAGE_PS "\nThis version of ps accepts no options"
    26734163#else
     
    26774167#define ps_trivial_usage \
    26784168       ""
    2679 #define ps_full_usage \
    2680        "Report process status\n" \
     4169#define ps_full_usage "\n\n" \
     4170       "Show list of processes\n" \
    26814171    USAGE_PS \
    2682     USE_SELINUX( \
    2683        "\n  -Z  Show SE Linux context") \
    2684     USE_FEATURE_PS_WIDE( \
    2685        "\n  w   Wide output")
     4172    IF_SELINUX( \
     4173     "\n    -Z  Show selinux context" \
     4174    ) \
     4175    IF_FEATURE_PS_WIDE( \
     4176     "\n    w   Wide output" \
     4177    )
    26864178
    26874179#endif /* ENABLE_DESKTOP */
     
    26984190       "  743 andersen andersen S -bash\n" \
    26994191       "  745 root     root     S [getty]\n" \
    2700        " 2990 andersen andersen R ps\n"
     4192       " 2990 andersen andersen R ps\n" \
    27014193
    27024194#define pscan_trivial_usage \
    2703        "[-p MIN_PORT] [-P MAX_PORT] [-t TIMEOUT] [-T MIN_RTT] HOST"
    2704 #define pscan_full_usage \
    2705        "Scan a host, print all open ports" \
    2706        "\n\nOptions:" \
     4195       "[-cb] [-p MIN_PORT] [-P MAX_PORT] [-t TIMEOUT] [-T MIN_RTT] HOST"
     4196#define pscan_full_usage "\n\n" \
     4197       "Scan a host, print all open ports\n" \
     4198     "\nOptions:" \
     4199     "\n    -c  Show closed ports too" \
     4200     "\n    -b  Show blocked ports too" \
    27074201     "\n    -p  Scan from this port (default 1)" \
    27084202     "\n    -P  Scan up to this port (default 1024)" \
     
    27124206#define pwd_trivial_usage \
    27134207       ""
    2714 #define pwd_full_usage \
     4208#define pwd_full_usage "\n\n" \
    27154209       "Print the full filename of the current working directory"
    27164210#define pwd_example_usage \
     
    27204214#define raidautorun_trivial_usage \
    27214215       "DEVICE"
    2722 #define raidautorun_full_usage \
     4216#define raidautorun_full_usage "\n\n" \
    27234217       "Tell the kernel to automatically search and start RAID arrays"
    27244218#define raidautorun_example_usage \
     
    27274221#define rdate_trivial_usage \
    27284222       "[-sp] HOST"
    2729 #define rdate_full_usage \
    2730        "Get and possibly set the system date and time from a remote HOST" \
    2731        "\n\nOptions:\n" \
    2732        "    -s  Set the system date and time (default)\n" \
    2733        "    -p  Print the date and time"
     4223#define rdate_full_usage "\n\n" \
     4224       "Get and possibly set the system date and time from a remote HOST\n" \
     4225     "\nOptions:" \
     4226     "\n    -s  Set the system date and time (default)" \
     4227     "\n    -p  Print the date and time" \
     4228
     4229#define rdev_trivial_usage \
     4230       ""
     4231#define rdev_full_usage "\n\n" \
     4232       "Print the device node associated with the filesystem mounted at '/'"
     4233#define rdev_example_usage \
     4234       "$ rdev\n" \
     4235       "/dev/mtdblock9 /\n"
    27344236
    27354237#define readahead_trivial_usage \
    27364238       "[FILE]..."
    2737 #define readahead_full_usage \
    2738        "Preload FILE(s) in RAM cache so that subsequent reads for those" \
    2739        "files do not block on disk I/O"
     4239#define readahead_full_usage "\n\n" \
     4240       "Preload FILEs to RAM"
    27404241
    27414242#define readlink_trivial_usage \
    2742     USE_FEATURE_READLINK_FOLLOW("[-f] ") "FILE"
    2743 #define readlink_full_usage \
     4243    IF_FEATURE_READLINK_FOLLOW("[-fnv] ") "FILE"
     4244#define readlink_full_usage "\n\n" \
    27444245       "Display the value of a symlink" \
    2745     USE_FEATURE_READLINK_FOLLOW( \
    2746        "\n\nOptions:\n" \
    2747        "    -f  Canonicalize by following all symlinks")
     4246    IF_FEATURE_READLINK_FOLLOW( "\n" \
     4247     "\nOptions:" \
     4248     "\n    -f  Canonicalize by following all symlinks" \
     4249     "\n    -n  Don't add newline" \
     4250     "\n    -v  Verbose" \
     4251    ) \
    27484252
    27494253#define readprofile_trivial_usage \
    2750        "[OPTIONS]..."
    2751 #define readprofile_full_usage \
    2752        "Options:\n" \
    2753        "    -m mapfile  (Default: /boot/System.map)\n" \
    2754        "    -p profile  (Default: /proc/profile)\n" \
    2755        "    -M mult     Set the profiling multiplier to mult\n" \
    2756        "    -i      Print only info about the sampling step\n" \
    2757        "    -v      Verbose\n" \
    2758        "    -a      Print all symbols, even if count is 0\n" \
    2759        "    -b      Print individual histogram-bin counts\n" \
    2760        "    -s      Print individual counters within functions\n" \
    2761        "    -r      Reset all the counters (root only)\n" \
    2762        "    -n      Disable byte order auto-detection"
     4254       "[OPTIONS]"
     4255#define readprofile_full_usage "\n\n" \
     4256       "Options:" \
     4257     "\n    -m mapfile  (Default: /boot/System.map)" \
     4258     "\n    -p profile  (Default: /proc/profile)" \
     4259     "\n    -M NUM      Set the profiling multiplier to NUM" \
     4260     "\n    -i      Print only info about the sampling step" \
     4261     "\n    -v      Verbose" \
     4262     "\n    -a      Print all symbols, even if count is 0" \
     4263     "\n    -b      Print individual histogram-bin counts" \
     4264     "\n    -s      Print individual counters within functions" \
     4265     "\n    -r      Reset all the counters (root only)" \
     4266     "\n    -n      Disable byte order auto-detection" \
    27634267
    27644268#define realpath_trivial_usage \
    2765        "pathname ..."
    2766 #define realpath_full_usage \
    2767        "Return the absolute pathnames of given argument"
    2768 
    2769 #define reboot_trivial_usage \
    2770        "[-d delay] [-n] [-f]"
    2771 #define reboot_full_usage \
    2772        "Reboot the system" \
    2773        "\n\nOptions:\n" \
    2774        "    -d  Delay interval for rebooting\n" \
    2775        "    -n  No call to sync()\n" \
    2776        "    -f  Force reboot (don't go through init)"
    2777 
    2778 #define renice_trivial_usage \
    2779        "{{-n INCREMENT} | PRIORITY} [[-p | -g | -u] ID ...]"
    2780 #define renice_full_usage \
    2781        "Change priority of running processes" \
    2782        "\n\nOptions:\n" \
    2783        "    -n  Adjusts current nice value (smaller is faster)\n" \
    2784        "    -p  Process id(s) (default)\n" \
    2785        "    -g  Process group id(s)\n" \
    2786        "    -u  Process user name(s) and/or id(s)"
     4269       "FILE..."
     4270#define realpath_full_usage "\n\n" \
     4271       "Return the absolute pathnames of given FILE"
     4272
     4273#define reformime_trivial_usage \
     4274       "[OPTIONS] [FILE]..."
     4275#define reformime_full_usage "\n\n" \
     4276       "Parse MIME-encoded message\n" \
     4277     "\nOptions:" \
     4278     "\n    -x PREFIX   Extract content of MIME sections to files" \
     4279     "\n    -X PROG ARGS    Filter content of MIME sections through PROG" \
     4280     "\n            Must be the last option" \
     4281     "\n" \
     4282     "\nOther options are silently ignored" \
     4283
     4284#define scriptreplay_trivial_usage \
     4285       "timingfile [typescript [divisor]]"
     4286#define scriptreplay_full_usage "\n\n" \
     4287       "Play back typescripts, using timing information"
    27874288
    27884289#define reset_trivial_usage \
    27894290       ""
    2790 #define reset_full_usage \
     4291#define reset_full_usage "\n\n" \
    27914292       "Reset the screen"
    27924293
    27934294#define resize_trivial_usage \
    27944295       ""
    2795 #define resize_full_usage \
     4296#define resize_full_usage "\n\n" \
    27964297       "Resize the screen"
    27974298
    27984299#define restorecon_trivial_usage \
    2799        "[-iFnrRv] [-e excludedir]... [-o filename] [-f filename | pathname]"
    2800 #define restorecon_full_usage \
     4300       "[-iFnRv] [-e EXCLUDEDIR]... [-o FILE] [-f FILE]"
     4301#define restorecon_full_usage "\n\n" \
    28014302       "Reset security contexts of files in pathname\n" \
    2802        "\n  -i      Ignore files that do not exist" \
    2803        "\n  -f filename File with list of files to process. Use - for stdin" \
    2804        "\n  -e directory    Directory to exclude" \
    2805        "\n  -R,-r       Recurse directories" \
    2806        "\n  -n      Don't change any file labels" \
    2807        "\n  -o filename Save list of files with incorrect context" \
    2808        "\n  -v      Verbose" \
    2809        "\n  -vv     Show changed labels" \
    2810        "\n  -F      Force reset of context to match file_context" \
    2811        "\n          for customizable files, or the user section," \
    2812        "\n          if it has changed"
     4303     "\n    -i  Ignore files that don't exist" \
     4304     "\n    -f FILE File with list of files to process" \
     4305     "\n    -e DIR  Directory to exclude" \
     4306     "\n    -R,-r   Recurse" \
     4307     "\n    -n  Don't change any file labels" \
     4308     "\n    -o FILE Save list of files with incorrect context" \
     4309     "\n    -v  Verbose" \
     4310     "\n    -vv Show changed labels" \
     4311     "\n    -F  Force reset of context to match file_context" \
     4312     "\n        for customizable files, or the user section," \
     4313     "\n        if it has changed" \
     4314
     4315#define rfkill_trivial_usage \
     4316       "COMMAND [INDEX|TYPE]"
     4317#define rfkill_full_usage "\n\n" \
     4318       "Enable/disable wireless devices\n" \
     4319       "\nCommands:" \
     4320     "\n    list [INDEX|TYPE]   List current state" \
     4321     "\n    block INDEX|TYPE    Disable device" \
     4322     "\n    unblock INDEX|TYPE  Enable device" \
     4323     "\n" \
     4324     "\n    TYPE: all, wlan(wifi), bluetooth, uwb(ultrawideband)," \
     4325     "\n        wimax, wwan, gps, fm" \
    28134326
    28144327#define rm_trivial_usage \
    2815        "[OPTION]... FILE..."
    2816 #define rm_full_usage \
    2817        "Remove (unlink) the FILE(s). You may use '--' to\n" \
    2818        "indicate that all following arguments are non-options." \
    2819        "\n\nOptions:\n" \
    2820        "    -i  Always prompt before removing each destination\n" \
    2821        "    -f  Remove existing destinations, never prompt\n" \
    2822        "    -r,-R   Remove the contents of directories recursively"
     4328       "[-irf] FILE..."
     4329#define rm_full_usage "\n\n" \
     4330       "Remove (unlink) FILEs\n" \
     4331     "\nOptions:" \
     4332     "\n    -i  Always prompt before removing" \
     4333     "\n    -f  Never prompt" \
     4334     "\n    -R,-r   Recurse" \
     4335
    28234336#define rm_example_usage \
    28244337       "$ rm -rf /tmp/foo\n"
    28254338
    28264339#define rmdir_trivial_usage \
    2827        "[OPTION]... DIRECTORY..."
    2828 #define rmdir_full_usage \
    2829        "Remove the DIRECTORY, if it is empty"
     4340       "[OPTIONS] DIRECTORY..."
     4341#define rmdir_full_usage "\n\n" \
     4342       "Remove DIRECTORY if it is empty\n" \
     4343     "\nOptions:" \
     4344    IF_FEATURE_RMDIR_LONG_OPTIONS( \
     4345     "\n    -p|--parents    Include parents" \
     4346     "\n    --ignore-fail-on-non-empty" \
     4347    ) \
     4348    IF_NOT_FEATURE_RMDIR_LONG_OPTIONS( \
     4349     "\n    -p  Include parents" \
     4350    )
     4351
    28304352#define rmdir_example_usage \
    28314353       "# rmdir /tmp/foo\n"
    28324354
    2833 #define rmmod_trivial_usage \
    2834        "[OPTION]... [MODULE]..."
    2835 #define rmmod_full_usage \
    2836        "Unload the specified kernel modules from the kernel" \
    2837        "\n\nOptions:\n" \
    2838        "    -a  Remove all unused modules (recursively)"
    2839 #define rmmod_example_usage \
    2840        "$ rmmod tulip\n"
    2841 
    28424355#define route_trivial_usage \
    28434356       "[{add|del|delete}]"
    2844 #define route_full_usage \
    2845        "Edit the kernel's routing tables" \
    2846        "\n\nOptions:\n" \
    2847        "    -n  Dont resolve names\n" \
    2848        "    -e  Display other/more information\n" \
    2849        "    -A inet" USE_FEATURE_IPV6("{6}") "  Select address family"
     4357#define route_full_usage "\n\n" \
     4358       "Edit kernel routing tables\n" \
     4359     "\nOptions:" \
     4360     "\n    -n  Don't resolve names" \
     4361     "\n    -e  Display other/more information" \
     4362     "\n    -A inet" IF_FEATURE_IPV6("{6}") "   Select address family" \
    28504363
    28514364#define rpm_trivial_usage \
    2852        "-i -q[ildc]p package.rpm"
    2853 #define rpm_full_usage \
    2854        "Manipulate RPM packages" \
    2855        "\n\nOptions:" \
    2856        "\n  -i  Install package" \
    2857        "\n  -q  Query package" \
    2858        "\n  -p  Query uninstalled package" \
    2859        "\n  -i  Show information" \
    2860        "\n  -l  List contents" \
    2861        "\n  -d  List documents" \
    2862        "\n  -c  List config files"
     4365       "-i PACKAGE.rpm; rpm -qp[ildc] PACKAGE.rpm"
     4366#define rpm_full_usage "\n\n" \
     4367       "Manipulate RPM packages\n" \
     4368     "\nCommands:" \
     4369     "\n    -i  Install package" \
     4370     "\n    -qp Query package" \
     4371     "\nOptions:" \
     4372     "\n    -i  Show information" \
     4373     "\n    -l  List contents" \
     4374     "\n    -d  List documents" \
     4375     "\n    -c  List config files" \
    28634376
    28644377#define rpm2cpio_trivial_usage \
    28654378       "package.rpm"
    2866 #define rpm2cpio_full_usage \
     4379#define rpm2cpio_full_usage "\n\n" \
    28674380       "Output a cpio archive of the rpm file"
    28684381
     4382#define rtcwake_trivial_usage \
     4383       "[-a | -l | -u] [-d DEV] [-m MODE] [-s SEC | -t TIME]"
     4384#define rtcwake_full_usage "\n\n" \
     4385       "Enter a system sleep state until specified wakeup time\n" \
     4386    IF_LONG_OPTS( \
     4387     "\n    -a,--auto   Read clock mode from adjtime" \
     4388     "\n    -l,--local  Clock is set to local time" \
     4389     "\n    -u,--utc    Clock is set to UTC time" \
     4390     "\n    -d,--device=DEV Specify the RTC device" \
     4391     "\n    -m,--mode=MODE  Set the sleep state (default: standby)" \
     4392     "\n    -s,--seconds=SEC Set the timeout in SEC seconds from now" \
     4393     "\n    -t,--time=TIME  Set the timeout to TIME seconds from epoch" \
     4394    ) \
     4395    IF_NOT_LONG_OPTS( \
     4396     "\n    -a  Read clock mode from adjtime" \
     4397     "\n    -l  Clock is set to local time" \
     4398     "\n    -u  Clock is set to UTC time" \
     4399     "\n    -d DEV  Specify the RTC device" \
     4400     "\n    -m MODE Set the sleep state (default: standby)" \
     4401     "\n    -s SEC  Set the timeout in SEC seconds from now" \
     4402     "\n    -t TIME Set the timeout to TIME seconds from epoch" \
     4403    )
     4404
    28694405#define runcon_trivial_usage \
    2870        "[-c] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] COMMAND [args]\n" \
    2871        "    runcon CONTEXT COMMAND [args]"
    2872 #define runcon_full_usage \
    2873        "runcon [-c] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] COMMAND [args]\n" \
    2874        "runcon CONTEXT COMMAND [args]\n" \
    2875        "Run a program in a different security context\n\n" \
    2876        "    CONTEXT     Complete security context\n" \
    2877        "    -c, --compute   Compute process transition context before modifying\n" \
    2878        "    -t, --type=TYPE Type (for same role as parent)\n" \
    2879        "    -u, --user=USER User identity\n" \
    2880        "    -r, --role=ROLE Role\n" \
    2881        "    -l, --range=RNG Levelrange" \
     4406       "[-c] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] PROG ARGS\n" \
     4407       "runcon CONTEXT PROG ARGS"
     4408#define runcon_full_usage "\n\n" \
     4409       "Run PROG in a different security context\n" \
     4410     "\n    CONTEXT     Complete security context\n" \
     4411    IF_FEATURE_RUNCON_LONG_OPTIONS( \
     4412     "\n    -c,--compute    Compute process transition context before modifying" \
     4413     "\n    -t,--type=TYPE  Type (for same role as parent)" \
     4414     "\n    -u,--user=USER  User identity" \
     4415     "\n    -r,--role=ROLE  Role" \
     4416     "\n    -l,--range=RNG  Levelrange" \
     4417    ) \
     4418    IF_NOT_FEATURE_RUNCON_LONG_OPTIONS( \
     4419     "\n    -c  Compute process transition context before modifying" \
     4420     "\n    -t TYPE Type (for same role as parent)" \
     4421     "\n    -u USER User identity" \
     4422     "\n    -r ROLE Role" \
     4423     "\n    -l RNG  Levelrange" \
     4424    )
    28824425
    28834426#define run_parts_trivial_usage \
    2884        "[-t] "USE_FEATURE_RUN_PARTS_FANCY("[-l] ")"[-a ARG] [-u MASK] DIRECTORY"
    2885 #define run_parts_full_usage \
    2886        "Run a bunch of scripts in a directory" \
    2887        "\n\nOptions:\n" \
    2888        "    -t  Prints what would be run, but does not actually run anything\n" \
    2889        "    -a ARG  Pass ARG as an argument for every program invoked\n" \
    2890        "    -u MASK Set the umask to MASK before executing every program" \
    2891 USE_FEATURE_RUN_PARTS_FANCY("\n -l  Prints names of all matching files even when they are not executable")
     4427       "[-t] "IF_FEATURE_RUN_PARTS_FANCY("[-l] ")"[-a ARG] [-u MASK] DIRECTORY"
     4428#define run_parts_full_usage "\n\n" \
     4429       "Run a bunch of scripts in DIRECTORY\n" \
     4430     "\nOptions:" \
     4431     "\n    -t  Print what would be run, but don't actually run anything" \
     4432     "\n    -a ARG  Pass ARG as argument for every program" \
     4433     "\n    -u MASK Set the umask to MASK before running every program" \
     4434    IF_FEATURE_RUN_PARTS_FANCY( \
     4435     "\n    -l  Print names of all matching files even if they are not executable" \
     4436    )
    28924437
    28934438#define run_parts_example_usage \
     
    29064451
    29074452#define runlevel_trivial_usage \
    2908        "[utmp]"
    2909 #define runlevel_full_usage \
    2910        "Find the current and previous system runlevel.\n\n" \
    2911        "If no utmp file exists or if no runlevel record can be found,\n" \
     4453       "[FILE]"
     4454#define runlevel_full_usage "\n\n" \
     4455       "Find the current and previous system runlevel\n" \
     4456       "\n" \
     4457       "If no utmp FILE exists or if no runlevel record can be found,\n" \
    29124458       "print \"unknown\""
    29134459#define runlevel_example_usage \
     
    29164462
    29174463#define runsv_trivial_usage \
    2918        "dir"
    2919 #define runsv_full_usage \
     4464       "DIR"
     4465#define runsv_full_usage "\n\n" \
    29204466       "Start and monitor a service and optionally an appendant log service"
    29214467
    29224468#define runsvdir_trivial_usage \
    2923        "[-P] dir"
    2924 #define runsvdir_full_usage \
    2925        "Start a runsv process for each subdirectory"
     4469       "[-P] [-s SCRIPT] DIR"
     4470#define runsvdir_full_usage "\n\n" \
     4471       "Start a runsv process for each subdirectory. If it exits, restart it.\n" \
     4472     "\n    -P      Put each runsv in a new session" \
     4473     "\n    -s SCRIPT   Run SCRIPT <signo> after signal is processed" \
    29264474
    29274475#define rx_trivial_usage \
    29284476       "FILE"
    2929 #define rx_full_usage \
     4477#define rx_full_usage "\n\n" \
    29304478       "Receive a file using the xmodem protocol"
    29314479#define rx_example_usage \
    29324480       "$ rx /tmp/foo\n"
    29334481
     4482#define script_trivial_usage \
     4483       "[-afq" IF_SCRIPTREPLAY("t") "] [-c PROG] [OUTFILE]"
     4484#define script_full_usage "\n\n" \
     4485       "Options:" \
     4486     "\n    -a  Append output" \
     4487     "\n    -c PROG Run PROG, not shell" \
     4488     "\n    -f  Flush output after each write" \
     4489     "\n    -q  Quiet" \
     4490    IF_SCRIPTREPLAY( \
     4491     "\n    -t  Send timing to stderr" \
     4492    )
     4493
    29344494#define sed_trivial_usage \
    2935        "[-efinr] pattern [files...]"
    2936 #define sed_full_usage \
    2937        "Options:\n" \
    2938        "    -e script   Add the script to the commands to be executed\n" \
    2939        "    -f scriptfile   Add script-file contents to the\n" \
    2940        "            commands to be executed\n" \
    2941        "    -i      Edit files in-place\n" \
    2942        "    -n      Suppress automatic printing of pattern space\n" \
    2943        "    -r      Use extended regular expression syntax\n" \
    2944        "\n" \
    2945        "If no -e or -f is given, the first non-option argument is taken as the sed\n" \
    2946        "script to interpret. All remaining arguments are names of input files; if no\n" \
    2947        "input files are specified, then the standard input is read. Source files\n" \
    2948        "will not be modified unless -i option is given."
     4495       "[-efinr] SED_CMD [FILE]..."
     4496#define sed_full_usage "\n\n" \
     4497       "Options:" \
     4498     "\n    -e CMD  Add CMD to sed commands to be executed" \
     4499     "\n    -f FILE Add FILE contents to sed commands to be executed" \
     4500     "\n    -i  Edit files in-place (else sends result to stdout)" \
     4501     "\n    -n  Suppress automatic printing of pattern space" \
     4502     "\n    -r  Use extended regex syntax" \
     4503     "\n" \
     4504     "\nIf no -e or -f, the first non-option argument is the sed command string." \
     4505     "\nRemaining arguments are input files (stdin if none)."
    29494506
    29504507#define sed_example_usage \
     
    29524509       "bar\n"
    29534510
    2954 #define selinuxenabled_trivial_usage
    2955 #define selinuxenabled_full_usage
     4511#define selinuxenabled_trivial_usage NOUSAGE_STR
     4512#define selinuxenabled_full_usage ""
     4513
     4514#define sendmail_trivial_usage \
     4515       "[OPTIONS] [RECIPIENT_EMAIL]..."
     4516#define sendmail_full_usage "\n\n" \
     4517       "Read email from stdin and send it\n" \
     4518     "\nStandard options:" \
     4519     "\n    -t      Read additional recipients from message body" \
     4520     "\n    -f sender   Sender (required)" \
     4521     "\n    -o options  Various options. -oi implied, others are ignored" \
     4522     "\n    -i      -oi synonym. implied and ignored" \
     4523     "\n" \
     4524     "\nBusybox specific options:" \
     4525     "\n    -w seconds  Network timeout" \
     4526     "\n    -H 'PROG ARGS'  Run connection helper" \
     4527     "\n            Examples:" \
     4528     "\n            -H 'exec openssl s_client -quiet -tls1 -starttls smtp" \
     4529     "\n                -connect smtp.gmail.com:25' <email.txt" \
     4530     "\n                [4<username_and_passwd.txt | -au<username> -ap<password>]" \
     4531     "\n            -H 'exec openssl s_client -quiet -tls1" \
     4532     "\n                -connect smtp.gmail.com:465' <email.txt" \
     4533     "\n                [4<username_and_passwd.txt | -au<username> -ap<password>]" \
     4534     "\n    -S server[:port] Server" \
     4535     "\n    -au<username>   Username for AUTH LOGIN" \
     4536     "\n    -ap<password>   Password for AUTH LOGIN" \
     4537     "\n    -am<method> Authentication method. Ignored. LOGIN is implied" \
     4538     "\n" \
     4539     "\nOther options are silently ignored; -oi -t is implied" \
     4540    IF_MAKEMIME( \
     4541     "\nUse makemime applet to create message with attachments" \
     4542    )
    29564543
    29574544#define seq_trivial_usage \
    2958        "[first [increment]] last"
    2959 #define seq_full_usage \
    2960        "Print numbers from FIRST to LAST, in steps of INCREMENT.\n" \
    2961        "FIRST, INCREMENT default to 1" \
    2962        "\n\nArguments:\n" \
    2963        "    LAST\n" \
    2964        "    FIRST LAST\n" \
    2965        "    FIRST INCREMENT LAST"
     4545       "[-w] [-s SEP] [FIRST [INC]] LAST"
     4546#define seq_full_usage "\n\n" \
     4547       "Print numbers from FIRST to LAST, in steps of INC.\n" \
     4548       "FIRST, INC default to 1.\n" \
     4549     "\nOptions:" \
     4550     "\n    -w  Pad to last with leading zeros" \
     4551     "\n    -s SEP  String separator" \
     4552
     4553#define sestatus_trivial_usage \
     4554       "[-vb]"
     4555#define sestatus_full_usage "\n\n" \
     4556       "    -v  Verbose" \
     4557     "\n    -b  Display current state of booleans" \
    29664558
    29674559#define setconsole_trivial_usage \
    2968        "[-r|--reset] [DEVICE]"
    2969 #define setconsole_full_usage \
    2970        "Redirect system console output to DEVICE (default: /dev/tty)" \
    2971        "\n\nOptions:\n" \
    2972        "    -r  Reset output to /dev/console"
     4560       "[-r" IF_FEATURE_SETCONSOLE_LONG_OPTIONS("|--reset") "] [DEVICE]"
     4561#define setconsole_full_usage "\n\n" \
     4562       "Redirect system console output to DEVICE (default: /dev/tty)\n" \
     4563     "\nOptions:" \
     4564     "\n    -r  Reset output to /dev/console" \
    29734565
    29744566#define setenforce_trivial_usage \
    29754567       "[Enforcing | Permissive | 1 | 0]"
    2976 #define setenforce_full_usage
     4568#define setenforce_full_usage ""
    29774569
    29784570#define setfiles_trivial_usage \
    2979        "[-dnpqsvW] [-e dir]... [-o filename] [-r alt_root_path]" \
    2980     USE_FEATURE_SETFILES_CHECK_OPTION( \
     4571       "[-dnpqsvW] [-e DIR]... [-o FILE] [-r alt_root_path]" \
     4572    IF_FEATURE_SETFILES_CHECK_OPTION( \
    29814573       " [-c policyfile] spec_file" \
    29824574    ) \
    29834575       " pathname"
    2984 
    2985 #define setfiles_full_usage \
    2986        "Reset file contexts under pathname according to spec_file" \
    2987     USE_FEATURE_SETFILES_CHECK_OPTION( \
    2988        "\n  -c file Check the validity of the contexts against the specified binary policy" \
    2989     ) \
    2990        "\n  -d  Show which specification matched each file" \
    2991        "\n  -l  Log changes in file labels to syslog" \
    2992        "\n  -n  Don't change any file labels" \
    2993        "\n  -q  Suppress warnings" \
    2994        "\n  -r dir  Use an altenate root path" \
    2995        "\n  -e dir  Exclude directory" \
    2996        "\n  -F  Force reset of context to match file_context for customizable files" \
    2997        "\n  -o file Save list of files with incorrect context" \
    2998        "\n  -s  Take a list of files from standard input (instead of command line)" \
    2999        "\n  -v  Show changes in file labels, if type or role are changing" \
    3000        "\n  -vv Show changes in file labels, if type, role, or user are changing" \
    3001        "\n  -W  Display warnings about entries that had no matching files"
     4576#define setfiles_full_usage "\n\n" \
     4577       "Reset file contexts under pathname according to spec_file\n" \
     4578    IF_FEATURE_SETFILES_CHECK_OPTION( \
     4579     "\n    -c FILE Check the validity of the contexts against the specified binary policy" \
     4580    ) \
     4581     "\n    -d  Show which specification matched each file" \
     4582     "\n    -l  Log changes in file labels to syslog" \
     4583     "\n    -n  Don't change any file labels" \
     4584     "\n    -q  Suppress warnings" \
     4585     "\n    -r DIR  Use an alternate root path" \
     4586     "\n    -e DIR  Exclude DIR" \
     4587     "\n    -F  Force reset of context to match file_context for customizable files" \
     4588     "\n    -o FILE Save list of files with incorrect context" \
     4589     "\n    -s  Take a list of files from stdin (instead of command line)" \
     4590     "\n    -v  Show changes in file labels, if type or role are changing" \
     4591     "\n    -vv Show changes in file labels, if type, role, or user are changing" \
     4592     "\n    -W  Display warnings about entries that had no matching files" \
     4593
     4594#define setfont_trivial_usage \
     4595       "FONT [-m MAPFILE] [-C TTY]"
     4596#define setfont_full_usage "\n\n" \
     4597       "Load a console font\n" \
     4598     "\nOptions:" \
     4599     "\n    -m MAPFILE  Load console screen map" \
     4600     "\n    -C TTY      Affect TTY instead of /dev/tty" \
     4601
     4602#define setfont_example_usage \
     4603       "$ setfont -m koi8-r /etc/i18n/fontname\n"
    30024604
    30034605#define setkeycodes_trivial_usage \
    3004        "SCANCODE KEYCODE ..."
    3005 #define setkeycodes_full_usage \
     4606       "SCANCODE KEYCODE..."
     4607#define setkeycodes_full_usage "\n\n" \
    30064608       "Set entries into the kernel's scancode-to-keycode map,\n" \
    30074609       "allowing unusual keyboards to generate usable keycodes.\n\n" \
    30084610       "SCANCODE may be either xx or e0xx (hexadecimal),\n" \
    3009        "and KEYCODE is given in decimal"
     4611       "and KEYCODE is given in decimal." \
     4612
    30104613#define setkeycodes_example_usage \
    30114614       "$ setkeycodes e030 127\n"
     
    30134616#define setlogcons_trivial_usage \
    30144617       "N"
    3015 #define setlogcons_full_usage \
     4618#define setlogcons_full_usage "\n\n" \
    30164619       "Redirect the kernel output to console N (0 for current)"
    30174620
     4621#define setsebool_trivial_usage \
     4622       "boolean value"
     4623
     4624#define setsebool_full_usage "\n\n" \
     4625       "Change boolean setting"
     4626
    30184627#define setsid_trivial_usage \
    3019        "program [arg ...]"
    3020 #define setsid_full_usage \
    3021        "Run any program in a new session by calling setsid() before\n" \
    3022        "exec'ing the rest of its arguments. See setsid(2) for details."
    3023 
    3024 #define lash_trivial_usage \
    3025        "[FILE]...\n" \
    3026        "or: sh -c command [args]..."
    3027 #define lash_full_usage \
    3028        "The BusyBox LAme SHell (command interpreter)"
    3029 #define lash_notes_usage \
    3030        "This command does not yet have proper documentation.\n\n" \
    3031        "Use lash just as you would use any other shell. It properly handles pipes,\n" \
    3032        "redirects, job control, can be used as the shell for scripts, and has a\n" \
    3033        "sufficient set of builtins to do what is needed. It does not (yet) support\n" \
    3034        "Bourne Shell syntax. If you need things like \"if-then-else\", \"while\", and such\n" \
    3035        "use ash or bash. If you just need a very simple and extremely small shell,\n" \
    3036        "this will do the job."
     4628       "PROG ARGS"
     4629#define setsid_full_usage "\n\n" \
     4630       "Run PROG in a new session. PROG will have no controlling terminal\n" \
     4631       "and will not be affected by keyboard signals (Ctrl-C etc).\n" \
     4632       "See setsid(2) for details." \
    30374633
    30384634#define last_trivial_usage \
    3039        ""
    3040 #define last_full_usage \
    3041        "Show listing of the last users that logged into the system"
    3042 
    3043 #define sha1sum_trivial_usage \
    3044        "[OPTION] [FILEs...]" \
    3045     USE_FEATURE_MD5_SHA1_SUM_CHECK("\n   or: sha1sum [OPTION] -c [FILE]")
    3046 #define sha1sum_full_usage \
    3047        "Print" USE_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA1 checksums.\n" \
    3048        "With no FILE, or when FILE is -, read standard input." \
    3049        "\n\nOptions:\n" \
    3050     USE_FEATURE_MD5_SHA1_SUM_CHECK( \
    3051        "    -c  Check SHA1 sums against given list\n" \
    3052        "\nThe following two options are useful only when verifying checksums:\n" \
    3053        "    -s  Don't output anything, status code shows success\n" \
    3054        "    -w  Warn about improperly formatted SHA1 checksum lines")
     4635       ""IF_FEATURE_LAST_FANCY("[-HW] [-f FILE]")
     4636#define last_full_usage "\n\n" \
     4637       "Show listing of the last users that logged into the system" \
     4638    IF_FEATURE_LAST_FANCY( "\n" \
     4639     "\nOptions:" \
     4640/*   "\n    -H  Show header line" */ \
     4641     "\n    -W  Display with no host column truncation" \
     4642     "\n    -f FILE Read from FILE instead of /var/log/wtmp" \
     4643    )
     4644
     4645#define showkey_trivial_usage \
     4646       "[-a | -k | -s]"
     4647#define showkey_full_usage "\n\n" \
     4648       "Show keys pressed\n" \
     4649     "\nOptions:" \
     4650     "\n    -a  Display decimal/octal/hex values of the keys" \
     4651     "\n    -k  Display interpreted keycodes (default)" \
     4652     "\n    -s  Display raw scan-codes" \
    30554653
    30564654#define slattach_trivial_usage \
    3057        "[-cehmLF] [-s speed] [-p protocol] DEVICEs"
    3058 #define slattach_full_usage \
     4655       "[-cehmLF] [-s SPEED] [-p PROTOCOL] DEVICE"
     4656#define slattach_full_usage "\n\n" \
    30594657       "Attach network interface(s) to serial line(s)\n" \
    30604658     "\nOptions:" \
    3061      "\n    -p  Set protocol (slip, cslip, slip6, clisp6 or adaptive)" \
    3062      "\n    -s  Set line speed" \
     4659     "\n    -p PROT Set protocol (slip, cslip, slip6, clisp6 or adaptive)" \
     4660     "\n    -s SPD  Set line speed" \
    30634661     "\n    -e  Exit after initializing device" \
    30644662     "\n    -h  Exit when the carrier is lost" \
    3065      "\n    -c  Execute a command when the line is hung up" \
     4663     "\n    -c PROG Run PROG when the line is hung up" \
    30664664     "\n    -m  Do NOT initialize the line in raw 8 bits mode" \
    30674665     "\n    -L  Enable 3-wire operation" \
     
    30694667
    30704668#define sleep_trivial_usage \
    3071     USE_FEATURE_FANCY_SLEEP("[") "N" USE_FEATURE_FANCY_SLEEP("]...")
    3072 #define sleep_full_usage \
    3073     SKIP_FEATURE_FANCY_SLEEP("Pause for N seconds") \
    3074     USE_FEATURE_FANCY_SLEEP( \
     4669    IF_FEATURE_FANCY_SLEEP("[") "N" IF_FEATURE_FANCY_SLEEP("]...")
     4670#define sleep_full_usage "\n\n" \
     4671    IF_NOT_FEATURE_FANCY_SLEEP("Pause for N seconds") \
     4672    IF_FEATURE_FANCY_SLEEP( \
    30754673       "Pause for a time equal to the total of the args given, where each arg can\n" \
    30764674       "have an optional suffix of (s)econds, (m)inutes, (h)ours, or (d)ays")
     
    30784676       "$ sleep 2\n" \
    30794677       "[2 second delay results]\n" \
    3080     USE_FEATURE_FANCY_SLEEP( \
     4678    IF_FEATURE_FANCY_SLEEP( \
    30814679       "$ sleep 1d 3h 22m 8s\n" \
    30824680       "[98528 second delay results]\n")
     
    30844682#define sort_trivial_usage \
    30854683       "[-nru" \
    3086     USE_FEATURE_SORT_BIG("gMcszbdfimSTokt] [-o outfile] [-k start[.offset][opts][,end[.offset][opts]] [-t char") \
     4684    IF_FEATURE_SORT_BIG("gMcszbdfimSTokt] [-o FILE] [-k start[.offset][opts][,end[.offset][opts]] [-t CHAR") \
    30874685       "] [FILE]..."
    3088 #define sort_full_usage \
    3089        "Sort lines of text in the specified files" \
    3090        "\n\nOptions:\n" \
    3091     USE_FEATURE_SORT_BIG( \
    3092        "    -b  Ignore leading blanks\n" \
    3093        "    -c  Check whether input is sorted\n" \
    3094        "    -d  Dictionary order (blank or alphanumeric only)\n" \
    3095        "    -f  Ignore case\n" \
    3096        "    -g  General numerical sort\n" \
    3097        "    -i  Ignore unprintable characters\n" \
    3098        "    -k  Specify sort key\n" \
    3099        "    -M  Sort month\n") \
    3100        "    -n  Sort numbers\n" \
    3101     USE_FEATURE_SORT_BIG( \
    3102        "    -o  Output to file\n" \
    3103        "    -k  Sort by key\n" \
    3104        "    -t  Use key separator other than whitespace\n") \
    3105        "    -r  Reverse sort order\n" \
    3106     USE_FEATURE_SORT_BIG( \
    3107        "    -s  Stable (don't sort ties alphabetically)\n") \
    3108        "    -u  Suppress duplicate lines" \
    3109     USE_FEATURE_SORT_BIG( \
    3110        "\n  -z  Input terminated by nulls, not newlines\n") \
    3111     USE_FEATURE_SORT_BIG( \
    3112        "    -mST    Ignored for GNU compatibility") \
    3113        ""
     4686#define sort_full_usage "\n\n" \
     4687       "Sort lines of text\n" \
     4688     "\nOptions:" \
     4689    IF_FEATURE_SORT_BIG( \
     4690     "\n    -b  Ignore leading blanks" \
     4691     "\n    -c  Check whether input is sorted" \
     4692     "\n    -d  Dictionary order (blank or alphanumeric only)" \
     4693     "\n    -f  Ignore case" \
     4694     "\n    -g  General numerical sort" \
     4695     "\n    -i  Ignore unprintable characters" \
     4696     "\n    -k  Sort key" \
     4697     "\n    -M  Sort month" \
     4698    ) \
     4699     "\n    -n  Sort numbers" \
     4700    IF_FEATURE_SORT_BIG( \
     4701     "\n    -o  Output to file" \
     4702     "\n    -k  Sort by key" \
     4703     "\n    -t CHAR Key separator" \
     4704    ) \
     4705     "\n    -r  Reverse sort order" \
     4706    IF_FEATURE_SORT_BIG( \
     4707     "\n    -s  Stable (don't sort ties alphabetically)" \
     4708    ) \
     4709     "\n    -u  Suppress duplicate lines" \
     4710    IF_FEATURE_SORT_BIG( \
     4711     "\n    -z  Lines are terminated by NUL, not newline" \
     4712     "\n    -mST    Ignored for GNU compatibility") \
     4713
    31144714#define sort_example_usage \
    31154715       "$ echo -e \"e\\nf\\nb\\nd\\nc\\na\" | sort\n" \
     
    31204720       "e\n" \
    31214721       "f\n" \
    3122     USE_FEATURE_SORT_BIG( \
     4722    IF_FEATURE_SORT_BIG( \
    31234723        "$ echo -e \"c 3\\nb 2\\nd 2\" | $SORT -k 2,2n -k 1,1r\n" \
    31244724        "d 2\n" \
     
    31294729
    31304730#define split_trivial_usage \
    3131        "[OPTION] [INPUT [PREFIX]]"
    3132 #define split_full_usage \
     4731       "[OPTIONS] [INPUT [PREFIX]]"
     4732#define split_full_usage "\n\n" \
    31334733       "Options:" \
    3134        "\n  -b n[k|m]   Split by bytes" \
    3135        "\n  -l n        Split by lines" \
    3136        "\n  -a n        Use n letters as suffix"
     4734     "\n    -b N[k|m]   Split by N (kilo|mega)bytes" \
     4735     "\n    -l N        Split by N lines" \
     4736     "\n    -a N        Use N letters as suffix" \
     4737
    31374738#define split_example_usage \
    31384739       "$ split TODO foo\n" \
     
    31404741
    31414742#define start_stop_daemon_trivial_usage \
    3142        "[OPTIONS] [--start|--stop] ... [-- arguments...]"
    3143 #define start_stop_daemon_full_usage \
    3144        "Start and stop services" \
    3145        "\n\nOptions:" \
    3146        "\n  -S|--start          Start" \
    3147        "\n  -K|--stop           Stop" \
    3148        "\n  -a|--startas pathname       Starts process specified by pathname" \
    3149        "\n  -b|--background         Force process into background" \
    3150        "\n  -u|--user username|uid      Stop this user's processes" \
    3151        "\n  -x|--exec executable        Program to either start or check" \
    3152        "\n  -m|--make-pidfile       Create the -p file and enter pid in it" \
    3153        "\n  -n|--name process-name      Stop processes with this name" \
    3154        "\n  -p|--pidfile pid-file       Save or load pid using a pid-file" \
    3155        "\n  -q|--quiet          Quiet" \
    3156     USE_FEATURE_START_STOP_DAEMON_FANCY( \
    3157        "\n  -o|--oknodo         Exit status 0 if nothing done" \
    3158        "\n  -v|--verbose            Verbose" \
    3159        "\n  -N|--nicelevel N        Add N to process's nice level" \
    3160     ) \
    3161        "\n  -s|--signal signal      Signal to send (default TERM)" \
    3162        "\n  -c|--chuid user[:[group]]   Change to specified user/group"
     4743       "[OPTIONS] [-S|-K] ... [-- ARGS...]"
     4744#define start_stop_daemon_full_usage "\n\n" \
     4745       "Search for matching processes, and then\n" \
     4746       "-K: stop all matching processes.\n" \
     4747       "-S: start a process unless a matching process is found.\n" \
     4748    IF_FEATURE_START_STOP_DAEMON_LONG_OPTIONS( \
     4749     "\nProcess matching:" \
     4750     "\n    -u,--user USERNAME|UID  Match only this user's processes" \
     4751     "\n    -n,--name NAME      Match processes with NAME" \
     4752     "\n                in comm field in /proc/PID/stat" \
     4753     "\n    -x,--exec EXECUTABLE    Match processes with this command" \
     4754     "\n                in /proc/PID/cmdline" \
     4755     "\n    -p,--pidfile FILE   Match a process with PID from the file" \
     4756     "\n    All specified conditions must match" \
     4757     "\n-S only:" \
     4758     "\n    -x,--exec EXECUTABLE    Program to run" \
     4759     "\n    -a,--startas NAME   Zeroth argument" \
     4760     "\n    -b,--background     Background" \
     4761    IF_FEATURE_START_STOP_DAEMON_FANCY( \
     4762     "\n    -N,--nicelevel N    Change nice level" \
     4763    ) \
     4764     "\n    -c,--chuid USER[:[GRP]] Change to user/group" \
     4765     "\n    -m,--make-pidfile   Write PID to the pidfile specified by -p" \
     4766     "\n-K only:" \
     4767     "\n    -s,--signal SIG     Signal to send" \
     4768     "\n    -t,--test       Match only, exit with 0 if a process is found" \
     4769     "\nOther:" \
     4770    IF_FEATURE_START_STOP_DAEMON_FANCY( \
     4771     "\n    -o,--oknodo     Exit with status 0 if nothing is done" \
     4772     "\n    -v,--verbose        Verbose" \
     4773    ) \
     4774     "\n    -q,--quiet      Quiet" \
     4775    ) \
     4776    IF_NOT_FEATURE_START_STOP_DAEMON_LONG_OPTIONS( \
     4777     "\nProcess matching:" \
     4778     "\n    -u USERNAME|UID Match only this user's processes" \
     4779     "\n    -n NAME     Match processes with NAME" \
     4780     "\n            in comm field in /proc/PID/stat" \
     4781     "\n    -x EXECUTABLE   Match processes with this command" \
     4782     "\n            command in /proc/PID/cmdline" \
     4783     "\n    -p FILE     Match a process with PID from the file" \
     4784     "\n    All specified conditions must match" \
     4785     "\n-S only:" \
     4786     "\n    -x EXECUTABLE   Program to run" \
     4787     "\n    -a NAME     Zeroth argument" \
     4788     "\n    -b      Background" \
     4789    IF_FEATURE_START_STOP_DAEMON_FANCY( \
     4790     "\n    -N N        Change nice level" \
     4791    ) \
     4792     "\n    -c USER[:[GRP]] Change to user/group" \
     4793     "\n    -m      Write PID to the pidfile specified by -p" \
     4794     "\n-K only:" \
     4795     "\n    -s SIG      Signal to send" \
     4796     "\n    -t      Match only, exit with 0 if a process is found" \
     4797     "\nOther:" \
     4798    IF_FEATURE_START_STOP_DAEMON_FANCY( \
     4799     "\n    -o      Exit with status 0 if nothing is done" \
     4800     "\n    -v      Verbose" \
     4801    ) \
     4802     "\n    -q      Quiet" \
     4803    ) \
    31634804
    31644805#define stat_trivial_usage \
    3165        "[OPTION] FILE..."
    3166 #define stat_full_usage \
    3167        "Display file (default) or filesystem status" \
    3168        "\n\nOptions:\n" \
    3169     USE_FEATURE_STAT_FORMAT( \
    3170        "    -c fmt  Use the specified format\n") \
    3171        "    -f  Display filesystem status\n" \
    3172        "    -L,-l   Dereference links\n" \
    3173        "    -t  Display info in terse form" \
    3174     USE_SELINUX( \
    3175        "\n  -Z  Print security context" \
    3176     ) \
    3177     USE_FEATURE_STAT_FORMAT( \
     4806       "[OPTIONS] FILE..."
     4807#define stat_full_usage "\n\n" \
     4808       "Display file (default) or filesystem status\n" \
     4809     "\nOptions:" \
     4810    IF_FEATURE_STAT_FORMAT( \
     4811     "\n    -c fmt  Use the specified format" \
     4812    ) \
     4813     "\n    -f  Display filesystem status" \
     4814     "\n    -L  Follow links" \
     4815     "\n    -t  Display info in terse form" \
     4816    IF_SELINUX( \
     4817     "\n    -Z  Print security context" \
     4818    ) \
     4819    IF_FEATURE_STAT_FORMAT( \
    31784820       "\n\nValid format sequences for files:\n" \
    31794821       " %a Access rights in octal\n" \
     
    31904832       " %i Inode number\n" \
    31914833       " %n File name\n" \
    3192        " %N Quoted file name with dereference if symlink\n" \
     4834       " %N File name, with -> TARGET if symlink\n" \
    31934835       " %o I/O block size\n" \
    31944836       " %s Total size, in bytes\n" \
     
    32094851       " %d Free file nodes in file system\n" \
    32104852       " %f Free blocks in file system\n" \
    3211     USE_SELINUX( \
    3212        " %C Security context in SELinux\n" \
     4853    IF_SELINUX( \
     4854       " %C Security context in selinux\n" \
    32134855    ) \
    32144856       " %i File System ID in hex\n" \
     
    32194861       " %t Type in hex\n" \
    32204862       " %T Type in human readable form" \
    3221     )
     4863    ) \
    32224864
    32234865#define strings_trivial_usage \
    3224        "[-afo] [-n length] [file ...]"
    3225 #define strings_full_usage \
    3226        "Display printable strings in a binary file" \
    3227        "\n\nOptions:" \
    3228        "\n  -a  Scan the whole files (this is the default)" \
    3229        "\n  -f  Precede each string with the name of the file where it was found" \
    3230        "\n  -n N    Specifies that at least N characters forms a sequence (default 4)" \
    3231        "\n  -o  Each string is preceded by its decimal offset in the file"
     4866       "[-afo] [-n LEN] [FILE]..."
     4867#define strings_full_usage "\n\n" \
     4868       "Display printable strings in a binary file\n" \
     4869     "\nOptions:" \
     4870     "\n    -a  Scan whole file (default)" \
     4871     "\n    -f  Precede strings with filenames" \
     4872     "\n    -n LEN  At least LEN characters form a string (default 4)" \
     4873     "\n    -o  Precede strings with decimal offsets" \
    32324874
    32334875#define stty_trivial_usage \
    32344876       "[-a|g] [-F DEVICE] [SETTING]..."
    3235 #define stty_full_usage \
     4877#define stty_full_usage "\n\n" \
    32364878       "Without arguments, prints baud rate, line discipline,\n" \
    3237        "and deviations from stty sane" \
    3238        "\n\nOptions:" \
    3239        "\n  -F DEVICE   Open device instead of stdin" \
    3240        "\n  -a      Print all current settings in human-readable form" \
    3241        "\n  -g      Print in stty-readable form" \
    3242        "\n  [SETTING]   See manpage"
     4879       "and deviations from stty sane\n" \
     4880     "\nOptions:" \
     4881     "\n    -F DEVICE   Open device instead of stdin" \
     4882     "\n    -a      Print all current settings in human-readable form" \
     4883     "\n    -g      Print in stty-readable form" \
     4884     "\n    [SETTING]   See manpage" \
    32434885
    32444886#define su_trivial_usage \
    3245        "[OPTION]... [-] [username]"
    3246 #define su_full_usage \
    3247        "Change user id or become root" \
    3248        "\n\nOptions:" \
    3249        "\n  -p, -m  Preserve environment" \
    3250        "\n  -c  Command to pass to 'sh -c'" \
    3251        "\n  -s  Shell to use instead of default shell"
     4887       "[OPTIONS] [-] [USERNAME]"
     4888#define su_full_usage "\n\n" \
     4889       "Change user id or become root\n" \
     4890     "\nOptions:" \
     4891     "\n    -p,-m   Preserve environment" \
     4892     "\n    -c CMD  Command to pass to 'sh -c'" \
     4893     "\n    -s SH   Shell to use instead of default shell" \
    32524894
    32534895#define sulogin_trivial_usage \
    3254        "[OPTION]... [tty-device]"
    3255 #define sulogin_full_usage \
    3256        "Single user login" \
    3257        "\n\nOptions:" \
    3258        "\n  -t  Timeout"
     4896       "[-t N] [TTY]"
     4897#define sulogin_full_usage "\n\n" \
     4898       "Single user login\n" \
     4899     "\nOptions:" \
     4900     "\n    -t N    Timeout" \
    32594901
    32604902#define sum_trivial_usage \
    3261        "[rs] [files...]"
    3262 #define sum_full_usage \
    3263        "Checksum and count the blocks in a file" \
    3264        "\n\nOptions:\n" \
    3265        "    -r  Use BSD sum algorithm (1K blocks)\n" \
    3266        "    -s  Use System V sum algorithm (512byte blocks)"
     4903       "[-rs] [FILE]..."
     4904#define sum_full_usage "\n\n" \
     4905       "Checksum and count the blocks in a file\n" \
     4906     "\nOptions:" \
     4907     "\n    -r  Use BSD sum algorithm (1K blocks)" \
     4908     "\n    -s  Use System V sum algorithm (512byte blocks)" \
    32674909
    32684910#define sv_trivial_usage \
    3269        "[-v] [-w sec] command service..."
    3270 #define sv_full_usage \
     4911       "[-v] [-w SEC] CMD SERVICE_DIR..."
     4912#define sv_full_usage "\n\n" \
    32714913       "Control services monitored by runsv supervisor.\n" \
    32724914       "Commands (only first character is enough):\n" \
     
    32764918       "once: like 'up', but if service stops, don't restart it\n" \
    32774919       "down: send TERM and CONT signals. If ./run exits, start ./finish\n" \
    3278        "    if it exists. After it stops, do not restart service\n" \
     4920       "    if it exists. After it stops, don't restart service\n" \
    32794921       "exit: send TERM and CONT signals to service and log service. If they exit,\n" \
    3280        "    runsv exits too\n" \
     4922       "    runsv exits too\n" \
    32814923       "pause, cont, hup, alarm, interrupt, quit, 1, 2, term, kill: send\n" \
    3282        "STOP, CONT, HUP, ALRM, INT, QUIT, USR1, USR2, TERM, KILL signal to service"
     4924       "STOP, CONT, HUP, ALRM, INT, QUIT, USR1, USR2, TERM, KILL signal to service" \
    32834925
    32844926#define svlogd_trivial_usage \
    3285        "[-ttv] [-r c] [-R abc] [-l len] [-b buflen] dir..."
    3286 #define svlogd_full_usage \
    3287        "Continuously read log data from standard input, optionally " \
    3288        "filter log messages, and write the data to one or more automatically " \
    3289        "rotated logs"
     4927       "[-ttv] [-r C] [-R CHARS] [-l MATCHLEN] [-b BUFLEN] DIR..."
     4928#define svlogd_full_usage "\n\n" \
     4929       "Continuously read log data from stdin, optionally\n" \
     4930       "filter log messages, and write the data to one or more automatically\n" \
     4931       "rotated logs" \
    32904932
    32914933#define swapoff_trivial_usage \
    32924934       "[-a] [DEVICE]"
    3293 #define swapoff_full_usage \
    3294        "Stop swapping virtual memory pages on DEVICE" \
    3295        "\n\nOptions:\n" \
    3296        "    -a  Stop swapping on all swap devices"
     4935#define swapoff_full_usage "\n\n" \
     4936       "Stop swapping on DEVICE\n" \
     4937     "\nOptions:" \
     4938     "\n    -a  Stop swapping on all swap devices" \
    32974939
    32984940#define swapon_trivial_usage \
    3299        "[-a] [DEVICE]"
    3300 #define swapon_full_usage \
    3301        "Start swapping virtual memory pages on DEVICE" \
    3302        "\n\nOptions:\n" \
    3303        "    -a  Start swapping on all swap devices"
     4941       "[-a]" IF_FEATURE_SWAPON_PRI(" [-p PRI]") " [DEVICE]"
     4942#define swapon_full_usage "\n\n" \
     4943       "Start swapping on DEVICE\n" \
     4944     "\nOptions:" \
     4945     "\n    -a  Start swapping on all swap devices" \
     4946    IF_FEATURE_SWAPON_PRI( \
     4947     "\n    -p PRI  Set swap device priority" \
     4948    ) \
    33044949
    33054950#define switch_root_trivial_usage \
    3306        "[-c /dev/console] NEW_ROOT NEW_INIT [ARGUMENTS_TO_INIT]"
    3307 #define switch_root_full_usage \
    3308        "Use from PID 1 under initramfs to free initramfs, chroot to NEW_ROOT,\n" \
    3309        "and exec NEW_INIT" \
    3310        "\n\nOptions:\n" \
    3311        "    -c  Redirect console to device on new root"
     4951       "[-c /dev/console] NEW_ROOT NEW_INIT [ARGS]"
     4952#define switch_root_full_usage "\n\n" \
     4953       "Free initramfs and switch to another root fs:\n" \
     4954       "chroot to NEW_ROOT, delete all in /, move NEW_ROOT to /,\n" \
     4955       "execute NEW_INIT. PID must be 1. NEW_ROOT must be a mountpoint.\n" \
     4956     "\nOptions:" \
     4957     "\n    -c DEV  Reopen stdio to DEV after switch" \
    33124958
    33134959#define sync_trivial_usage \
    33144960       ""
    3315 #define sync_full_usage \
    3316        "Write all buffered filesystem blocks to disk"
     4961#define sync_full_usage "\n\n" \
     4962       "Write all buffered blocks to disk"
     4963
     4964#define fsync_trivial_usage \
     4965       "[-d] FILE..."
     4966#define fsync_full_usage "\n\n" \
     4967       "Write files' buffered blocks to disk\n" \
     4968     "\nOptions:" \
     4969     "\n    -d  Avoid syncing metadata"
    33174970
    33184971#define sysctl_trivial_usage \
    3319        "[OPTIONS]... [VALUE]..."
    3320 #define sysctl_full_usage \
    3321        "Configure kernel parameters at runtime" \
    3322        "\n\nOptions:\n" \
    3323        "    -n  Use this option to disable printing of the key name when printing values\n" \
    3324        "    -w  Use this option when you want to change a sysctl setting\n" \
    3325        "    -p  Load in sysctl settings from the file specified or /etc/sysctl.conf if none given\n" \
    3326        "    -a  Display all values currently available\n" \
    3327        "    -A  Display all values currently available in table form"
     4972       "[OPTIONS] [VALUE]..."
     4973#define sysctl_full_usage "\n\n" \
     4974       "Configure kernel parameters at runtime\n" \
     4975     "\nOptions:" \
     4976     "\n    -n  Don't print key names" \
     4977     "\n    -e  Don't warn about unknown keys" \
     4978     "\n    -w  Change sysctl setting" \
     4979     "\n    -p FILE Load sysctl settings from FILE (default /etc/sysctl.conf)" \
     4980     "\n    -a  Display all values" \
     4981     "\n    -A  Display all values in table form" \
     4982
    33284983#define sysctl_example_usage \
    3329        "sysctl [-n] variable ...\n" \
    3330        "sysctl [-n] -w variable=value ...\n" \
    3331        "sysctl [-n] -a\n" \
    3332        "sysctl [-n] -p file (default /etc/sysctl.conf)\n" \
    3333        "sysctl [-n] -A\n"
     4984       "sysctl [-n] [-e] variable...\n" \
     4985       "sysctl [-n] [-e] -w variable=value...\n" \
     4986       "sysctl [-n] [-e] -a\n" \
     4987       "sysctl [-n] [-e] -p file    (default /etc/sysctl.conf)\n" \
     4988       "sysctl [-n] [-e] -A\n"
    33344989
    33354990#define syslogd_trivial_usage \
    3336        "[OPTION]..."
    3337 #define syslogd_full_usage \
     4991       "[OPTIONS]"
     4992#define syslogd_full_usage "\n\n" \
    33384993       "System logging utility.\n" \
    3339        "Note that this version of syslogd ignores /etc/syslog.conf." \
    3340        "\n\nOptions:" \
    3341        "\n  -n      Run as foreground process" \
    3342        "\n  -O FILE     Log to given file (default=/var/log/messages)" \
    3343        "\n  -l n        Set local log level" \
    3344        "\n  -S      Smaller logging output" \
    3345     USE_FEATURE_ROTATE_LOGFILE( \
    3346        "\n  -s SIZE     Max size (KB) before rotate (default=200KB, 0=off)" \
    3347        "\n  -b NUM      Number of rotated logs to keep (default=1, max=99, 0=purge)") \
    3348     USE_FEATURE_REMOTE_LOG( \
    3349        "\n  -R HOST[:PORT]  Log to IP or hostname on PORT (default PORT=514/UDP)" \
    3350        "\n  -L      Log locally and via network (default is network only if -R)") \
    3351     USE_FEATURE_IPC_SYSLOG( \
    3352        "\n  -C[size(KiB)]   Log to shared mem buffer (read it using logread)")
     4994       "This version of syslogd ignores /etc/syslog.conf\n" \
     4995     "\nOptions:" \
     4996     "\n    -n      Run in foreground" \
     4997     "\n    -O FILE     Log to given file (default:/var/log/messages)" \
     4998     "\n    -l N        Set local log level" \
     4999     "\n    -S      Smaller logging output" \
     5000    IF_FEATURE_ROTATE_LOGFILE( \
     5001     "\n    -s SIZE     Max size (KB) before rotate (default:200KB, 0=off)" \
     5002     "\n    -b N        N rotated logs to keep (default:1, max=99, 0=purge)") \
     5003    IF_FEATURE_REMOTE_LOG( \
     5004     "\n    -R HOST[:PORT]  Log to IP or hostname on PORT (default PORT=514/UDP)" \
     5005     "\n    -L      Log locally and via network (default is network only if -R)") \
     5006    IF_FEATURE_SYSLOGD_DUP( \
     5007     "\n    -D      Drop duplicates") \
     5008    IF_FEATURE_IPC_SYSLOG( \
     5009     "\n    -C[size(KiB)]   Log to shared mem buffer (read it using logread)") \
    33535010    /* NB: -Csize shouldn't have space (because size is optional) */
    3354 /*     "\n  -m MIN      Minutes between MARK lines (default=20, 0=off)" */
     5011/*   "\n    -m MIN      Minutes between MARK lines (default:20, 0=off)" */
     5012
    33555013#define syslogd_example_usage \
    33565014       "$ syslogd -R masterlog:514\n" \
    33575015       "$ syslogd -R 192.168.1.1:601\n"
    33585016
    3359 #define tail_trivial_usage \
    3360        "[OPTION]... [FILE]..."
    3361 #define tail_full_usage \
    3362        "Print last 10 lines of each FILE to standard output.\n" \
    3363        "With more than one FILE, precede each with a header giving the\n" \
    3364        "file name. With no FILE, or when FILE is -, read standard input." \
    3365        "\n\nOptions:" \
    3366     USE_FEATURE_FANCY_TAIL( \
    3367        "\n  -c N[kbm]   Output the last N bytes") \
    3368        "\n  -n N[kbm]   Print last N lines instead of last 10" \
    3369        "\n  -f      Output data as the file grows" \
    3370     USE_FEATURE_FANCY_TAIL( \
    3371        "\n  -q      Never output headers giving file names" \
    3372        "\n  -s SEC      Wait SEC seconds between reads with -f" \
    3373        "\n  -v      Always output headers giving file names" \
    3374        "\n\n" \
    3375        "If the first character of N (bytes or lines) is a '+', output begins with\n" \
    3376        "the Nth item from the start of each file, otherwise, print the last N items\n" \
    3377        "in the file. N bytes may be suffixed by k (x1024), b (x512), or m (1024^2)." )
    3378 #define tail_example_usage \
    3379        "$ tail -n 1 /etc/resolv.conf\n" \
    3380        "nameserver 10.0.0.1\n"
    3381 
    3382 #define tar_trivial_usage \
    3383        "-[" USE_FEATURE_TAR_CREATE("c") USE_FEATURE_TAR_GZIP("z") \
    3384     USE_FEATURE_TAR_BZIP2("j") USE_FEATURE_TAR_LZMA("a") \
    3385     USE_FEATURE_TAR_COMPRESS("Z") "xtvO] " \
    3386     USE_FEATURE_TAR_FROM("[-X FILE] ") \
    3387        "[-f TARFILE] [-C DIR] [FILE(s)] ..."
    3388 #define tar_full_usage \
    3389        "Create, extract, or list files from a tar file" \
    3390        "\n\nOptions:\n" \
    3391     USE_FEATURE_TAR_CREATE( \
    3392        "    c   Create\n") \
    3393        "    x   Extract\n" \
    3394        "    t   List\n" \
    3395        "\nArchive format selection:\n" \
    3396     USE_FEATURE_TAR_GZIP( \
    3397        "    z   Filter the archive through gzip\n") \
    3398     USE_FEATURE_TAR_BZIP2( \
    3399        "    j   Filter the archive through bzip2\n") \
    3400     USE_FEATURE_TAR_LZMA( \
    3401        "    a   Filter the archive through lzma\n") \
    3402     USE_FEATURE_TAR_COMPRESS( \
    3403        "    Z   Filter the archive through compress\n") \
    3404        "\nFile selection:\n" \
    3405        "    f   Name of TARFILE or \"-\" for stdin\n" \
    3406        "    O   Extract to stdout\n" \
    3407     USE_FEATURE_TAR_FROM( \
    3408        "    exclude File to exclude\n" \
    3409        "    X   File with names to exclude\n") \
    3410        "    C   Change to directory DIR before operation\n" \
    3411        "    v   Verbose"
    3412 #define tar_example_usage \
    3413        "$ zcat /tmp/tarball.tar.gz | tar -xf -\n" \
    3414        "$ tar -cf /tmp/tarball.tar /usr/local\n"
     5017#define tac_trivial_usage \
     5018    "[FILE]..."
     5019#define tac_full_usage "\n\n" \
     5020    "Concatenate FILEs and print them in reverse"
    34155021
    34165022#define taskset_trivial_usage \
    3417        "[OPTIONS] [mask] [pid | command [arg]...]"
    3418 #define taskset_full_usage \
    3419        "Set or get CPU affinity" \
    3420        "\n\nOptions:\n" \
    3421        "    -p  Operate on an existing PID"
     5023       "[-p] [MASK] [PID | PROG ARGS]"
     5024#define taskset_full_usage "\n\n" \
     5025       "Set or get CPU affinity\n" \
     5026     "\nOptions:" \
     5027     "\n    -p  Operate on an existing PID" \
     5028
    34225029#define taskset_example_usage \
    34235030       "$ taskset 0x7 ./dgemm_test&\n" \
     
    34325039
    34335040#define tee_trivial_usage \
    3434        "[OPTION]... [FILE]..."
    3435 #define tee_full_usage \
    3436        "Copy standard input to each FILE, and also to standard output" \
    3437        "\n\nOptions:\n" \
    3438        "    -a  Append to the given FILEs, do not overwrite\n" \
    3439        "    -i  Ignore interrupt signals (SIGINT)"
     5041       "[-ai] [FILE]..."
     5042#define tee_full_usage "\n\n" \
     5043       "Copy stdin to each FILE, and also to stdout\n" \
     5044     "\nOptions:" \
     5045     "\n    -a  Append to the given FILEs, don't overwrite" \
     5046     "\n    -i  Ignore interrupt signals (SIGINT)" \
     5047
    34405048#define tee_example_usage \
    34415049       "$ echo \"Hello\" | tee /tmp/foo\n" \
     
    34465054#define telnet_trivial_usage \
    34475055       "[-a] [-l USER] HOST [PORT]"
    3448 #define telnet_full_usage \
    3449        "Connect to remote telnet server" \
    3450        "\n\nOptions:\n" \
    3451        "    -a  Attempt an automatic login with the USER variable\n" \
    3452        "    -l USER Attempt an automatic login with the USER argument\n" \
    3453        "    HOST    The official name, alias or the IP address of the\n" \
    3454        "        remote host\n" \
    3455        "    PORT    The remote port number to connect to. If it is not\n" \
    3456        "        specified, the default telnet (23) port is used."
     5056#define telnet_full_usage "\n\n" \
     5057       "Connect to telnet server\n" \
     5058     "\nOptions:" \
     5059     "\n    -a  Automatic login with $USER variable" \
     5060     "\n    -l USER Automatic login as USER" \
     5061
    34575062#else
    34585063#define telnet_trivial_usage \
    34595064       "HOST [PORT]"
    3460 #define telnet_full_usage \
    3461        "Connect to remote telnet server"
     5065#define telnet_full_usage "\n\n" \
     5066       "Connect to telnet server"
    34625067#endif
    34635068
    34645069#define telnetd_trivial_usage \
    3465        "[OPTION]"
    3466 #define telnetd_full_usage \
     5070       "[OPTIONS]"
     5071#define telnetd_full_usage "\n\n" \
    34675072       "Handle incoming telnet connections" \
    3468     SKIP_FEATURE_TELNETD_STANDALONE(" via inetd") \
    3469        "\n\nOptions:" \
    3470        "\n  -l LOGIN    Exec LOGIN on connect" \
    3471        "\n  -f issue_file   Display issue_file instead of /etc/issue" \
    3472     USE_FEATURE_TELNETD_STANDALONE( \
    3473        "\n  -p PORT     Port to listen to" \
    3474        "\n  -b ADDR     Address to bind to" \
    3475        "\n  -F      Stay in foreground" \
    3476        "\n  -i      Run as inetd subservice" \
     5073    IF_NOT_FEATURE_TELNETD_STANDALONE(" via inetd") "\n" \
     5074     "\nOptions:" \
     5075     "\n    -l LOGIN    Exec LOGIN on connect" \
     5076     "\n    -f ISSUE_FILE   Display ISSUE_FILE instead of /etc/issue" \
     5077     "\n    -K      Close connection as soon as login exits" \
     5078     "\n            (normally wait until all programs close slave pty)" \
     5079    IF_FEATURE_TELNETD_STANDALONE( \
     5080     "\n    -p PORT     Port to listen on" \
     5081     "\n    -b ADDR[:PORT]  Address to bind to" \
     5082     "\n    -F      Run in foreground" \
     5083     "\n    -i      Inetd mode" \
     5084    IF_FEATURE_TELNETD_INETD_WAIT( \
     5085     "\n    -w SEC      Inetd 'wait' mode, linger time SEC" \
     5086     "\n    -S      Log to syslog (implied by -i or without -F and -w)" \
     5087    ) \
    34775088    )
    34785089
     5090/* "test --help" does not print help (POSIX compat), only "[ --help" does.
     5091 * We display "<applet> EXPRESSION ]" here (not "<applet> EXPRESSION")
     5092 * Unfortunately, it screws up generated BusyBox.html. TODO. */
    34795093#define test_trivial_usage \
    3480        "EXPRESSION\n  or   [ EXPRESSION ]"
    3481 #define test_full_usage \
    3482        "Check file types and compares values returning an exit code\n" \
    3483        "determined by the value of EXPRESSION"
     5094       "EXPRESSION ]"
     5095#define test_full_usage "\n\n" \
     5096       "Check file types, compare values etc. Return a 0/1 exit code\n" \
     5097       "depending on logical value of EXPRESSION"
    34845098#define test_example_usage \
    34855099       "$ test 1 -eq 2\n" \
     
    34965110       "1\n"
    34975111
     5112#define tc_trivial_usage \
     5113    /*"[OPTIONS] "*/"OBJECT CMD [dev STRING]"
     5114#define tc_full_usage "\n\n" \
     5115    "OBJECT: {qdisc|class|filter}\n" \
     5116    "CMD: {add|del|change|replace|show}\n" \
     5117    "\n" \
     5118    "qdisc [ handle QHANDLE ] [ root |"IF_FEATURE_TC_INGRESS(" ingress |")" parent CLASSID ]\n" \
     5119    /* "[ estimator INTERVAL TIME_CONSTANT ]\n" */ \
     5120    "   [ [ QDISC_KIND ] [ help | OPTIONS ] ]\n" \
     5121    "   QDISC_KIND := { [p|b]fifo | tbf | prio | cbq | red | etc. }\n" \
     5122    "qdisc show [ dev STRING ]"IF_FEATURE_TC_INGRESS(" [ingress]")"\n" \
     5123    "class [ classid CLASSID ] [ root | parent CLASSID ]\n" \
     5124    "   [ [ QDISC_KIND ] [ help | OPTIONS ] ]\n" \
     5125    "class show [ dev STRING ] [ root | parent CLASSID ]\n" \
     5126    "filter [ pref PRIO ] [ protocol PROTO ]\n" \
     5127    /* "\t[ estimator INTERVAL TIME_CONSTANT ]\n" */ \
     5128    "   [ root | classid CLASSID ] [ handle FILTERID ]\n" \
     5129    "   [ [ FILTER_TYPE ] [ help | OPTIONS ] ]\n" \
     5130    "filter show [ dev STRING ] [ root | parent CLASSID ]"
     5131
    34985132#define tcpsvd_trivial_usage \
    3499        "[-hEv] [-c n] [-C n:msg] [-b n] [-u user] [-l name] ip port prog..."
     5133       "[-hEv] [-c N] [-C N[:MSG]] [-b N] [-u USER] [-l NAME] IP PORT PROG"
    35005134/* with not-implemented options: */
    3501 /*     "[-hpEvv] [-c n] [-C n:msg] [-b n] [-u user] [-l name] [-i dir|-x cdb] [-t sec] ip port prog..." */
    3502 #define tcpsvd_full_usage \
    3503        "Creates TCP socket, binds it to ip:port and listens on it\n" \
    3504        "for incoming connections. For each connection it runs prog." \
    3505      "\n" \
    3506      "\nip      IP to listen on. '0' = all" \
    3507      "\nport        Port to listen on" \
    3508      "\nprog [arg]  Program to run" \
    3509      "\n-l name     Local hostname (else looks up local hostname in DNS)" \
    3510      "\n-u user[:group] Change to user/group after bind" \
    3511      "\n-c n        Handle up to n connections simultaneously" \
    3512      "\n-b n        Allow a backlog of approximately n TCP SYNs" \
    3513      "\n-C n[:msg]  Allow only up to n connections from the same IP" \
    3514      "\n        New connections from this IP address are closed" \
    3515      "\n        immediately. 'msg' is written to the peer before close" \
    3516      "\n-h      Look up peer's hostname" \
    3517      "\n-E      Do not set up environment variables" \
    3518      "\n-v      Verbose"
     5135/*     "[-hpEvv] [-c N] [-C N[:MSG]] [-b N] [-u USER] [-l NAME] [-i DIR|-x CDB] [-t SEC] IP PORT PROG" */
     5136#define tcpsvd_full_usage "\n\n" \
     5137       "Create TCP socket, bind to IP:PORT and listen\n" \
     5138       "for incoming connection. Run PROG for each connection.\n" \
     5139     "\n    IP      IP to listen on. '0' = all" \
     5140     "\n    PORT        Port to listen on" \
     5141     "\n    PROG ARGS   Program to run" \
     5142     "\n    -l NAME     Local hostname (else looks up local hostname in DNS)" \
     5143     "\n    -u USER[:GRP]   Change to user/group after bind" \
     5144     "\n    -c N        Handle up to N connections simultaneously" \
     5145     "\n    -b N        Allow a backlog of approximately N TCP SYNs" \
     5146     "\n    -C N[:MSG]  Allow only up to N connections from the same IP." \
     5147     "\n            New connections from this IP address are closed" \
     5148     "\n            immediately. MSG is written to the peer before close" \
     5149     "\n    -h      Look up peer's hostname" \
     5150     "\n    -E      Don't set up environment variables" \
     5151     "\n    -v      Verbose" \
    35195152
    35205153#define udpsvd_trivial_usage \
    3521        "[-hEv] [-c n] [-u user] [-l name] ip port prog"
    3522 #define udpsvd_full_usage \
    3523        "Creates UDP socket, binds it to ip:port and listens on it\n" \
    3524        "for incoming packets. For each packet it runs prog\n" \
    3525        "(redirecting all further packets with same peer ip:port to it)." \
    3526      "\n" \
    3527      "\nip      IP to listen on. '0' = all" \
    3528      "\nport        Port to listen on" \
    3529      "\nprog [arg]  Program to run" \
    3530      "\n-l name     Local hostname (else looks up local hostname in DNS)" \
    3531      "\n-u user[:group] Change to user/group after bind" \
    3532      "\n-c n        Handle up to n connections simultaneously" \
    3533      "\n-h      Look up peer's hostname" \
    3534      "\n-E      Do not set up environment variables" \
    3535      "\n-v      Verbose"
     5154       "[-hEv] [-c N] [-u USER] [-l NAME] IP PORT PROG"
     5155#define udpsvd_full_usage "\n\n" \
     5156       "Create UDP socket, bind to IP:PORT and wait\n" \
     5157       "for incoming packets. Run PROG for each packet,\n" \
     5158       "redirecting all further packets with same peer ip:port to it.\n" \
     5159     "\n    IP      IP to listen on. '0' = all" \
     5160     "\n    PORT        Port to listen on" \
     5161     "\n    PROG ARGS   Program to run" \
     5162     "\n    -l NAME     Local hostname (else looks up local hostname in DNS)" \
     5163     "\n    -u USER[:GRP]   Change to user/group after bind" \
     5164     "\n    -c N        Handle up to N connections simultaneously" \
     5165     "\n    -h      Look up peer's hostname" \
     5166     "\n    -E      Don't set up environment variables" \
     5167     "\n    -v      Verbose" \
    35365168
    35375169#define tftp_trivial_usage \
    3538        "[OPTION]... HOST [PORT]"
    3539 #define tftp_full_usage \
    3540        "Transfer a file from/to tftp server using \"octet\" mode" \
    3541        "\n\nOptions:" \
    3542        "\n  -l FILE Local FILE" \
    3543        "\n  -r FILE Remote FILE" \
    3544     USE_FEATURE_TFTP_GET( \
    3545        "\n  -g  Get file" \
    3546     ) \
    3547     USE_FEATURE_TFTP_PUT( \
    3548        "\n  -p  Put file" \
    3549     ) \
    3550     USE_FEATURE_TFTP_BLOCKSIZE( \
    3551        "\n  -b SIZE Transfer blocks of SIZE octets" \
     5170       "[OPTIONS] HOST [PORT]"
     5171#define tftp_full_usage "\n\n" \
     5172       "Transfer a file from/to tftp server\n" \
     5173     "\nOptions:" \
     5174     "\n    -l FILE Local FILE" \
     5175     "\n    -r FILE Remote FILE" \
     5176    IF_FEATURE_TFTP_GET( \
     5177     "\n    -g  Get file" \
     5178    ) \
     5179    IF_FEATURE_TFTP_PUT( \
     5180     "\n    -p  Put file" \
     5181    ) \
     5182    IF_FEATURE_TFTP_BLOCKSIZE( \
     5183     "\n    -b SIZE Transfer blocks of SIZE octets" \
    35525184    )
     5185
     5186#define tftpd_trivial_usage \
     5187       "[-cr] [-u USER] [DIR]"
     5188#define tftpd_full_usage "\n\n" \
     5189       "Transfer a file on tftp client's request\n" \
     5190       "\n" \
     5191       "tftpd should be used as an inetd service.\n" \
     5192       "tftpd's line for inetd.conf:\n" \
     5193       "    69 dgram udp nowait root tftpd tftpd /files/to/serve\n" \
     5194       "It also can be ran from udpsvd:\n" \
     5195       "    udpsvd -vE 0.0.0.0 69 tftpd /files/to/serve\n" \
     5196     "\nOptions:" \
     5197     "\n    -r  Prohibit upload" \
     5198     "\n    -c  Allow file creation via upload" \
     5199     "\n    -u  Access files as USER" \
     5200
    35535201#define time_trivial_usage \
    3554        "[OPTION]... COMMAND [ARGS...]"
    3555 #define time_full_usage \
    3556        "Run the program COMMAND with arguments ARGS. When COMMAND finishes,\n" \
    3557        "COMMAND's resource usage information is displayed." \
    3558        "\n\nOptions:\n" \
    3559        "    -v  Verbose"
     5202       "[-v] PROG ARGS"
     5203#define time_full_usage "\n\n" \
     5204       "Run PROG, display resource usage when it exits\n" \
     5205     "\nOptions:" \
     5206     "\n    -v  Verbose" \
     5207
     5208#define timeout_trivial_usage \
     5209       "[-t SECS] [-s SIG] PROG ARGS"
     5210#define timeout_full_usage "\n\n" \
     5211       "Runs PROG. Sends SIG to it if it is not gone in SECS seconds.\n" \
     5212       "Defaults: SECS: 10, SIG: TERM." \
    35605213
    35615214#define top_trivial_usage \
    3562        "[-b] [-n count] [-d seconds]"
    3563 #define top_full_usage \
     5215       "[-b] [-nCOUNT] [-dSECONDS]" IF_FEATURE_TOPMEM(" [-m]")
     5216#define top_full_usage "\n\n" \
    35645217       "Provide a view of process activity in real time.\n" \
    3565        "Read the status of all processes from /proc each <seconds>\n" \
    3566        "and show the status for however many processes will fit on the screen."
     5218       "Read the status of all processes from /proc each SECONDS\n" \
     5219       "and display a screenful of them." \
     5220//TODO: add options and keyboard commands
    35675221
    35685222#define touch_trivial_usage \
    3569        "[-c] FILE [FILE ...]"
    3570 #define touch_full_usage \
    3571        "Update the last-modified date on the given FILE[s]" \
    3572        "\n\nOptions:\n" \
    3573        "    -c  Do not create any files"
     5223       "[-c] [-d DATE] [-r FILE] FILE [FILE]..."
     5224#define touch_full_usage "\n\n" \
     5225       "Update the last-modified date on the given FILE[s]\n" \
     5226     "\nOptions:" \
     5227     "\n    -c  Don't create files" \
     5228     "\n    -d DT   Date/time to use" \
     5229     "\n    -r FILE Use FILE's date/time" \
     5230
    35745231#define touch_example_usage \
    35755232       "$ ls -l /tmp/foo\n" \
     
    35815238#define tr_trivial_usage \
    35825239       "[-cds] STRING1 [STRING2]"
    3583 #define tr_full_usage \
    3584        "Translate, squeeze, and/or delete characters from\n" \
    3585        "standard input, writing to standard output" \
    3586        "\n\nOptions:\n" \
    3587        "    -c  Take complement of STRING1\n" \
    3588        "    -d  Delete input characters coded STRING1\n" \
    3589        "    -s  Squeeze multiple output characters of STRING2 into one character"
     5240#define tr_full_usage "\n\n" \
     5241       "Translate, squeeze, or delete characters from stdin, writing to stdout\n" \
     5242     "\nOptions:" \
     5243     "\n    -c  Take complement of STRING1" \
     5244     "\n    -d  Delete input characters coded STRING1" \
     5245     "\n    -s  Squeeze multiple output characters of STRING2 into one character" \
     5246
    35905247#define tr_example_usage \
    35915248       "$ echo \"gdkkn vnqkc\" | tr [a-y] [b-z]\n" \
     
    35935250
    35945251#define traceroute_trivial_usage \
    3595        "[-FIldnrv] [-f 1st_ttl] [-m max_ttl] [-p port#] [-q nqueries]\n" \
    3596        "    [-s src_addr] [-t tos] [-w wait] [-g gateway] [-i iface]\n" \
    3597        "    [-z pausemsecs] host [data size]"
    3598 #define traceroute_full_usage \
    3599        "Trace the route ip packets follow going to \"host\"" \
    3600        "\n\nOptions:\n" \
    3601        "    -F  Set the don't fragment bit\n" \
    3602        "    -I  Use ICMP ECHO instead of UDP datagrams\n" \
    3603        "    -l  Display the ttl value of the returned packet\n" \
    3604        "    -d  Set SO_DEBUG options to socket\n" \
    3605        "    -n  Print hop addresses numerically rather than symbolically\n" \
    3606        "    -r  Bypass the normal routing tables and send directly to a host\n" \
    3607        "    -v  Verbose\n" \
    3608        "    -m max_ttl  Max time-to-live (max number of hops)\n" \
    3609        "    -p port#    Base UDP port number used in probes\n" \
    3610        "            (default is 33434)\n" \
    3611        "    -q nqueries Number of probes per 'ttl' (default 3)\n" \
    3612        "    -s src_addr IP address to use as the source address\n" \
    3613        "    -t tos      Type-of-service in probe packets (default 0)\n" \
    3614        "    -w wait     Time in seconds to wait for a response to a probe\n" \
    3615        "            (default 3 sec)\n" \
    3616        "    -g      Specify a loose source route gateway (8 max)"
    3617 
     5252       "[-"IF_TRACEROUTE6("46")"FIldnrv] [-f 1ST_TTL] [-m MAXTTL] [-p PORT] [-q PROBES]\n" \
     5253       "    [-s SRC_IP] [-t TOS] [-w WAIT_SEC] [-g GATEWAY] [-i IFACE]\n" \
     5254       "    [-z PAUSE_MSEC] HOST [BYTES]"
     5255#define traceroute_full_usage "\n\n" \
     5256       "Trace the route to HOST\n" \
     5257     "\nOptions:" \
     5258    IF_TRACEROUTE6( \
     5259     "\n    -4,-6   Force IP or IPv6 name resolution" \
     5260    ) \
     5261     "\n    -F  Set the don't fragment bit" \
     5262     "\n    -I  Use ICMP ECHO instead of UDP datagrams" \
     5263     "\n    -l  Display the TTL value of the returned packet" \
     5264     "\n    -d  Set SO_DEBUG options to socket" \
     5265     "\n    -n  Print numeric addresses" \
     5266     "\n    -r  Bypass routing tables, send directly to HOST" \
     5267     "\n    -v  Verbose" \
     5268     "\n    -m  Max time-to-live (max number of hops)" \
     5269     "\n    -p  Base UDP port number used in probes" \
     5270     "\n        (default 33434)" \
     5271     "\n    -q  Number of probes per TTL (default 3)" \
     5272     "\n    -s  IP address to use as the source address" \
     5273     "\n    -t  Type-of-service in probe packets (default 0)" \
     5274     "\n    -w  Time in seconds to wait for a response (default 3)" \
     5275     "\n    -g  Loose source route gateway (8 max)" \
     5276
     5277#define traceroute6_trivial_usage \
     5278       "[-dnrv] [-m MAXTTL] [-p PORT] [-q PROBES]\n" \
     5279       "    [-s SRC_IP] [-t TOS] [-w WAIT_SEC] [-i IFACE]\n" \
     5280       "    HOST [BYTES]"
     5281#define traceroute6_full_usage "\n\n" \
     5282       "Trace the route to HOST\n" \
     5283     "\nOptions:" \
     5284     "\n    -d  Set SO_DEBUG options to socket" \
     5285     "\n    -n  Print numeric addresses" \
     5286     "\n    -r  Bypass routing tables, send directly to HOST" \
     5287     "\n    -v  Verbose" \
     5288     "\n    -m  Max time-to-live (max number of hops)" \
     5289     "\n    -p  Base UDP port number used in probes" \
     5290     "\n        (default is 33434)" \
     5291     "\n    -q  Number of probes per TTL (default 3)" \
     5292     "\n    -s  IP address to use as the source address" \
     5293     "\n    -t  Type-of-service in probe packets (default 0)" \
     5294     "\n    -w  Time in seconds to wait for a response (default 3)" \
    36185295
    36195296#define true_trivial_usage \
    36205297       ""
    3621 #define true_full_usage \
     5298#define true_full_usage "\n\n" \
    36225299       "Return an exit code of TRUE (0)"
    36235300#define true_example_usage \
     
    36285305#define tty_trivial_usage \
    36295306       ""
    3630 #define tty_full_usage \
    3631        "Print file name of standard input's terminal" \
    3632     USE_INCLUDE_SUSv2( \
    3633        "\n\nOptions:\n" \
    3634        "    -s  Print nothing, only return exit status")
     5307#define tty_full_usage "\n\n" \
     5308       "Print file name of stdin's terminal" \
     5309    IF_INCLUDE_SUSv2( "\n" \
     5310     "\nOptions:" \
     5311     "\n    -s  Print nothing, only return exit status" \
     5312    )
    36355313#define tty_example_usage \
    36365314       "$ tty\n" \
     
    36395317#define ttysize_trivial_usage \
    36405318       "[w] [h]"
    3641 #define ttysize_full_usage \
    3642        "Print dimension(s) of standard input's terminal, on error return 80x25"
    3643 
    3644 #define tune2fs_trivial_usage \
    3645        "[-c max-mounts-count] [-e errors-behavior] [-g group] " \
    3646        "[-i interval[d|m|w]] [-j] [-J journal-options] [-l] [-s sparse-flag] " \
    3647        "[-m reserved-blocks-percent] [-o [^]mount-options[,...]] " \
    3648        "[-r reserved-blocks-count] [-u user] [-C mount-count] " \
    3649        "[-L volume-label] [-M last-mounted-dir] [-O [^]feature[,...]] " \
    3650        "[-T last-check-time] [-U UUID] device"
    3651 #define tune2fs_full_usage \
    3652        "Adjust filesystem options on ext[23] filesystems"
    3653 
    3654 #define udhcpc_trivial_usage \
    3655        "[-Cfbnqtv] [-c CID] [-V VCLS] [-H HOSTNAME] [-i INTERFACE]\n" \
    3656        "    [-p pidfile] [-r IP] [-s script]"
    3657 #define udhcpc_full_usage \
    3658        "    -V,--vendorclass=CLASSID    Set vendor class identifier" \
    3659        "\n  -i,--interface=INTERFACE    Interface to use (default: eth0)" \
    3660        "\n  -H,-h,--hostname=HOSTNAME   Client hostname" \
    3661        "\n  -c,--clientid=CLIENTID  Set client identifier" \
    3662        "\n  -C,--clientid-none  Suppress default client identifier" \
    3663        "\n  -p,--pidfile=file   Store process ID of daemon in file" \
    3664        "\n  -r,--request=IP     IP address to request" \
    3665        "\n  -s,--script=file    Run file at dhcp events (default: /usr/share/udhcpc/default.script)" \
    3666        "\n  -t,--retries=N      Send up to N request packets"\
    3667        "\n  -f,--foreground Stay in foreground" \
    3668        "\n  -b,--background Background if lease cannot be immediately negotiated" \
    3669        "\n  -S,--syslog Log to syslog too" \
    3670        "\n  -n,--now    Exit with failure if lease cannot be immediately negotiated" \
    3671        "\n  -q,--quit   Quit after obtaining lease" \
    3672        "\n  -R,--release    Release IP on quit" \
    3673        "\n  -v,--version    Display version" \
     5319#define ttysize_full_usage "\n\n" \
     5320       "Print dimension(s) of stdin's terminal, on error return 80x25"
     5321
     5322#define tunctl_trivial_usage \
     5323       "[-f device] ([-t name] | -d name)" IF_FEATURE_TUNCTL_UG(" [-u owner] [-g group] [-b]")
     5324#define tunctl_full_usage "\n\n" \
     5325       "Create or delete tun interfaces\n" \
     5326     "\nOptions:" \
     5327     "\n    -f name     tun device (/dev/net/tun)" \
     5328     "\n    -t name     Create iface 'name'" \
     5329     "\n    -d name     Delete iface 'name'" \
     5330    IF_FEATURE_TUNCTL_UG( \
     5331     "\n    -u owner    Set iface owner" \
     5332     "\n    -g group    Set iface group" \
     5333     "\n    -b      Brief output" \
     5334    )
     5335#define tunctl_example_usage \
     5336       "# tunctl\n" \
     5337       "# tunctl -d tun0\n"
    36745338
    36755339#define udhcpd_trivial_usage \
    3676        "[-fS] [configfile]" \
    3677 
    3678 #define udhcpd_full_usage \
    3679        "DHCP server" \
    3680        "\n  -f  Stay in foreground" \
    3681        "\n  -S  Log to syslog too"
     5340       "[-fS]" IF_FEATURE_UDHCP_PORT(" [-P N]") " [CONFFILE]" \
     5341
     5342#define udhcpd_full_usage "\n\n" \
     5343       "DHCP server\n" \
     5344     "\n    -f  Run in foreground" \
     5345     "\n    -S  Log to syslog too" \
     5346    IF_FEATURE_UDHCP_PORT( \
     5347     "\n    -P N    Use port N (default 67)" \
     5348    )
    36825349
    36835350#define umount_trivial_usage \
    3684        "[flags] FILESYSTEM|DIRECTORY"
    3685 #define umount_full_usage \
    3686        "Unmount file systems" \
    3687        "\n\nOptions:\n" \
    3688     USE_FEATURE_UMOUNT_ALL( \
    3689        "\n  -a  Unmount all file systems" USE_FEATURE_MTAB_SUPPORT(" in /etc/mtab")) \
    3690     USE_FEATURE_MTAB_SUPPORT( \
    3691        "\n  -n  Don't erase /etc/mtab entries") \
    3692        "\n  -r  Try to remount devices as read-only if mount is busy" \
    3693        "\n  -l  Lazy umount (detach filesystem)" \
    3694        "\n  -f  Force umount (i.e., unreachable NFS server)" \
    3695     USE_FEATURE_MOUNT_LOOP( \
    3696        "\n  -D  Do not free loop device (if a loop device has been used)")
     5351       "[OPTIONS] FILESYSTEM|DIRECTORY"
     5352#define umount_full_usage "\n\n" \
     5353       "Unmount file systems\n" \
     5354     "\nOptions:" \
     5355    IF_FEATURE_UMOUNT_ALL( \
     5356     "\n    -a  Unmount all file systems" IF_FEATURE_MTAB_SUPPORT(" in /etc/mtab") \
     5357    ) \
     5358    IF_FEATURE_MTAB_SUPPORT( \
     5359     "\n    -n  Don't erase /etc/mtab entries" \
     5360    ) \
     5361     "\n    -r  Try to remount devices as read-only if mount is busy" \
     5362     "\n    -l  Lazy umount (detach filesystem)" \
     5363     "\n    -f  Force umount (i.e., unreachable NFS server)" \
     5364    IF_FEATURE_MOUNT_LOOP( \
     5365     "\n    -d  Free loop device if it has been used" \
     5366    )
     5367
    36975368#define umount_example_usage \
    36985369       "$ umount /dev/hdc1\n"
    36995370
    37005371#define uname_trivial_usage \
    3701        "[OPTION]..."
    3702 #define uname_full_usage \
    3703        "Print certain system information. With no OPTION, same as -s." \
    3704        "\n\nOptions:\n" \
    3705        "    -a  Print all information\n" \
    3706        "    -m  The machine (hardware) type\n" \
    3707        "    -n  Print the machine's network node hostname\n" \
    3708        "    -r  Print the operating system release\n" \
    3709        "    -s  Print the operating system name\n" \
    3710        "    -p  Print the host processor type\n" \
    3711        "    -v  Print the operating system version"
     5372       "[-amnrspv]"
     5373#define uname_full_usage "\n\n" \
     5374       "Print system information\n" \
     5375     "\nOptions:" \
     5376     "\n    -a  Print all" \
     5377     "\n    -m  The machine (hardware) type" \
     5378     "\n    -n  Hostname" \
     5379     "\n    -r  OS release" \
     5380     "\n    -s  OS name (default)" \
     5381     "\n    -p  Processor type" \
     5382     "\n    -v  OS version" \
     5383
    37125384#define uname_example_usage \
    37135385       "$ uname -a\n" \
     
    37155387
    37165388#define uncompress_trivial_usage \
    3717        "[-c] [-f] [name...]"
    3718 #define uncompress_full_usage \
    3719        "Uncompress .Z file[s]" \
    3720        "\n\nOptions:\n" \
    3721        "    -c  Extract to stdout\n" \
    3722        "    -f  Force overwrite an existing file"
     5389       "[-cf] [FILE]..."
     5390#define uncompress_full_usage "\n\n" \
     5391       "Decompress .Z file[s]\n" \
     5392     "\nOptions:" \
     5393     "\n    -c  Write to stdout" \
     5394     "\n    -f  Overwrite" \
    37235395
    37245396#define unexpand_trivial_usage \
    3725        "[-f][-a][-t NUM] [FILE|-]"
    3726 #define unexpand_full_usage \
    3727        "Convert spaces to tabs, writing to standard output." \
    3728        "\n\nOptions:" \
    3729        "\n  -a" USE_FEATURE_UNEXPAND_LONG_OPTIONS(",--all") \
    3730        "    Convert all blanks" \
    3731        "\n  -f" USE_FEATURE_UNEXPAND_LONG_OPTIONS(",--first-only") \
    3732        "    Convert only leading sequences of blanks" \
    3733        "\n  -t" USE_FEATURE_UNEXPAND_LONG_OPTIONS(",--tabs=N") \
    3734        "    Tabstops every N chars"
     5397       "[-fa][-t N] [FILE]..."
     5398#define unexpand_full_usage "\n\n" \
     5399       "Convert spaces to tabs, writing to stdout\n" \
     5400     "\nOptions:" \
     5401    IF_FEATURE_UNEXPAND_LONG_OPTIONS( \
     5402     "\n    -a,--all    Convert all blanks" \
     5403     "\n    -f,--first-only Convert only leading blanks" \
     5404     "\n    -t,--tabs=N Tabstops every N chars" \
     5405    ) \
     5406    IF_NOT_FEATURE_UNEXPAND_LONG_OPTIONS( \
     5407     "\n    -a  Convert all blanks" \
     5408     "\n    -f  Convert only leading blanks" \
     5409     "\n    -t N    Tabstops every N chars" \
     5410    )
    37355411
    37365412#define uniq_trivial_usage \
    3737        "[-fscdu]... [INPUT [OUTPUT]]"
    3738 #define uniq_full_usage \
    3739        "Discard all but one of successive identical lines from INPUT\n" \
    3740        "(or standard input), writing to OUTPUT (or standard output)" \
    3741        "\n\nOptions:\n" \
    3742        "    -c  Prefix lines by the number of occurrences\n" \
    3743        "    -d  Only print duplicate lines\n" \
    3744        "    -u  Only print unique lines\n" \
    3745        "    -f N    Skip the first N fields\n" \
    3746        "    -s N    Skip the first N chars (after any skipped fields)"
     5413       "[-cdu][-f,s,w N] [INPUT [OUTPUT]]"
     5414#define uniq_full_usage "\n\n" \
     5415       "Discard duplicate lines\n" \
     5416     "\nOptions:" \
     5417     "\n    -c  Prefix lines by the number of occurrences" \
     5418     "\n    -d  Only print duplicate lines" \
     5419     "\n    -u  Only print unique lines" \
     5420     "\n    -f N    Skip first N fields" \
     5421     "\n    -s N    Skip first N chars (after any skipped fields)" \
     5422     "\n    -w N    Compare N characters in line" \
     5423
    37475424#define uniq_example_usage \
    37485425       "$ echo -e \"a\\na\\nb\\nc\\nc\\na\" | sort | uniq\n" \
     
    37515428       "c\n"
    37525429
    3753 #define unix2dos_trivial_usage \
    3754        "[option] [FILE]"
    3755 #define unix2dos_full_usage \
    3756        "Convert FILE from unix format to dos format. When no option\n" \
    3757        "is given, the input is converted to the opposite output format.\n" \
    3758        "When no file is given, use stdin/stdout." \
    3759        "\n\nOptions:\n" \
    3760        "    -u  Output will be in UNIX format\n" \
    3761        "    -d  Output will be in DOS format"
    3762 
    37635430#define unzip_trivial_usage \
    3764        "[-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]"
    3765 #define unzip_full_usage \
    3766        "Extract files from ZIP archives" \
    3767        "\n\nOptions:\n" \
    3768        "    -l  List archive contents (short form)\n" \
    3769        "    -n  Never overwrite existing files (default)\n" \
    3770        "    -o  Overwrite files without prompting\n" \
    3771        "    -p  Send output to stdout\n" \
    3772        "    -q  Quiet\n" \
    3773        "    -x  Exclude these files\n" \
    3774        "    -d  Extract files into this directory"
     5431       "[-opts[modifiers]] FILE[.zip] [LIST] [-x XLIST] [-d DIR]"
     5432#define unzip_full_usage "\n\n" \
     5433       "Extract files from ZIP archives\n" \
     5434     "\nOptions:" \
     5435     "\n    -l  List archive contents (with -q for short form)" \
     5436     "\n    -n  Never overwrite files (default)" \
     5437     "\n    -o  Overwrite" \
     5438     "\n    -p  Send output to stdout" \
     5439     "\n    -q  Quiet" \
     5440     "\n    -x XLST Exclude these files" \
     5441     "\n    -d DIR  Extract files into DIR" \
    37755442
    37765443#define uptime_trivial_usage \
    37775444       ""
    3778 #define uptime_full_usage \
     5445#define uptime_full_usage "\n\n" \
    37795446       "Display the time since the last boot"
     5447
    37805448#define uptime_example_usage \
    37815449       "$ uptime\n" \
     
    37845452#define usleep_trivial_usage \
    37855453       "N"
    3786 #define usleep_full_usage \
     5454#define usleep_full_usage "\n\n" \
    37875455       "Pause for N microseconds"
     5456
    37885457#define usleep_example_usage \
    37895458       "$ usleep 1000000\n" \
     
    37915460
    37925461#define uudecode_trivial_usage \
    3793        "[-o outfile] [infile]"
    3794 #define uudecode_full_usage \
     5462       "[-o OUTFILE] [INFILE]"
     5463#define uudecode_full_usage "\n\n" \
    37955464       "Uudecode a file\n" \
    3796        "NB: finds outfile name in uuencoded source unless -o is given"
     5465       "Finds outfile name in uuencoded source unless -o is given"
     5466
    37975467#define uudecode_example_usage \
    37985468       "$ uudecode -o busybox busybox.uu\n" \
     
    38015471
    38025472#define uuencode_trivial_usage \
    3803        "[-m] [infile] stored_filename"
    3804 #define uuencode_full_usage \
    3805        "Uuencode a file to stdout" \
    3806        "\n\nOptions:\n" \
    3807        "    -m  Use base64 encoding per RFC1521"
     5473       "[-m] [INFILE] STORED_FILENAME"
     5474#define uuencode_full_usage "\n\n" \
     5475       "Uuencode a file to stdout\n" \
     5476     "\nOptions:" \
     5477     "\n    -m  Use base64 encoding per RFC1521" \
     5478
    38085479#define uuencode_example_usage \
    38095480       "$ uuencode busybox busybox\n" \
     
    38145485
    38155486#define vconfig_trivial_usage \
    3816        "COMMAND [OPTIONS] ..."
    3817 #define vconfig_full_usage \
    3818        "Create and remove virtual ethernet devices" \
    3819        "\n\nOptions:\n" \
    3820        "    add     [interface-name] [vlan_id]\n" \
    3821        "    rem     [vlan-name]\n" \
    3822        "    set_flag    [interface-name] [flag-num] [0 | 1]\n" \
    3823        "    set_egress_map  [vlan-name] [skb_priority] [vlan_qos]\n" \
    3824        "    set_ingress_map [vlan-name] [skb_priority] [vlan_qos]\n" \
    3825        "    set_name_type   [name-type]"
     5487       "COMMAND [OPTIONS]"
     5488#define vconfig_full_usage "\n\n" \
     5489       "Create and remove virtual ethernet devices\n" \
     5490     "\nOptions:" \
     5491     "\n    add     [interface-name] [vlan_id]" \
     5492     "\n    rem     [vlan-name]" \
     5493     "\n    set_flag    [interface-name] [flag-num] [0 | 1]" \
     5494     "\n    set_egress_map  [vlan-name] [skb_priority] [vlan_qos]" \
     5495     "\n    set_ingress_map [vlan-name] [skb_priority] [vlan_qos]" \
     5496     "\n    set_name_type   [name-type]" \
    38265497
    38275498#define vi_trivial_usage \
    3828        "[OPTION] [FILE]..."
    3829 #define vi_full_usage \
    3830        "Edit FILE" \
    3831        "\n\nOptions:\n" \
    3832        "    -R  Read-only - do not write to the file"
     5499       "[OPTIONS] [FILE]..."
     5500#define vi_full_usage "\n\n" \
     5501       "Edit FILE\n" \
     5502     "\nOptions:" \
     5503    IF_FEATURE_VI_COLON( \
     5504     "\n    -c  Initial command to run ($EXINIT also available)" \
     5505    ) \
     5506    IF_FEATURE_VI_READONLY( \
     5507     "\n    -R  Read-only" \
     5508    ) \
     5509     "\n    -H  Short help regarding available features" \
    38335510
    38345511#define vlock_trivial_usage \
    3835        "[OPTIONS]"
    3836 #define vlock_full_usage \
    3837        "Lock a virtual terminal. A password is required to unlock." \
    3838        "\n\nOptions:\n" \
    3839        "    -a  Lock all VTs"
     5512       "[-a]"
     5513#define vlock_full_usage "\n\n" \
     5514       "Lock a virtual terminal. A password is required to unlock.\n" \
     5515     "\nOptions:" \
     5516     "\n    -a  Lock all VTs" \
     5517
     5518#define volname_trivial_usage \
     5519       "[DEVICE]"
     5520#define volname_full_usage "\n\n" \
     5521       "Show CD volume name of the DEVICE (default /dev/cdrom)"
     5522
     5523#define wall_trivial_usage \
     5524    "[FILE]"
     5525#define wall_full_usage "\n\n" \
     5526    "Write content of FILE or stdin to all logged-in users"
     5527#define wall_sample_usage \
     5528    "echo foo | wall\n" \
     5529    "wall ./mymessage"
    38405530
    38415531#define watch_trivial_usage \
    3842        "[-n seconds] [-t] COMMAND..."
    3843 #define watch_full_usage \
    3844        "Execute a program periodically" \
    3845        "\n\nOptions:\n" \
    3846        "    -n  Loop period in seconds - default is 2\n" \
    3847        "    -t  Don't print header"
     5532       "[-n SEC] [-t] PROG ARGS"
     5533#define watch_full_usage "\n\n" \
     5534       "Run PROG periodically\n" \
     5535     "\nOptions:" \
     5536     "\n    -n  Loop period in seconds (default 2)" \
     5537     "\n    -t  Don't print header" \
     5538
    38485539#define watch_example_usage \
    38495540       "$ watch date\n" \
     
    38535544
    38545545#define watchdog_trivial_usage \
    3855        "[-t seconds] [-F] DEV"
    3856 #define watchdog_full_usage \
    3857        "Periodically write to watchdog device DEV" \
    3858        "\n\nOptions:\n" \
    3859        "    -t  Timer period in seconds - default is 30\n" \
    3860        "    -F  Stay in the foreground and don't fork"
    3861 
    3862 #define wc_trivial_usage \
    3863        "[OPTION]... [FILE]..."
    3864 #define wc_full_usage \
    3865        "Print line, word, and byte counts for each FILE, and a total line if\n" \
    3866        "more than one FILE is specified. With no FILE, read standard input." \
    3867        "\n\nOptions:\n" \
    3868        "    -c  Print the byte counts\n" \
    3869        "    -l  Print the newline counts\n" \
    3870        "    -L  Print the length of the longest line\n" \
    3871        "    -w  Print the word counts"
    3872 #define wc_example_usage \
    3873        "$ wc /etc/passwd\n" \
    3874        "     31      46    1365 /etc/passwd\n"
     5546       "[-t N[ms]] [-T N[ms]] [-F] DEV"
     5547#define watchdog_full_usage "\n\n" \
     5548       "Periodically write to watchdog device DEV\n" \
     5549     "\nOptions:" \
     5550     "\n    -T N    Reboot after N seconds if not reset (default 60)" \
     5551     "\n    -t N    Reset every N seconds (default 30)" \
     5552     "\n    -F  Run in foreground" \
     5553     "\n" \
     5554     "\nUse 500ms to specify period in milliseconds" \
    38755555
    38765556#define wget_trivial_usage \
    3877        "[-c|--continue] [-s|--spider] [-q|--quiet] [-O|--output-document file]\n" \
    3878        "        [--header 'header: value'] [-Y|--proxy on/off] [-P DIR]\n" \
    3879        "        [-U|--user-agent agent] url"
    3880 #define wget_full_usage \
    3881        "Retrieve files via HTTP or FTP" \
    3882        "\n\nOptions:\n" \
    3883        "    -s  Spider mode - only check file existence\n" \
    3884        "    -c  Continue retrieval of aborted transfer\n" \
    3885        "    -q  Quiet\n" \
    3886        "    -P  Set directory prefix to DIR\n" \
    3887        "    -O  Save to filename ('-' for stdout)\n" \
    3888        "    -U  Adjust 'User-Agent' field\n" \
    3889        "    -Y  Use proxy ('on' or 'off')"
     5557    IF_FEATURE_WGET_LONG_OPTIONS( \
     5558       "[-c|--continue] [-s|--spider] [-q|--quiet] [-O|--output-document FILE]\n" \
     5559       "    [--header 'header: value'] [-Y|--proxy on/off] [-P DIR]\n" \
     5560       "    [--no-check-certificate] [-U|--user-agent AGENT]" \
     5561            IF_FEATURE_WGET_TIMEOUT("[-T SEC] ") " URL" \
     5562    ) \
     5563    IF_NOT_FEATURE_WGET_LONG_OPTIONS( \
     5564       "[-csq] [-O FILE] [-Y on/off] [-P DIR] [-U AGENT]" \
     5565            IF_FEATURE_WGET_TIMEOUT("[-T SEC] ") " URL" \
     5566    )
     5567#define wget_full_usage "\n\n" \
     5568       "Retrieve files via HTTP or FTP\n" \
     5569     "\nOptions:" \
     5570     "\n    -s  Spider mode - only check file existence" \
     5571     "\n    -c  Continue retrieval of aborted transfer" \
     5572     "\n    -q  Quiet" \
     5573     "\n    -P DIR  Save to DIR (default .)" \
     5574    IF_FEATURE_WGET_TIMEOUT( \
     5575     "\n    -T SEC  Network read timeout is SEC seconds" \
     5576    ) \
     5577     "\n    -O FILE Save to FILE ('-' for stdout)" \
     5578     "\n    -U STR  Use STR for User-Agent header" \
     5579     "\n    -Y  Use proxy ('on' or 'off')" \
    38905580
    38915581#define which_trivial_usage \
    3892        "[COMMAND ...]"
    3893 #define which_full_usage \
     5582       "[COMMAND]..."
     5583#define which_full_usage "\n\n" \
    38945584       "Locate a COMMAND"
    38955585#define which_example_usage \
     
    38985588
    38995589#define who_trivial_usage \
    3900        " "
    3901 #define who_full_usage \
    3902        "Print the current user names and related information"
     5590       "[-a]"
     5591#define who_full_usage "\n\n" \
     5592       "Show who is logged on\n" \
     5593     "\nOptions:" \
     5594     "\n    -a  Show all" \
    39035595
    39045596#define whoami_trivial_usage \
    39055597       ""
    3906 #define whoami_full_usage \
     5598#define whoami_full_usage "\n\n" \
    39075599       "Print the user name associated with the current effective user id"
    3908 
    3909 #define xargs_trivial_usage \
    3910        "[OPTIONS] [COMMAND] [ARGS...]"
    3911 #define xargs_full_usage \
    3912        "Execute COMMAND on every item given by standard input" \
    3913        "\n\nOptions:\n" \
    3914     USE_FEATURE_XARGS_SUPPORT_CONFIRMATION( \
    3915        "    -p  Prompt the user about whether to run each command\n") \
    3916        "    -r  Do not run command for empty read lines\n" \
    3917     USE_FEATURE_XARGS_SUPPORT_TERMOPT( \
    3918        "    -x  Exit if the size is exceeded\n") \
    3919     USE_FEATURE_XARGS_SUPPORT_ZERO_TERM( \
    3920        "    -0  Input filenames are terminated by a null character\n") \
    3921        "    -t  Print the command line on stderr before executing it"
    3922 #define xargs_example_usage \
    3923        "$ ls | xargs gzip\n" \
    3924        "$ find . -name '*.c' -print | xargs rm\n"
    3925 
    3926 #define yes_trivial_usage \
    3927        "[OPTION]... [STRING]..."
    3928 #define yes_full_usage \
    3929        "Repeatedly output a line with all specified STRING(s), or 'y'"
    39305600
    39315601#define zcat_trivial_usage \
    39325602       "FILE"
    3933 #define zcat_full_usage \
    3934        "Uncompress to stdout"
     5603#define zcat_full_usage "\n\n" \
     5604       "Decompress to stdout"
    39355605
    39365606#define zcip_trivial_usage \
    3937        "[OPTIONS] ifname script"
    3938 #define zcip_full_usage \
    3939        "Manage a ZeroConf IPv4 link-local address" \
    3940        "\n\nOptions:\n" \
    3941        "    -f      Foreground mode\n" \
    3942        "    -q      Quit after address (no daemon)\n" \
    3943        "    -r 169.254.x.x  Request this address first\n" \
    3944        "    -v      Verbose"
    3945 
    3946 #endif /* __BB_USAGE_H__ */
     5607       "[OPTIONS] IFACE SCRIPT"
     5608#define zcip_full_usage "\n\n" \
     5609       "Manage a ZeroConf IPv4 link-local address\n" \
     5610     "\nOptions:" \
     5611     "\n    -f      Run in foreground" \
     5612     "\n    -q      Quit after obtaining address" \
     5613     "\n    -r 169.254.x.x  Request this address first" \
     5614     "\n    -v      Verbose" \
     5615     "\n" \
     5616     "\nWith no -q, runs continuously monitoring for ARP conflicts," \
     5617     "\nexits only on I/O errors (link down etc)" \
     5618
     5619
     5620#endif
Note: See TracChangeset for help on using the changeset viewer.