Changeset 1765 in MondoRescue for branches/2.2.5/mindi-busybox/include/usage.h


Ignore:
Timestamp:
Nov 4, 2007, 3:16:40 AM (17 years ago)
Author:
Bruno Cornec
Message:

Update to busybox 1.7.2

File:
1 edited

Legend:

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

    r821 r1765  
     1/* vi: set sw=8 ts=8: */
     2/*
     3 * This file suffers from chronically incorrect tabification
     4 * of messages. Before editing this file:
     5 * 1. Switch you editor to 8-space tab mode.
     6 * 2. Do not use \t in messages, use real tab character.
     7 * 3. Start each source line with message as follows:
     8 *    |<7 spaces>"text with tabs"....
     9 */
     10
    111#ifndef __BB_USAGE_H__
    212#define __BB_USAGE_H__
    313
    414#define addgroup_trivial_usage \
    5     "[-g GID] group_name [user_name]"
     15       "[-g GID]"USE_FEATURE_ADDUSER_TO_GROUP(" [user_name]")" group_name"
    616#define addgroup_full_usage \
    7     "Adds a group to the system\n\n" \
    8     "Options:\n" \
    9     "\t-g GID\t\tspecify gid"
     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"
    1020
    1121#define adduser_trivial_usage \
    12     "[OPTIONS] user_name"
     22       "[OPTIONS] user_name"
    1323#define adduser_full_usage \
    14     "Adds a user to the system\n\n" \
    15     "Options:\n" \
    16     "\t-h DIR\t\tAssign home directory DIR\n" \
    17     "\t-g GECOS\tAssign gecos field GECOS\n" \
    18     "\t-s SHELL\tAssign login shell SHELL\n" \
    19     "\t-G\t\tAdd the user to existing group GROUP\n" \
    20     "\t-S\t\tcreate a system user (ignored)\n" \
    21     "\t-D\t\tDo not assign a password (logins still possible via ssh)\n" \
    22     "\t-H\t\tDo not create the home directory"
     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"
    2333
    2434#define adjtimex_trivial_usage \
    25     "[-q] [-o offset] [-f frequency] [-p timeconstant] [-t tick]"
     35       "[-q] [-o offset] [-f frequency] [-p timeconstant] [-t tick]"
    2636#define adjtimex_full_usage \
    27     "Reads and optionally sets system timebase parameters.\n" \
    28     "See adjtimex(2).\n\n" \
    29     "Options:\n" \
    30     "\t-q\t\tquiet mode - do not print\n" \
    31     "\t-o offset\ttime offset, microseconds\n" \
    32     "\t-f frequency\tfrequency adjust, integer kernel units (65536 is 1ppm)\n" \
    33     "\t\t\t(positive values make the system clock run fast)\n" \
    34     "\t-t tick\t\tmicroseconds per tick, usually 10000\n" \
    35     "\t-p timeconstant"
     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"
    3646
    3747#define ar_trivial_usage \
    38     "[-o] [-v] [-p] [-t] [-x] ARCHIVE FILES"
     48       "[-o] [-v] [-p] [-t] [-x] ARCHIVE FILES"
    3949#define ar_full_usage \
    40     "Extract or list FILES from an ar archive.\n\n" \
    41     "Options:\n" \
    42     "\t-o\t\tpreserve original dates\n" \
    43     "\t-p\t\textract to stdout\n" \
    44     "\t-t\t\tlist\n" \
    45     "\t-x\t\textract\n" \
    46     "\t-v\t\tverbosely list files processed"
     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"
     57
     58#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:" \
     68       "\n  -a      Display (all) hosts" \
     69       "\n  -s      Set a new ARP entry" \
     70       "\n  -d      Delete a specified entry" \
     71       "\n  -v      Verbose" \
     72       "\n  -n      Don't resolve names" \
     73       "\n  -i if       Specify network interface (e.g. eth0)" \
     74       "\n  -D      Read <hwaddr> from given device" \
     75       "\n  -A, -p      Specify protocol family" \
     76       "\n  -H hwtype   Specify hardware address type"
    4777
    4878#define arping_trivial_usage \
    49     "[-fqbDUA] [-c count] [-w timeout] [-i device] [-s sender] target"
     79       "[-fqbDUA] [-c count] [-w timeout] [-i device] [-s sender] target"
    5080#define arping_full_usage \
    51     "Ping hosts by ARP requests/replies.\n\n" \
    52     "Options:\n" \
    53     "\t-f\t\tQuit on first ARP reply\n" \
    54     "\t-q\t\tBe quiet\n" \
    55     "\t-b\t\tKeep broadcasting, don't go unicast\n" \
    56     "\t-D\t\tDuplicated address detection mode\n" \
    57     "\t-U\t\tUnsolicited ARP mode, update your neighbours\n" \
    58     "\t-A\t\tARP answer mode, update your neighbours\n" \
    59     "\t-c count\tStop after sending count ARP request packets\n" \
    60     "\t-w timeout\tTime to wait for ARP reply, in seconds\n" \
    61     "\t-i device\tOutgoing interface name, default is eth0\n" \
    62     "\t-s sender\tSet specific sender IP address\n" \
    63     "\ttarget\t\tTarget IP address of ARP request"
     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"
    6494
    6595#define ash_trivial_usage \
    66     "[FILE]...\n" \
    67     "or: ash -c command [args]..."
     96       "[FILE]...\n" \
     97       "or: ash -c command [args]..."
    6898#define ash_full_usage \
    69     "The ash shell (command interpreter)"
     99       "The ash shell (command interpreter)"
    70100
    71101#define awk_trivial_usage \
    72     "[OPTION]... [program-text] [FILE ...]"
     102       "[OPTION]... [program-text] [FILE ...]"
    73103#define awk_full_usage \
    74     "Options:\n" \
    75     "\t-v var=val\tassign value 'val' to variable 'var'\n" \
    76     "\t-F sep\t\tuse 'sep' as field separator\n" \
    77     "\t-f progname\tread program source from file 'progname'"
     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"
    78108
    79109#define basename_trivial_usage \
    80     "FILE [SUFFIX]"
     110       "FILE [SUFFIX]"
    81111#define basename_full_usage \
    82     "Strips directory path and suffixes from FILE.\n" \
    83     "If specified, also removes any trailing SUFFIX."
     112       "Strip directory path and suffixes from FILE.\n" \
     113       "If specified, also remove any trailing SUFFIX."
    84114#define basename_example_usage \
    85     "$ basename /usr/local/bin/foo\n" \
    86     "foo\n" \
    87     "$ basename /usr/local/bin/\n" \
    88     "bin\n" \
    89     "$ basename /foo/bar.txt .txt\n" \
    90     "bar"
     115       "$ basename /usr/local/bin/foo\n" \
     116       "foo\n" \
     117       "$ basename /usr/local/bin/\n" \
     118       "bin\n" \
     119       "$ basename /foo/bar.txt .txt\n" \
     120       "bar"
    91121
    92122#define bunzip2_trivial_usage \
    93     "[OPTION]... [FILE]"
     123       "[OPTION]... [FILE]"
    94124#define bunzip2_full_usage \
    95     "Uncompress FILE (or standard input if FILE is '-' or omitted).\n\n" \
    96     "Options:\n" \
    97     "\t-c\tWrite output to standard output\n" \
    98     "\t-f\tForce"
     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"
    99129
    100130#define busybox_notes_usage \
    101     "Hello world!\n"
     131       "Hello world!\n"
    102132
    103133#define bzcat_trivial_usage \
    104     "FILE"
     134       "FILE"
    105135#define bzcat_full_usage \
    106     "Uncompress to stdout."
     136       "Uncompress to stdout"
    107137
    108138#define unlzma_trivial_usage \
    109     "[OPTION]... [FILE]"
     139       "[OPTION]... [FILE]"
    110140#define unlzma_full_usage \
    111     "Uncompress FILE (or standard input if FILE is '-' or omitted).\n\n" \
    112     "Options:\n" \
    113     "\t-c\tWrite output to standard output\n" \
    114     "\t-f\tForce"
     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"
    115145
    116146#define lzmacat_trivial_usage \
    117     "FILE"
     147       "FILE"
    118148#define lzmacat_full_usage \
    119     "Uncompress to stdout."
     149       "Uncompress to stdout"
    120150
    121151#define cal_trivial_usage \
    122     "[-jy] [[month] year]"
     152       "[-jy] [[month] year]"
    123153#define cal_full_usage \
    124     "Display a calendar.\n" \
    125     "\nOptions:\n" \
    126     "\t-j\tUse julian dates\n" \
    127     "\t-y\tDisplay the entire year"
     154       "Display a calendar" \
     155       "\n\nOptions:" \
     156       "\n  -j  Use julian dates" \
     157       "\n  -y  Display the entire year"
    128158
    129159#define cat_trivial_usage \
    130     "[-u] [FILE]..."
     160       "[-u] [FILE]..."
    131161#define cat_full_usage \
    132     "Concatenates FILE(s) and prints them to stdout.\n\n" \
    133     "Options:\n" \
    134     "\t-u\tignored since unbuffered i/o is always used"
     162       "Concatenate FILE(s) and print them to stdout" \
     163       "\n\nOptions:" \
     164       "\n  -u  Use unbuffered i/o (ignored)"
    135165#define cat_example_usage \
    136     "$ cat /proc/uptime\n" \
    137     "110716.72 17.67"
     166       "$ cat /proc/uptime\n" \
     167       "110716.72 17.67"
    138168
    139169#define catv_trivial_usage \
    140     "[-etv] [FILE]..."
     170       "[-etv] [FILE]..."
    141171#define catv_full_usage \
    142     "Display nonprinting characters as ^x or M-x.\n\n"\
    143     "\t-e\tEnd each line with $\n" \
    144     "\t-t\tShow tabs as ^I\n" \
    145     "\t-v\tDon't use ^x or M-x escapes."
     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"
    146177#define chattr_trivial_usage \
    147     "[-R] [-+=AacDdijsStTu] [-v version] files..."
     178       "[-R] [-+=AacDdijsStTu] [-v version] files..."
    148179#define chattr_full_usage \
    149     "change file attributes on an ext2 fs\n\n" \
    150     "Modifiers:\n" \
    151     "\t-\tremove attributes\n" \
    152     "\t+\tadd attributes\n" \
    153     "\t=\tset attributes\n" \
    154     "Attributes:\n" \
    155     "\tA\tdon't track atime\n" \
    156     "\ta\tappend mode only\n" \
    157     "\tc\tenable compress\n" \
    158     "\tD\twrite dir contents synchronously\n" \
    159     "\td\tdo not backup with dump\n" \
    160     "\ti\tcannot be modified (immutable)\n" \
    161     "\tj\twrite all data to journal first\n" \
    162     "\ts\tzero disk storage when deleted\n" \
    163     "\tS\twrite file contents synchronously\n" \
    164     "\tt\tdisable tail-merging of partial blocks with other files\n" \
    165     "\tu\tallow file to be undeleted\n" \
    166     "Options:\n" \
    167     "\t-R\trecursively list subdirectories\n" \
    168     "\t-v\tset the file's version/generation number"
     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"
     200
     201#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 \
     206       "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" \
     217
     218#define chmod_trivial_usage \
     219       "[-R"USE_DESKTOP("cvf")"] MODE[,MODE]... FILE..."
     220#define chmod_full_usage \
     221       "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" \
     229    )
     230#define chmod_example_usage \
     231       "$ ls -l /tmp/foo\n" \
     232       "-rw-rw-r--    1 root     root            0 Apr 12 18:25 /tmp/foo\n" \
     233       "$ chmod u+x /tmp/foo\n" \
     234       "$ ls -l /tmp/foo\n" \
     235       "-rwxrw-r--    1 root     root            0 Apr 12 18:25 /tmp/foo*\n" \
     236       "$ chmod 444 /tmp/foo\n" \
     237       "$ ls -l /tmp/foo\n" \
     238       "-r--r--r--    1 root     root            0 Apr 12 18:25 /tmp/foo\n"
    169239
    170240#define chgrp_trivial_usage \
    171     "[OPTION]... GROUP FILE..."
     241       "[-RhLHP"USE_DESKTOP("cvf")"]... GROUP FILE..."
    172242#define chgrp_full_usage \
    173     "Change the group membership of each FILE to GROUP.\n" \
    174     "\nOptions:\n" \
    175     "\t-R\tChanges files and directories recursively"
     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" \
     254    )
    176255#define chgrp_example_usage \
    177     "$ ls -l /tmp/foo\n" \
    178     "-r--r--r--    1 andersen andersen        0 Apr 12 18:25 /tmp/foo\n" \
    179     "$ chgrp root /tmp/foo\n" \
    180     "$ ls -l /tmp/foo\n" \
    181     "-r--r--r--    1 andersen root            0 Apr 12 18:25 /tmp/foo\n"
    182 
    183 #define chmod_trivial_usage \
    184     "[-R] MODE[,MODE]... FILE..."
    185 #define chmod_full_usage \
    186     "Each MODE is one or more of the letters ugoa, one of the\n" \
    187     "symbols +-= and one or more of the letters rwxst.\n\n" \
    188     "Options:\n" \
    189     "\t-R\tChanges files and directories recursively"
    190 #define chmod_example_usage \
    191     "$ ls -l /tmp/foo\n" \
    192     "-rw-rw-r--    1 root     root            0 Apr 12 18:25 /tmp/foo\n" \
    193     "$ chmod u+x /tmp/foo\n" \
    194     "$ ls -l /tmp/foo\n" \
    195     "-rwxrw-r--    1 root     root            0 Apr 12 18:25 /tmp/foo*\n" \
    196     "$ chmod 444 /tmp/foo\n" \
    197     "$ ls -l /tmp/foo\n" \
    198     "-r--r--r--    1 root     root            0 Apr 12 18:25 /tmp/foo\n"
     256       "$ ls -l /tmp/foo\n" \
     257       "-r--r--r--    1 andersen andersen        0 Apr 12 18:25 /tmp/foo\n" \
     258       "$ chgrp root /tmp/foo\n" \
     259       "$ ls -l /tmp/foo\n" \
     260       "-r--r--r--    1 andersen root            0 Apr 12 18:25 /tmp/foo\n"
    199261
    200262#define chown_trivial_usage \
    201     "[ -Rh ]... OWNER[<.|:>[GROUP]] FILE..."
     263       "[-RhLHP"USE_DESKTOP("cvf")"]... OWNER[<.|:>[GROUP]] FILE..."
    202264#define chown_full_usage \
    203     "Change the owner and/or group of each FILE to OWNER and/or GROUP.\n" \
    204     "\nOptions:\n" \
    205     "\t-R\tChanges files and directories recursively\n" \
    206     "\t-h\tDo not dereference symbolic links"
     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" \
     276    )
    207277#define chown_example_usage \
    208     "$ ls -l /tmp/foo\n" \
    209     "-r--r--r--    1 andersen andersen        0 Apr 12 18:25 /tmp/foo\n" \
    210     "$ chown root /tmp/foo\n" \
    211     "$ ls -l /tmp/foo\n" \
    212     "-r--r--r--    1 root     andersen        0 Apr 12 18:25 /tmp/foo\n" \
    213     "$ chown root.root /tmp/foo\n" \
    214     "ls -l /tmp/foo\n" \
    215     "-r--r--r--    1 root     root            0 Apr 12 18:25 /tmp/foo\n"
     278       "$ ls -l /tmp/foo\n" \
     279       "-r--r--r--    1 andersen andersen        0 Apr 12 18:25 /tmp/foo\n" \
     280       "$ chown root /tmp/foo\n" \
     281       "$ ls -l /tmp/foo\n" \
     282       "-r--r--r--    1 root     andersen        0 Apr 12 18:25 /tmp/foo\n" \
     283       "$ chown root.root /tmp/foo\n" \
     284       "ls -l /tmp/foo\n" \
     285       "-r--r--r--    1 root     root            0 Apr 12 18:25 /tmp/foo\n"
     286
     287#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"
     312#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"
     317#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"
     321#define envdir_trivial_usage \
     322       "dir prog args"
     323#define envdir_full_usage \
     324       "Set various environment variables as specified by files\n" \
     325       "in the directory dir, then run prog"
     326#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"
    216351
    217352#define chroot_trivial_usage \
    218     "NEWROOT [COMMAND...]"
     353       "NEWROOT [COMMAND...]"
    219354#define chroot_full_usage \
    220     "Run COMMAND with root directory set to NEWROOT."
     355       "Run COMMAND with root directory set to NEWROOT"
    221356#define chroot_example_usage \
    222     "$ ls -l /bin/ls\n" \
    223     "lrwxrwxrwx    1 root     root          12 Apr 13 00:46 /bin/ls -> /BusyBox\n" \
    224     "# mount /dev/hdc1 /mnt -t minix\n" \
    225     "# chroot /mnt\n" \
    226     "# ls -l /bin/ls\n" \
    227     "-rwxr-xr-x    1 root     root        40816 Feb  5 07:45 /bin/ls*\n"
     357       "$ ls -l /bin/ls\n" \
     358       "lrwxrwxrwx    1 root     root          12 Apr 13 00:46 /bin/ls -> /BusyBox\n" \
     359       "# mount /dev/hdc1 /mnt -t minix\n" \
     360       "# chroot /mnt\n" \
     361       "# ls -l /bin/ls\n" \
     362       "-rwxr-xr-x    1 root     root        40816 Feb  5 07:45 /bin/ls*\n"
    228363
    229364#define chvt_trivial_usage \
    230     "N"
     365       "N"
    231366#define chvt_full_usage \
    232     "Changes the foreground virtual terminal to /dev/ttyN"
     367       "Change the foreground virtual terminal to /dev/ttyN"
    233368
    234369#define cksum_trivial_usage \
    235     "FILES..."
     370       "FILES..."
    236371#define cksum_full_usage \
    237     "Calculates the CRC32 checksums of FILES."
     372       "Calculate the CRC32 checksums of FILES"
    238373
    239374#define clear_trivial_usage \
    240     ""
     375       ""
    241376#define clear_full_usage \
    242     "Clear screen."
     377       "Clear screen"
    243378
    244379#define cmp_trivial_usage \
    245     "[-l] [-s] FILE1 [FILE2]"
     380       "[-l] [-s] FILE1 [FILE2" USE_DESKTOP(" [SKIP1 [SKIP2]") "]]"
    246381#define cmp_full_usage \
    247     "Compares FILE1 vs stdin if FILE2 is not specified.\n\n" \
    248     "Options:\n" \
    249     "\t-l\tWrite the byte numbers (decimal) and values (octal)\n" \
    250     "\t\t  for all differing bytes\n" \
    251     "\t-s\tquiet mode - do not print"
     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"
    252387
    253388#define comm_trivial_usage \
    254     "[-123] FILE1 FILE2"
     389       "[-123] FILE1 FILE2"
    255390#define comm_full_usage \
    256     "Compares FILE1 to FILE2, or to stdin if = is specified.\n\n" \
    257     "Options:\n" \
    258     "\t-1\tSuppress lines unique to FILE1\n" \
    259     "\t-2\tSuppress lines unique to FILE2\n" \
    260     "\t-3\tSuppress lines common to both files"
     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"
    261396
    262397#define bbconfig_trivial_usage \
    263     ""
     398       ""
    264399#define bbconfig_full_usage \
    265     "Print the config file which built busybox"
     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)"
     407
     408#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"
     418
     419#define chrt_example_usage \
     420       "$ chrt -r 4 sleep 900; x=$!\n" \
     421       "$ chrt -f -p 3 $x\n" \
     422       "You need CAP_SYS_NICE privileges to set scheduling attributes of a process"
    266423
    267424#define cp_trivial_usage \
    268     "[OPTION]... SOURCE DEST"
     425       "[OPTION]... SOURCE DEST"
    269426#define cp_full_usage \
    270     "Copies SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n" \
    271     "\n" \
    272     "\t-a\tSame as -dpR\n" \
    273     "\t-d,-P\tPreserves links\n" \
    274     "\t-H,-L\tDereference all symlinks (implied by default)\n" \
    275     "\t-p\tPreserves file attributes if possible\n" \
    276     "\t-f\tforce (implied; ignored) - always set\n" \
    277     "\t-i\tinteractive, prompt before overwrite\n" \
    278     "\t-R,-r\tCopies directories recursively"
     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"
    279440
    280441#define cpio_trivial_usage \
    281     "-[dimtuv][F cpiofile]"
     442       "-[dimtuv][F cpiofile]"
    282443#define cpio_full_usage \
    283     "Extract or list files from a cpio archive\n" \
    284     "Main operation mode:\n" \
    285     "\td\t\tmake leading directories\n" \
    286     "\ti\t\textract\n" \
    287     "\tm\t\tpreserve mtime\n" \
    288     "\tt\t\tlist\n" \
    289     "\tv\t\tverbose\n" \
    290     "\tu\t\tunconditional overwrite\n" \
    291     "\tF\t\tinput from file"
     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"
    292453
    293454#define crond_trivial_usage \
    294     "-d[#] -c <crondir> -f -b"
     455       "-d[#] -c crondir -f -b"
    295456#define crond_full_usage \
    296     "\t-d [#] -l [#] -S -L logfile -f -b -c dir\n" \
    297     "\t-d num\tdebug level\n" \
    298     "\t-l num\tlog level (8 - default)\n" \
    299     "\t-S\tlog to syslogd (default)\n" \
    300     "\t-L file\tlog to file\n" \
    301     "\t-f\trun in foreground\n" \
    302     "\t-b\trun in background (default)\n" \
    303     "\t-c dir\tworking dir"
     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"
    304465
    305466#define crontab_trivial_usage \
    306     "[-c dir] {file|-}|[-u|-l|-e|-d user]"
     467       "[-c dir] {file|-}|[-u|-l|-e|-d user]"
    307468#define crontab_full_usage \
    308     "\tfile <opts>  replace crontab from file\n" \
    309     "\t-    <opts>  replace crontab from stdin\n" \
    310     "\t-u user      specify user\n" \
    311     "\t-l [user]    list crontab for user\n" \
    312     "\t-e [user]    edit crontab for user\n" \
    313     "\t-d [user]    delete crontab for user\n" \
    314     "\t-c dir       specify crontab directory"
    315 
     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"
     476
     477#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)"
    316484
    317485#define cut_trivial_usage \
    318     "[OPTION]... [FILE]..."
     486       "[OPTION]... [FILE]..."
    319487#define cut_full_usage \
    320     "Prints selected fields from each input FILE to standard output.\n\n" \
    321     "Options:\n" \
    322     "\t-b LIST\t\tOutput only bytes from LIST\n" \
    323     "\t-c LIST\t\tOutput only characters from LIST\n" \
    324     "\t-d CHAR\t\tUse CHAR instead of tab as the field delimiter\n" \
    325     "\t-s\t\tOutput only the lines containing delimiter\n" \
    326     "\t-f N\t\tPrint only these fields\n" \
    327     "\t-n\t\tIgnored"
     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"
    328496#define cut_example_usage \
    329     "$ echo \"Hello world\" | cut -f 1 -d ' '\n" \
    330     "Hello\n" \
    331     "$ echo \"Hello world\" | cut -f 2 -d ' '\n" \
    332     "world\n"
     497       "$ echo \"Hello world\" | cut -f 1 -d ' '\n" \
     498       "Hello\n" \
     499       "$ echo \"Hello world\" | cut -f 2 -d ' '\n" \
     500       "world\n"
    333501
    334502#define date_trivial_usage \
    335     "[OPTION]... [MMDDhhmm[[CC]YY][.ss]] [+FORMAT]"
     503       "[OPTION]... [MMDDhhmm[[CC]YY][.ss]] [+FORMAT]"
    336504#define date_full_usage \
    337     "Displays the current time in the given FORMAT, or sets the system date.\n" \
    338     "\nOptions:\n" \
    339     "\t-R\t\tOutputs RFC-822 compliant date string\n" \
    340     "\t-d STRING\tDisplays time described by STRING, not `now'\n" \
    341 USE_FEATURE_DATE_ISOFMT( \
    342     "\t-I[TIMESPEC]\tOutputs an ISO-8601 compliant date/time string\n" \
    343     "\t\t\tTIMESPEC=`date' (or missing) for date only,\n" \
    344     "\t\t\t`hours', `minutes', or `seconds' for date and,\n" \
    345     "\t\t\ttime to the indicated precision\n" \
    346     "\t-D hint\t\tUse 'hint' as date format, via strptime()\n" \
    347 ) \
    348     "\t-s\t\tSets time described by STRING\n" \
    349     "\t-r FILE\t\tDisplays the last modification time of FILE\n" \
    350     "\t-u\t\tPrints or sets Coordinated Universal Time"
     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"
    351519#define date_example_usage \
    352     "$ date\n" \
    353     "Wed Apr 12 18:52:41 MDT 2000\n"
     520       "$ date\n" \
     521       "Wed Apr 12 18:52:41 MDT 2000\n"
    354522
    355523#define dc_trivial_usage \
    356     "expression ..."
     524       "expression ..."
    357525#define dc_full_usage \
    358     "This is a Tiny RPN calculator that understands the\n" \
    359     "following operations: +, add, -, sub, *, mul, /, div, %, mod, " \
    360     "**, exp, and, or, not, eor.\n" \
    361     "For example: 'dc 2 2 add' -> 4, and 'dc 8 8 \\* 2 2 + /' -> 16.\n" \
    362     "\nOptions:\n" \
    363     "p - Prints the value on the top of the stack, without altering the stack\n" \
    364     "f - Prints the entire contents of the stack without altering anything\n" \
    365     "o - Pops the value off the top of the stack and uses it to set the output radix\n" \
    366     "    Only 10 and 16 are supported"
     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"
    367535#define dc_example_usage \
    368     "$ dc 2 2 + p\n" \
    369     "4\n" \
    370     "$ dc 8 8 \\* 2 2 + / p\n" \
    371     "16\n" \
    372     "$ dc 0 1 and p\n" \
    373     "0\n" \
    374     "$ dc 0 1 or p\n" \
    375     "1\n" \
    376     "$ echo 72 9 div 8 mul p | dc\n" \
    377     "64\n"
     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"
    378546
    379547#define dd_trivial_usage \
    380     "[if=FILE] [of=FILE] " USE_FEATURE_DD_IBS_OBS("[ibs=N] [obs=N] ") "[bs=N] [count=N] [skip=N]\n" \
    381     "\t  [seek=N]" USE_FEATURE_DD_IBS_OBS(" [conv=notrunc|noerror|sync]")
     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]")
    382550#define dd_full_usage \
    383     "Copy a file, converting and formatting according to options\n\n" \
    384     "\tif=FILE\t\tread from FILE instead of stdin\n" \
    385     "\tof=FILE\t\twrite to FILE instead of stdout\n" \
    386     "\tbs=N\t\tread and write N bytes at a time\n" \
    387     USE_FEATURE_DD_IBS_OBS("\tibs=N\t\tread N bytes at a time\n") \
    388     USE_FEATURE_DD_IBS_OBS("\tobs=N\t\twrite N bytes at a time\n") \
    389     "\tcount=N\t\tcopy only N input blocks\n" \
    390     "\tskip=N\t\tskip N input blocks\n" \
    391     "\tseek=N\t\tskip N output blocks\n" \
     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" \
    392556    USE_FEATURE_DD_IBS_OBS( \
    393         "\tconv=notrunc\tdon't truncate output file\n" \
    394         "\tconv=noerror\tcontinue after read errors\n" \
    395         "\tconv=sync\tpad blocks with zeros\n" \
    396     ) \
    397     "\n" \
    398     "Numbers may be suffixed by c (x1), w (x2), b (x512), kD (x1000), k (x1024),\n" \
    399     "MD (x1000000), M (x1048576), GD (x1000000000) or G (x1073741824)"
     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)"
    400570#define dd_example_usage \
    401     "$ dd if=/dev/zero of=/dev/ram1 bs=1M count=4\n" \
    402     "4+0 records in\n" \
    403     "4+0 records out\n"
     571       "$ dd if=/dev/zero of=/dev/ram1 bs=1M count=4\n" \
     572       "4+0 records in\n" \
     573       "4+0 records out\n"
    404574
    405575#define deallocvt_trivial_usage \
    406     "[N]"
     576       "[N]"
    407577#define deallocvt_full_usage \
    408     "Deallocate unused virtual terminal /dev/ttyN"
     578      "Deallocate unused virtual terminal /dev/ttyN"
    409579
    410580#define delgroup_trivial_usage \
    411     "GROUP"
     581    USE_FEATURE_DEL_USER_FROM_GROUP("[USER] ")"GROUP"
    412582#define delgroup_full_usage \
    413      "Deletes group GROUP from the system"
     583       "Delete group GROUP from the system" \
     584    USE_FEATURE_DEL_USER_FROM_GROUP(" or user USER from group GROUP")
    414585
    415586#define deluser_trivial_usage \
    416     "USER"
     587       "USER"
    417588#define deluser_full_usage \
    418      "Deletes user USER from the system"
     589       "Delete user USER from the system"
    419590
    420591#define devfsd_trivial_usage \
    421     "mntpnt [-v]" \
     592       "mntpnt [-v]" \
    422593    USE_DEVFSD_FG_NP("[-fg][-np]" )
    423594#define devfsd_full_usage \
    424     "Optional daemon for managing devfs permissions and old device name symlinks.\n" \
    425     "\nOptions:\n" \
    426     "\tmntpnt\tThe mount point where devfs is mounted.\n\n" \
    427     "\t-v\tPrint the protocol version numbers for devfsd\n" \
    428     "\t\tand the kernel-side protocol version and exits." \
    429     USE_DEVFSD_FG_NP( "\n\n\t-fg\tRun the daemon in the foreground.\n\n" \
    430     "\t-np\tExit  after  parsing  the configuration file\n" \
    431     "\t\tand processing synthetic REGISTER events.\n" \
    432     "\t\tDo not poll for events.")
     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")
    433605
    434606#define df_trivial_usage \
    435     "[-" USE_FEATURE_HUMAN_READABLE("hm") "k] [FILESYSTEM ...]"
     607       "[-" USE_FEATURE_HUMAN_READABLE("hm") "k] [FILESYSTEM ...]"
    436608#define df_full_usage \
    437     "Print the filesystem space used and space available.\n\n" \
    438     "Options:\n" \
     609       "Print the filesystem space used and space available" \
    439610    USE_FEATURE_HUMAN_READABLE( \
    440         "\n\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n" \
    441         "\t-m\tprint sizes in megabytes\n" \
    442         "\t-k\tprint sizes in kilobytes(default)" \
    443     ) \
    444     SKIP_FEATURE_HUMAN_READABLE("\n\t-k\tignored")
     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")
    445618#define df_example_usage \
    446     "$ df\n" \
    447     "Filesystem           1k-blocks      Used Available Use% Mounted on\n" \
    448     "/dev/sda3              8690864   8553540    137324  98% /\n" \
    449     "/dev/sda1                64216     36364     27852  57% /boot\n" \
    450     "$ df /dev/sda3\n" \
    451     "Filesystem           1k-blocks      Used Available Use% Mounted on\n" \
    452     "/dev/sda3              8690864   8553540    137324  98% /\n"
     619       "$ df\n" \
     620       "Filesystem           1k-blocks      Used Available Use% Mounted on\n" \
     621       "/dev/sda3              8690864   8553540    137324  98% /\n" \
     622       "/dev/sda1                64216     36364     27852  57% /boot\n" \
     623       "$ df /dev/sda3\n" \
     624       "Filesystem           1k-blocks      Used Available Use% Mounted on\n" \
     625       "/dev/sda3              8690864   8553540    137324  98% /\n"
     626
     627#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"
    453636
    454637#define diff_trivial_usage \
    455     "[-abdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2"
     638       "[-abdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2"
    456639#define diff_full_usage \
    457     "Compare files line by line and output the differences between them.\n" \
    458     "This diff implementation only supports unified diffs.\n\n" \
    459     "Options:\n" \
    460     "\t-a\tTreat all files as text\n" \
    461     "\t-b\tIgnore changes in the amount of whitespace\n" \
    462     "\t-d\tTry hard to find a smaller set of changes\n" \
    463     "\t-i\tIgnore case differences\n" \
    464     "\t-L\tUse LABEL instead of the filename in the unified header\n" \
    465     "\t-N\tTreat absent files as empty\n" \
    466     "\t-q\tOutput only whether files differ\n" \
    467     "\t-r\tRecursively compare any subdirectories\n" \
    468     "\t-S\tStart with FILE when comparing directories\n" \
    469     "\t-T\tMake tabs line up by prefixing a tab when necessary\n" \
    470     "\t-s\tReport when two files are the same\n" \
    471     "\t-t\tExpand tabs to spaces in output\n" \
    472     "\t-U\tOutput LINES lines of context\n" \
    473     "\t-w\tIgnore all whitespace\n"
     640       "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"
    474657
    475658#define dirname_trivial_usage \
    476     "FILENAME"
     659       "FILENAME"
    477660#define dirname_full_usage \
    478     "Strips non-directory suffix from FILENAME"
     661       "Strip non-directory suffix from FILENAME"
    479662#define dirname_example_usage \
    480     "$ dirname /tmp/foo\n" \
    481     "/tmp\n" \
    482     "$ dirname /tmp/foo/\n" \
    483     "/tmp\n"
     663       "$ dirname /tmp/foo\n" \
     664       "/tmp\n" \
     665       "$ dirname /tmp/foo/\n" \
     666       "/tmp\n"
    484667
    485668#define dmesg_trivial_usage \
    486     "[-c] [-n LEVEL] [-s SIZE]"
     669       "[-c] [-n LEVEL] [-s SIZE]"
    487670#define dmesg_full_usage \
    488     "Prints or controls the kernel ring buffer\n\n" \
    489     "Options:\n" \
    490     "\t-c\t\tClears the ring buffer's contents after printing\n" \
    491     "\t-n LEVEL\tSets console logging level\n" \
    492     "\t-s SIZE\t\tUse a buffer of size SIZE"
     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"
    493676
    494677#define dnsd_trivial_usage \
    495         "[-c config] [-t seconds] [-p port] [-i iface-ip] [-d]"
     678       "[-c config] [-t seconds] [-p port] [-i iface-ip] [-d]"
    496679#define dnsd_full_usage \
    497         "Small and static DNS server daemon\n\n" \
    498     "Options:\n" \
    499     "\t-c\t\tconfig filename\n" \
    500     "\t-t\t\tTTL in seconds\n" \
    501     "\t-p\t\tlistening port\n" \
    502     "\t-i\t\tlistening iface ip (default all)\n" \
    503     "\t-d\t\tdaemonize"
     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"
    504687
    505688#define dos2unix_trivial_usage \
    506     "[option] [FILE]"
     689       "[option] [FILE]"
    507690#define dos2unix_full_usage \
    508     "Converts FILE from dos format to unix format. When no option\n" \
    509     "is given, the input is converted to the opposite output format.\n" \
    510     "When no file is given, uses stdin for input and stdout for output.\n\n" \
    511     "Options:\n" \
    512     "\t-u\toutput will be in UNIX format\n" \
    513     "\t-d\toutput will be in DOS format"
     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"
    514697
    515698#define dpkg_trivial_usage \
    516     "[-ilCPru] [-F option] package_name"
     699       "[-ilCPru] [-F option] package_name"
    517700#define dpkg_full_usage \
    518     "dpkg is a utility to install, remove and manage Debian packages.\n\n" \
    519     "Options:\n" \
    520     "\t-i\t\tInstall the package\n" \
    521     "\t-l\t\tList of installed packages\n" \
    522     "\t-C\t\tConfigure an unpackaged package\n" \
    523     "\t-F depends\tIgnore dependency problems\n" \
    524     "\t-P\t\tPurge all files of a package\n" \
    525     "\t-r\t\tRemove all but the configuration files for a package\n" \
    526     "\t-u\t\tUnpack a package, but don't configure it"
     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"
    527710
    528711#define dpkg_deb_trivial_usage \
    529     "[-cefxX] FILE [argument]"
     712       "[-cefxX] FILE [argument]"
    530713#define dpkg_deb_full_usage \
    531     "Perform actions on Debian packages (.debs)\n\n" \
    532     "Options:\n" \
    533     "\t-c\tList contents of filesystem tree\n" \
    534     "\t-e\tExtract control files to [argument] directory\n" \
    535     "\t-f\tDisplay control field name starting with [argument]\n" \
    536     "\t-x\tExtract packages filesystem tree to directory\n" \
    537     "\t-X\tVerbose extract"
     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"
    538721#define dpkg_deb_example_usage \
    539     "$ dpkg-deb -X ./busybox_0.48-1_i386.deb /tmp\n"
     722       "$ dpkg-deb -X ./busybox_0.48-1_i386.deb /tmp\n"
    540723
    541724#define du_trivial_usage \
    542     "[-aHLdclsx" USE_FEATURE_HUMAN_READABLE("hm") "k] [FILE]..."
     725       "[-aHLdclsx" USE_FEATURE_HUMAN_READABLE("hm") "k] [FILE]..."
    543726#define du_full_usage \
    544     "Summarizes disk space used for each FILE and/or directory.\n" \
    545     "Disk space is printed in units of " \
     727       "Summarize disk space used for each FILE and/or directory.\n" \
     728       "Disk space is printed in units of " \
    546729    USE_FEATURE_DU_DEFAULT_BLOCKSIZE_1K("1024") \
    547730    SKIP_FEATURE_DU_DEFAULT_BLOCKSIZE_1K("512") \
    548     " bytes.\n\n" \
    549     "Options:\n" \
    550     "\t-a\tshow sizes of files in addition to directories\n" \
    551     "\t-H\tfollow symbolic links that are FILE command line args\n" \
    552     "\t-L\tfollow all symbolic links encountered\n" \
    553     "\t-d N\tlimit output to directories (and files with -a) of depth < N\n" \
    554     "\t-c\toutput a grand total\n" \
    555     "\t-l\tcount sizes many times if hard linked\n" \
    556     "\t-s\tdisplay only a total for each argument\n" \
    557     "\t-x\tskip directories on different filesystems\n" \
     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" \
    558741    USE_FEATURE_HUMAN_READABLE( \
    559         "\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n" \
    560         "\t-m\tprint sizes in megabytes\n" \
     742       "    -h  Print sizes in human readable format (e.g., 1K 243M 2G )\n" \
     743       "    -m  Print sizes in megabytes\n" \
    561744    ) \
    562     "\t-k\tprint sizes in kilobytes" \
     745       "    -k  Print sizes in kilobytes" \
    563746    USE_FEATURE_DU_DEFAULT_BLOCKSIZE_1K("(default)")
    564747#define du_example_usage \
    565     "$ du\n" \
    566     "16      ./CVS\n" \
    567     "12      ./kernel-patches/CVS\n" \
    568     "80      ./kernel-patches\n" \
    569     "12      ./tests/CVS\n" \
    570     "36      ./tests\n" \
    571     "12      ./scripts/CVS\n" \
    572     "16      ./scripts\n" \
    573     "12      ./docs/CVS\n" \
    574     "104     ./docs\n" \
    575     "2417    .\n"
     748       "$ du\n" \
     749       "16      ./CVS\n" \
     750       "12      ./kernel-patches/CVS\n" \
     751       "80      ./kernel-patches\n" \
     752       "12      ./tests/CVS\n" \
     753       "36      ./tests\n" \
     754       "12      ./scripts/CVS\n" \
     755       "16      ./scripts\n" \
     756       "12      ./docs/CVS\n" \
     757       "104     ./docs\n" \
     758       "2417    .\n"
    576759
    577760#define dumpkmap_trivial_usage \
    578     "> keymap"
     761       "> keymap"
    579762#define dumpkmap_full_usage \
    580     "Prints out a binary keyboard translation table to standard output."
     763       "Print out a binary keyboard translation table to standard output"
    581764#define dumpkmap_example_usage \
    582     "$ dumpkmap > keymap\n"
     765       "$ dumpkmap > keymap\n"
    583766
    584767#define dumpleases_trivial_usage \
    585     "[-r|-a] [-f LEASEFILE]"
     768       "[-r|-a] [-f LEASEFILE]"
    586769#define dumpleases_full_usage \
    587     "Displays the DHCP leases granted by udhcpd.\n\n" \
    588     "Options:\n" \
    589     "\t-f,\t--file=FILENAME\tLeases file to load\n" \
    590     "\t-r,\t--remaining\tInterpret lease times as time remaining\n" \
    591     "\t-a,\t--absolute\tInterpret lease times as expire time"
     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"
    592775
    593776#define e2fsck_trivial_usage \
    594     "[-panyrcdfvstDFSV] [-b superblock] [-B blocksize] " \
    595     "[-I inode_buffer_blocks] [-P process_inode_size] " \
    596     "[-l|-L bad_blocks_file] [-C fd] [-j external_journal] " \
    597     "[-E extended-options] device"
     777       "[-panyrcdfvstDFSV] [-b superblock] [-B blocksize] " \
     778       "[-I inode_buffer_blocks] [-P process_inode_size] " \
     779       "[-l|-L bad_blocks_file] [-C fd] [-j external_journal] " \
     780       "[-E extended-options] device"
    598781#define e2fsck_full_usage \
    599     "Check a Linux ext2/ext3 file system.\n\n" \
    600     "Options:\n" \
    601     "\t-p\tAutomatic repair (no questions)\n" \
    602     "\t-n\tMake no changes to the filesystem\n" \
    603     "\t-y\tAssume 'yes' to all questions\n" \
    604     "\t-c\tCheck for bad blocks and add them to the badblock list\n" \
    605     "\t-f\tForce checking even if filesystem is marked clean\n" \
    606     "\t-v\tBe verbose\n" \
    607     "\t-b superblock\tUse alternative superblock\n" \
    608     "\t-B blocksize\tForce blocksize when looking for superblock\n" \
    609     "\t-j journal\tSet location of the external journal\n" \
    610     "\t-l file\tAdd to badblocks list\n" \
    611     "\t-L file\tSet badblocks list"
     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"
    612795
    613796#define echo_trivial_usage \
    614797    USE_FEATURE_FANCY_ECHO("[-neE] ") "[ARG ...]"
    615798#define echo_full_usage \
    616     "Prints the specified ARGs to stdout\n\n" \
     799       "Print the specified ARGs to stdout" \
    617800    USE_FEATURE_FANCY_ECHO( \
    618         "Options:\n" \
    619         "\t-n\tsuppress trailing newline\n" \
    620         "\t-e\tinterpret backslash-escaped characters (i.e., \\t=tab)\n" \
    621         "\t-E\tdisable interpretation of backslash-escaped characters" \
     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" \
    622805    )
    623806#define echo_example_usage \
    624     "$ echo \"Erik is cool\"\n" \
    625     "Erik is cool\n" \
    626     USE_FEATURE_FANCY_ECHO("$  echo -e \"Erik\\nis\\ncool\"\n" \
    627     "Erik\n" \
    628     "is\n" \
    629     "cool\n" \
    630     "$ echo \"Erik\\nis\\ncool\"\n" \
    631     "Erik\\nis\\ncool\n")
     807       "$ echo \"Erik is cool\"\n" \
     808       "Erik is cool\n" \
     809    USE_FEATURE_FANCY_ECHO("$ echo -e \"Erik\\nis\\ncool\"\n" \
     810       "Erik\n" \
     811       "is\n" \
     812       "cool\n" \
     813       "$ echo \"Erik\\nis\\ncool\"\n" \
     814       "Erik\\nis\\ncool\n")
    632815
    633816#define eject_trivial_usage \
    634     "[-t] [DEVICE]"
     817       "[-t] [-T] [DEVICE]"
    635818#define eject_full_usage \
    636     "Eject specified DEVICE (or default /dev/cdrom).\n\n" \
    637     "Options:\n" \
    638     "\t-t\tclose tray"
     819       "Eject specified DEVICE (or default /dev/cdrom)" \
     820       "\n\nOptions:\n" \
     821       "    -t  Close tray\n" \
     822       "    -T  Open/close tray (toggle)"
    639823
    640824#define ed_trivial_usage ""
     
    642826
    643827#define env_trivial_usage \
    644     "[-iu] [-] [name=value]... [command]"
     828       "[-iu] [-] [name=value]... [command]"
    645829#define env_full_usage \
    646     "Prints the current environment or runs a program after setting\n" \
    647     "up the specified environment.\n\n" \
    648     "Options:\n" \
    649     "\t-, -i\tstart with an empty environment\n" \
    650     "\t-u\tremove variable from the environment"
     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"
    651835
    652836#define ether_wake_trivial_usage \
    653     "[-b] [-i iface] [-p aa:bb:cc:dd[:ee:ff]] MAC"
     837       "[-b] [-i iface] [-p aa:bb:cc:dd[:ee:ff]] MAC"
    654838#define ether_wake_full_usage \
    655     "Send a magic packet to wake up sleeping machines.\n" \
    656     "MAC must be a station address (00:11:22:33:44:55) or\n" \
    657     "    a hostname with a known 'ethers' entry.\n\n" \
    658     "Options:\n" \
    659     "\t-b\t\tSend wake-up packet to the broadcast address\n" \
    660     "\t-i iface\tUse interface ifname instead of the default \"eth0\"\n" \
    661     "\t-p pass\tAppend the four or six byte password PW to the packet"
     839       "Send a magic packet to wake up sleeping machines.\n" \
     840       "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"
     846
     847#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"
    662856
    663857#define expr_trivial_usage \
    664     "EXPRESSION"
     858       "EXPRESSION"
    665859#define expr_full_usage \
    666     "Prints the value of EXPRESSION to standard output.\n\n" \
    667     "EXPRESSION may be:\n" \
    668     "\tARG1 |  ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n" \
    669     "\tARG1 &  ARG2 ARG1 if neither argument is null or 0, otherwise 0\n" \
    670     "\tARG1 <  ARG2 ARG1 is less than ARG2\n" \
    671     "\tARG1 <= ARG2 ARG1 is less than or equal to ARG2\n" \
    672     "\tARG1 =  ARG2 ARG1 is equal to ARG2\n" \
    673     "\tARG1 != ARG2 ARG1 is unequal to ARG2\n" \
    674     "\tARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n" \
    675     "\tARG1 >  ARG2 ARG1 is greater than ARG2\n" \
    676     "\tARG1 +  ARG2 arithmetic sum of ARG1 and ARG2\n" \
    677     "\tARG1 -  ARG2 arithmetic difference of ARG1 and ARG2\n" \
    678     "\tARG1 *  ARG2 arithmetic product of ARG1 and ARG2\n" \
    679     "\tARG1 /  ARG2 arithmetic quotient of ARG1 divided by ARG2\n" \
    680     "\tARG1 %  ARG2 arithmetic remainder of ARG1 divided by ARG2\n" \
    681     "\tSTRING : REGEXP             anchored pattern match of REGEXP in STRING\n" \
    682     "\tmatch STRING REGEXP         same as STRING : REGEXP\n" \
    683     "\tsubstr STRING POS LENGTH    substring of STRING, POS counted from 1\n" \
    684     "\tindex STRING CHARS          index in STRING where any CHARS is found,\n" \
    685     "\t                            or 0\n" \
    686     "\tlength STRING               length of STRING\n" \
    687     "\tquote TOKEN                 interpret TOKEN as a string, even if\n" \
    688     "\t                            it is a keyword like `match' or an\n" \
    689     "\t                            operator like `/'\n" \
    690     "\t( EXPRESSION )              value of EXPRESSION\n\n" \
    691     "Beware that many operators need to be escaped or quoted for shells.\n" \
    692     "Comparisons are arithmetic if both ARGs are numbers, else\n" \
    693     "lexicographical.  Pattern matches return the string matched between \n" \
    694     "\\( and \\) or null; if \\( and \\) are not used, they return the number \n" \
    695     "of characters matched or 0."
     860       "Print the value of EXPRESSION to standard output.\n\n" \
     861       "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" \
     875       "    STRING : REGEXP     Anchored pattern match of REGEXP in STRING\n" \
     876       "    match STRING REGEXP Same as STRING : REGEXP\n" \
     877       "    substr STRING POS LENGTH Substring of STRING, POS counted from 1\n" \
     878       "    index STRING CHARS  Index in STRING where any CHARS is found, or 0\n" \
     879       "    length STRING       Length of STRING\n" \
     880       "    quote TOKEN     Interpret TOKEN as a string, even if\n" \
     881       "                it is a keyword like 'match' or an\n" \
     882       "                operator like '/'\n" \
     883       "    (EXPRESSION)        Value of EXPRESSION\n\n" \
     884       "Beware that many operators need to be escaped or quoted for shells.\n" \
     885       "Comparisons are arithmetic if both ARGs are numbers, else\n" \
     886       "lexicographical. Pattern matches return the string matched between\n" \
     887       "\\( and \\) or null; if \\( and \\) are not used, they return the number\n" \
     888       "of characters matched or 0."
    696889
    697890#define fakeidentd_trivial_usage \
    698     "[-b ip] [STRING]"
     891       "[-fiw] [-b ADDR] [STRING]"
    699892#define fakeidentd_full_usage \
    700     "Returns a set string to auth requests\n\n" \
    701     "\t-b\tBind to ip address\n" \
    702     "\tSTRING\tThe ident answer string (default is nobody)"
     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')"
    703900
    704901#define false_trivial_usage \
    705     ""
     902       ""
    706903#define false_full_usage \
    707     "Return an exit code of FALSE (1)."
     904       "Return an exit code of FALSE (1)"
    708905#define false_example_usage \
    709     "$ false\n" \
    710     "$ echo $?\n" \
    711     "1\n"
     906       "$ false\n" \
     907       "$ echo $?\n" \
     908       "1\n"
    712909
    713910#define fbset_trivial_usage \
    714     "[options] [mode]"
     911       "[options] [mode]"
    715912#define fbset_full_usage \
    716     "Show and modify frame buffer settings"
     913       "Show and modify frame buffer settings"
    717914#define fbset_example_usage \
    718     "$ fbset\n" \
    719     "mode \"1024x768-76\"\n" \
    720     "\t# D: 78.653 MHz, H: 59.949 kHz, V: 75.694 Hz\n" \
    721     "\tgeometry 1024 768 1024 768 16\n" \
    722     "\ttimings 12714 128 32 16 4 128 4\n" \
    723     "\taccel false\n" \
    724     "\trgba 5/11,6/5,5/0,0/0\n" \
    725     "endmode\n"
     915       "$ fbset\n" \
     916       "mode \"1024x768-76\"\n" \
     917       "    # D: 78.653 MHz, H: 59.949 kHz, V: 75.694 Hz\n" \
     918       "    geometry 1024 768 1024 768 16\n" \
     919       "    timings 12714 128 32 16 4 128 4\n" \
     920       "    accel false\n" \
     921       "    rgba 5/11,6/5,5/0,0/0\n" \
     922       "endmode\n"
    726923
    727924#define fdflush_trivial_usage \
    728     "DEVICE"
     925       "DEVICE"
    729926#define fdflush_full_usage \
    730     "Forces floppy disk drive to detect disk change"
     927       "Force floppy disk drive to detect disk change"
    731928
    732929#define fdformat_trivial_usage \
    733     "[-n] DEVICE"
     930       "[-n] DEVICE"
    734931#define fdformat_full_usage \
    735     "Low-level formats a floppy disk\n\n" \
    736     "Options:\n" \
    737     "\t-n\tDon't verify after format"
     932       "Format floppy disk" \
     933       "\n\nOptions:\n" \
     934       "    -n  Don't verify after format"
    738935
    739936#define fdisk_trivial_usage \
    740     "[-luv] [-C CYLINDERS] [-H HEADS] [-S SECTORS] [-b SSZ] DISK"
     937       "[-luv] [-C CYLINDERS] [-H HEADS] [-S SECTORS] [-b SSZ] DISK"
    741938#define fdisk_full_usage \
    742     "Change partition table\n" \
    743     "Options:\n" \
    744     "\t-l  List partition table(s)\n" \
    745     "\t-u  Give Start and End in sector (instead of cylinder) units\n" \
    746     "\t-s PARTITION  Give partition size(s) in blocks\n" \
    747     "\t-b 2048: (for certain MO disks) use 2048-byte sectors\n" \
    748     "\t-C CYLINDERS  Set the number of cylinders\n" \
    749     "\t-H HEADS  Set the number of heads\n" \
    750     "\t-S SECTORS  Set the number of sectors\n" \
    751     "\t-v  Give fdisk version"
     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"
    752949
    753950#define find_trivial_usage \
    754     "[PATH...] [EXPRESSION]"
     951       "[PATH...] [EXPRESSION]"
    755952#define find_full_usage \
    756     "Search for files in a directory hierarchy.  The default PATH is\n" \
    757     "the current directory; default EXPRESSION is '-print'\n" \
    758     "\nEXPRESSION may consist of:\n" \
    759     "\t-follow\t\tDereference symbolic links\n" \
    760     "\t-name PATTERN\tFile name (leading directories removed) matches PATTERN\n" \
    761     "\t-print\t\tPrint (default and assumed)\n" \
     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)" \
    762992    USE_FEATURE_FIND_PRINT0( \
    763     "\t-print0\t\tDelimit output with null characters rather than\n\t\t\tnewlines" \
    764 ) USE_FEATURE_FIND_TYPE( \
    765     "\n\t-type X\t\tFiletype matches X (where X is one of: f,d,l,b,c,...)" \
    766 ) USE_FEATURE_FIND_PERM( \
    767     "\n\t-perm PERMS\tPermissions match any of (+NNN); all of (-NNN);\n\t\t\tor exactly (NNN)" \
    768 ) USE_FEATURE_FIND_MTIME( \
    769     "\n\t-mtime DAYS\tModified time is greater than (+N); less than (-N);\n\t\t\tor exactly (N) days" \
    770 ) USE_FEATURE_FIND_MMIN( \
    771     "\n\t-mmin MINS\tModified time is greater than (+N); less than (-N);\n\t\t\tor exactly (N) minutes" \
    772 ) USE_FEATURE_FIND_NEWER( \
    773     "\n\t-newer FILE\tModified time is more recent than FILE's" \
    774 ) USE_FEATURE_FIND_INUM( \
    775     "\n\t-inum N\t\tFile has inode number N" \
    776 ) USE_FEATURE_FIND_EXEC( \
    777     "\n\t-exec CMD\tExecute CMD with all instances of {} replaced by the" \
    778     "\n\t\t\tfiles matching EXPRESSION")
     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") \
    7791006
    7801007#define find_example_usage \
    781     "$ find / -name passwd\n" \
    782     "/etc/passwd\n"
     1008       "$ find / -name passwd\n" \
     1009       "/etc/passwd\n"
    7831010
    7841011#define fold_trivial_usage \
    785     "[-bs] [-w WIDTH] [FILE]"
     1012       "[-bs] [-w WIDTH] [FILE]"
    7861013#define fold_full_usage \
    787     "Wrap input lines in each FILE (standard input by default), writing to\n" \
    788     "standard output.\n\n" \
    789     "Options:\n" \
    790     "\t-b\tcount bytes rather than columns\n" \
    791     "\t-s\tbreak at spaces\n" \
    792     "\t-w\tuse WIDTH columns instead of 80"
     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"
    7931020
    7941021#define free_trivial_usage \
    795     ""
     1022       ""
    7961023#define free_full_usage \
    797     "Displays the amount of free and used system memory"
     1024       "Display the amount of free and used system memory"
    7981025#define free_example_usage \
    799     "$ free\n" \
    800     "              total         used         free       shared      buffers\n" \
    801     "  Mem:       257628       248724         8904        59644        93124\n" \
    802     " Swap:       128516         8404       120112\n" \
    803     "Total:       386144       257128       129016\n" \
     1026       "$ free\n" \
     1027       "              total         used         free       shared      buffers\n" \
     1028       "  Mem:       257628       248724         8904        59644        93124\n" \
     1029       " Swap:       128516         8404       120112\n" \
     1030       "Total:       386144       257128       129016\n" \
    8041031
    8051032#define freeramdisk_trivial_usage \
    806     "DEVICE"
     1033       "DEVICE"
    8071034#define freeramdisk_full_usage \
    808     "Frees all memory used by the specified ramdisk."
     1035       "Free all memory used by the specified ramdisk"
    8091036#define freeramdisk_example_usage \
    810     "$ freeramdisk /dev/ram2\n"
     1037       "$ freeramdisk /dev/ram2\n"
    8111038
    8121039#define fsck_trivial_usage \
    813     "[-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]"
     1040       "[-ANPRTV] [-C fd] [-t fstype] [fs-options] [filesys ...]"
    8141041#define fsck_full_usage \
    815     "Check and repair filesystems.\n\n" \
    816     "Options:\n" \
    817     "\t-A\tWalk /etc/fstab and check all filesystems\n" \
    818     "\t-N\tDon't execute, just show what would be done\n" \
    819     "\t-P\tWhen using -A, check filesystems in parallel\n" \
    820     "\t-R\tWhen using -A, skip the root filesystem\n" \
    821     "\t-T\tDon't show title on startup\n" \
    822     "\t-V\tVerbose mode\n" \
    823     "\t-C\tWrite status information to specified filedescriptor\n" \
    824     "\t-t\tList of filesystem types to check"
     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"
    8251052
    8261053#define fsck_minix_trivial_usage \
    827     "[-larvsmf] /dev/name"
     1054       "[-larvsmf] /dev/name"
    8281055#define fsck_minix_full_usage \
    829     "Performs a consistency check for MINIX filesystems.\n\n" \
    830     "Options:\n" \
    831     "\t-l\tLists all filenames\n" \
    832     "\t-r\tPerform interactive repairs\n" \
    833     "\t-a\tPerform automatic repairs\n" \
    834     "\t-v\tverbose\n" \
    835     "\t-s\tOutputs super-block information\n" \
    836     "\t-m\tActivates MINIX-like \"mode not cleared\" warnings\n" \
    837     "\t-f\tForce file system check"
     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"
    8381065
    8391066#define ftpget_trivial_usage \
    840     "[options] remote-host local-file remote-file"
     1067       "[options] remote-host local-file remote-file"
    8411068#define ftpget_full_usage \
    842     "Retrieve a remote file via FTP.\n\n" \
    843     "Options:\n" \
    844     "\t-c, --continue         Continue a previous transfer\n" \
    845     "\t-v, --verbose          Verbose\n" \
    846     "\t-u, --username         Username to be used\n" \
    847     "\t-p, --password         Password to be used\n" \
    848     "\t-P, --port             Port number to be used"
     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"
    8491076
    8501077#define ftpput_trivial_usage \
    851     "[options] remote-host remote-file local-file"
     1078       "[options] remote-host remote-file local-file"
    8521079#define ftpput_full_usage \
    853     "Store a local file on a remote machine via FTP.\n\n" \
    854     "Options:\n" \
    855     "\t-v, --verbose          Verbose\n" \
    856     "\t-u, --username         Username to be used\n" \
    857     "\t-p, --password         Password to be used\n" \
    858     "\t-P, --port             Port number to be used"
     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"
    8591086
    8601087#define fuser_trivial_usage \
    861     "[options] file OR port/proto"
     1088       "[options] file OR port/proto"
    8621089#define fuser_full_usage \
    863     "Options:\n" \
    864     "\t-m         Show all processes on the same mounted fs\n" \
    865     "\t-k         Kill all processes that match.\n" \
    866     "\t-s         Don't print or kill anything.\n" \
    867     "\t-4         When using port/proto only search IPv4 space\n" \
    868     "\t-6         When using port/proto only search IPv6 space\n" \
    869     "\t-SIGNAL    When used with -k, this signal will be used to kill"
     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
    8701100
    8711101#define getopt_trivial_usage \
    872     "[OPTIONS]..."
     1102       "[OPTIONS]..."
    8731103#define getopt_full_usage \
    874     "Parse command options\n" \
    875     "\t-a, --alternative        Allow long options starting with single -\n" \
    876     "\t-l, --longoptions=longopts   Long options to be recognized\n" \
    877     "\t-n, --name=progname      The name under which errors are reported\n" \
    878     "\t-o, --options=optstring  Short options to be recognized\n" \
    879     "\t-q, --quiet          Disable error reporting by getopt(3)\n" \
    880     "\t-Q, --quiet-output       No normal output\n" \
    881     "\t-s, --shell=shell        Set shell quoting conventions\n" \
    882     "\t-T, --test           Test for getopt(1) version\n" \
    883     "\t-u, --unquoted       Do not quote the output"
     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"
    8841114#define getopt_example_usage \
    885     "$ cat getopt.test\n" \
    886     "#!/bin/sh\n" \
    887     "GETOPT=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \\\n" \
    888     "       -n 'example.busybox' -- \"$@\"`\n" \
    889     "if [ $? != 0 ] ; then  exit 1 ; fi\n" \
    890     "eval set -- \"$GETOPT\"\n" \
    891     "while true ; do\n" \
    892     " case $1 in\n" \
    893     "   -a|--a-long) echo \"Option a\" ; shift ;;\n" \
    894     "   -b|--b-long) echo \"Option b, argument `$2'\" ; shift 2 ;;\n" \
    895     "   -c|--c-long)\n" \
    896     "     case \"$2\" in\n" \
    897     "       \"\") echo \"Option c, no argument\"; shift 2 ;;\n" \
    898     "       *)  echo \"Option c, argument `$2'\" ; shift 2 ;;\n" \
    899     "     esac ;;\n" \
    900     "   --) shift ; break ;;\n" \
    901     "   *) echo \"Internal error!\" ; exit 1 ;;\n" \
    902     " esac\n" \
    903     "done\n"
     1115       "$ cat getopt.test\n" \
     1116       "#!/bin/sh\n" \
     1117       "GETOPT=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \\\n" \
     1118       "       -n 'example.busybox' -- \"$@\"`\n" \
     1119       "if [ $? != 0 ]; then  exit 1; fi\n" \
     1120       "eval set -- \"$GETOPT\"\n" \
     1121       "while true; do\n" \
     1122       " case $1 in\n" \
     1123       "   -a|--a-long) echo \"Option a\"; shift;;\n" \
     1124       "   -b|--b-long) echo \"Option b, argument '$2'\"; shift 2;;\n" \
     1125       "   -c|--c-long)\n" \
     1126       "     case \"$2\" in\n" \
     1127       "       \"\") echo \"Option c, no argument\"; shift 2;;\n" \
     1128       "       *)  echo \"Option c, argument '$2'\"; shift 2;;\n" \
     1129       "     esac;;\n" \
     1130       "   --) shift; break;;\n" \
     1131       "   *) echo \"Internal error!\"; exit 1;;\n" \
     1132       " esac\n" \
     1133       "done\n"
     1134
     1135#define getsebool_trivial_usage \
     1136       "-a or getsebool boolean..."
     1137#define getsebool_full_usage \
     1138       "    -a  Show all SELinux booleans"
    9041139
    9051140#define getty_trivial_usage \
    906     "[OPTIONS]... baud_rate,... line [termtype]"
     1141       "[OPTIONS]... baud_rate,... line [termtype]"
    9071142#define getty_full_usage \
    908     "Opens a tty, prompts for a login name, then invokes /bin/login\n\n" \
    909     "Options:\n" \
    910     "\t-h\t\tEnable hardware (RTS/CTS) flow control\n" \
    911     "\t-i\t\tDo not display /etc/issue before running login\n" \
    912     "\t-L\t\tLocal line, so do not do carrier detect\n" \
    913     "\t-m\t\tGet baud rate from modem's CONNECT status message\n" \
    914     "\t-w\t\tWait for a CR or LF before sending /etc/issue\n" \
    915     "\t-n\t\tDo not prompt the user for a login name\n" \
    916     "\t-f issue_file\tDisplay issue_file instead of /etc/issue\n" \
    917     "\t-l login_app\tInvoke login_app instead of /bin/login\n" \
    918     "\t-t timeout\tTerminate after timeout if no username is read\n" \
    919     "\t-I initstring\tSets the init string to send before anything else\n" \
    920     "\t-H login_host\tLog login_host into the utmp file as the hostname"
     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"
    9211156
    9221157#define grep_trivial_usage \
    923     "[-ihHnqvs" \
     1158       "[-HhrilLnqvso" \
     1159    USE_DESKTOP("w") \
     1160       "eF" \
    9241161    USE_FEATURE_GREP_EGREP_ALIAS("E") \
    9251162    USE_FEATURE_GREP_CONTEXT("ABC") \
    926     "] PATTERN [FILEs...]"
     1163       "] PATTERN [FILEs...]"
    9271164#define grep_full_usage \
    928     "Search for PATTERN in each FILE or standard input.\n\n" \
    929     "Options:\n" \
    930     "\t-H\tprefix output lines with filename where match was found\n" \
    931     "\t-h\tsuppress the prefixing filename on output\n" \
    932     "\t-i\tignore case distinctions\n" \
    933     "\t-l\tlist names of files that match\n" \
    934     "\t-L\tlist names of files that do not match\n" \
    935     "\t-n\tprint line number with output lines\n" \
    936     "\t-q\tbe quiet. Returns 0 if PATTERN was found, 1 otherwise\n" \
    937     "\t-v\tselect non-matching lines\n" \
    938     "\t-s\tsuppress file open/read error messages\n" \
    939     "\t-c\tonly print count of matching lines\n" \
    940     "\t-f\tread PATTERN from file\n" \
    941     "\t-e\tPATTERN is a regular expression\n" \
    942     "\t-F\tPATTERN is a set of newline-separated strings" \
    943     USE_FEATURE_GREP_EGREP_ALIAS("\n\t-E\tPATTERN is an extended regular expression") \
    944     USE_FEATURE_GREP_CONTEXT("\n\t-A\tprint NUM lines of trailing context") \
    945     USE_FEATURE_GREP_CONTEXT("\n\t-B\tprint NUM lines of leading context") \
    946     USE_FEATURE_GREP_CONTEXT("\n\t-C\tprint NUM lines of output context")
     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") \
    9471191
    9481192#define grep_example_usage \
    949     "$ grep root /etc/passwd\n" \
    950     "root:x:0:0:root:/root:/bin/bash\n" \
    951     "$ grep ^[rR]oo. /etc/passwd\n" \
    952     "root:x:0:0:root:/root:/bin/bash\n"
     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"
    9531197
    9541198#define gunzip_trivial_usage \
    955     "[OPTION]... FILE"
     1199       "[OPTION]... FILE"
    9561200#define gunzip_full_usage \
    957     "Uncompress FILE (or standard input if FILE is '-').\n\n" \
    958     "Options:\n" \
    959     "\t-c\tWrite output to standard output\n" \
    960     "\t-f\tForce read when source is a terminal\n" \
    961     "\t-t\tTest compressed file integrity"
     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"
    9621206#define gunzip_example_usage \
    963     "$ ls -la /tmp/BusyBox*\n" \
    964     "-rw-rw-r--    1 andersen andersen   557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz\n" \
    965     "$ gunzip /tmp/BusyBox-0.43.tar.gz\n" \
    966     "$ ls -la /tmp/BusyBox*\n" \
    967     "-rw-rw-r--    1 andersen andersen  1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar\n"
     1207       "$ ls -la /tmp/BusyBox*\n" \
     1208       "-rw-rw-r--    1 andersen andersen   557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz\n" \
     1209       "$ gunzip /tmp/BusyBox-0.43.tar.gz\n" \
     1210       "$ ls -la /tmp/BusyBox*\n" \
     1211       "-rw-rw-r--    1 andersen andersen  1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar\n"
    9681212
    9691213#define gzip_trivial_usage \
    970     "[OPTION]... [FILE]..."
     1214       "[OPTION]... [FILE]..."
    9711215#define gzip_full_usage \
    972     "Compress FILE(s) with maximum compression.\n" \
    973     "When FILE is '-' or unspecified, reads standard input.  Implies -c.\n\n" \
    974     "Options:\n" \
    975     "\t-c\tWrite output to standard output instead of FILE.gz\n" \
    976     "\t-d\tDecompress\n" \
    977     "\t-f\tForce write when destination is a terminal"
     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"
    9781222#define gzip_example_usage \
    979     "$ ls -la /tmp/busybox*\n" \
    980     "-rw-rw-r--    1 andersen andersen  1761280 Apr 14 17:47 /tmp/busybox.tar\n" \
    981     "$ gzip /tmp/busybox.tar\n" \
    982     "$ ls -la /tmp/busybox*\n" \
    983     "-rw-rw-r--    1 andersen andersen   554058 Apr 14 17:49 /tmp/busybox.tar.gz\n"
     1223       "$ ls -la /tmp/busybox*\n" \
     1224       "-rw-rw-r--    1 andersen andersen  1761280 Apr 14 17:47 /tmp/busybox.tar\n" \
     1225       "$ gzip /tmp/busybox.tar\n" \
     1226       "$ ls -la /tmp/busybox*\n" \
     1227       "-rw-rw-r--    1 andersen andersen   554058 Apr 14 17:49 /tmp/busybox.tar.gz\n"
    9841228
    9851229#define halt_trivial_usage \
    986     "[-d<delay>] [-n<nosync>] [-f<force>]"
     1230       "[-d delay] [-n] [-f]"
    9871231#define halt_full_usage \
    988     "Halt the system.\n" \
    989     "Options:\n" \
    990     "\t-d\t\tdelay interval for halting\n" \
    991     "\t-n\t\tno call to sync()\n" \
    992     "\t-f\t\tforce halt (don't go through init)"
     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)"
    9931237
    9941238#define hdparm_trivial_usage \
    995     "[options] [device] .."
     1239       "[options] [device] .."
    9961240#define hdparm_full_usage \
    997     USE_FEATURE_HDPARM_GET_IDENTITY("\tIf no device name is specified try to read from stdin.\n") \
    998     "\nOptions:\n" \
    999     "\t-a   get/set fs readahead\n" \
    1000     "\t-A   set drive read-lookahead flag (0/1)\n" \
    1001     "\t-b   get/set bus state (0 == off, 1 == on, 2 == tristate)\n" \
    1002     "\t-B   set Advanced Power Management setting (1-255)\n" \
    1003     "\t-c   get/set IDE 32-bit IO setting\n" \
    1004     "\t-C   check IDE power mode status\n" \
    1005     USE_FEATURE_HDPARM_HDIO_GETSET_DMA("\t-d   get/set using_dma flag\n") \
    1006     "\t-D   enable/disable drive defect-mgmt\n" \
    1007     "\t-f   flush buffer cache for device on exit\n" \
    1008     "\t-g   display drive geometry\n" \
    1009     "\t-h   display terse usage information\n" \
    1010     USE_FEATURE_HDPARM_GET_IDENTITY("\t-i   display drive identification\n") \
    1011     USE_FEATURE_HDPARM_GET_IDENTITY("\t-I   detailed/current information directly from drive\n") \
    1012     "\t-k   get/set keep_settings_over_reset flag (0/1)\n" \
    1013     "\t-K   set drive keep_features_over_reset flag (0/1)\n" \
    1014     "\t-L   set drive doorlock (0/1) (removable harddisks only)\n" \
    1015     "\t-m   get/set multiple sector count\n" \
    1016     "\t-n   get/set ignore-write-errors flag (0/1)\n" \
    1017     "\t-p   set PIO mode on IDE interface chipset (0,1,2,3,4,...)\n" \
    1018     "\t-P   set drive prefetch count\n" \
    1019     "\t-q   change next setting quietly\n" \
    1020     "\t-Q   get/set DMA tagged-queuing depth (if supported)\n" \
    1021     "\t-r   get/set readonly flag (DANGEROUS to set)\n" \
    1022     USE_FEATURE_HDPARM_HDIO_SCAN_HWIF("\t-R   register an IDE interface (DANGEROUS)\n") \
    1023     "\t-S   set standby (spindown) timeout\n" \
    1024     "\t-t   perform device read timings\n" \
    1025     "\t-T   perform cache read timings\n" \
    1026     "\t-u   get/set unmaskirq flag (0/1)\n" \
    1027     USE_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF("\t-U   un-register an IDE interface (DANGEROUS)\n") \
    1028     "\t-v   defaults; same as -mcudkrag for IDE drives\n" \
    1029     "\t-V   display program version and exit immediately\n" \
    1030     USE_FEATURE_HDPARM_HDIO_DRIVE_RESET("\t-w   perform device reset (DANGEROUS)\n") \
    1031     "\t-W   set drive write-caching flag (0/1) (DANGEROUS)\n" \
    1032     USE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF("\t-x   tristate device for hotswap (0/1) (DANGEROUS)\n") \
    1033     "\t-X   set IDE xfer mode (DANGEROUS)\n" \
    1034     "\t-y   put IDE drive in standby mode\n" \
    1035     "\t-Y   put IDE drive to sleep\n" \
    1036     "\t-Z   disable Seagate auto-powersaving mode\n" \
    1037     "\t-z   re-read partition table"
     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"
    10381290
    10391291#define head_trivial_usage \
    1040     "[OPTION]... [FILE]..."
     1292       "[OPTION]... [FILE]..."
    10411293#define head_full_usage \
    1042     "Print first 10 lines of each FILE to standard output.\n" \
    1043     "With more than one FILE, precede each with a header giving the\n" \
    1044     "file name. With no FILE, or when FILE is -, read standard input.\n\n" \
    1045     "Options:\n" \
    1046     "\t-n NUM\t\tPrint first NUM lines instead of first 10" \
     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" \
    10471299    USE_FEATURE_FANCY_HEAD( \
    1048     "\n\t-c NUM\t\toutput the first NUM bytes\n" \
    1049     "\t-q\t\tnever output headers giving file names\n" \
    1050     "\t-v\t\talways output headers giving file names" )
     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")
    10511303#define head_example_usage \
    1052     "$ head -n 2 /etc/passwd\n" \
    1053     "root:x:0:0:root:/root:/bin/bash\n" \
    1054     "daemon:x:1:1:daemon:/usr/sbin:/bin/sh\n"
     1304       "$ head -n 2 /etc/passwd\n" \
     1305       "root:x:0:0:root:/root:/bin/bash\n" \
     1306       "daemon:x:1:1:daemon:/usr/sbin:/bin/sh\n"
    10551307
    10561308#define hexdump_trivial_usage \
    1057     "[-[bcCdefnosvx]] [OPTION] FILE"
     1309       "[-[bcCdefnosvx]] [OPTION] FILE"
    10581310#define hexdump_full_usage \
    1059     "The hexdump utility is a filter which displays the specified files,\n" \
    1060     "or the standard input, if no files are specified, in a user specified\n" \
    1061     "format\n" \
    1062     "\t-b\t\tOne-byte octal display\n" \
    1063     "\t-c\t\tOne-byte character display\n" \
    1064     "\t-C\t\tCanonical hex+ASCII, 16 bytes per line\n" \
    1065     "\t-d\t\tTwo-byte decimal display\n" \
    1066     "\t-e FORMAT STRING\n" \
    1067     "\t-f FORMAT FILE\n" \
    1068     "\t-n LENGTH\tInterpret only length bytes of input\n" \
    1069     "\t-o\t\tTwo-byte octal display\n" \
    1070     "\t-s OFFSET\tSkip offset byte\n" \
    1071     "\t-v\t\tdisplay all input data\n" \
    1072     "\t-x\t\tTwo-byte hexadecimal display"
     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"
    10731324
    10741325#define hostid_trivial_usage \
    1075     ""
     1326       ""
    10761327#define hostid_full_usage \
    1077     "Print out a unique 32-bit identifier for the machine."
     1328       "Print out a unique 32-bit identifier for the machine"
    10781329
    10791330#define hostname_trivial_usage \
    1080     "[OPTION] {hostname | -F FILE}"
     1331       "[OPTION] {hostname | -F FILE}"
    10811332#define hostname_full_usage \
    1082     "Get or set the hostname or DNS domain name. If a hostname is given\n" \
    1083     "(or FILE with the -F parameter), the host name will be set.\n\n" \
    1084     "Options:\n" \
    1085     "\t-s\tShort\n" \
    1086     "\t-i\tAddresses for the hostname\n" \
    1087     "\t-d\tDNS domain name\n" \
    1088     "\t-f\tFully qualified domain name\n" \
    1089     "\t-F FILE\tUse the contents of FILE to specify the hostname"
     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"
    10901341#define hostname_example_usage \
    1091     "$ hostname\n" \
    1092     "sage\n"
     1342       "$ hostname\n" \
     1343       "sage\n"
    10931344
    10941345#define httpd_trivial_usage \
    1095     "[-c <conf file>]" \
    1096     USE_FEATURE_HTTPD_WITHOUT_INETD(" [-p <port>]") \
    1097     USE_FEATURE_HTTPD_SETUID(" [-u user]") \
    1098     USE_FEATURE_HTTPD_BASIC_AUTH(" [-r <realm>]") \
     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]") \
    10991351    USE_FEATURE_HTTPD_AUTH_MD5(" [-m pass]") \
    1100     " [-h home]" \
    1101     " [-d/-e <string>]"
     1352       " [-h home]" \
     1353       " [-d/-e string]"
    11021354#define httpd_full_usage \
    1103     "Listens for incoming http server requests.\n\n" \
    1104     "Options:\n" \
    1105     "\t-c FILE\t\tSpecifies configuration file. (default httpd.conf)\n" \
    1106     USE_FEATURE_HTTPD_WITHOUT_INETD("\t-p PORT\tServer port (default 80)\n") \
    1107     USE_FEATURE_HTTPD_SETUID("\t-u USER\tSet uid to USER after listening privileges port\n") \
    1108     USE_FEATURE_HTTPD_BASIC_AUTH("\t-r REALM\tAuthentication Realm for Basic Authentication\n") \
    1109     USE_FEATURE_HTTPD_AUTH_MD5("\t-m PASS\t\tCrypt PASS with md5 algorithm\n") \
    1110     "\t-h HOME  \tSpecifies http HOME directory (default ./)\n" \
    1111     "\t-e STRING\tHtml encode STRING\n" \
    1112     "\t-d STRING\tURL decode STRING"
     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" \
    11131371
    11141372#define hwclock_trivial_usage \
    1115     "[-r|--show] [-s|--hctosys] [-w|--systohc] [-l|--localtime] [-u|--utc]"
     1373       "[-r|--show] [-s|--hctosys] [-w|--systohc]" \
     1374       " [-l|--localtime] [-u|--utc]" \
     1375       " [-f FILE]"
    11161376#define hwclock_full_usage \
    1117     "Query and set the hardware clock (RTC)\n\n" \
    1118     "Options:\n" \
    1119     "\t-r\tread hardware clock and print result\n" \
    1120     "\t-s\tset the system time from the hardware clock\n" \
    1121     "\t-w\tset the hardware clock to the current system time\n" \
    1122     "\t-u\tthe hardware clock is kept in coordinated universal time\n" \
    1123     "\t-l\tthe hardware clock is kept in local time"
    1124 
    1125 #ifdef CONFIG_SELINUX
    1126 #  define USAGE_SELINUX(a) a
    1127 #else
    1128 #  define USAGE_SELINUX(a)
    1129 #endif
     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)"
    11301385
    11311386#define id_trivial_usage \
    1132     "[OPTIONS]... [USERNAME]"
     1387       "[OPTIONS]... [USERNAME]"
    11331388#define id_full_usage \
    1134     "Print information for USERNAME or the current user\n\n" \
    1135     "Options:\n" \
    1136     USAGE_SELINUX("\t-c\tprints only the security context\n") \
    1137     "\t-g\tprints only the group ID\n" \
    1138     "\t-u\tprints only the user ID\n" \
    1139     "\t-n\tprint a name instead of a number\n" \
    1140     "\t-r\tprints the real user ID instead of the effective ID"
     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"
    11411398#define id_example_usage \
    1142     "$ id\n" \
    1143     "uid=1000(andersen) gid=1000(andersen)\n"
    1144 
    1145 #ifdef CONFIG_FEATURE_IFCONFIG_SLIP
    1146 #  define USAGE_SIOCSKEEPALIVE(a) a
    1147 #else
    1148 #  define USAGE_SIOCSKEEPALIVE(a)
    1149 #endif
    1150 #ifdef CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
    1151 #  define USAGE_IFCONFIG_MII(a) a
    1152 #else
    1153 #  define USAGE_IFCONFIG_MII(a)
    1154 #endif
    1155 #ifdef CONFIG_FEATURE_IFCONFIG_HW
    1156 #  define USAGE_IFCONFIG_HW(a) a
    1157 #else
    1158 #  define USAGE_IFCONFIG_HW(a)
    1159 #endif
    1160 #ifdef CONFIG_FEATURE_IFCONFIG_STATUS
    1161 #  define USAGE_IFCONFIG_OPT_A(a) a
    1162 #else
    1163 #  define USAGE_IFCONFIG_OPT_A(a)
    1164 #endif
    1165 #ifdef CONFIG_FEATURE_IPV6
    1166 #  define USAGE_IPV6(a) a
    1167 #else
    1168 #  define USAGE_IPV6(a)
    1169 #endif
     1399       "$ id\n" \
     1400       "uid=1000(andersen) gid=1000(andersen)\n"
    11701401
    11711402#define ifconfig_trivial_usage \
    1172     USAGE_IFCONFIG_OPT_A("[-a]") " <interface> [<address>]"
     1403    USE_FEATURE_IFCONFIG_STATUS("[-a]") " interface [address]"
    11731404#define ifconfig_full_usage \
    1174     "configure a network interface\n\n" \
    1175     "Options:\n" \
    1176     USAGE_IPV6("\t[add <address>[/<prefixlen>]]\n") \
    1177     USAGE_IPV6("\t[del <address>[/<prefixlen>]]\n") \
    1178     "\t[[-]broadcast [<address>]]  [[-]pointopoint [<address>]]\n" \
    1179     "\t[netmask <address>]  [dstaddr <address>]\n" \
    1180     USAGE_SIOCSKEEPALIVE("\t[outfill <NN>] [keepalive <NN>]\n") \
    1181     "\t" USAGE_IFCONFIG_HW("[hw ether <address>]  ") \
    1182     "[metric <NN>]  [mtu <NN>]\n" \
    1183     "\t[[-]trailers]  [[-]arp]  [[-]allmulti]\n" \
    1184     "\t[multicast]  [[-]promisc]  [txqueuelen <NN>]  [[-]dynamic]\n" \
    1185     USAGE_IFCONFIG_MII("\t[mem_start <NN>]  [io_addr <NN>]  [irq <NN>]\n") \
    1186     "\t[up|down] ..."
     1405       "Configure a network interface" \
     1406       "\n\nOptions:\n" \
     1407    USE_FEATURE_IPV6( \
     1408       "    [add ADDRESS[/PREFIXLEN]]\n") \
     1409    USE_FEATURE_IPV6( \
     1410       "    [del ADDRESS[/PREFIXLEN]]\n") \
     1411       "    [[-]broadcast [ADDRESS]] [[-]pointopoint [ADDRESS]]\n" \
     1412       "    [netmask ADDRESS] [dstaddr ADDRESS]\n" \
     1413    USE_FEATURE_IFCONFIG_SLIP( \
     1414       "    [outfill NN] [keepalive NN]\n") \
     1415       "    " USE_FEATURE_IFCONFIG_HW("[hw ether ADDRESS] ") "[metric NN] [mtu NN]\n" \
     1416       "    [[-]trailers] [[-]arp] [[-]allmulti]\n" \
     1417       "    [multicast] [[-]promisc] [txqueuelen NN] [[-]dynamic]\n" \
     1418    USE_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ( \
     1419       "    [mem_start NN] [io_addr NN] [irq NN]\n") \
     1420       "    [up|down] ..."
    11871421
    11881422#define ifup_trivial_usage \
    1189     "<-ahinv> <ifaces...>"
     1423       "[-ahinv] ifaces..."
    11901424#define ifup_full_usage \
    1191     "ifup <options> <ifaces...>\n\n" \
    1192     "Options:\n" \
    1193     "\t-h\tthis help\n" \
    1194     "\t-a\tde/configure all interfaces automatically\n" \
    1195     "\t-i FILE\tuse FILE for interface definitions\n" \
    1196     "\t-n\tprint out what would happen, but don't do it\n" \
    1197     "\t\t\t(note that this option doesn't disable mappings)\n" \
    1198     "\t-v\tprint out what would happen before doing it\n" \
    1199     "\t-m\tdon't run any mappings\n" \
    1200     "\t-f\tforce de/configuration"
     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"
    12011433
    12021434#define ifdown_trivial_usage \
    1203     "<-ahinv> <ifaces...>"
     1435       "[-ahinv] ifaces..."
    12041436#define ifdown_full_usage \
    1205     "ifdown <options> <ifaces...>\n\n" \
    1206     "Options:\n" \
    1207     "\t-h\tthis help\n" \
    1208     "\t-a\tde/configure all interfaces automatically\n" \
    1209     "\t-i FILE\tuse FILE for interface definitions\n" \
    1210     "\t-n\tprint out what would happen, but don't do it\n" \
    1211     "\t\t(note that this option doesn't disable mappings)\n" \
    1212     "\t-v\tprint out what would happen before doing it\n" \
    1213     "\t-m\tdon't run any mappings\n" \
    1214     "\t-f\tforce de/configuration"
     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"
    12151445
    12161446#define inetd_trivial_usage \
    1217     "[-f] [-q len] [conf]"
     1447       "[-f] [-q len] [conf]"
    12181448#define inetd_full_usage \
    1219     "Listens for network connections and launches programs\n\n" \
    1220     "Option:\n" \
    1221     "\t-f\tRun as a foreground progress\n" \
    1222     "\t-q\tSets the size of the socket listen queue to\n" \
    1223     "\t\tthe specified value. Default is 128"
     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)"
    12241454
    12251455#define init_trivial_usage \
    1226     ""
     1456       ""
    12271457#define init_full_usage \
    1228     "Init is the parent of all processes."
     1458       "Init is the parent of all processes"
    12291459#define init_notes_usage \
    12301460"This version of init is designed to be run only by the kernel.\n" \
    12311461"\n" \
    1232 "BusyBox init doesn't support multiple runlevels.  The runlevels field of\n" \
    1233 "the /etc/inittab file is completely ignored by BusyBox init. If you want \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" \
    12341464"runlevels, use sysvinit.\n" \
    12351465"\n" \
    1236 "BusyBox init works just fine without an inittab.  If no inittab is found, \n" \
     1466"BusyBox init works just fine without an inittab. If no inittab is found,\n" \
    12371467"it has the following default behavior:\n" \
    12381468"\n" \
     
    12581488"       WARNING: This field has a non-traditional meaning for BusyBox init!\n" \
    12591489"       The id field is used by BusyBox init to specify the controlling tty for\n" \
    1260 "       the specified process to run on.  The contents of this field are\n" \
    1261 "       appended to \"/dev/\" and used as-is.  There is no need for this field to\n" \
    1262 "       be unique, although if it isn't you may have strange results.  If this\n" \
    1263 "       field is left blank, the controlling tty is set to the console.  Also\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" \
    12641494"       note that if BusyBox detects that a serial console is in use, then only\n" \
    12651495"       entries whose controlling tty is either the serial console or /dev/null\n" \
    1266 "       will be run.  BusyBox init does nothing with utmp. We don't need no\n" \
     1496"       will be run. BusyBox init does nothing with utmp. We don't need no\n" \
    12671497"       stinkin' utmp.\n" \
    12681498"\n" \
     
    12821512"       Run only-once actions:\n" \
    12831513"\n" \
    1284 "           'sysinit' is the first item run on boot.  init waits until all\n" \
    1285 "           sysinit actions are completed before continuing.  Following the\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" \
    12861516"           completion of all sysinit actions, all 'wait' actions are run.\n" \
    1287 "           'wait' actions, like  'sysinit' actions, cause init to wait until\n" \
    1288 "           the specified task completes.  'once' actions are asynchronous,\n" \
    1289 "           therefore, init does not wait for them to complete.  'restart' is\n" \
    1290 "           the action taken to restart the init process.  By default this should\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" \
    12911521"           simply run /sbin/init, but can be a script which runs pivot_root or it\n" \
    1292 "           can do all sorts of other interesting things.  The 'ctrlaltdel' init\n" \
     1522"           can do all sorts of other interesting things. The 'ctrlaltdel' init\n" \
    12931523"           actions are run when the system detects that someone on the system\n" \
    1294 "                       console has pressed the CTRL-ALT-DEL key combination. Typically one\n" \
    1295 "                       wants to run 'reboot' at this point to cause the system to reboot.\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" \
    12961526"           Finally the 'shutdown' action specifies the actions to taken when\n" \
    1297 "                       init is told to reboot. Unmounting filesystems and disabling swap\n" \
    1298 "                       is a very good here\n" \
     1527"           init is told to reboot. Unmounting filesystems and disabling swap\n" \
     1528"           is a very good here.\n" \
    12991529"\n" \
    13001530"       Run repeatedly actions:\n" \
    13011531"\n" \
    1302 "           'respawn' actions are run after the 'once' actions.  When a process\n" \
     1532"           'respawn' actions are run after the 'once' actions. When a process\n" \
    13031533"           started with a 'respawn' action exits, init automatically restarts\n" \
    1304 "           it.  Unlike sysvinit, BusyBox init does not stop processes from\n" \
    1305 "           respawning out of control.  The 'askfirst' actions acts just like\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" \
    13061536"           respawn, except that before running the specified process it\n" \
    13071537"           displays the line \"Please press Enter to activate this console.\"\n" \
     
    13101540"\n" \
    13111541"       Unrecognized actions (like initdefault) will cause init to emit an\n" \
    1312 "       error message, and then go along with its business.  All actions are\n" \
     1542"       error message, and then go along with its business. All actions are\n" \
    13131543"       run in the order they appear in /etc/inittab.\n" \
    13141544"\n" \
     
    13191549"Example /etc/inittab file:\n" \
    13201550"\n" \
    1321 "   # This is run first except when booting in single-user mode.\n" \
     1551"   # This is run first except when booting in single-user mode\n" \
    13221552"   #\n" \
    13231553"   ::sysinit:/etc/init.d/rcS\n" \
     
    13431573"   #::respawn:/sbin/getty -L ttyS1 9600 vt100\n" \
    13441574"   #\n" \
    1345 "   # Example how to put a getty on a modem line.\n" \
     1575"   # Example how to put a getty on a modem line\n" \
    13461576"   #::respawn:/sbin/getty 57600 ttyS2\n" \
    13471577"   \n" \
     
    13541584"   ::shutdown:/sbin/swapoff -a\n"
    13551585
    1356 #ifdef CONFIG_FEATURE_INSMOD_LOAD_MAP
    1357 #  define USAGE_INSMOD_MAP(a) a
    1358 #else
    1359 #  define USAGE_INSMOD_MAP(a)
     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
     1601#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" \
     1615    )
     1616/* would need to make the " | " optional depending on more than one selected */
     1617#define ip_trivial_usage \
     1618       "[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") \
     1624       "} {COMMAND}"
     1625#define ip_full_usage \
     1626       "ip [OPTIONS] OBJECT {COMMAND}\n" \
     1627       "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") \
     1633       "}\n" \
     1634       "OPTIONS := { -f[amily] { inet | inet6 | link } | -o[neline] }"
     1635
     1636#define ipaddr_trivial_usage \
     1637       "{ {add|del} IFADDR dev STRING | {show|flush}\n" \
     1638       "        [dev STRING] [to PREFIX] }"
     1639#define ipaddr_full_usage \
     1640       "ipaddr {add|delete} IFADDR dev STRING\n" \
     1641       "ipaddr {show|flush} [dev STRING] [scope SCOPE-ID]\n" \
     1642       "    [to PREFIX] [label PATTERN]\n" \
     1643       "    IFADDR := PREFIX | ADDR peer PREFIX\n" \
     1644       "    [broadcast ADDR] [anycast ADDR]\n" \
     1645       "    [label STRING] [scope SCOPE-ID]\n" \
     1646       "    SCOPE-ID := [host | link | global | NUMBER]"
     1647
     1648#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")
     1660
     1661#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"
     1671
     1672#define ipcs_trivial_usage \
     1673       "[[-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"
     1687
     1688#define iplink_trivial_usage \
     1689       "{ set DEVICE { up | down | arp { on | off } | show [DEVICE] }"
     1690#define iplink_full_usage \
     1691       "iplink set DEVICE { up | down | arp | multicast { on | off } |\n" \
     1692       "            dynamic { on | off } |\n" \
     1693       "            mtu MTU }\n" \
     1694       "iplink show [DEVICE]"
     1695
     1696#define iproute_trivial_usage \
     1697       "{ list | flush | { add | del | change | append |\n" \
     1698       "        replace | monitor } ROUTE }"
     1699#define iproute_full_usage \
     1700       "iproute { list | flush } SELECTOR\n" \
     1701       "iproute get ADDRESS [from ADDRESS iif STRING]\n" \
     1702       "            [oif STRING]  [tos TOS]\n" \
     1703       "iproute { add | del | change | append | replace | monitor } ROUTE\n" \
     1704       "            SELECTOR := [root PREFIX] [match PREFIX] [proto RTPROTO]\n" \
     1705       "            ROUTE := [TYPE] PREFIX [tos TOS] [proto RTPROTO]"
     1706
     1707#define iprule_trivial_usage \
     1708       "{[list | add | del] RULE}"
     1709#define iprule_full_usage \
     1710       "iprule [list | add | del] SELECTOR ACTION\n" \
     1711       "    SELECTOR := [from PREFIX] [to PREFIX] [tos TOS] [fwmark FWMARK]\n" \
     1712       "            [dev STRING] [pref NUMBER]\n" \
     1713       "    ACTION := [table TABLE_ID] [nat ADDRESS]\n" \
     1714       "            [prohibit | reject | unreachable]\n" \
     1715       "            [realms [SRCREALM/]DSTREALM]\n" \
     1716       "    TABLE_ID := [local | main | default | NUMBER]"
     1717
     1718#define iptunnel_trivial_usage \
     1719       "{ add | change | del | show } [NAME]\n" \
     1720       "    [mode { ipip | gre | sit }]\n" \
     1721       "    [remote ADDR] [local ADDR] [ttl TTL]"
     1722#define iptunnel_full_usage \
     1723       "iptunnel { add | change | del | show } [NAME]\n" \
     1724       "    [mode { ipip | gre | sit }] [remote ADDR] [local ADDR]\n" \
     1725       "    [[i|o]seq] [[i|o]key KEY] [[i|o]csum]\n" \
     1726       "    [ttl TTL] [tos TOS] [[no]pmtudisc] [dev PHYS_DEV]"
     1727
     1728#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"
     1734#define kill_example_usage \
     1735       "$ ps | grep apache\n" \
     1736       "252 root     root     S [apache]\n" \
     1737       "263 www-data www-data S [apache]\n" \
     1738       "264 www-data www-data S [apache]\n" \
     1739       "265 www-data www-data S [apache]\n" \
     1740       "266 www-data www-data S [apache]\n" \
     1741       "267 www-data www-data S [apache]\n" \
     1742       "$ kill 252\n"
     1743
     1744#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"
     1751#define killall_example_usage \
     1752       "$ killall apache\n"
     1753
     1754#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" \
     1760
     1761#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"
     1768
     1769#define length_trivial_usage \
     1770       "STRING"
     1771#define length_full_usage \
     1772       "Print out the length of the specified STRING"
     1773#define length_example_usage \
     1774       "$ length Hello\n" \
     1775       "5\n"
     1776
     1777#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"
     1791
     1792#define setarch_trivial_usage \
     1793       "personality program [args ...]"
     1794#define setarch_full_usage \
     1795       "Personality may be:\n" \
     1796       "    linux32     Set 32bit uname emulation\n" \
     1797       "    linux64     Set 64bit uname emulation"
     1798
     1799#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"
     1810#define ln_example_usage \
     1811       "$ ln -s BusyBox /tmp/ls\n" \
     1812       "$ ls -l /tmp/ls\n" \
     1813       "lrwxrwxrwx    1 root     root            7 Apr 12 18:39 ls -> BusyBox*\n"
     1814
     1815#define load_policy_trivial_usage \
     1816       "[FILE]"
     1817#define load_policy_full_usage
     1818
     1819#define loadfont_trivial_usage \
     1820       "< font"
     1821#define loadfont_full_usage \
     1822       "Load a console font from standard input"
     1823#define loadfont_example_usage \
     1824       "$ loadfont < /etc/i18n/fontname\n"
     1825
     1826#define loadkmap_trivial_usage \
     1827       "< keymap"
     1828#define loadkmap_full_usage \
     1829       "Load a binary keyboard translation table from standard input"
     1830#define loadkmap_example_usage \
     1831       "$ loadkmap < /etc/i18n/lang-keymap\n"
     1832
     1833#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."
     1842#define logger_example_usage \
     1843       "$ logger \"hello\"\n"
     1844
     1845#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"
     1853
     1854#define logname_trivial_usage \
     1855       ""
     1856#define logname_full_usage \
     1857       "Print the name of the current user"
     1858#define logname_example_usage \
     1859       "$ logname\n" \
     1860       "root\n"
     1861
     1862#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"
     1868
     1869#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"
     1876#define losetup_notes_usage \
     1877       "No arguments will display all current associations.\n" \
     1878       "One argument (losetup /dev/loop1) will display the current association\n" \
     1879       "(if any), or disassociate it (with -d). The display shows the offset\n" \
     1880       "and filename of the file the loop device is currently bound to.\n\n" \
     1881       "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"
     1883
     1884#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")
     1944
     1945#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"
     1960
     1961#if ENABLE_FEATURE_MAKEDEVS_LEAF
     1962#define makedevs_trivial_usage \
     1963       "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"
     1977#define makedevs_example_usage \
     1978       "# makedevs /dev/ttyS c 4 66 2 63\n" \
     1979       "[creates ttyS2-ttyS63]\n" \
     1980       "# makedevs /dev/hda b 3 0 0 8 s\n" \
     1981       "[creates hda,hda1-hda8]\n"
    13601982#endif
    1361 #define insmod_trivial_usage \
    1362     "[OPTION]... MODULE [symbol=value]..."
    1363 #define insmod_full_usage \
    1364     "Loads the specified kernel modules into the kernel.\n\n" \
    1365     "Options:\n" \
    1366     "\t-f\tForce module to load into the wrong kernel version\n" \
    1367     "\t-k\tMake module autoclean-able\n" \
    1368     "\t-v\tverbose output\n"  \
    1369     "\t-q\tquiet output\n" \
    1370     "\t-L\tLock to prevent simultaneous loads of a module\n" \
    1371     USAGE_INSMOD_MAP("\t-m\tOutput load map to stdout\n") \
    1372     "\t-o NAME\tSet internal module name to NAME\n" \
    1373     "\t-x\tdo not export externs"
    1374 
    1375 #define install_trivial_usage \
    1376     "[-cgmops] [sources] <dest|directory>"
    1377 #define install_full_usage \
    1378     "Copies files and set attributes\n\n" \
    1379     "Options:\n" \
    1380     "\t-c\tcopy the file, default\n" \
    1381     "\t-d\tcreate directories\n" \
    1382     "\t-g\tset group ownership\n" \
    1383     "\t-m\tset permission modes\n" \
    1384     "\t-o\tset ownership\n" \
    1385     "\t-p\tpreserve date\n" \
    1386     "\t-s\tstrip symbol tables"
    1387 
    1388 #define ip_trivial_usage \
    1389     "[ OPTIONS ] { address | link | route | tunnel } { COMMAND | help }"
    1390 #define ip_full_usage \
    1391     "ip [ OPTIONS ] OBJECT { COMMAND | help }\n" \
    1392     "where  OBJECT := { link | addr | route | tunnel }\n" \
    1393     "OPTIONS := { -f[amily] { inet | inet6 | link } | -o[neline] }"
    1394 
    1395 #define ipaddr_trivial_usage \
    1396     "{ {add|del} IFADDR dev STRING | {show|flush}\n" \
    1397     "\t\t[ dev STRING ] [ to PREFIX ] }"
    1398 #define ipaddr_full_usage \
    1399     "ipaddr {add|delete} IFADDR dev STRING\n" \
    1400     "ipaddr {show|flush} [ dev STRING ] [ scope SCOPE-ID ]\n" \
    1401     "\t\t\t[ to PREFIX ] [ label PATTERN ]\n" \
    1402     "\t\t\tIFADDR := PREFIX | ADDR peer PREFIX\n" \
    1403     "\t\t\t[ broadcast ADDR ] [ anycast ADDR ]\n" \
    1404     "\t\t\t[ label STRING ] [ scope SCOPE-ID ]\n" \
    1405     "\t\t\tSCOPE-ID := [ host | link | global | NUMBER ]"
    1406 
    1407 #ifdef CONFIG_FEATURE_IPCALC_FANCY
    1408 #  define XUSAGE_IPCALC_FANCY(a) a
    1409 #else
    1410 #  define XUSAGE_IPCALC_FANCY(a)
     1983
     1984#if ENABLE_FEATURE_MAKEDEVS_TABLE
     1985#define makedevs_trivial_usage \
     1986       "[-d device_table] rootdir"
     1987#define makedevs_full_usage \
     1988       "Create a range of special files as specified in a device table.\n" \
     1989       "Device table entries take the form of:\n" \
     1990       "<type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>\n" \
     1991       "Where name is the file name, type can be one of:\n" \
     1992       "    f   A regular file\n" \
     1993       "    d   Directory\n" \
     1994       "    c   Character special device file\n" \
     1995       "    b   Block special device file\n" \
     1996       "    p   Fifo (named pipe)\n" \
     1997       "uid is the user id for the target file, gid is the group id for the\n" \
     1998       "target file. The rest of the entries (major, minor, etc) apply to\n" \
     1999       "to device special files. A '-' may be used for blank entries."
     2000#define makedevs_example_usage \
     2001       "For example:\n" \
     2002       "<name>    <type> <mode><uid><gid><major><minor><start><inc><count>\n" \
     2003       "/dev         d   755    0    0    -      -      -      -    -\n" \
     2004       "/dev/console c   666    0    0    5      1      -      -    -\n" \
     2005       "/dev/null    c   666    0    0    1      3      0      0    -\n" \
     2006       "/dev/zero    c   666    0    0    1      5      0      0    -\n" \
     2007       "/dev/hda     b   640    0    0    3      0      0      0    -\n" \
     2008       "/dev/hda     b   640    0    0    3      1      1      1    15\n\n" \
     2009       "Will Produce:\n" \
     2010       "/dev\n" \
     2011       "/dev/console\n" \
     2012       "/dev/null\n" \
     2013       "/dev/zero\n" \
     2014       "/dev/hda\n" \
     2015       "/dev/hda[0-15]\n"
    14112016#endif
    1412 #define ipcalc_trivial_usage \
    1413     "[OPTION]... <ADDRESS>[[/]<NETMASK>] [NETMASK]"
    1414 #define ipcalc_full_usage \
    1415     "Calculate IP network settings from a IP address\n\n" \
    1416     "Options:\n" \
    1417     "\t-b\t--broadcast\tDisplay calculated broadcast address\n" \
    1418     "\t-n\t--network\tDisplay calculated network address\n" \
    1419     "\t-m\t--netmask\tDisplay default netmask for IP" \
    1420     XUSAGE_IPCALC_FANCY( \
    1421     "\n\t-p\t--prefix\tDisplay the prefix for IP/NETMASK\n" \
    1422     "\t-h\t--hostname\tDisplay first resolved host name\n" \
    1423     "\t-s\t--silent\tDon't ever display error messages")
    1424 
    1425 #define ipcrm_trivial_usage \
    1426     "[-[MQS] key] [-[mqs] id]"
    1427 #define ipcrm_full_usage \
    1428     "The upper-case options MQS are used to remove a shared memory\n" \
    1429     "segment by an shmkey value. The lower-case options mqs are used\n" \
    1430     "to remove a segment by shmid value.\n" \
    1431     "\t-m | -M\tRemove the memory segment after the last detach\n" \
    1432     "\t-q | -Q\tRemove the message queue\n" \
    1433     "\t-s | -S\tRemove the semaphore"
    1434 
    1435 #define ipcs_trivial_usage \
    1436     "[[-smq] -i shmid] | [[-asmq] [-tclup]]"
    1437 #define ipcs_full_usage \
    1438     "\t-i\tspecify a specific resource id\n" \
    1439     "Resource specification:\n" \
    1440     "\t-m\tshared memory segments\n" \
    1441     "\t-q\tmessage queues\n" \
    1442     "\t-s\tsemaphore arrays\n" \
    1443     "\t-a\tall (default)\n" \
    1444     "Output format:\n" \
    1445     "\t-t\ttime\n" \
    1446     "\t-p\tpid\n" \
    1447     "\t-s\tcreator\n" \
    1448     "\t-a\tlimits\n" \
    1449     "\t-i\tsummary"
    1450 
    1451 #define iplink_trivial_usage \
    1452     "{ set DEVICE { up | down | arp { on | off } | show [ DEVICE ] }"
    1453 #define iplink_full_usage \
    1454     "iplink set DEVICE { up | down | arp { on | off } |\n" \
    1455     "\t\t\tdynamic { on | off } |\n" \
    1456     "\t\t\tmtu MTU }\n" \
    1457     "\tiplink show [ DEVICE ]"
    1458 
    1459 #define iproute_trivial_usage \
    1460     "{ list | flush | { add | del | change | append |\n" \
    1461     "\t\treplace | monitor } ROUTE }"
    1462 #define iproute_full_usage \
    1463     "iproute { list | flush } SELECTOR\n" \
    1464     "iproute get ADDRESS [ from ADDRESS iif STRING ]\n" \
    1465     "\t\t\t[ oif STRING ]  [ tos TOS ]\n" \
    1466     "\tiproute { add | del | change | append | replace | monitor } ROUTE\n" \
    1467     "\t\t\tSELECTOR := [ root PREFIX ] [ match PREFIX ] [ proto RTPROTO ]\n" \
    1468     "\t\t\tROUTE := [ TYPE ] PREFIX [ tos TOS ] [ proto RTPROTO ]"
    1469 
    1470 #define iptunnel_trivial_usage \
    1471     "{ add | change | del | show } [ NAME ]\n" \
    1472     "\t\t[ mode { ipip | gre | sit } ]\n" \
    1473     "\t\t[ remote ADDR ] [ local ADDR ] [ ttl TTL ]"
    1474 #define iptunnel_full_usage \
    1475     "iptunnel { add | change | del | show } [ NAME ]\n" \
    1476     "\t\t\t[ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ]\n" \
    1477     "\t\t\t[ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n" \
    1478     "\t\t\t[ ttl TTL ] [ tos TOS ] [ [no]pmtudisc ] [ dev PHYS_DEV ]"
    1479 
    1480 #define kill_trivial_usage \
    1481     "[-signal] process-id [process-id ...]"
    1482 #define kill_full_usage \
    1483     "Send a signal (default is SIGTERM) to the specified process(es).\n\n" \
    1484     "Options:\n" \
    1485     "\t-l\tList all signal names and numbers"
    1486 #define kill_example_usage \
    1487     "$ ps | grep apache\n" \
    1488     "252 root     root     S [apache]\n" \
    1489     "263 www-data www-data S [apache]\n" \
    1490     "264 www-data www-data S [apache]\n" \
    1491     "265 www-data www-data S [apache]\n" \
    1492     "266 www-data www-data S [apache]\n" \
    1493     "267 www-data www-data S [apache]\n" \
    1494     "$ kill 252\n"
    1495 
    1496 #define killall_trivial_usage \
    1497     "[-q] [-signal] process-name [process-name ...]"
    1498 #define killall_full_usage \
    1499     "Send a signal (default is SIGTERM) to the specified process(es).\n\n" \
    1500     "Options:\n" \
    1501     "\t-l\tList all signal names and numbers\n" \
    1502     "\t-q\tDo not complain if no processes were killed"
    1503 #define killall_example_usage \
    1504     "$ killall apache\n"
    1505 
    1506 #define klogd_trivial_usage \
    1507     "[-c n] [-n]"
    1508 #define klogd_full_usage \
    1509     "Kernel logger.\n" \
    1510     "Options:\n" \
    1511     "\t-c n\tSets the default log level of console messages to n\n" \
    1512     "\t-n\tRun as a foreground process"
    1513 
    1514 #define length_trivial_usage \
    1515     "STRING"
    1516 #define length_full_usage \
    1517     "Prints out the length of the specified STRING."
    1518 #define length_example_usage \
    1519     "$ length Hello\n" \
    1520     "5\n"
    1521 
    1522 #define less_trivial_usage \
    1523     "[-EMNmh~?] FILE1 FILE2..."
    1524 #define less_full_usage \
    1525     "View a file or list of files. The position within files can be\n" \
    1526     "changed, and files can be manipulated in various ways with the\n" \
    1527     "following options:\n\n" \
    1528     "\t-E\tQuit once the end of a file is reached\n" \
    1529     "\t-M\tDisplay a status line containing the current line numbers\n" \
    1530     "\t\tand the percentage through the file\n" \
    1531     "\t-N\tPrefix line numbers to each line\n" \
    1532     "\t-m\tDisplay a status line containing the percentage through the\n" \
    1533     "\t\tfile\n" \
    1534     "\t-~\tSuppress ~s displayed when input past the end of the file is\n" \
    1535     "\t\treached.\n" \
    1536     "\t-h, -?\tDisplay this help message"
    1537 
    1538 #define setarch_trivial_usage \
    1539     "<personality> <program> [args ...]"
    1540 #define setarch_full_usage \
    1541     "Personality may be:\n" \
    1542     "\tlinux32\tSet 32bit uname emulation\n" \
    1543     "\tlinux64\tSet 64bit uname emulation"
    1544 
    1545 #define ln_trivial_usage \
    1546     "[OPTION] TARGET... LINK_NAME|DIRECTORY"
    1547 #define ln_full_usage \
    1548     "Create a link named LINK_NAME or DIRECTORY to the specified TARGET\n" \
    1549     "\nYou may use '--' to indicate that all following arguments are non-options.\n\n" \
    1550     "Options:\n" \
    1551     "\t-s\tmake symbolic links instead of hard links\n" \
    1552     "\t-f\tremove existing destination files\n" \
    1553     "\t-n\tno dereference symlinks - treat like normal file\n" \
    1554     "\t-b\tmake a backup of the target (if exists) before link operation\n" \
    1555     "\t-S suffix\tuse suffix instead of ~ when making backup files"
    1556 #define ln_example_usage \
    1557     "$ ln -s BusyBox /tmp/ls\n" \
    1558     "$ ls -l /tmp/ls\n" \
    1559     "lrwxrwxrwx    1 root     root            7 Apr 12 18:39 ls -> BusyBox*\n"
    1560 
    1561 #define loadfont_trivial_usage \
    1562     "< font"
    1563 #define loadfont_full_usage \
    1564     "Loads a console font from standard input."
    1565 #define loadfont_example_usage \
    1566     "$ loadfont < /etc/i18n/fontname\n"
    1567 
    1568 #define loadkmap_trivial_usage \
    1569     "< keymap"
    1570 #define loadkmap_full_usage \
    1571     "Loads a binary keyboard translation table from standard input."
    1572 #define loadkmap_example_usage \
    1573     "$ loadkmap < /etc/i18n/lang-keymap\n"
    1574 
    1575 #define logger_trivial_usage \
    1576     "[OPTION]... [MESSAGE]"
    1577 #define logger_full_usage \
    1578     "Write MESSAGE to the system log.  If MESSAGE is omitted, log stdin.\n\n" \
    1579     "Options:\n" \
    1580     "\t-s\tLog to stderr as well as the system log\n" \
    1581     "\t-t TAG\tLog using the specified tag (defaults to user name)\n" \
    1582     "\t-p PRIORITY\tEnter the message with the specified priority\n" \
    1583     "\t\tThis may be numerical or a ``facility.level'' pair"
    1584 #define logger_example_usage \
    1585     "$ logger \"hello\"\n"
    1586 
    1587 #define login_trivial_usage \
    1588     "[OPTION]... [username] [ENV=VAR ...]"
    1589 #define login_full_usage \
    1590     "Begin a new session on the system\n\n" \
    1591     "Options:\n" \
    1592     "\t-f\tDo not authenticate (user already authenticated)\n" \
    1593     "\t-h\tName of the remote host for this login\n" \
    1594     "\t-p\tPreserve environment"
    1595 
    1596 #define logname_trivial_usage \
    1597     ""
    1598 #define logname_full_usage \
    1599     "Print the name of the current user."
    1600 #define logname_example_usage \
    1601     "$ logname\n" \
    1602     "root\n"
    1603 
    1604 #define logread_trivial_usage \
    1605     "[OPTION]..."
    1606 #define logread_full_usage \
    1607     "Shows the messages from syslogd (using circular buffer).\n\n" \
    1608     "Options:\n" \
    1609     "\t-f\t\toutput data as the log grows"
    1610 
    1611 #define losetup_trivial_usage \
    1612     "[-od] LOOPDEVICE [FILE]"
    1613 #define losetup_full_usage \
    1614     "Associate LOOPDEVICE with FILE, or display current association.\n\n" \
    1615     "Options:\n" \
    1616     "\t-d\t\tDisassociate LOOPDEVICE\n" \
    1617     "\t-o OFFSET\tStart OFFSET bytes into FILE"
    1618 #define losetup_notes_usage \
    1619     "One argument (losetup /dev/loop1) will display the current association\n" \
    1620     "(if any), or disassociate it (with -d).  The display shows the offset\n" \
    1621     "and filename of the file the loop device is currently bound to.\n\n" \
    1622     "Two arguments (losetup /dev/loop1 file.img) create a new association,\n" \
    1623     "with an optional offset (-o 12345).  Encryption is not yet supported.\n\n"
    1624 
    1625 #ifdef CONFIG_FEATURE_LS_TIMESTAMPS
    1626 #  define USAGE_LS_TIMESTAMPS(a) a
    1627 #else
    1628 #  define USAGE_LS_TIMESTAMPS(a)
    1629 #endif
    1630 #ifdef CONFIG_FEATURE_LS_FILETYPES
    1631 #  define USAGE_LS_FILETYPES(a) a
    1632 #else
    1633 #  define USAGE_LS_FILETYPES(a)
    1634 #endif
    1635 #ifdef CONFIG_FEATURE_LS_FOLLOWLINKS
    1636 #  define USAGE_LS_FOLLOWLINKS(a) a
    1637 #else
    1638 #  define USAGE_LS_FOLLOWLINKS(a)
    1639 #endif
    1640 #ifdef CONFIG_FEATURE_LS_RECURSIVE
    1641 #  define USAGE_LS_RECURSIVE(a) a
    1642 #else
    1643 #  define USAGE_LS_RECURSIVE(a)
    1644 #endif
    1645 #ifdef CONFIG_FEATURE_LS_SORTFILES
    1646 #  define USAGE_LS_SORTFILES(a) a
    1647 #else
    1648 #  define USAGE_LS_SORTFILES(a)
    1649 #endif
    1650 #ifdef CONFIG_FEATURE_AUTOWIDTH
    1651 #  define USAGE_AUTOWIDTH(a) a
    1652 #else
    1653 #  define USAGE_AUTOWIDTH(a)
    1654 #endif
    1655 #ifdef CONFIG_FEATURE_LS_COLOR
    1656   #define USAGE_LS_COLOR(a) a
    1657 #else
    1658   #define USAGE_LS_COLOR(a)
    1659 #endif
    1660 
    1661 #define ls_trivial_usage \
    1662     "[-1Aa" USAGE_LS_TIMESTAMPS("c") "Cd" USAGE_LS_TIMESTAMPS("e") USAGE_LS_FILETYPES("F") "iln" USAGE_LS_FILETYPES("p") USAGE_LS_FOLLOWLINKS("L") USAGE_LS_RECURSIVE("R") USAGE_LS_SORTFILES("rS") "s" USAGE_AUTOWIDTH("T") USAGE_LS_TIMESTAMPS("tu") USAGE_LS_SORTFILES("v") USAGE_AUTOWIDTH("w") "x" USAGE_LS_SORTFILES("X") USE_FEATURE_HUMAN_READABLE("h") "k" USAGE_SELINUX("K") "] [filenames...]"
    1663 #define ls_full_usage \
    1664     "List directory contents\n\n" \
    1665     "Options:\n" \
    1666     "\t-1\tlist files in a single column\n" \
    1667     "\t-A\tdo not list implied . and ..\n" \
    1668     "\t-a\tdo not hide entries starting with .\n" \
    1669     "\t-C\tlist entries by columns\n" \
    1670     USAGE_LS_TIMESTAMPS("\t-c\twith -l: show ctime\n") \
    1671     USAGE_LS_COLOR("\t--color[={always,never,auto}]\tto control coloring\n") \
    1672     "\t-d\tlist directory entries instead of contents\n" \
    1673     USAGE_LS_TIMESTAMPS("\t-e\tlist both full date and full time\n") \
    1674     USAGE_LS_FILETYPES("\t-F\tappend indicator (one of */=@|) to entries\n") \
    1675     "\t-i\tlist the i-node for each file\n" \
    1676     "\t-l\tuse a long listing format\n" \
    1677     "\t-n\tlist numeric UIDs and GIDs instead of names\n" \
    1678     USAGE_LS_FILETYPES("\t-p\tappend indicator (one of /=@|) to entries\n") \
    1679     USAGE_LS_FOLLOWLINKS("\t-L\tlist entries pointed to by symbolic links\n") \
    1680     USAGE_LS_RECURSIVE("\t-R\tlist subdirectories recursively\n") \
    1681     USAGE_LS_SORTFILES("\t-r\tsort the listing in reverse order\n") \
    1682     USAGE_LS_SORTFILES("\t-S\tsort the listing by file size\n") \
    1683     "\t-s\tlist the size of each file, in blocks\n" \
    1684     USAGE_AUTOWIDTH("\t-T NUM\tassume Tabstop every NUM columns\n") \
    1685     USAGE_LS_TIMESTAMPS("\t-t\twith -l: show modification time\n") \
    1686     USAGE_LS_TIMESTAMPS("\t-u\twith -l: show access time\n") \
    1687     USAGE_LS_SORTFILES("\t-v\tsort the listing by version\n") \
    1688     USAGE_AUTOWIDTH("\t-w NUM\tassume the terminal is NUM columns wide\n") \
    1689     "\t-x\tlist entries by lines instead of by columns\n" \
    1690     USAGE_LS_SORTFILES("\t-X\tsort the listing by extension\n") \
    1691     USE_FEATURE_HUMAN_READABLE( \
    1692     "\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n") \
    1693     USAGE_SELINUX("\t-k\tprint security context\n") \
    1694     USAGE_SELINUX("\t-K\tprint security context in long format\n")
    1695 
    1696 #define lsattr_trivial_usage \
    1697     "[-Radlv] [files...]"
    1698 #define lsattr_full_usage \
    1699     "list file attributes on an ext2 fs\n\n" \
    1700     "Options:\n" \
    1701     "\t-R\trecursively list subdirectories\n" \
    1702     "\t-a\tdo not hide entries starting with .\n" \
    1703     "\t-d\tlist directory entries instead of contents\n" \
    1704     "\t-l\tprint long flag names\n" \
    1705     "\t-v\tlist the file's version/generation number"
    1706 
    1707 #define lsmod_trivial_usage \
    1708     ""
    1709 #define lsmod_full_usage \
    1710     "List the currently loaded kernel modules."
    1711 
    1712 #ifdef CONFIG_FEATURE_MAKEDEVS_LEAF
    1713 #define makedevs_trivial_usage \
    1714     "NAME TYPE MAJOR MINOR FIRST LAST [s]"
    1715 #define makedevs_full_usage \
    1716     "Creates a range of block or character special files\n\n" \
    1717     "TYPEs include:\n" \
    1718     "\tb:\tMake a block (buffered) device.\n" \
    1719     "\tc or u:\tMake a character (un-buffered) device.\n" \
    1720     "\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes.\n\n" \
    1721     "FIRST specifies the number appended to NAME to create the first device.\n" \
    1722     "LAST specifies the number of the last item that should be created\n" \
    1723     "If 's' is the last argument, the base device is created as well.\n\n" \
    1724     "For example:\n" \
    1725     "\tmakedevs /dev/ttyS c 4 66 2 63   ->  ttyS2-ttyS63\n" \
    1726     "\tmakedevs /dev/hda b 3 0 0 8 s    ->  hda,hda1-hda8"
    1727 #define makedevs_example_usage \
    1728     "# makedevs /dev/ttyS c 4 66 2 63\n" \
    1729     "[creates ttyS2-ttyS63]\n" \
    1730     "# makedevs /dev/hda b 3 0 0 8 s\n" \
    1731     "[creates hda,hda1-hda8]\n"
    1732 #endif
    1733 
    1734 #ifdef CONFIG_FEATURE_MAKEDEVS_TABLE
    1735 #define makedevs_trivial_usage \
    1736     "[-d device_table] rootdir"
    1737 #define makedevs_full_usage \
    1738     "Creates a range of special files as specified in a device table.\n" \
    1739     "Device table entries take the form of:\n" \
    1740     "<type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>\n" \
    1741     "Where name is the file name,  type can be one of:\n" \
    1742     "      f       A regular file\n" \
    1743     "      d       Directory\n" \
    1744     "      c       Character special device file\n" \
    1745     "      b       Block special device file\n" \
    1746     "      p       Fifo (named pipe)\n" \
    1747     "uid is the user id for the target file, gid is the group id for the\n" \
    1748     "target file.  The rest of the entries (major, minor, etc) apply to\n" \
    1749     "to device special files.  A '-' may be used for blank entries."
    1750 #define makedevs_example_usage \
    1751     "For example:\n" \
    1752     "<name>    <type> <mode><uid><gid><major><minor><start><inc><count>\n" \
    1753     "/dev         d   755    0    0    -      -      -      -    -\n" \
    1754     "/dev/console c   666    0    0    5      1      -      -    -\n" \
    1755     "/dev/null    c   666    0    0    1      3      0      0    -\n" \
    1756     "/dev/zero    c   666    0    0    1      5      0      0    -\n" \
    1757     "/dev/hda     b   640    0    0    3      0      0      0    -\n" \
    1758     "/dev/hda     b   640    0    0    3      1      1      1    15\n\n" \
    1759     "Will Produce:\n" \
    1760     "/dev\n" \
    1761     "/dev/console\n" \
    1762     "/dev/null\n" \
    1763     "/dev/zero\n" \
    1764     "/dev/hda\n" \
    1765     "/dev/hda[0-15]\n"
    1766 #endif
    1767 
    1768 #ifdef CONFIG_FEATURE_MD5_SHA1_SUM_CHECK
    1769 #define USAGE_MD5_SHA1_SUM_CHECK(a) a
    1770 #else
    1771 #define USAGE_MD5_SHA1_SUM_CHECK(a)
    1772 #endif
     2017
     2018#define matchpathcon_trivial_usage \
     2019       "[-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"
    17732026
    17742027#define md5sum_trivial_usage \
    1775     "[OPTION] [FILEs...]" \
    1776     USAGE_MD5_SHA1_SUM_CHECK("\n   or: md5sum [OPTION] -c [FILE]")
     2028       "[OPTION] [FILEs...]" \
     2029    USE_FEATURE_MD5_SHA1_SUM_CHECK("\n   or: md5sum [OPTION] -c [FILE]")
    17772030#define md5sum_full_usage \
    1778     "Print" USAGE_MD5_SHA1_SUM_CHECK(" or check") " MD5 checksums.\n\n" \
    1779     "Options:\n" \
    1780     "With no FILE, or when FILE is -, read standard input." \
    1781     USAGE_MD5_SHA1_SUM_CHECK("\n\n" \
    1782     "\t-c\tcheck MD5 sums against given list\n" \
    1783     "\nThe following two options are useful only when verifying checksums:\n" \
    1784     "\t-s\tdon't output anything, status code shows success\n" \
    1785     "\t-w\twarn about improperly formated MD5 checksum lines")
     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")
    17862039#define md5sum_example_usage \
    1787     "$ md5sum < busybox\n" \
    1788     "6fd11e98b98a58f64ff3398d7b324003\n" \
    1789     "$ md5sum busybox\n" \
    1790     "6fd11e98b98a58f64ff3398d7b324003  busybox\n" \
    1791     "$ md5sum -c -\n" \
    1792     "6fd11e98b98a58f64ff3398d7b324003  busybox\n" \
    1793     "busybox: OK\n" \
    1794     "^D\n"
     2040       "$ md5sum < busybox\n" \
     2041       "6fd11e98b98a58f64ff3398d7b324003\n" \
     2042       "$ md5sum busybox\n" \
     2043       "6fd11e98b98a58f64ff3398d7b324003  busybox\n" \
     2044       "$ md5sum -c -\n" \
     2045       "6fd11e98b98a58f64ff3398d7b324003  busybox\n" \
     2046       "busybox: OK\n" \
     2047       "^D\n"
    17952048
    17962049#define mdev_trivial_usage \
    1797     "[-s]"
     2050       "[-s]"
    17982051#define mdev_full_usage \
    1799     "\t-s\tScan /sys and populate /dev during system boot\n\n" \
    1800     "Called with no options (via hotplug) it uses environment variables\n" \
    1801     "to determine which device to add/remove."
     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."
    18022055#define mdev_notes_usage "" \
    1803 USE_FEATURE_MDEV_CONFIG( \
    1804     "The mdev config file contains lines that look like:\n" \
    1805     "  hd[a-z][0-9]* 0:3 660\n\n" \
    1806     "That's device name (with regex match), uid:gid, and permissions.\n\n" \
     2056    USE_FEATURE_MDEV_CONFIG( \
     2057       "The mdev config file contains lines that look like:\n" \
     2058       "  hd[a-z][0-9]* 0:3 660\n\n" \
     2059       "That's device name (with regex match), uid:gid, and permissions.\n\n" \
    18072060    USE_FEATURE_MDEV_EXEC( \
    1808         "Optionally, that can be followed (on the same line) by a special character\n" \
    1809         "and a command line to run after creating/before deleting the corresponding\n" \
    1810         "device(s). The environment variable $MDEV indicates the active device node\n" \
    1811         "(which is useful if it's a regex match). For example:\n\n" \
    1812         "  hdc root:cdrom 660  *ln -s $MDEV cdrom\n\n" \
    1813         "The special characters are @ (run after creating), $ (run before deleting),\n" \
    1814         "and * (run both after creating and before deleting). The commands run in\n" \
    1815         "the /dev directory, and use system() which calls /bin/sh.\n\n" \
     2061       "Optionally, that can be followed (on the same line) by a special character\n" \
     2062       "and a command line to run after creating/before deleting the corresponding\n" \
     2063       "device(s). The environment variable $MDEV indicates the active device node\n" \
     2064       "(which is useful if it's a regex match). For example:\n\n" \
     2065       "  hdc root:cdrom 660  *ln -s $MDEV cdrom\n\n" \
     2066       "The special characters are @ (run after creating), $ (run before deleting),\n" \
     2067       "and * (run both after creating and before deleting). The commands run in\n" \
     2068       "the /dev directory, and use system() which calls /bin/sh.\n\n" \
    18162069    ) \
    1817     "Config file parsing stops on the first matching line. If no config\n"\
    1818     "entry is matched, devices are created with default 0:0 660. (Make\n"\
    1819     "the last line match .* to override this.)\n\n" \
    1820 )
     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"\
     2072       "the last line match .* to override this.)\n\n" \
     2073    )
    18212074
    18222075#define mesg_trivial_usage \
    1823     "[y|n]"
     2076       "[y|n]"
    18242077#define mesg_full_usage \
    1825     "mesg controls write access to your terminal\n" \
    1826     "\ty\tAllow write access to your terminal\n" \
    1827     "\tn\tDisallow write access to your terminal"
     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"
    18282081
    18292082#define mkdir_trivial_usage \
    1830     "[OPTION] DIRECTORY..."
     2083       "[OPTION] DIRECTORY..."
    18312084#define mkdir_full_usage \
    1832     "Create the DIRECTORY(ies) if they do not already exist\n\n" \
    1833     "Options:\n" \
    1834     "\t-m\tset permission mode (as in chmod), not rwxrwxrwx - umask\n" \
    1835     "\t-p\tno error if existing, make parent directories as needed"
     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" \
     2091    )
     2092
    18362093#define mkdir_example_usage \
    1837     "$ mkdir /tmp/foo\n" \
    1838     "$ mkdir /tmp/foo\n" \
    1839     "/tmp/foo: File exists\n" \
    1840     "$ mkdir /tmp/foo/bar/baz\n" \
    1841     "/tmp/foo/bar/baz: No such file or directory\n" \
    1842     "$ mkdir -p /tmp/foo/bar/baz\n"
     2094       "$ mkdir /tmp/foo\n" \
     2095       "$ mkdir /tmp/foo\n" \
     2096       "/tmp/foo: File exists\n" \
     2097       "$ mkdir /tmp/foo/bar/baz\n" \
     2098       "/tmp/foo/bar/baz: No such file or directory\n" \
     2099       "$ mkdir -p /tmp/foo/bar/baz\n"
    18432100
    18442101#define mke2fs_trivial_usage \
    1845     "[-c|-l filename] [-b block-size] [-f fragment-size] [-g blocks-per-group] " \
    1846     "[-i bytes-per-inode] [-j] [-J journal-options] [-N number-of-inodes] [-n] " \
    1847     "[-m reserved-blocks-percentage] [-o creator-os] [-O feature[,...]] [-q] " \
    1848     "[r fs-revision-level] [-E extended-options] [-v] [-F] [-L volume-label] " \
    1849     "[-M last-mounted-directory] [-S] [-T filesystem-type] " \
    1850     "device [blocks-count]"
     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]"
    18512108#define mke2fs_full_usage \
    1852     "\t-b size\tblock size in bytes\n" \
    1853     "\t-c\tcheck for bad blocks before creating\n" \
    1854     "\t-E opts\tset extended options\n" \
    1855     "\t-f size\tfragment size in bytes\n" \
    1856     "\t-F\tforce (ignore sanity checks)\n" \
    1857     "\t-g num\tnumber of blocks in a block group\n" \
    1858     "\t-i ratio\tthe bytes/inode ratio\n" \
    1859     "\t-j\tcreate a journal (ext3)\n" \
    1860     "\t-J opts\tset journal options (size/device)\n" \
    1861     "\t-l file\tread bad blocks list from file\n" \
    1862     "\t-L lbl\tset the volume label\n" \
    1863     "\t-m percent\tpercent of fs blocks to reserve for admin\n" \
    1864     "\t-M dir\tset last mounted directory\n" \
    1865     "\t-n\tdo not actually create anything\n" \
    1866     "\t-N num\tnumber of inodes to create\n" \
    1867     "\t-o os\tset the 'creator os' field\n" \
    1868     "\t-O features\tdir_index/filetype/has_journal/journal_dev/sparse_super\n" \
    1869     "\t-q\tquiet execution\n" \
    1870     "\t-r rev\tset filesystem revision\n" \
    1871     "\t-S\twrite superblock and group descriptors only\n" \
    1872     "\t-T fs-type\tset usage type (news/largefile/largefile4)\n" \
    1873     "\t-v\tverbose execution"
     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"
    18742131
    18752132#define mkfifo_trivial_usage \
    1876     "[OPTIONS] name"
     2133       "[OPTIONS] name"
    18772134#define mkfifo_full_usage \
    1878     "Creates a named pipe (identical to 'mknod name p')\n\n" \
    1879     "Options:\n" \
    1880     "\t-m\tcreate the pipe using the specified mode (default a=rw)"
     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" \
     2140    )
    18812141
    18822142#define mkfs_minix_trivial_usage \
    1883     "[-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]"
     2143       "[-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]"
    18842144#define mkfs_minix_full_usage \
    1885     "Make a MINIX filesystem.\n\n" \
    1886     "Options:\n" \
    1887     "\t-c\t\tCheck the device for bad blocks\n" \
    1888     "\t-n [14|30]\tSpecify the maximum length of filenames\n" \
    1889     "\t-i INODES\tSpecify the number of inodes for the filesystem\n" \
    1890     "\t-l FILENAME\tRead the bad blocks list from FILENAME\n" \
    1891     "\t-v\t\tMake a Minix version 2 filesystem"
     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"
    18922152
    18932153#define mknod_trivial_usage \
    1894     "[OPTIONS] NAME TYPE MAJOR MINOR"
     2154       "[OPTIONS] NAME TYPE MAJOR MINOR"
    18952155#define mknod_full_usage \
    1896     "Create a special file (block, character, or pipe).\n\n" \
    1897     "Options:\n" \
    1898     "\t-m\tcreate the special file using the specified mode (default a=rw)\n\n" \
    1899     "TYPEs include:\n" \
    1900     "\tb:\tMake a block (buffered) device\n" \
    1901     "\tc or u:\tMake a character (un-buffered) device\n" \
    1902     "\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes"
     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    )
     2166
    19032167#define mknod_example_usage \
    1904     "$ mknod /dev/fd0 b 2 0\n" \
    1905     "$ mknod -m 644 /tmp/pipe p\n"
     2168       "$ mknod /dev/fd0 b 2 0\n" \
     2169       "$ mknod -m 644 /tmp/pipe p\n"
    19062170
    19072171#define mkswap_trivial_usage \
    1908     "[-c] [-v0|-v1] device [block-count]"
     2172       "[-c] [-v0|-v1] device [block-count]"
    19092173#define mkswap_full_usage \
    1910     "Prepare a disk partition to be used as a swap partition.\n\n" \
    1911     "Options:\n" \
    1912     "\t-c\t\tCheck for read-ability\n" \
    1913     "\t-v0\t\tMake version 0 swap [max 128 Megs]\n" \
    1914     "\t-v1\t\tMake version 1 swap [big!] (default for kernels >\n\t\t\t2.1.117)\n" \
    1915     "\tblock-count\tNumber of block to use (default is entire partition)"
     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)"
    19162180
    19172181#define mktemp_trivial_usage \
    1918     "[-dq] TEMPLATE"
     2182       "[-dq] TEMPLATE"
    19192183#define mktemp_full_usage \
    1920     "Creates a temporary file with its name based on TEMPLATE.\n" \
    1921     "TEMPLATE is any name with six `Xs' (i.e., /tmp/temp.XXXXXX).\n\n" \
    1922     "Options:\n" \
    1923     "\t-d\t\tMake a directory instead of a file\n" \
    1924     "\t-q\t\tFail silently if an error occurs"
     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"
    19252189#define mktemp_example_usage \
    1926     "$ mktemp /tmp/temp.XXXXXX\n" \
    1927     "/tmp/temp.mWiLjM\n" \
    1928     "$ ls -la /tmp/temp.mWiLjM\n" \
    1929     "-rw-------    1 andersen andersen        0 Apr 25 17:10 /tmp/temp.mWiLjM\n"
     2190       "$ mktemp /tmp/temp.XXXXXX\n" \
     2191       "/tmp/temp.mWiLjM\n" \
     2192       "$ ls -la /tmp/temp.mWiLjM\n" \
     2193       "-rw-------    1 andersen andersen        0 Apr 25 17:10 /tmp/temp.mWiLjM\n"
    19302194
    19312195#define modprobe_trivial_usage \
    1932     "[-knqrsv] MODULE [symbol=value ...]"
     2196       "[-knqrsv] MODULE [symbol=value ...]"
    19332197#define modprobe_full_usage \
    1934     "Options:\n" \
    1935     "\t-k\tMake module autoclean-able\n" \
    1936     "\t-n\tJust show what would be done\n" \
    1937     "\t-q\tQuiet output\n" \
    1938     "\t-r\tRemove module (stacks) or do autoclean\n" \
    1939     "\t-s\tReport via syslog instead of stderr\n" \
    1940     "\t-v\tVerbose output"
     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"
    19412205#define modprobe_notes_usage \
    19422206"modprobe can (un)load a stack of modules, passing each module options (when\n" \
     
    19822246"file, and override them for a specific usage from the command line.\n"
    19832247#define modprobe_example_usage \
    1984     "(with the above /etc/modules.conf):\n\n" \
    1985     "$ modprobe tulip\n" \
    1986     "   will load the module 'tulip' with default option 'irq=3'\n\n" \
    1987     "$ modprobe tulip irq=5\n" \
    1988     "   will load the module 'tulip' with option 'irq=5', thus overriding the default\n\n" \
    1989     "$ modprobe tulip2\n" \
    1990     "   will load the module 'tulip' with default options 'irq=4 io=0x308',\n" \
    1991     "   which are the default for alias 'tulip2'\n\n" \
    1992     "$ modprobe tulip2 irq=8\n" \
    1993     "   will load the module 'tulip' with default options 'irq=4 io=0x308 irq=8',\n" \
    1994     "   which are the default for alias 'tulip2' overridden by the option 'irq=8'\n\n" \
    1995     "   from the command line\n\n" \
    1996     "$ modprobe tulip2 irq=2 io=0x210\n" \
    1997     "   will load the module 'tulip' with default options 'irq=4 io=0x308 irq=4 io=0x210',\n" \
    1998     "   which are the default for alias 'tulip2' overridden by the options 'irq=2 io=0x210'\n\n" \
    1999     "   from the command line\n"
     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"
    20002264
    20012265#define more_trivial_usage \
    2002     "[FILE ...]"
     2266       "[FILE ...]"
    20032267#define more_full_usage \
    2004     "More is a filter for viewing FILE one screenful at a time."
     2268       "View FILE or standard input one screenful at a time"
    20052269#define more_example_usage \
    2006     "$ dmesg | more\n"
    2007 
    2008 #ifdef CONFIG_FEATURE_MOUNT_LOOP
    2009 #  define USAGE_MOUNT_LOOP(a) a
     2270       "$ dmesg | more\n"
     2271
     2272#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"
     2310#define mount_example_usage \
     2311       "$ mount\n" \
     2312       "/dev/hda3 on / type minix (rw)\n" \
     2313       "proc on /proc type proc (rw)\n" \
     2314       "devpts on /dev/pts type devpts (rw)\n" \
     2315       "$ mount /dev/fd0 /mnt -t msdos -o ro\n" \
     2316       "$ mount /tmp/diskimage /opt -t ext2 -o loop\n" \
     2317       "$ mount cd_image.iso mydir\n"
     2318#define mount_notes_usage \
     2319       "Returns 0 for success, number of failed mounts for -a, or errno for one mount."
     2320
     2321#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"
     2329#define mountpoint_example_usage \
     2330       "$ mountpoint /proc\n" \
     2331       "/proc is not a mountpoint\n" \
     2332       "$ mountpoint /sys\n" \
     2333       "/sys is a mountpoint\n"
     2334
     2335#define mt_trivial_usage \
     2336       "[-f device] opcode value"
     2337#define mt_full_usage \
     2338       "Control magnetic tape drive operation\n" \
     2339       "\nAvailable Opcodes:\n\n" \
     2340       "bsf bsfm bsr bss datacompression drvbuffer eof eom erase\n" \
     2341       "fsf fsfm fsr fss load lock mkpart nop offline ras1 ras2\n" \
     2342       "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"
     2355
     2356#define nameif_trivial_usage \
     2357       "[-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"
     2364#define nameif_example_usage \
     2365       "$ nameif -s dmz0 00:A0:C9:8C:F6:3F\n" \
     2366       " or\n" \
     2367       "$ nameif -c /etc/my_mactab_file\n" \
     2368
     2369#if !ENABLE_DESKTOP
     2370
     2371#if ENABLE_NC_SERVER || ENABLE_NC_EXTRA
     2372#define NC_OPTIONS_STR "\n\nOptions:"
    20102373#else
    2011 #  define USAGE_MOUNT_LOOP(a)
     2374#define NC_OPTIONS_STR
    20122375#endif
    2013 #ifdef CONFIG_FEATURE_MTAB_SUPPORT
    2014 #  define USAGE_MTAB(a) a
    2015 #else
    2016 #  define USAGE_MTAB(a)
     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
    20172439#endif
    2018 #define mount_trivial_usage \
    2019     "[flags] DEVICE NODE [-o options,more-options]"
    2020 #define mount_full_usage \
    2021     "Mount a filesystem.  Filesystem autodetection requires /proc be mounted.\n\n" \
    2022     "Flags:\n"  \
    2023     "\t-a:\t\tMount all filesystems in fstab\n" \
    2024     USAGE_MTAB( \
    2025     "\t-f:\t\t\"Fake\" Add entry to mount table but don't mount it\n" \
    2026     "\t-n:\t\tDon't write a mount table entry\n" \
    2027     ) \
    2028     "\t-o option:\tOne of many filesystem options, listed below\n" \
    2029     "\t-r:\t\tMount the filesystem read-only\n" \
    2030     "\t-t fs-type:\tSpecify the filesystem type\n" \
    2031     "\t-w:\t\tMount for reading and writing (default)\n" \
    2032     "\n" \
    2033     "Options for use with the \"-o\" flag:\n" \
    2034     "\tasync/sync:\tWrites are asynchronous / synchronous\n" \
    2035     "\tatime/noatime:\tEnable / disable updates to inode access times\n" \
    2036     "\tdev/nodev:\tAllow use of special device files / disallow them\n" \
    2037     "\texec/noexec:\tAllow use of executable files / disallow them\n" \
    2038     USAGE_MOUNT_LOOP( \
    2039     "\tloop:\t\t Ignored (loop devices are autodetected)\n" \
    2040     ) \
    2041     "\tsuid/nosuid:\tAllow set-user-id-root programs / disallow them\n" \
    2042     "\tremount:\tRe-mount a mounted filesystem, changing its flags\n" \
    2043     "\tro/rw:\t\tMount for read-only / read-write\n" \
    2044     "\tbind:\t\tBind a directory to an additional location\n" \
    2045     "\tmove:\t\tRelocate an existing mount point.\n" \
    2046     "\nThere are EVEN MORE flags that are specific to each filesystem\n" \
    2047     "You'll have to see the written documentation for those filesystems"
    2048 #define mount_example_usage \
    2049     "$ mount\n" \
    2050     "/dev/hda3 on / type minix (rw)\n" \
    2051     "proc on /proc type proc (rw)\n" \
    2052     "devpts on /dev/pts type devpts (rw)\n" \
    2053     "$ mount /dev/fd0 /mnt -t msdos -o ro\n" \
    2054     "$ mount /tmp/diskimage /opt -t ext2 -o loop\n" \
    2055     "$ mount cd_image.iso mydir\n"
    2056 #define mount_notes_usage \
    2057     "Returns 0 for success, number of failed mounts for -a, or errno for one mount."
    2058 
    2059 #define mountpoint_trivial_usage \
    2060     "[-q] <[-d] DIR | -x DEVICE>"
    2061 #define mountpoint_full_usage \
    2062     "mountpoint checks if the directory is a mountpoint\n\n" \
    2063     "Options:\n"  \
    2064     "\t-q:\t\tBe more quiet\n" \
    2065     "\t-d:\t\tPrint major/minor device number of the filesystem\n" \
    2066     "\t-x:\t\tPrint major/minor device number of the blockdevice"
    2067 #define mountpoint_example_usage \
    2068     "$ mountpoint /proc\n" \
    2069     "/proc is not a mountpoint\n" \
    2070     "$ mountpoint /sys\n" \
    2071     "/sys is a mountpoint\n"
    2072 
    2073 #define mt_trivial_usage \
    2074     "[-f device] opcode value"
    2075 #define mt_full_usage \
    2076     "Control magnetic tape drive operation\n" \
    2077     "\nAvailable Opcodes:\n\n" \
    2078     "bsf bsfm bsr bss datacompression drvbuffer eof eom erase\n" \
    2079     "fsf fsfm fsr fss load lock mkpart nop offline ras1 ras2\n" \
    2080     "ras3 reset retension rewind rewoffline seek setblk setdensity\n" \
    2081     "setpart tell unload unlock weof wset"
    2082 
    2083 #define mv_trivial_usage \
    2084     "[OPTION]... SOURCE DEST\n" \
    2085     "or: mv [OPTION]... SOURCE... DIRECTORY"
    2086 #define mv_full_usage \
    2087     "Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n\n" \
    2088     "Options:\n" \
    2089     "\t-f\tdon't prompt before overwriting\n" \
    2090     "\t-i\tinteractive, prompt before overwrite"
    2091 #define mv_example_usage \
    2092     "$ mv /tmp/foo /bin/bar\n"
    2093 
    2094 #define nameif_trivial_usage \
    2095     "[-s] [-c FILE] [{IFNAME MACADDR}]"
    2096 #define nameif_full_usage \
    2097     "Nameif renaming network interface while it in the down state.\n\n" \
    2098     "Options:\n" \
    2099     "\t-c FILE\t\tUse configuration file (default is /etc/mactab)\n" \
    2100     "\t-s\t\tUse syslog (LOCAL0 facility)\n" \
    2101     "\tIFNAME MACADDR\tnew_interface_name interface_mac_address"
    2102 #define nameif_example_usage \
    2103     "$ nameif -s dmz0 00:A0:C9:8C:F6:3F\n" \
    2104     " or\n" \
    2105     "$ nameif -c /etc/my_mactab_file\n" \
    2106 
    2107 #ifdef CONFIG_NC_GAPING_SECURITY_HOLE
    2108 #  define USAGE_NC_EXEC(a) a
    2109 #else
    2110 #  define USAGE_NC_EXEC(a)
    2111 #endif
    2112 #define nc_trivial_usage \
    2113     "[OPTIONS] [IP] [port]"
    2114 #define nc_full_usage \
    2115     "Netcat opens a pipe to IP:port\n\n" \
    2116     "Options:\n" \
    2117     "\t-l\t\tlisten mode, for inbound connects\n" \
    2118     "\t-p PORT\t\tlocal port number\n" \
    2119     "\t-i SECS\t\tdelay interval for lines sent\n" \
    2120     USAGE_NC_EXEC( \
    2121     "\t-e PROG\t\tprogram to exec after connect (dangerous!)\n" \
    2122     ) \
    2123     "\t-w SECS\t\ttimeout for connects and final net reads"
    2124 #define nc_example_usage \
    2125     "$ nc foobar.somedomain.com 25\n" \
    2126     "220 foobar ESMTP Exim 3.12 #1 Sat, 15 Apr 2000 00:03:02 -0600\n" \
    2127     "help\n" \
    2128     "214-Commands supported:\n" \
    2129     "214-    HELO EHLO MAIL RCPT DATA AUTH\n" \
    2130     "214     NOOP QUIT RSET HELP\n" \
    2131     "quit\n" \
    2132     "221 foobar closing connection\n"
    21332440
    21342441#define netstat_trivial_usage \
    2135     "[-laenrtuwx]"
     2442       "[-laentuwxr"USE_FEATURE_NETSTAT_WIDE("W")"]"
    21362443#define netstat_full_usage \
    2137     "Netstat displays Linux networking information.\n\n" \
    2138     "Options:\n" \
    2139     "\t-l display listening server sockets\n" \
    2140     "\t-a display all sockets (default: connected)\n" \
    2141     "\t-e display other/more information\n" \
    2142     "\t-n don't resolve names\n" \
    2143     "\t-r display routing table\n" \
    2144     "\t-t tcp sockets\n" \
    2145     "\t-u udp sockets\n" \
    2146     "\t-w raw sockets\n" \
    2147     "\t-x unix sockets"
     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    )
    21482458
    21492459#define nice_trivial_usage \
    2150     "[-n ADJUST] [COMMAND [ARG] ...]"
     2460       "[-n ADJUST] [COMMAND [ARG] ...]"
    21512461#define nice_full_usage \
    2152     "Nice runs a program with modified scheduling priority.\n\n" \
    2153     "Options:\n" \
    2154     "\t-n ADJUST\tAdjust the scheduling priority by ADJUST"
     2462       "Run a program with modified scheduling priority" \
     2463       "\n\nOptions:\n" \
     2464       "    -n ADJUST   Adjust the scheduling priority by ADJUST"
     2465
     2466#define nmeter_trivial_usage \
     2467       "format_string"
     2468#define nmeter_full_usage \
     2469       "Monitor system in real time\n\n" \
     2470       "Format specifiers:\n" \
     2471       "%Nc or %[cN]    Monitor CPU. N - bar size, default 10\n" \
     2472       "        (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"
     2487#define nmeter_example_usage \
     2488       "nmeter '%250d%t %20c int %i bio %b mem %m forks%p'"
    21552489
    21562490#define nohup_trivial_usage \
    2157     "COMMAND [ARGS]"
     2491       "COMMAND [ARGS]"
    21582492#define nohup_full_usage \
    2159     "run a command immune to hangups, with output to a non-tty"
     2493       "Run a command immune to hangups, with output to a non-tty"
    21602494#define nohup_example_usage \
    2161     "$ nohup make &"
     2495       "$ nohup make &"
    21622496
    21632497#define nslookup_trivial_usage \
    2164     "[HOST] [SERVER]"
     2498       "[HOST] [SERVER]"
    21652499#define nslookup_full_usage \
    2166     "Queries the nameserver for the IP address of the given HOST\n" \
    2167     "optionally using a specified DNS server"
     2500       "Query the nameserver for the IP address of the given HOST\n" \
     2501       "optionally using a specified DNS server"
    21682502#define nslookup_example_usage \
    2169     "$ nslookup localhost\n" \
    2170     "Server:     default\n" \
    2171     "Address:    default\n" \
    2172     "\n" \
    2173     "Name:       debian\n" \
    2174     "Address:    127.0.0.1\n"
     2503       "$ nslookup localhost\n" \
     2504       "Server:     default\n" \
     2505       "Address:    default\n" \
     2506       "\n" \
     2507       "Name:       debian\n" \
     2508       "Address:    127.0.0.1\n"
    21752509
    21762510#define od_trivial_usage \
    2177     "[-aBbcDdeFfHhIiLlOovXx] [FILE]"
     2511       "[-aBbcDdeFfHhIiLlOovXx] [FILE]"
    21782512#define od_full_usage \
    2179     "Write an unambiguous representation, octal bytes by default, of FILE\n" \
    2180     "to standard output. With no FILE, or when FILE is -, read standard input."
     2513       "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."
    21812515
    21822516#define openvt_trivial_usage \
    2183     "<vtnum> <COMMAND> [ARGS...]"
     2517       "VTNUM COMMAND [ARGS...]"
    21842518#define openvt_full_usage \
    2185     "Start a command on a new virtual terminal"
     2519       "Start a command on a new virtual terminal"
    21862520#define openvt_example_usage \
    2187     "openvt 2 /bin/ash\n"
    2188 
    2189 #ifdef CONFIG_FEATURE_SHA1_PASSWORDS
    2190 #  define PASSWORD_ALG_TYPES(a) a
    2191 #else
    2192 #  define PASSWORD_ALG_TYPES(a)
    2193 #endif
     2521       "openvt 2 /bin/ash\n"
     2522
    21942523#define passwd_trivial_usage \
    2195     "[OPTION] [name]"
     2524       "[OPTION] [name]"
    21962525#define passwd_full_usage \
    2197     "Change a user password. If no name is specified,\n" \
    2198     "changes the password for the current user.\n" \
    2199     "Options:\n" \
    2200     "\t-a\tDefine which algorithm shall be used for the password\n" \
    2201     "\t\t\t(Choices: des, md5" \
    2202     PASSWORD_ALG_TYPES(", sha1") \
    2203     ")\n\t-d\tDelete the password for the specified user account\n" \
    2204     "\t-l\tLocks (disables) the specified user account\n" \
    2205     "\t-u\tUnlocks (re-enables) the specified user account"
     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"
     2534
     2535#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"
    22062543
    22072544#define patch_trivial_usage \
    2208     "[-p<num>] [-i <diff>]"
     2545       "[-p num] [-i diff]"
    22092546#define patch_full_usage \
    2210     "\t-p <num>\tStrip <num> leading components from file names\n" \
    2211     "\t-i <diff>\tRead <diff> instead of stdin"
     2547       "    -p NUM  Strip NUM leading components from file names\n" \
     2548       "    -i DIFF Read DIFF instead of stdin"
    22122549#define patch_example_usage \
    2213     "$ patch -p1 < example.diff\n" \
    2214     "$ patch -p0 -i example.diff"
    2215 
    2216 #if ENABLE_FEATURE_PIDOF_SINGLE
    2217 #define USAGE_FEATURE_PIDOF_SINGLE(a) a
    2218 #else
    2219 #define USAGE_FEATURE_PIDOF_SINGLE(a)
    2220 #endif
    2221 #if ENABLE_FEATURE_PIDOF_OMIT
    2222 #define USAGE_FEATURE_PIDOF_OMIT(a) a
    2223 #else
    2224 #define USAGE_FEATURE_PIDOF_OMIT(a)
    2225 #endif
     2550       "$ patch -p1 < example.diff\n" \
     2551       "$ patch -p0 -i example.diff"
     2552
    22262553#if (ENABLE_FEATURE_PIDOF_SINGLE || ENABLE_FEATURE_PIDOF_OMIT)
    22272554#define USAGE_PIDOF "Options:"
    22282555#else
    2229 #define USAGE_PIDOF "\n\tThis version of pidof accepts no options."
     2556#define USAGE_PIDOF "\nThis version of pidof accepts no options."
    22302557#endif
    22312558
    22322559#define pidof_trivial_usage \
    2233     "process-name [OPTION] [process-name ...]"
     2560       "process-name [OPTION] [process-name ...]"
    22342561
    22352562#define pidof_full_usage \
    2236     "Lists the PIDs of all processes with names that match the\n" \
    2237     "names on the command line.\n" \
     2563       "List the PIDs of all processes with names that match the\n" \
     2564       "names on the command line\n" \
    22382565    USAGE_PIDOF \
    2239     USAGE_FEATURE_PIDOF_SINGLE("\n\t-s\t\tdisplay only a single PID") \
    2240     USAGE_FEATURE_PIDOF_OMIT("\n\t-o\t\tomit given pid.") \
    2241     USAGE_FEATURE_PIDOF_OMIT("\n\t\t\tUse %PPID to omit the parent pid of pidof itself")
     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")
    22422572#define pidof_example_usage \
    2243     "$ pidof init\n" \
    2244     "1\n" \
    2245     USAGE_FEATURE_PIDOF_OMIT("$ pidof /bin/sh\n20351 5973 5950\n") \
    2246     USAGE_FEATURE_PIDOF_OMIT("$ pidof /bin/sh -o %PPID\n20351 5950")
    2247 
    2248 #ifndef CONFIG_FEATURE_FANCY_PING
    2249 #define ping_trivial_usage "host"
    2250 #define ping_full_usage    "Send ICMP ECHO_REQUEST packets to network hosts"
     2573       "$ pidof init\n" \
     2574       "1\n" \
     2575    USE_FEATURE_PIDOF_OMIT( \
     2576       "$ pidof /bin/sh\n20351 5973 5950\n") \
     2577    USE_FEATURE_PIDOF_OMIT( \
     2578       "$ pidof /bin/sh -o %PPID\n20351 5950")
     2579
     2580#if !ENABLE_FEATURE_FANCY_PING
     2581#define ping_trivial_usage \
     2582       "host"
     2583#define ping_full_usage \
     2584       "Send ICMP ECHO_REQUEST packets to network hosts"
     2585#define ping6_trivial_usage \
     2586       "host"
     2587#define ping6_full_usage \
     2588       "Send ICMP ECHO_REQUEST packets to network hosts"
    22512589#else
    22522590#define ping_trivial_usage \
    2253     "[OPTION]... host"
     2591       "[OPTION]... host"
    22542592#define ping_full_usage \
    2255     "Send ICMP ECHO_REQUEST packets to network hosts.\n\n" \
    2256     "Options:\n" \
    2257     "\t-c COUNT\tSend only COUNT pings\n" \
    2258     "\t-s SIZE\t\tSend SIZE data bytes in packets (default=56)\n" \
    2259     "\t-q\t\tQuiet mode, only displays output at start\n" \
    2260     "\t\t\tand when finished"
     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"
     2601#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"
    22612611#endif
    22622612#define ping_example_usage \
    2263     "$ ping localhost\n" \
    2264     "PING slag (127.0.0.1): 56 data bytes\n" \
    2265     "64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=20.1 ms\n" \
    2266     "\n" \
    2267     "--- debian ping statistics ---\n" \
    2268     "1 packets transmitted, 1 packets received, 0% packet loss\n" \
    2269     "round-trip min/avg/max = 20.1/20.1/20.1 ms\n"
    2270 
    2271 #ifndef CONFIG_FEATURE_FANCY_PING6
    2272 #define ping6_trivial_usage "host"
    2273 #define ping6_full_usage    "Send ICMP ECHO_REQUEST packets to network hosts"
    2274 #else
    2275 #define ping6_trivial_usage \
    2276     "[OPTION]... host"
    2277 #define ping6_full_usage \
    2278     "Send ICMP ECHO_REQUEST packets to network hosts.\n\n" \
    2279     "Options:\n" \
    2280     "\t-c COUNT\tSend only COUNT pings\n" \
    2281     "\t-s SIZE\t\tSend SIZE data bytes in packets (default=56)\n" \
    2282     "\t-q\t\tQuiet mode, only displays output at start\n" \
    2283     "\t\t\tand when finished"
    2284 #endif
     2613       "$ ping localhost\n" \
     2614       "PING slag (127.0.0.1): 56 data bytes\n" \
     2615       "64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=20.1 ms\n" \
     2616       "\n" \
     2617       "--- debian ping statistics ---\n" \
     2618       "1 packets transmitted, 1 packets received, 0% packet loss\n" \
     2619       "round-trip min/avg/max = 20.1/20.1/20.1 ms\n"
    22852620#define ping6_example_usage \
    2286     "$ ping6 ip6-localhost\n" \
    2287     "PING ip6-localhost (::1): 56 data bytes\n" \
    2288     "64 bytes from ::1: icmp6_seq=0 ttl=64 time=20.1 ms\n" \
    2289     "\n" \
    2290     "--- ip6-localhost ping statistics ---\n" \
    2291     "1 packets transmitted, 1 packets received, 0% packet loss\n" \
    2292     "round-trip min/avg/max = 20.1/20.1/20.1 ms\n"
     2621       "$ ping6 ip6-localhost\n" \
     2622       "PING ip6-localhost (::1): 56 data bytes\n" \
     2623       "64 bytes from ::1: icmp6_seq=0 ttl=64 time=20.1 ms\n" \
     2624       "\n" \
     2625       "--- ip6-localhost ping statistics ---\n" \
     2626       "1 packets transmitted, 1 packets received, 0% packet loss\n" \
     2627       "round-trip min/avg/max = 20.1/20.1/20.1 ms\n"
    22932628
    22942629#define pivot_root_trivial_usage \
    2295     "NEW_ROOT PUT_OLD"
     2630       "NEW_ROOT PUT_OLD"
    22962631#define pivot_root_full_usage \
    2297     "Move the current root file system to PUT_OLD and make NEW_ROOT\n" \
    2298     "the new root file system."
     2632       "Move the current root file system to PUT_OLD and make NEW_ROOT\n" \
     2633       "the new root file system"
    22992634
    23002635#define poweroff_trivial_usage \
    2301     "[-d<delay>] [-n<nosync>] [-f<force>]"
     2636       "[-d delay] [-n] [-f]"
    23022637#define poweroff_full_usage \
    2303     "Halt and shut off power.\n" \
    2304     "Options:\n" \
    2305     "\t-d\t\tdelay interval for halting\n" \
    2306     "\t-n\t\tno call to sync()\n" \
    2307     "\t-f\t\tforce power off (don't go through init)"
     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)"
    23082643
    23092644#define printenv_trivial_usage \
    2310     "[VARIABLES...]"
     2645       "[VARIABLES...]"
    23112646#define printenv_full_usage \
    2312     "print all or part of environment\n\n" \
    2313     "If no environment VARIABLE specified, print them all."
     2647       "Print all or part of environment.\n" \
     2648       "If no environment VARIABLE specified, print them all."
    23142649
    23152650#define printf_trivial_usage \
    2316     "FORMAT [ARGUMENT...]"
     2651       "FORMAT [ARGUMENT...]"
    23172652#define printf_full_usage \
    2318     "Formats and prints ARGUMENT(s) according to FORMAT,\n" \
    2319     "Where FORMAT controls the output exactly as in C printf."
     2653       "Format and print ARGUMENT(s) according to FORMAT,\n" \
     2654       "where FORMAT controls the output exactly as in C printf"
    23202655#define printf_example_usage \
    2321     "$ printf \"Val=%d\\n\" 5\n" \
    2322     "Val=5\n"
     2656       "$ printf \"Val=%d\\n\" 5\n" \
     2657       "Val=5\n"
     2658
     2659
     2660#if ENABLE_DESKTOP
     2661
     2662#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" \
     2668
     2669#else /* !ENABLE_DESKTOP */
    23232670
    23242671#if !defined CONFIG_SELINUX && !ENABLE_FEATURE_PS_WIDE
    2325 #define USAGE_PS "\n\tThis version of ps accepts no options."
     2672#define USAGE_PS "\nThis version of ps accepts no options"
    23262673#else
    23272674#define USAGE_PS "\nOptions:"
    23282675#endif
    2329 #if ENABLE_FEATURE_PS_WIDE
    2330 #define USAGE_PS_WIDE(a) a
    2331 #else
    2332 #define USAGE_PS_WIDE(a)
    2333 #endif
    23342676
    23352677#define ps_trivial_usage \
    2336     ""
     2678       ""
    23372679#define ps_full_usage \
    2338     "Report process status\n" \
     2680       "Report process status\n" \
    23392681    USAGE_PS \
    2340     USAGE_SELINUX("\n\t-c\tshow SE Linux context") \
    2341     USAGE_PS_WIDE("\n\tw\twide output")
     2682    USE_SELINUX( \
     2683       "\n  -Z  Show SE Linux context") \
     2684    USE_FEATURE_PS_WIDE( \
     2685       "\n  w   Wide output")
     2686
     2687#endif /* ENABLE_DESKTOP */
    23422688
    23432689#define ps_example_usage \
    2344     "$ ps\n" \
    2345     "  PID  Uid      Gid State Command\n" \
    2346     "    1 root     root     S init\n" \
    2347     "    2 root     root     S [kflushd]\n" \
    2348     "    3 root     root     S [kupdate]\n" \
    2349     "    4 root     root     S [kpiod]\n" \
    2350     "    5 root     root     S [kswapd]\n" \
    2351     "  742 andersen andersen S [bash]\n" \
    2352     "  743 andersen andersen S -bash\n" \
    2353     "  745 root     root     S [getty]\n" \
    2354     " 2990 andersen andersen R ps\n"
     2690       "$ ps\n" \
     2691       "  PID  Uid      Gid State Command\n" \
     2692       "    1 root     root     S init\n" \
     2693       "    2 root     root     S [kflushd]\n" \
     2694       "    3 root     root     S [kupdate]\n" \
     2695       "    4 root     root     S [kpiod]\n" \
     2696       "    5 root     root     S [kswapd]\n" \
     2697       "  742 andersen andersen S [bash]\n" \
     2698       "  743 andersen andersen S -bash\n" \
     2699       "  745 root     root     S [getty]\n" \
     2700       " 2990 andersen andersen R ps\n"
     2701
     2702#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:" \
     2707     "\n    -p  Scan from this port (default 1)" \
     2708     "\n    -P  Scan up to this port (default 1024)" \
     2709     "\n    -t  Timeout (default 5000 ms)" \
     2710     "\n    -T  Minimum rtt (default 5 ms, increase for congested hosts)" \
    23552711
    23562712#define pwd_trivial_usage \
    2357     ""
     2713       ""
    23582714#define pwd_full_usage \
    2359     "Print the full filename of the current working directory."
     2715       "Print the full filename of the current working directory"
    23602716#define pwd_example_usage \
    2361     "$ pwd\n" \
    2362     "/root\n"
     2717       "$ pwd\n" \
     2718       "/root\n"
     2719
     2720#define raidautorun_trivial_usage \
     2721       "DEVICE"
     2722#define raidautorun_full_usage \
     2723       "Tell the kernel to automatically search and start RAID arrays"
     2724#define raidautorun_example_usage \
     2725       "$ raidautorun /dev/md0"
    23632726
    23642727#define rdate_trivial_usage \
    2365     "[-sp] HOST"
     2728       "[-sp] HOST"
    23662729#define rdate_full_usage \
    2367     "Get and possibly set the system date and time from a remote HOST.\n\n" \
    2368     "Options:\n" \
    2369     "\t-s\tSet the system date and time (default)\n" \
    2370     "\t-p\tPrint the date and time"
    2371 
    2372 #ifdef CONFIG_FEATURE_READLINK_FOLLOW
    2373 #define USAGE_READLINK_FOLLOW(a) a
    2374 #else
    2375 #define USAGE_READLINK_FOLLOW(a)
    2376 #endif
     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"
     2734
     2735#define readahead_trivial_usage \
     2736       "[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"
    23772740
    23782741#define readlink_trivial_usage \
    2379     USAGE_READLINK_FOLLOW("[-f] ") "FILE"
     2742    USE_FEATURE_READLINK_FOLLOW("[-f] ") "FILE"
    23802743#define readlink_full_usage \
    2381     "Displays the value of a symbolic link." \
    2382     USAGE_READLINK_FOLLOW("\n\nOptions:\n" \
    2383     "\t-f\tcanonicalize by following all symlinks")
     2744       "Display the value of a symlink" \
     2745    USE_FEATURE_READLINK_FOLLOW( \
     2746       "\n\nOptions:\n" \
     2747       "    -f  Canonicalize by following all symlinks")
    23842748
    23852749#define readprofile_trivial_usage \
    2386     "[OPTIONS]..."
     2750       "[OPTIONS]..."
    23872751#define readprofile_full_usage \
    2388     "Options:\n" \
    2389     "\t -m <mapfile>  (default: /boot/System.map)\n" \
    2390     "\t -p <profile>  (default: /proc/profile)\n" \
    2391     "\t -M <mult>     set the profiling multiplier to <mult>\n" \
    2392     "\t -i            print only info about the sampling step\n" \
    2393     "\t -v            print verbose data\n" \
    2394     "\t -a            print all symbols, even if count is 0\n" \
    2395     "\t -b            print individual histogram-bin counts\n" \
    2396     "\t -s            print individual counters within functions\n" \
    2397     "\t -r            reset all the counters (root only)\n" \
    2398     "\t -n            disable byte order auto-detection"
     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"
    23992763
    24002764#define realpath_trivial_usage \
    2401     "pathname ..."
     2765       "pathname ..."
    24022766#define realpath_full_usage \
    2403     "Returns the absolute pathnames of given argument."
     2767       "Return the absolute pathnames of given argument"
    24042768
    24052769#define reboot_trivial_usage \
    2406     "[-d<delay>] [-n<nosync>] [-f<force>]"
     2770       "[-d delay] [-n] [-f]"
    24072771#define reboot_full_usage \
    2408     "Reboot the system.\n" \
    2409     "Options:\n" \
    2410     "\t-d\t\tdelay interval for rebooting\n" \
    2411     "\t-n\t\tno call to sync()\n" \
    2412     "\t-f\t\tforce reboot (don't go through init)"
     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)"
    24132777
    24142778#define renice_trivial_usage \
    2415     "{{-n INCREMENT} | PRIORITY} [[ -p | -g | -u ] ID ...]"
     2779       "{{-n INCREMENT} | PRIORITY} [[-p | -g | -u] ID ...]"
    24162780#define renice_full_usage \
    2417     "Changes priority of running processes.\n\n" \
    2418     "Options:\n" \
    2419     "\t-n\tadjusts current nice value (smaller is faster)\n" \
    2420     "\t-p\tprocess id(s) (default)\n" \
    2421     "\t-g\tprocess group id(s)\n" \
    2422     "\t-u\tprocess user name(s) and/or id(s)"
     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)"
    24232787
    24242788#define reset_trivial_usage \
    2425     ""
     2789       ""
    24262790#define reset_full_usage \
    2427     "Resets the screen."
     2791       "Reset the screen"
     2792
     2793#define resize_trivial_usage \
     2794       ""
     2795#define resize_full_usage \
     2796       "Resize the screen"
     2797
     2798#define restorecon_trivial_usage \
     2799       "[-iFnrRv] [-e excludedir]... [-o filename] [-f filename | pathname]"
     2800#define restorecon_full_usage \
     2801       "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"
    24282813
    24292814#define rm_trivial_usage \
    2430     "[OPTION]... FILE..."
     2815       "[OPTION]... FILE..."
    24312816#define rm_full_usage \
    2432     "Remove (unlink) the FILE(s). You may use '--' to\n" \
    2433     "indicate that all following arguments are non-options.\n\n" \
    2434     "Options:\n" \
    2435     "\t-i\t\talways prompt before removing each destination\n" \
    2436     "\t-f\t\tremove existing destinations, never prompt\n" \
    2437     "\t-r or -R\tremove the contents of directories recursively"
     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"
    24382823#define rm_example_usage \
    2439     "$ rm -rf /tmp/foo\n"
     2824       "$ rm -rf /tmp/foo\n"
    24402825
    24412826#define rmdir_trivial_usage \
    2442     "[OPTION]... DIRECTORY..."
     2827       "[OPTION]... DIRECTORY..."
    24432828#define rmdir_full_usage \
    2444     "Remove the DIRECTORY(ies), if they are empty."
     2829       "Remove the DIRECTORY, if it is empty"
    24452830#define rmdir_example_usage \
    2446     "# rmdir /tmp/foo\n"
     2831       "# rmdir /tmp/foo\n"
    24472832
    24482833#define rmmod_trivial_usage \
    2449     "[OPTION]... [MODULE]..."
     2834       "[OPTION]... [MODULE]..."
    24502835#define rmmod_full_usage \
    2451     "Unloads the specified kernel modules from the kernel.\n\n" \
    2452     "Options:\n" \
    2453     "\t-a\tRemove all unused modules (recursively)"
     2836       "Unload the specified kernel modules from the kernel" \
     2837       "\n\nOptions:\n" \
     2838       "    -a  Remove all unused modules (recursively)"
    24542839#define rmmod_example_usage \
    2455     "$ rmmod tulip\n"
    2456 
    2457 #ifdef CONFIG_FEATURE_IPV6
    2458 #  define USAGE_ROUTE_IPV6(a) a
    2459 #else
    2460 #  define USAGE_ROUTE_IPV6(a) "\t"
    2461 #endif
    2462 
     2840       "$ rmmod tulip\n"
    24632841
    24642842#define route_trivial_usage \
    2465     "[{add|del|delete}]"
     2843       "[{add|del|delete}]"
    24662844#define route_full_usage \
    2467     "Edit the kernel's routing tables.\n\n" \
    2468     "Options:\n" \
    2469     "\t-n\t\tDont resolve names\n" \
    2470     "\t-e\t\tDisplay other/more information\n" \
    2471     "\t-A inet" USAGE_ROUTE_IPV6("{6}") "\tSelect address family"
     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"
    24722850
    24732851#define rpm_trivial_usage \
    2474     "-i -q[ildc]p package.rpm"
     2852       "-i -q[ildc]p package.rpm"
    24752853#define rpm_full_usage \
    2476     "Manipulates RPM packages" \
    2477     "\n\nOptions:" \
    2478     "\n\t-i Install package" \
    2479     "\n\t-q Query package" \
    2480     "\n\t-p Query uninstalled package" \
    2481     "\n\t-i Show information" \
    2482     "\n\t-l List contents" \
    2483     "\n\t-d List documents" \
    2484     "\n\t-c List config files"
     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"
    24852863
    24862864#define rpm2cpio_trivial_usage \
    2487     "package.rpm"
     2865       "package.rpm"
    24882866#define rpm2cpio_full_usage \
    2489     "Outputs a cpio archive of the rpm file."
     2867       "Output a cpio archive of the rpm file"
     2868
     2869#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" \
    24902882
    24912883#define run_parts_trivial_usage \
    2492     "[-t] [-a ARG] [-u MASK] DIRECTORY"
     2884       "[-t] "USE_FEATURE_RUN_PARTS_FANCY("[-l] ")"[-a ARG] [-u MASK] DIRECTORY"
    24932885#define run_parts_full_usage \
    2494     "Run a bunch of scripts in a directory.\n\n" \
    2495     "Options:\n" \
    2496     "\t-t\tPrints what would be run, but does not actually run anything\n" \
    2497     "\t-a ARG\tPass ARG as an argument for every program invoked\n" \
    2498     "\t-u MASK\tSet the umask to MASK before executing every program"
     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" \
     2891USE_FEATURE_RUN_PARTS_FANCY("\n -l  Prints names of all matching files even when they are not executable")
     2892
     2893#define run_parts_example_usage \
     2894       "$ run-parts -a start /etc/init.d\n" \
     2895       "$ run-parts -a stop=now /etc/init.d\n\n" \
     2896       "Let's assume you have a script foo/dosomething:\n" \
     2897       "#!/bin/sh\n" \
     2898       "for i in $*; do eval $i; done; unset i\n" \
     2899       "case \"$1\" in\n" \
     2900       "start*) echo starting something;;\n" \
     2901       "stop*) set -x; shutdown -h $stop;;\n" \
     2902       "esac\n\n" \
     2903       "Running this yields:\n" \
     2904       "$run-parts -a stop=+4m foo/\n" \
     2905       "+ shutdown -h +4m"
    24992906
    25002907#define runlevel_trivial_usage \
    2501     "[utmp]"
     2908       "[utmp]"
    25022909#define runlevel_full_usage \
    2503     "Find the current and previous system runlevel.\n\n" \
    2504     "If no utmp file exists or if no runlevel record can be found,\n" \
    2505     "runlevel prints \"unknown\""
     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" \
     2912       "print \"unknown\""
    25062913#define runlevel_example_usage \
    2507     "$ runlevel /var/run/utmp\n" \
    2508     "N 2"
     2914       "$ runlevel /var/run/utmp\n" \
     2915       "N 2"
     2916
     2917#define runsv_trivial_usage \
     2918       "dir"
     2919#define runsv_full_usage \
     2920       "Start and monitor a service and optionally an appendant log service"
     2921
     2922#define runsvdir_trivial_usage \
     2923       "[-P] dir"
     2924#define runsvdir_full_usage \
     2925       "Start a runsv process for each subdirectory"
    25092926
    25102927#define rx_trivial_usage \
    2511     "FILE"
     2928       "FILE"
    25122929#define rx_full_usage \
    2513     "Receive a file using the xmodem protocol."
     2930       "Receive a file using the xmodem protocol"
    25142931#define rx_example_usage \
    2515     "$ rx /tmp/foo\n"
     2932       "$ rx /tmp/foo\n"
    25162933
    25172934#define sed_trivial_usage \
    2518     "[-efinr] pattern [files...]"
     2935       "[-efinr] pattern [files...]"
    25192936#define sed_full_usage \
    2520     "Options:\n" \
    2521     "\t-e script\tadd the script to the commands to be executed\n" \
    2522     "\t-f scriptfile\tadd script-file contents to the\n" \
    2523     "\t\t\tcommands to be executed\n" \
    2524     "\t-i\t\tedit files in-place\n" \
    2525     "\t-n\t\tsuppress automatic printing of pattern space\n" \
    2526     "\t-r\t\tuse extended regular expression syntax\n" \
    2527     "\n" \
    2528     "If no -e or -f is given, the first non-option argument is taken as the sed\n" \
    2529     "script to interpret. All remaining arguments are names of input files; if no\n" \
    2530     "input files are specified, then the standard input is read. Source files\n" \
    2531     "will not be modified unless -i option is given."
     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."
    25322949
    25332950#define sed_example_usage \
    2534     "$ echo \"foo\" | sed -e 's/f[a-zA-Z]o/bar/g'\n" \
    2535     "bar\n"
     2951       "$ echo \"foo\" | sed -e 's/f[a-zA-Z]o/bar/g'\n" \
     2952       "bar\n"
     2953
     2954#define selinuxenabled_trivial_usage
     2955#define selinuxenabled_full_usage
    25362956
    25372957#define seq_trivial_usage \
    2538     "[first [increment]] last"
     2958       "[first [increment]] last"
    25392959#define seq_full_usage \
    2540     "Print numbers from FIRST to LAST, in steps of INCREMENT.\n" \
    2541     "FIRST, INCREMENT default to 1\n" \
    2542     "Arguments:\n" \
    2543     "\tLAST\n" \
    2544     "\tFIRST\tLAST\n" \
    2545     "\tFIRST\tINCREMENT\tLAST"
     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"
    25462966
    25472967#define setconsole_trivial_usage \
    2548     "[-r|--reset] [DEVICE]"
     2968       "[-r|--reset] [DEVICE]"
    25492969#define setconsole_full_usage \
    2550     "Redirects system console output to DEVICE (default: /dev/tty).\n\n" \
    2551     "Options:\n" \
    2552     "\t-r\tReset output to /dev/console."
     2970       "Redirect system console output to DEVICE (default: /dev/tty)" \
     2971       "\n\nOptions:\n" \
     2972       "    -r  Reset output to /dev/console"
     2973
     2974#define setenforce_trivial_usage \
     2975       "[Enforcing | Permissive | 1 | 0]"
     2976#define setenforce_full_usage
     2977
     2978#define setfiles_trivial_usage \
     2979       "[-dnpqsvW] [-e dir]... [-o filename] [-r alt_root_path]" \
     2980    USE_FEATURE_SETFILES_CHECK_OPTION( \
     2981       " [-c policyfile] spec_file" \
     2982    ) \
     2983       " 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"
    25533002
    25543003#define setkeycodes_trivial_usage \
    2555     "SCANCODE KEYCODE ..."
     3004       "SCANCODE KEYCODE ..."
    25563005#define setkeycodes_full_usage \
    2557     "Set entries into the kernel's scancode-to-keycode map,\n" \
    2558     "allowing unusual keyboards to generate usable keycodes.\n\n" \
    2559     "SCANCODE may be either xx or e0xx (hexadecimal),\n" \
    2560     "and KEYCODE is given in decimal"
     3006       "Set entries into the kernel's scancode-to-keycode map,\n" \
     3007       "allowing unusual keyboards to generate usable keycodes.\n\n" \
     3008       "SCANCODE may be either xx or e0xx (hexadecimal),\n" \
     3009       "and KEYCODE is given in decimal"
    25613010#define setkeycodes_example_usage \
    2562     "$ setkeycodes e030 127\n"
     3011       "$ setkeycodes e030 127\n"
    25633012
    25643013#define setlogcons_trivial_usage \
    2565     "N"
     3014       "N"
    25663015#define setlogcons_full_usage \
    2567     "Redirects the kernel output to console N (0 for current)."
     3016       "Redirect the kernel output to console N (0 for current)"
    25683017
    25693018#define setsid_trivial_usage \
    2570     "program [arg ...]"
     3019       "program [arg ...]"
    25713020#define setsid_full_usage \
    2572     "Runs any program in a new session by calling setsid() before\n" \
    2573     "exec'ing the rest of its arguments. See setsid(2) for details."
     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."
    25743023
    25753024#define lash_trivial_usage \
    2576     "[FILE]...\n" \
    2577     "or: sh -c command [args]..."
     3025       "[FILE]...\n" \
     3026       "or: sh -c command [args]..."
    25783027#define lash_full_usage \
    2579     "The BusyBox LAme SHell (command interpreter)"
     3028       "The BusyBox LAme SHell (command interpreter)"
    25803029#define lash_notes_usage \
    2581     "This command does not yet have proper documentation.\n\n" \
    2582     "Use lash just as you would use any other shell. It properly handles pipes,\n" \
    2583     "redirects, job control, can be used as the shell for scripts, and has a\n" \
    2584     "sufficient set of builtins to do what is needed. It does not (yet) support\n" \
    2585     "Bourne Shell syntax. If you need things like \"if-then-else\", \"while\", and such\n" \
    2586     "use ash or bash. If you just need a very simple and extremely small shell,\n" \
    2587     "this will do the job."
     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."
    25883037
    25893038#define last_trivial_usage \
    2590     ""
     3039       ""
    25913040#define last_full_usage \
    2592     "Shows listing of the last users that logged into the system"
     3041       "Show listing of the last users that logged into the system"
    25933042
    25943043#define sha1sum_trivial_usage \
    2595     "[OPTION] [FILEs...]" \
    2596     USAGE_MD5_SHA1_SUM_CHECK("\n   or: sha1sum [OPTION] -c [FILE]")
     3044       "[OPTION] [FILEs...]" \
     3045    USE_FEATURE_MD5_SHA1_SUM_CHECK("\n   or: sha1sum [OPTION] -c [FILE]")
    25973046#define sha1sum_full_usage \
    2598     "Print" USAGE_MD5_SHA1_SUM_CHECK(" or check") " SHA1 checksums.\n\n" \
    2599     "Options:\n" \
    2600     "With no FILE, or when FILE is -, read standard input." \
    2601     USAGE_MD5_SHA1_SUM_CHECK("\n\n" \
    2602     "\t-c\tcheck SHA1 sums against given list\n" \
    2603     "\nThe following two options are useful only when verifying checksums:\n" \
    2604     "\t-s\tdon't output anything, status code shows success\n" \
    2605     "\t-w\twarn about improperly formated SHA1 checksum lines")
    2606 
    2607 #ifdef CONFIG_FEATURE_FANCY_SLEEP
    2608 #  define USAGE_FANCY_SLEEP(a) a
    2609 #  define USAGE_NOT_FANCY_SLEEP(a)
    2610 #else
    2611 #  define USAGE_FANCY_SLEEP(a)
    2612 #  define USAGE_NOT_FANCY_SLEEP(a) a
    2613 #endif
     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")
     3055
     3056#define slattach_trivial_usage \
     3057       "[-cehmLF] [-s speed] [-p protocol] DEVICEs"
     3058#define slattach_full_usage \
     3059       "Attach network interface(s) to serial line(s)\n" \
     3060     "\nOptions:" \
     3061     "\n    -p  Set protocol (slip, cslip, slip6, clisp6 or adaptive)" \
     3062     "\n    -s  Set line speed" \
     3063     "\n    -e  Exit after initializing device" \
     3064     "\n    -h  Exit when the carrier is lost" \
     3065     "\n    -c  Execute a command when the line is hung up" \
     3066     "\n    -m  Do NOT initialize the line in raw 8 bits mode" \
     3067     "\n    -L  Enable 3-wire operation" \
     3068     "\n    -F  Disable RTS/CTS flow control" \
    26143069
    26153070#define sleep_trivial_usage \
    2616     USAGE_FANCY_SLEEP("[") "N" USAGE_FANCY_SLEEP("]...")
     3071    USE_FEATURE_FANCY_SLEEP("[") "N" USE_FEATURE_FANCY_SLEEP("]...")
    26173072#define sleep_full_usage \
    2618     USAGE_NOT_FANCY_SLEEP("Pause for N seconds.") \
    2619     USAGE_FANCY_SLEEP( \
    2620     "Pause for a time equal to the total of the args given, where each arg can\n" \
    2621     "\t\thave an optional suffix of (s)econds, (m)inutes, (h)ours, or (d)ays.")
     3073    SKIP_FEATURE_FANCY_SLEEP("Pause for N seconds") \
     3074    USE_FEATURE_FANCY_SLEEP( \
     3075       "Pause for a time equal to the total of the args given, where each arg can\n" \
     3076       "have an optional suffix of (s)econds, (m)inutes, (h)ours, or (d)ays")
    26223077#define sleep_example_usage \
    2623     "$ sleep 2\n" \
    2624     "[2 second delay results]\n" \
    2625     USAGE_FANCY_SLEEP("$ sleep 1d 3h 22m 8s\n" \
    2626     "[98528 second delay results]\n")
    2627 
    2628 #if ENABLE_FEATURE_SORT_BIG
    2629 #  define USAGE_SORT_BIG(a) a
    2630 #else
    2631 #  define USAGE_SORT_BIG(a)
    2632 #endif
     3078       "$ sleep 2\n" \
     3079       "[2 second delay results]\n" \
     3080    USE_FEATURE_FANCY_SLEEP( \
     3081       "$ sleep 1d 3h 22m 8s\n" \
     3082       "[98528 second delay results]\n")
    26333083
    26343084#define sort_trivial_usage \
    2635     "[-nru" USAGE_SORT_BIG("gMcszbdfimSTokt] [-o outfile] [-k start[.offset][opts][,end[.offset][opts]] [-t char") "] [FILE]..."
     3085       "[-nru" \
     3086    USE_FEATURE_SORT_BIG("gMcszbdfimSTokt] [-o outfile] [-k start[.offset][opts][,end[.offset][opts]] [-t char") \
     3087       "] [FILE]..."
    26363088#define sort_full_usage \
    2637     "Sorts lines of text in the specified files\n\n" \
    2638     "Options:\n" \
    2639     USAGE_SORT_BIG( \
    2640         "\t-b\tignore leading blanks\n" \
    2641         "\t-c\tcheck whether input is sorted\n" \
    2642         "\t-d\tdictionary order (blank or alphanumeric only)\n" \
    2643         "\t-f\tignore case\n" \
    2644         "\t-g\tgeneral numerical sort\n" \
    2645         "\t-i\tignore unprintable characters\n" \
    2646         "\t-k\tspecify sort key\n" \
    2647         "\t-M\tsort month\n" \
    2648     ) \
    2649     "\t-n\tsort numbers\n" \
    2650     USAGE_SORT_BIG( \
    2651         "\t-o\toutput to file\n" \
    2652         "\t-k\tsort by key\n" \
    2653         "\t-t\tuse key separator other than whitespace\n" \
    2654     ) \
    2655     "\t-r\treverse sort order\n" \
    2656     USAGE_SORT_BIG("\t-s\tstable (don't sort ties alphabetically)\n") \
    2657     "\t-u\tsuppress duplicate lines" \
    2658     USAGE_SORT_BIG("\n\t-z\tinput terminated by nulls, not newlines\n") \
    2659     USAGE_SORT_BIG("\t-mST\tignored for GNU compatibility") \
    2660     ""
     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       ""
    26613114#define sort_example_usage \
    2662     "$ echo -e \"e\\nf\\nb\\nd\\nc\\na\" | sort\n" \
    2663     "a\n" \
    2664     "b\n" \
    2665     "c\n" \
    2666     "d\n" \
    2667     "e\n" \
    2668     "f\n" \
    2669     USAGE_SORT_BIG( \
     3115       "$ echo -e \"e\\nf\\nb\\nd\\nc\\na\" | sort\n" \
     3116       "a\n" \
     3117       "b\n" \
     3118       "c\n" \
     3119       "d\n" \
     3120       "e\n" \
     3121       "f\n" \
     3122    USE_FEATURE_SORT_BIG( \
    26703123        "$ echo -e \"c 3\\nb 2\\nd 2\" | $SORT -k 2,2n -k 1,1r\n" \
    26713124        "d 2\n" \
     
    26733126        "c 3\n" \
    26743127    ) \
    2675     ""
     3128       ""
     3129
     3130#define split_trivial_usage \
     3131       "[OPTION] [INPUT [PREFIX]]"
     3132#define split_full_usage \
     3133       "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"
     3137#define split_example_usage \
     3138       "$ split TODO foo\n" \
     3139       "$ cat TODO | split -a 2 -l 2 TODO_\n"
    26763140
    26773141#define start_stop_daemon_trivial_usage \
    2678     "[OPTIONS] [--start|--stop] ... [-- arguments...]"
     3142       "[OPTIONS] [--start|--stop] ... [-- arguments...]"
    26793143#define start_stop_daemon_full_usage \
    2680     "Program to start and stop services." \
    2681     "\n\nOptions:" \
    2682     "\n\t-S|--start\t\t\tstart" \
    2683     "\n\t-K|--stop\t\t\tstop" \
    2684     "\n\t-a|--startas <pathname>\t\tstarts process specified by pathname" \
    2685     "\n\t-b|--background\t\t\tforce process into background" \
    2686     "\n\t-u|--user <username>|<uid>\tstop this user's processes" \
    2687     "\n\t-x|--exec <executable>\t\tprogram to either start or check" \
    2688     "\n\t-m|--make-pidfile <filename>\tcreate the -p file and enter pid in it" \
    2689     "\n\t-n|--name <process-name>\tstop processes with this name" \
    2690     "\n\t-p|--pidfile <pid-file>\t\tsave or load pid using a pid-file" \
    2691     "\n\t-q|--quiet\t\t\tbe quiet" \
    2692 USE_FEATURE_START_STOP_DAEMON_FANCY( \
    2693     "\n\t-o|--oknodo\t\t\texit status 0 if nothing done" \
    2694     "\n\t-v|--verbose\t\t\tbe verbose" \
    2695 ) \
    2696     "\n\t-s|--signal <signal>\t\tsignal to send (default TERM)"
    2697 
    2698 #ifdef CONFIG_FEATURE_STAT_FORMAT
    2699 #  define USAGE_STAT_FORMAT(a) a
    2700 #else
    2701 #  define USAGE_STAT_FORMAT(a)
    2702 #endif
     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"
     3163
    27033164#define stat_trivial_usage \
    2704     "[OPTION] FILE..."
     3165       "[OPTION] FILE..."
    27053166#define stat_full_usage \
    2706     "display file (default) or filesystem status.\n\n" \
    2707     "Options:\n" \
    2708     USAGE_STAT_FORMAT("\t-c fmt\tuse the specified format\n") \
    2709     "\t-f\tdisplay filesystem status\n" \
    2710     "\t-L,-l\tdereference links\n" \
    2711     "\t-t\tdisplay info in terse form\n" \
    2712     USAGE_STAT_FORMAT( \
    2713     "\nValid format sequences for files:\n" \
    2714     "  %a   Access rights in octal\n" \
    2715     "  %A   Access rights in human readable form\n" \
    2716     "  %b   Number of blocks allocated (see %B)\n" \
    2717     "  %B   The size in bytes of each block reported by %b\n" \
    2718     "  %d   Device number in decimal\n" \
    2719     "  %D   Device number in hex\n" \
    2720     "  %f   Raw mode in hex\n" \
    2721     "  %F   File type\n" \
    2722     "  %g   Group ID of owner\n" \
    2723     "  %G   Group name of owner\n" \
    2724     "  %h   Number of hard links\n" \
    2725     "  %i   Inode number\n" \
    2726     "  %n   File name\n" \
    2727     "  %N   Quoted file name with dereference if symbolic link\n" \
    2728     "  %o   I/O block size\n" \
    2729     "  %s   Total size, in bytes\n" \
    2730     "  %t   Major device type in hex\n" \
    2731     "  %T   Minor device type in hex\n" \
    2732     "  %u   User ID of owner\n" \
    2733     "  %U   User name of owner\n" \
    2734     "  %x   Time of last access\n" \
    2735     "  %X   Time of last access as seconds since Epoch\n" \
    2736     "  %y   Time of last modification\n" \
    2737     "  %Y   Time of last modification as seconds since Epoch\n" \
    2738     "  %z   Time of last change\n" \
    2739     "  %Z   Time of last change as seconds since Epoch\n" \
    2740     "\nValid format sequences for file systems:\n" \
    2741     "  %a   Free blocks available to non-superuser\n" \
    2742     "  %b   Total data blocks in file system\n" \
    2743     "  %c   Total file nodes in file system\n" \
    2744     "  %d   Free file nodes in file system\n" \
    2745     "  %f   Free blocks in file system\n" \
    2746     "  %i   File System ID in hex\n" \
    2747     "  %l   Maximum length of filenames\n" \
    2748     "  %n   File name\n" \
    2749     "  %s   Block size (for faster transfers)\n" \
    2750     "  %S   Fundamental block size (for block counts)\n" \
    2751     "  %t   Type in hex\n" \
    2752     "  %T   Type in human readable form\n" \
     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( \
     3178       "\n\nValid format sequences for files:\n" \
     3179       " %a Access rights in octal\n" \
     3180       " %A Access rights in human readable form\n" \
     3181       " %b Number of blocks allocated (see %B)\n" \
     3182       " %B The size in bytes of each block reported by %b\n" \
     3183       " %d Device number in decimal\n" \
     3184       " %D Device number in hex\n" \
     3185       " %f Raw mode in hex\n" \
     3186       " %F File type\n" \
     3187       " %g Group ID of owner\n" \
     3188       " %G Group name of owner\n" \
     3189       " %h Number of hard links\n" \
     3190       " %i Inode number\n" \
     3191       " %n File name\n" \
     3192       " %N Quoted file name with dereference if symlink\n" \
     3193       " %o I/O block size\n" \
     3194       " %s Total size, in bytes\n" \
     3195       " %t Major device type in hex\n" \
     3196       " %T Minor device type in hex\n" \
     3197       " %u User ID of owner\n" \
     3198       " %U User name of owner\n" \
     3199       " %x Time of last access\n" \
     3200       " %X Time of last access as seconds since Epoch\n" \
     3201       " %y Time of last modification\n" \
     3202       " %Y Time of last modification as seconds since Epoch\n" \
     3203       " %z Time of last change\n" \
     3204       " %Z Time of last change as seconds since Epoch\n" \
     3205       "\nValid format sequences for file systems:\n" \
     3206       " %a Free blocks available to non-superuser\n" \
     3207       " %b Total data blocks in file system\n" \
     3208       " %c Total file nodes in file system\n" \
     3209       " %d Free file nodes in file system\n" \
     3210       " %f Free blocks in file system\n" \
     3211    USE_SELINUX( \
     3212       " %C Security context in SELinux\n" \
     3213    ) \
     3214       " %i File System ID in hex\n" \
     3215       " %l Maximum length of filenames\n" \
     3216       " %n File name\n" \
     3217       " %s Block size (for faster transfer)\n" \
     3218       " %S Fundamental block size (for block counts)\n" \
     3219       " %t Type in hex\n" \
     3220       " %T Type in human readable form" \
    27533221    )
    27543222
    27553223#define strings_trivial_usage \
    2756     "[-afo] [-n length] [file ... ]"
     3224       "[-afo] [-n length] [file ...]"
    27573225#define strings_full_usage \
    2758     "Display printable strings in a binary file." \
    2759     "\n\nOptions:" \
    2760     "\n\t-a\tScan the whole files (this is the default)." \
    2761     "\n\t-f\tPrecede each string with the name of the file where it was found." \
    2762     "\n\t-n N\tSpecifies that at least N characters forms a sequence (default 4)" \
    2763     "\n\t-o\tEach string is preceded by its decimal offset in the file"
     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"
    27643232
    27653233#define stty_trivial_usage \
    2766     "[-a|g] [-F DEVICE] [SETTING]..."
     3234       "[-a|g] [-F DEVICE] [SETTING]..."
    27673235#define stty_full_usage \
    2768     "Without arguments, prints baud rate, line discipline," \
    2769     "\nand deviations from stty sane." \
    2770     "\n\nOptions:" \
    2771     "\n\t-F DEVICE\topen device instead of stdin" \
    2772     "\n\t-a\t\tprint all current settings in human-readable form" \
    2773     "\n\t-g\t\tprint in stty-readable form" \
    2774     "\n\t[SETTING]\tsee manpage"
     3236       "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"
    27753243
    27763244#define su_trivial_usage \
    2777     "[OPTION]... [-] [username]"
     3245       "[OPTION]... [-] [username]"
    27783246#define su_full_usage \
    2779     "Change user id or become root.\n" \
    2780     "Options:\n" \
    2781     "\t-p, -m\tPreserve environment" \
    2782     "\n\t-c\tCommand to pass to 'sh -c'" \
    2783     "\n\t-s\tShell to use instead of default shell"
     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"
    27843252
    27853253#define sulogin_trivial_usage \
    2786     "[OPTION]... [tty-device]"
     3254       "[OPTION]... [tty-device]"
    27873255#define sulogin_full_usage \
    2788     "Single user login\n" \
    2789     "Options:\n" \
    2790     "\t-f\tDo not authenticate (user already authenticated)\n" \
    2791     "\t-h\tName of the remote host for this login\n" \
    2792     "\t-p\tPreserve environment"
     3256       "Single user login" \
     3257       "\n\nOptions:" \
     3258       "\n  -t  Timeout"
    27933259
    27943260#define sum_trivial_usage \
    2795     "[rs] [files...]"
     3261       "[rs] [files...]"
    27963262#define sum_full_usage \
    2797     "checksum and count the blocks in a file\n\n" \
    2798     "Options:\n" \
    2799     "\t-r\tuse BSD sum algorithm (1K blocks)\n" \
    2800     "\t-s\tuse System V sum algorithm (512byte blocks)"
     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)"
     3267
     3268#define sv_trivial_usage \
     3269       "[-v] [-w sec] command service..."
     3270#define sv_full_usage \
     3271       "Control services monitored by runsv supervisor.\n" \
     3272       "Commands (only first character is enough):\n" \
     3273       "\n" \
     3274       "status: query service status\n" \
     3275       "up: if service isn't running, start it. If service stops, restart it\n" \
     3276       "once: like 'up', but if service stops, don't restart it\n" \
     3277       "down: send TERM and CONT signals. If ./run exits, start ./finish\n" \
     3278       "    if it exists. After it stops, do not restart service\n" \
     3279       "exit: send TERM and CONT signals to service and log service. If they exit,\n" \
     3280       "    runsv exits too\n" \
     3281       "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"
     3283
     3284#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"
    28013290
    28023291#define swapoff_trivial_usage \
    2803     "[-a] [DEVICE]"
     3292       "[-a] [DEVICE]"
    28043293#define swapoff_full_usage \
    2805     "Stop swapping virtual memory pages on DEVICE.\n\n" \
    2806     "Options:\n" \
    2807     "\t-a\tStop swapping on all swap devices"
     3294       "Stop swapping virtual memory pages on DEVICE" \
     3295       "\n\nOptions:\n" \
     3296       "    -a  Stop swapping on all swap devices"
    28083297
    28093298#define swapon_trivial_usage \
    2810     "[-a] [DEVICE]"
     3299       "[-a] [DEVICE]"
    28113300#define swapon_full_usage \
    2812     "Start swapping virtual memory pages on DEVICE.\n\n" \
    2813     "Options:\n" \
    2814     "\t-a\tStart swapping on all swap devices"
     3301       "Start swapping virtual memory pages on DEVICE" \
     3302       "\n\nOptions:\n" \
     3303       "    -a  Start swapping on all swap devices"
    28153304
    28163305#define switch_root_trivial_usage \
    2817     "[-c /dev/console] NEW_ROOT NEW_INIT [ARGUMENTS_TO_INIT]"
     3306       "[-c /dev/console] NEW_ROOT NEW_INIT [ARGUMENTS_TO_INIT]"
    28183307#define switch_root_full_usage \
    2819     "Use from PID 1 under initramfs to free initramfs, chroot to NEW_ROOT,\n" \
    2820     "and exec NEW_INIT.\n\n" \
    2821     "Options:\n" \
    2822     "\t-c\tRedirect console to device on new root"
     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"
    28233312
    28243313#define sync_trivial_usage \
    2825     ""
     3314       ""
    28263315#define sync_full_usage \
    2827     "Write all buffered filesystem blocks to disk."
    2828 
    2829 
    2830 #ifdef CONFIG_FEATURE_ROTATE_LOGFILE
    2831 #  define USAGE_ROTATE_LOGFILE(a) a
    2832 #else
    2833 #  define USAGE_ROTATE_LOGFILE(a)
    2834 #endif
    2835 #ifdef CONFIG_FEATURE_REMOTE_LOG
    2836 #  define USAGE_REMOTE_LOG(a) a
    2837 #else
    2838 #  define USAGE_REMOTE_LOG(a)
    2839 #endif
    2840 #ifdef CONFIG_FEATURE_IPC_SYSLOG
    2841 #  define USAGE_IPC_LOG(a) a
    2842 #else
    2843 #  define USAGE_IPC_LOG(a)
    2844 #endif
     3316       "Write all buffered filesystem blocks to disk"
    28453317
    28463318#define sysctl_trivial_usage \
    2847     "[OPTIONS]... [VALUE]..."
     3319       "[OPTIONS]... [VALUE]..."
    28483320#define sysctl_full_usage \
    2849     "configure kernel parameters at runtime\n\n" \
    2850     "Options:\n" \
    2851     "\t-n\tUse this option to disable printing of the key name when printing values\n" \
    2852     "\t-w\tUse this option when you want to change a sysctl setting\n" \
    2853     "\t-p\tLoad in sysctl settings from the file specified or /etc/sysctl.conf if none given\n" \
    2854     "\t-a\tDisplay all values currently available\n" \
    2855     "\t-A\tDisplay all values currently available in table form"
     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"
    28563328#define sysctl_example_usage \
    2857     "sysctl [-n] variable ...\n" \
    2858     "sysctl [-n] -w variable=value ...\n" \
    2859     "sysctl [-n] -a\n" \
    2860     "sysctl [-n] -p <file>\t(default /etc/sysctl.conf)\n" \
    2861     "sysctl [-n] -A\n"
     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"
    28623334
    28633335#define syslogd_trivial_usage \
    2864     "[OPTION]..."
     3336       "[OPTION]..."
    28653337#define syslogd_full_usage \
    2866     "Linux system and kernel logging utility.\n" \
    2867     "Note that this version of syslogd ignores /etc/syslog.conf.\n\n" \
    2868     "Options:\n" \
    2869     "\t-m MIN\t\tMinutes between MARK lines (default=20, 0=off)\n" \
    2870     "\t-n\t\tRun as a foreground process\n" \
    2871     "\t-O FILE\t\tUse an alternate log file (default=/var/log/messages)\n" \
    2872     "\t-S\t\tMake logging output smaller." \
    2873     USAGE_ROTATE_LOGFILE( \
    2874     "\n\t-s SIZE\t\tMax size (KB) before rotate (default=200KB, 0=off)\n" \
    2875     "\t-b NUM\t\tNumber of rotated logs to keep (default=1, max=99, 0=purge)") \
    2876     USAGE_REMOTE_LOG( \
    2877     "\n\t-R HOST[:PORT]\tLog to IP or hostname on PORT (default PORT=514/UDP)\n" \
    2878     "\t-L\t\tLog locally and via network logging (default is network only)") \
    2879     USAGE_IPC_LOG( \
    2880     "\n\t-C [size(KiB)]\tLog to a circular buffer (read the buffer using logread)")
     3338       "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)")
     3353    /* NB: -Csize shouldn't have space (because size is optional) */
     3354/*     "\n  -m MIN      Minutes between MARK lines (default=20, 0=off)" */
    28813355#define syslogd_example_usage \
    2882     "$ syslogd -R masterlog:514\n" \
    2883     "$ syslogd -R 192.168.1.1:601\n"
    2884 
    2885 
    2886 #ifndef CONFIG_FEATURE_FANCY_TAIL
    2887 #  define USAGE_UNSIMPLE_TAIL(a)
    2888 #else
    2889 #  define USAGE_UNSIMPLE_TAIL(a) a
    2890 #endif
     3356       "$ syslogd -R masterlog:514\n" \
     3357       "$ syslogd -R 192.168.1.1:601\n"
     3358
    28913359#define tail_trivial_usage \
    2892     "[OPTION]... [FILE]..."
     3360       "[OPTION]... [FILE]..."
    28933361#define tail_full_usage \
    2894     "Print last 10 lines of each FILE to standard output.\n" \
    2895     "With more than one FILE, precede each with a header giving the\n" \
    2896     "file name. With no FILE, or when FILE is -, read standard input.\n\n" \
    2897     "Options:\n" \
    2898     USAGE_UNSIMPLE_TAIL("\t-c N[kbm]\toutput the last N bytes\n") \
    2899     "\t-n N[kbm]\tprint last N lines instead of last 10\n" \
    2900     "\t-f\t\toutput data as the file grows" \
    2901     USAGE_UNSIMPLE_TAIL( "\n\t-q\t\tnever output headers giving file names\n" \
    2902     "\t-s SEC\t\twait SEC seconds between reads with -f\n" \
    2903     "\t-v\t\talways output headers giving file names\n\n" \
    2904     "If the first character of N (bytes or lines) is a '+', output begins with \n" \
    2905     "the Nth item from the start of each file, otherwise, print the last N items\n" \
    2906     "in the file. N bytes may be suffixed by k (x1024), b (x512), or m (1024^2)." )
     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)." )
    29073378#define tail_example_usage \
    2908     "$ tail -n 1 /etc/resolv.conf\n" \
    2909     "nameserver 10.0.0.1\n"
    2910 
    2911 #ifdef CONFIG_FEATURE_TAR_CREATE
    2912 #  define USAGE_TAR_CREATE(a) a
    2913 #else
    2914 #  define USAGE_TAR_CREATE(a)
    2915 #endif
    2916 #ifdef CONFIG_FEATURE_TAR_EXCLUDE
    2917 #  define USAGE_TAR_EXCLUDE(a) a
    2918 #else
    2919 #  define USAGE_TAR_EXCLUDE(a)
    2920 #endif
    2921 #ifdef CONFIG_FEATURE_TAR_GZIP
    2922 #  define USAGE_TAR_GZIP(a) a
    2923 #else
    2924 #  define USAGE_TAR_GZIP(a)
    2925 #endif
    2926 #ifdef CONFIG_FEATURE_TAR_BZIP2
    2927 #  define USAGE_TAR_BZIP2(a) a
    2928 #else
    2929 #  define USAGE_TAR_BZIP2(a)
    2930 #endif
    2931 #ifdef CONFIG_FEATURE_TAR_LZMA
    2932 #  define USAGE_TAR_LZMA(a) a
    2933 #else
    2934 #  define USAGE_TAR_LZMA(a)
    2935 #endif
    2936 #ifdef CONFIG_FEATURE_TAR_COMPRESS
    2937 #  define USAGE_TAR_COMPRESS(a) a
    2938 #else
    2939 #  define USAGE_TAR_COMPRESS(a)
    2940 #endif
     3379       "$ tail -n 1 /etc/resolv.conf\n" \
     3380       "nameserver 10.0.0.1\n"
    29413381
    29423382#define tar_trivial_usage \
    2943     "-[" USAGE_TAR_CREATE("c") USAGE_TAR_GZIP("z") USAGE_TAR_BZIP2("j") USAGE_TAR_LZMA("a") USAGE_TAR_COMPRESS("Z") "xtvO] " \
    2944     USAGE_TAR_EXCLUDE("[-X FILE]") \
    2945     "[-f TARFILE] [-C DIR] [FILE(s)] ..."
     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)] ..."
    29463388#define tar_full_usage \
    2947     "Create, extract, or list files from a tar file.\n\n" \
    2948     "Options:\n" \
    2949     USAGE_TAR_CREATE("\tc\t\tcreate\n") \
    2950     "\tx\t\textract\n" \
    2951     "\tt\t\tlist\n" \
    2952     "\nArchive format selection:\n" \
    2953     USAGE_TAR_GZIP("\tz\t\tFilter the archive through gzip\n") \
    2954     USAGE_TAR_BZIP2("\tj\t\tFilter the archive through bzip2\n") \
    2955     USAGE_TAR_LZMA("\ta\t\tFilter the archive through lzma\n") \
    2956     USAGE_TAR_COMPRESS("\tZ\t\tFilter the archive through compress\n") \
    2957     "\nFile selection:\n" \
    2958     "\tf\t\tname of TARFILE or \"-\" for stdin\n" \
    2959     "\tO\t\textract to stdout\n" \
    2960     USAGE_TAR_EXCLUDE( \
    2961     "\texclude\t\tfile to exclude\n" \
    2962      "\tX\t\tfile with names to exclude\n" \
    2963     ) \
    2964     "\tC\t\tchange to directory DIR before operation\n" \
    2965     "\tv\t\tverbosely list files processed"
     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"
    29663412#define tar_example_usage \
    2967     "$ zcat /tmp/tarball.tar.gz | tar -xf -\n" \
    2968     "$ tar -cf /tmp/tarball.tar /usr/local\n"
     3413       "$ zcat /tmp/tarball.tar.gz | tar -xf -\n" \
     3414       "$ tar -cf /tmp/tarball.tar /usr/local\n"
     3415
     3416#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"
     3422#define taskset_example_usage \
     3423       "$ taskset 0x7 ./dgemm_test&\n" \
     3424       "$ taskset -p 0x1 $!\n" \
     3425       "pid 4790's current affinity mask: 7\n" \
     3426       "pid 4790's new affinity mask: 1\n" \
     3427       "$ taskset 0x7 /bin/sh -c './taskset -p 0x1 $$'\n" \
     3428       "pid 6671's current affinity mask: 1\n" \
     3429       "pid 6671's new affinity mask: 1\n" \
     3430       "$ taskset -p 1\n" \
     3431       "pid 1's current affinity mask: 3\n"
    29693432
    29703433#define tee_trivial_usage \
    2971     "[OPTION]... [FILE]..."
     3434       "[OPTION]... [FILE]..."
    29723435#define tee_full_usage \
    2973     "Copy standard input to each FILE, and also to standard output.\n\n" \
    2974     "Options:\n" \
    2975     "\t-a\tappend to the given FILEs, do not overwrite\n" \
    2976     "\t-i\tignore interrupt signals (SIGINT)"
     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)"
    29773440#define tee_example_usage \
    2978     "$ echo \"Hello\" | tee /tmp/foo\n" \
    2979     "$ cat /tmp/foo\n" \
    2980     "Hello\n"
    2981 
    2982 #ifdef CONFIG_FEATURE_TELNET_AUTOLOGIN
     3441       "$ echo \"Hello\" | tee /tmp/foo\n" \
     3442       "$ cat /tmp/foo\n" \
     3443       "Hello\n"
     3444
     3445#if ENABLE_FEATURE_TELNET_AUTOLOGIN
    29833446#define telnet_trivial_usage \
    2984     "[-a] [-l USER] HOST [PORT]"
     3447       "[-a] [-l USER] HOST [PORT]"
    29853448#define telnet_full_usage \
    2986     "Telnet is used to establish interactive communication with another\n" \
    2987     "computer over a network using the TELNET protocol.\n\n" \
    2988     "Options:\n" \
    2989     "\t-a\t\tAttempt an automatic login with the USER variable\n" \
    2990     "\t-l USER\t\tAttempt an automatic login with the USER argument\n" \
    2991     "\tHOST\t\tThe official name, alias or the IP address of the\n" \
    2992     "\t\t\tremote host.\n" \
    2993     "\tPORT\t\tThe remote port number to connect to.  If it is not\n" \
    2994     "\t\t\tspecified, the default telnet (23) port is used."
     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."
    29953457#else
    29963458#define telnet_trivial_usage \
    2997     "HOST [PORT]"
     3459       "HOST [PORT]"
    29983460#define telnet_full_usage \
    2999     "Telnet is used to establish interactive communication with another\n" \
    3000     "computer over a network using the TELNET protocol."
     3461       "Connect to remote telnet server"
    30013462#endif
    30023463
    3003 #ifdef CONFIG_FEATURE_TELNETD_INETD
    30043464#define telnetd_trivial_usage \
    3005     "(inetd mode) [OPTION]"
     3465       "[OPTION]"
    30063466#define telnetd_full_usage \
    3007     "Telnetd uses incoming TELNET connections via inetd.\n" \
    3008     "Options:\n" \
    3009     "\t-l LOGIN\texec LOGIN on connect (default /bin/sh)\n" \
    3010     "\t-f issue_file\tDisplay issue_file instead of /etc/issue"
    3011 #else
    3012 #define telnetd_trivial_usage \
    3013     "[OPTION]"
    3014 #define telnetd_full_usage \
    3015     "Telnetd listens for incoming TELNET connections on PORT.\n" \
    3016     "Options:\n" \
    3017     "\t-p PORT\tlisten for connections on PORT (default 23)\n" \
    3018     "\t-l LOGIN\texec LOGIN on connect (default /bin/sh)\n" \
    3019     "\t-f issue_file\tDisplay issue_file instead of /etc/issue"
    3020 #endif
     3467       "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" \
     3477    )
    30213478
    30223479#define test_trivial_usage \
    3023     "EXPRESSION\n  or   [ EXPRESSION ]"
     3480       "EXPRESSION\n  or   [ EXPRESSION ]"
    30243481#define test_full_usage \
    3025     "Checks file types and compares values returning an exit\n" \
    3026     "code determined by the value of EXPRESSION."
     3482       "Check file types and compares values returning an exit code\n" \
     3483       "determined by the value of EXPRESSION"
    30273484#define test_example_usage \
    3028     "$ test 1 -eq 2\n" \
    3029     "$ echo $?\n" \
    3030     "1\n" \
    3031     "$ test 1 -eq 1\n" \
    3032     "$ echo $?\n" \
    3033     "0\n" \
    3034     "$ [ -d /etc ]\n" \
    3035     "$ echo $?\n" \
    3036     "0\n" \
    3037     "$ [ -d /junk ]\n" \
    3038     "$ echo $?\n" \
    3039     "1\n"
    3040 
    3041 #ifdef CONFIG_FEATURE_TFTP_GET
    3042 #  define USAGE_TFTP_GET(a) a
    3043 #else
    3044 #  define USAGE_TFTP_GET(a)
    3045 #endif
    3046 #ifdef CONFIG_FEATURE_TFTP_PUT
    3047 #  define USAGE_TFTP_PUT(a) a
    3048 #else
    3049 #  define USAGE_TFTP_PUT(a)
    3050 #endif
    3051 #ifdef CONFIG_FEATURE_TFTP_BLOCKSIZE
    3052 #  define USAGE_TFTP_BS(a) a
    3053 #else
    3054 #  define USAGE_TFTP_BS(a)
    3055 #endif
     3485       "$ test 1 -eq 2\n" \
     3486       "$ echo $?\n" \
     3487       "1\n" \
     3488       "$ test 1 -eq 1\n" \
     3489       "$ echo $?\n" \
     3490       "0\n" \
     3491       "$ [ -d /etc ]\n" \
     3492       "$ echo $?\n" \
     3493       "0\n" \
     3494       "$ [ -d /junk ]\n" \
     3495       "$ echo $?\n" \
     3496       "1\n"
     3497
     3498#define tcpsvd_trivial_usage \
     3499       "[-hEv] [-c n] [-C n:msg] [-b n] [-u user] [-l name] ip port prog..."
     3500/* 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"
     3519
     3520#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"
    30563536
    30573537#define tftp_trivial_usage \
    3058     "[OPTION]... HOST [PORT]"
     3538       "[OPTION]... HOST [PORT]"
    30593539#define tftp_full_usage \
    3060     "Transfers a file from/to a tftp server using \"octet\" mode.\n\n" \
    3061     "Options:\n" \
    3062     "\t-l FILE\tLocal FILE\n" \
    3063     "\t-r FILE\tRemote FILE" \
    3064     USAGE_TFTP_GET( \
    3065     "\n\t-g\tGet file" \
     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" \
    30663546    ) \
    3067     USAGE_TFTP_PUT( \
    3068     "\n\t-p\tPut file" \
     3547    USE_FEATURE_TFTP_PUT( \
     3548       "\n  -p  Put file" \
    30693549    ) \
    3070     USAGE_TFTP_BS( \
    3071     "\n\t-b SIZE\tTransfer blocks of SIZE octets" \
     3550    USE_FEATURE_TFTP_BLOCKSIZE( \
     3551       "\n  -b SIZE Transfer blocks of SIZE octets" \
    30723552    )
    30733553#define time_trivial_usage \
    3074     "[OPTION]... COMMAND [ARGS...]"
     3554       "[OPTION]... COMMAND [ARGS...]"
    30753555#define time_full_usage \
    3076     "Runs the program COMMAND with arguments ARGS. When COMMAND finishes,\n" \
    3077     "COMMAND's resource usage information is displayed\n\n" \
    3078     "Options:\n" \
    3079     "\t-v\tDisplays verbose resource usage information"
     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"
    30803560
    30813561#define top_trivial_usage \
    3082     "[-d <seconds>]"
     3562       "[-b] [-n count] [-d seconds]"
    30833563#define top_full_usage \
    3084     "top provides an view of processor activity in real time.\n" \
    3085     "This utility reads the status for all processes in /proc each <seconds>\n" \
    3086     "and shows the status for however many processes will fit on the screen.\n" \
    3087     "This utility will not show processes that are started after program startup,\n" \
    3088     "but it will show the EXIT status for and PIDs that exit while it is running."
     3564       "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."
    30893567
    30903568#define touch_trivial_usage \
    3091     "[-c] FILE [FILE ...]"
     3569       "[-c] FILE [FILE ...]"
    30923570#define touch_full_usage \
    3093     "Update the last-modified date on the given FILE[s].\n\n" \
    3094     "Options:\n" \
    3095     "\t-c\tDo not create any files"
     3571       "Update the last-modified date on the given FILE[s]" \
     3572       "\n\nOptions:\n" \
     3573       "    -c  Do not create any files"
    30963574#define touch_example_usage \
    3097     "$ ls -l /tmp/foo\n" \
    3098     "/bin/ls: /tmp/foo: No such file or directory\n" \
    3099     "$ touch /tmp/foo\n" \
    3100     "$ ls -l /tmp/foo\n" \
    3101     "-rw-rw-r--    1 andersen andersen        0 Apr 15 01:11 /tmp/foo\n"
     3575       "$ ls -l /tmp/foo\n" \
     3576       "/bin/ls: /tmp/foo: No such file or directory\n" \
     3577       "$ touch /tmp/foo\n" \
     3578       "$ ls -l /tmp/foo\n" \
     3579       "-rw-rw-r--    1 andersen andersen        0 Apr 15 01:11 /tmp/foo\n"
    31023580
    31033581#define tr_trivial_usage \
    3104     "[-cds] STRING1 [STRING2]"
     3582       "[-cds] STRING1 [STRING2]"
    31053583#define tr_full_usage \
    3106     "Translate, squeeze, and/or delete characters from\n" \
    3107     "standard input, writing to standard output.\n\n" \
    3108     "Options:\n" \
    3109     "\t-c\ttake complement of STRING1\n" \
    3110     "\t-d\tdelete input characters coded STRING1\n" \
    3111     "\t-s\tsqueeze multiple output characters of STRING2 into one character"
     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"
    31123590#define tr_example_usage \
    3113     "$ echo \"gdkkn vnqkc\" | tr [a-y] [b-z]\n" \
    3114     "hello world\n"
     3591       "$ echo \"gdkkn vnqkc\" | tr [a-y] [b-z]\n" \
     3592       "hello world\n"
    31153593
    31163594#define traceroute_trivial_usage \
    3117     "[-FIldnrv] [-f 1st_ttl] [-m max_ttl] [-p port#] [-q nqueries]\n" \
    3118     "\t[-s src_addr] [-t tos] [-w wait] [-g gateway] [-i iface]\n" \
    3119     "\t[-z pausemsecs] host [data size]"
     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]"
    31203598#define traceroute_full_usage \
    3121     "trace the route ip packets follow going to \"host\"\n" \
    3122     "Options:\n" \
    3123     "\t-F\tSet the don't fragment bit\n" \
    3124     "\t-I\tUse ICMP ECHO instead of UDP datagrams\n" \
    3125     "\t-l\tDisplay the ttl value of the returned packet\n" \
    3126     "\t-d\tSet SO_DEBUG options to socket\n" \
    3127     "\t-n\tPrint hop addresses numerically rather than symbolically\n" \
    3128     "\t-r\tBypass the normal routing tables and send directly to a host\n" \
    3129     "\t-v\tVerbose output\n" \
    3130     "\t-m max_ttl\tSet the max time-to-live (max number of hops)\n" \
    3131     "\t-p port#\tSet the base UDP port number used in probes\n" \
    3132     "\t\t(default is 33434)\n" \
    3133     "\t-q nqueries\tSet the number of probes per ``ttl'' to nqueries\n" \
    3134     "\t\t(default is 3)\n" \
    3135     "\t-s src_addr\tUse the following IP address as the source address\n" \
    3136     "\t-t tos\tSet the type-of-service in probe packets to the following value\n" \
    3137     "\t\t(default 0)\n" \
    3138     "\t-w wait\tSet the time (in seconds) to wait for a response to a probe\n" \
    3139     "\t\t(default 3 sec)\n" \
    3140     "\t-g\tSpecify a loose source route gateway (8 maximum)"
     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)"
    31413617
    31423618
    31433619#define true_trivial_usage \
    3144     ""
     3620       ""
    31453621#define true_full_usage \
    3146     "Return an exit code of TRUE (0)."
     3622       "Return an exit code of TRUE (0)"
    31473623#define true_example_usage \
    3148     "$ true\n" \
    3149     "$ echo $?\n" \
    3150     "0\n"
     3624       "$ true\n" \
     3625       "$ echo $?\n" \
     3626       "0\n"
    31513627
    31523628#define tty_trivial_usage \
    3153     ""
     3629       ""
    31543630#define tty_full_usage \
    3155     "Print the file name of the terminal connected to standard input.\n\n" \
    3156     "Options:\n" \
    3157     "\t-s\tprint nothing, only return an exit status"
     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")
    31583635#define tty_example_usage \
    3159     "$ tty\n" \
    3160     "/dev/tty2\n"
     3636       "$ tty\n" \
     3637       "/dev/tty2\n"
     3638
     3639#define ttysize_trivial_usage \
     3640       "[w] [h]"
     3641#define ttysize_full_usage \
     3642       "Print dimension(s) of standard input's terminal, on error return 80x25"
    31613643
    31623644#define tune2fs_trivial_usage \
    3163     "[-c max-mounts-count] [-e errors-behavior] [-g group] " \
    3164     "[-i interval[d|m|w]] [-j] [-J journal-options] [-l] [-s sparse-flag] " \
    3165     "[-m reserved-blocks-percent] [-o [^]mount-options[,...]] " \
    3166     "[-r reserved-blocks-count] [-u user] [-C mount-count] " \
    3167     "[-L volume-label] [-M last-mounted-dir] [-O [^]feature[,...]] " \
    3168     "[-T last-check-time] [-U UUID] device"
     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"
    31693651#define tune2fs_full_usage \
    3170     "Adjust filesystem options on ext[23] filesystems."
     3652       "Adjust filesystem options on ext[23] filesystems"
    31713653
    31723654#define udhcpc_trivial_usage \
    3173     "[-Cfbnqtv] [-c CID] [-V VCLS] [-H HOSTNAME] [-i INTERFACE]\n[-p pidfile] [-r IP] [-s script]"
     3655       "[-Cfbnqtv] [-c CID] [-V VCLS] [-H HOSTNAME] [-i INTERFACE]\n" \
     3656       "    [-p pidfile] [-r IP] [-s script]"
    31743657#define udhcpc_full_usage \
    3175     "\t-c,\t--clientid=CLIENTID\tSet client identifier\n" \
    3176     "\t-C,\t--clientid-none\tSuppress default client identifier\n" \
    3177     "\t-V,\t--vendorclass=CLASSID\tSet vendor class identifier\n" \
    3178     "\t-H,\t--hostname=HOSTNAME\tClient hostname\n" \
    3179     "\t-h,\t                   \tAlias for -H\n" \
    3180     "\t-f,\t--foreground\tDo not fork after getting lease\n" \
    3181     "\t-b,\t--background\tFork to background if lease cannot be immediately negotiated\n" \
    3182     "\t-i,\t--interface=INTERFACE\tInterface to use (default: eth0)\n" \
    3183     "\t-n,\t--now\tExit with failure if lease cannot be immediately negotiated\n" \
    3184     "\t-p,\t--pidfile=file\tStore process ID of daemon in file\n" \
    3185     "\t-q,\t--quit\tQuit after obtaining lease\n" \
    3186     "\t-r,\t--request=IP\tIP address to request (default: none)\n" \
    3187     "\t-s,\t--script=file\tRun file at dhcp events (default: /usr/share/udhcpc/default.script)\n" \
    3188     "\t-t,\t--retries=NUM\tSend up to NUM request packets\n"\
    3189     "\t-v,\t--version\tDisplay version"
     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" \
    31903674
    31913675#define udhcpd_trivial_usage \
    3192     "[configfile]\n" \
     3676       "[-fS] [configfile]" \
    31933677
    31943678#define udhcpd_full_usage \
    3195     ""
    3196 
    3197 #ifdef CONFIG_FEATURE_MOUNT_FORCE
    3198 #  define USAGE_MOUNT_FORCE(a) a
    3199 #else
    3200 #  define USAGE_MOUNT_FORCE(a)
    3201 #endif
     3679       "DHCP server" \
     3680       "\n  -f  Stay in foreground" \
     3681       "\n  -S  Log to syslog too"
     3682
    32023683#define umount_trivial_usage \
    3203     "[flags] FILESYSTEM|DIRECTORY"
     3684       "[flags] FILESYSTEM|DIRECTORY"
    32043685#define umount_full_usage \
    3205     "Unmount file systems\n" \
    3206     "\nFlags:\n" "\t-a\tUnmount all file systems" \
    3207     USAGE_MTAB(" in /etc/mtab\n\t-n\tDon't erase /etc/mtab entries") \
    3208     "\n\t-r\tTry to remount devices as read-only if mount is busy" \
    3209     "\n\t-l\tLazy umount (detach filesystem)" \
    3210     "\n\t-f\tForce umount (i.e., unreachable NFS server)" \
    3211     USAGE_MOUNT_LOOP("\n\t-D\tDo not free loop device (if a loop device has been used)")
     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)")
    32123697#define umount_example_usage \
    3213     "$ umount /dev/hdc1 \n"
     3698       "$ umount /dev/hdc1\n"
    32143699
    32153700#define uname_trivial_usage \
    3216     "[OPTION]..."
     3701       "[OPTION]..."
    32173702#define uname_full_usage \
    3218     "Print certain system information.  With no OPTION, same as -s.\n\n" \
    3219     "Options:\n" \
    3220     "\t-a\tprint all information\n" \
    3221     "\t-m\tthe machine (hardware) type\n" \
    3222     "\t-n\tprint the machine's network node hostname\n" \
    3223     "\t-r\tprint the operating system release\n" \
    3224     "\t-s\tprint the operating system name\n" \
    3225     "\t-p\tprint the host processor type\n" \
    3226     "\t-v\tprint the operating system version"
     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"
    32273712#define uname_example_usage \
    3228     "$ uname -a\n" \
    3229     "Linux debian 2.4.23 #2 Tue Dec 23 17:09:10 MST 2003 i686 GNU/Linux\n"
     3713       "$ uname -a\n" \
     3714       "Linux debian 2.4.23 #2 Tue Dec 23 17:09:10 MST 2003 i686 GNU/Linux\n"
    32303715
    32313716#define uncompress_trivial_usage \
    3232     "[-c] [-f] [ name ... ]"
     3717       "[-c] [-f] [name...]"
    32333718#define uncompress_full_usage \
    3234     "Uncompress .Z file[s]\n" \
    3235     "Options:\n" \
    3236     "\t-c\textract to stdout\n" \
    3237     "\t-f\tforce overwrite an existing file"
     3719       "Uncompress .Z file[s]" \
     3720       "\n\nOptions:\n" \
     3721       "    -c  Extract to stdout\n" \
     3722       "    -f  Force overwrite an existing file"
     3723
     3724#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"
    32383735
    32393736#define uniq_trivial_usage \
    3240     "[-fscdu]... [INPUT [OUTPUT]]"
     3737       "[-fscdu]... [INPUT [OUTPUT]]"
    32413738#define uniq_full_usage \
    3242     "Discard all but one of successive identical lines from INPUT\n" \
    3243     "(or standard input), writing to OUTPUT (or standard output).\n\n" \
    3244     "Options:\n" \
    3245     "\t-c\tprefix lines by the number of occurrences\n" \
    3246     "\t-d\tonly print duplicate lines\n" \
    3247     "\t-u\tonly print unique lines\n" \
    3248     "\t-f N\tskip the first N fields\n" \
    3249     "\t-s N\tskip the first N chars (after any skipped fields)"
     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)"
    32503747#define uniq_example_usage \
    3251     "$ echo -e \"a\\na\\nb\\nc\\nc\\na\" | sort | uniq\n" \
    3252     "a\n" \
    3253     "b\n" \
    3254     "c\n"
     3748       "$ echo -e \"a\\na\\nb\\nc\\nc\\na\" | sort | uniq\n" \
     3749       "a\n" \
     3750       "b\n" \
     3751       "c\n"
    32553752
    32563753#define unix2dos_trivial_usage \
    3257     "[option] [FILE]"
     3754       "[option] [FILE]"
    32583755#define unix2dos_full_usage \
    3259     "Converts FILE from unix format to dos format. When no option\n" \
    3260     "is given, the input is converted to the opposite output format.\n" \
    3261     "When no file is given, uses stdin for input and stdout for output.\n" \
    3262     "Options:\n" \
    3263     "\t-u\toutput will be in UNIX format\n" \
    3264     "\t-d\toutput will be in DOS format"
     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"
    32653762
    32663763#define unzip_trivial_usage \
    3267     "[-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]"
     3764       "[-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]"
    32683765#define unzip_full_usage \
    3269     "Extracts files from ZIP archives.\n\n" \
    3270     "Options:\n" \
    3271     "\t-l\tlist archive contents (short form)\n" \
    3272     "\t-n\tnever overwrite existing files (default)\n" \
    3273     "\t-o\toverwrite files without prompting\n" \
    3274     "\t-p\tsend output to stdout\n" \
    3275     "\t-q\tbe quiet\n" \
    3276     "\t-x\texclude these files\n" \
    3277     "\t-d\textract files into this directory"
     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"
    32783775
    32793776#define uptime_trivial_usage \
    3280     ""
     3777       ""
    32813778#define uptime_full_usage \
    3282     "Display the time since the last boot."
     3779       "Display the time since the last boot"
    32833780#define uptime_example_usage \
    3284     "$ uptime\n" \
    3285     "  1:55pm  up  2:30, load average: 0.09, 0.04, 0.00\n"
     3781       "$ uptime\n" \
     3782       "  1:55pm  up  2:30, load average: 0.09, 0.04, 0.00\n"
    32863783
    32873784#define usleep_trivial_usage \
    3288     "N"
     3785       "N"
    32893786#define usleep_full_usage \
    3290     "Pause for N microseconds."
     3787       "Pause for N microseconds"
    32913788#define usleep_example_usage \
    3292     "$ usleep 1000000\n" \
    3293     "[pauses for 1 second]\n"
     3789       "$ usleep 1000000\n" \
     3790       "[pauses for 1 second]\n"
    32943791
    32953792#define uudecode_trivial_usage \
    3296     "[FILE]..."
     3793       "[-o outfile] [infile]"
    32973794#define uudecode_full_usage \
    3298     "Uudecode a file that is uuencoded.\n\n" \
    3299     "Options:\n" \
    3300     "\t-o FILE\tdirect output to FILE"
     3795       "Uudecode a file\n" \
     3796       "NB: finds outfile name in uuencoded source unless -o is given"
    33013797#define uudecode_example_usage \
    3302     "$ uudecode -o busybox busybox.uu\n" \
    3303     "$ ls -l busybox\n" \
    3304     "-rwxr-xr-x   1 ams      ams        245264 Jun  7 21:35 busybox\n"
     3798       "$ uudecode -o busybox busybox.uu\n" \
     3799       "$ ls -l busybox\n" \
     3800       "-rwxr-xr-x   1 ams      ams        245264 Jun  7 21:35 busybox\n"
    33053801
    33063802#define uuencode_trivial_usage \
    3307     "[OPTION] [INFILE] REMOTEFILE"
     3803       "[-m] [infile] stored_filename"
    33083804#define uuencode_full_usage \
    3309     "Uuencode a file.\n\n" \
    3310     "Options:\n" \
    3311     "\t-m\tuse base64 encoding per RFC1521"
     3805       "Uuencode a file to stdout" \
     3806       "\n\nOptions:\n" \
     3807       "    -m  Use base64 encoding per RFC1521"
    33123808#define uuencode_example_usage \
    3313     "$ uuencode busybox busybox\n" \
    3314     "begin 755 busybox\n" \
    3315     "<encoded file snipped>\n" \
    3316     "$ uudecode busybox busybox > busybox.uu\n" \
    3317     "$\n"
     3809       "$ uuencode busybox busybox\n" \
     3810       "begin 755 busybox\n" \
     3811       "<encoded file snipped>\n" \
     3812       "$ uudecode busybox busybox > busybox.uu\n" \
     3813       "$\n"
    33183814
    33193815#define vconfig_trivial_usage \
    3320     "COMMAND [OPTIONS] ..."
     3816       "COMMAND [OPTIONS] ..."
    33213817#define vconfig_full_usage \
    3322     "vconfig lets you create and remove virtual ethernet devices.\n\n" \
    3323     "Options:\n" \
    3324     "\tadd             [interface-name] [vlan_id]\n" \
    3325     "\trem             [vlan-name]\n" \
    3326     "\tset_flag        [interface-name] [flag-num]      [0 | 1]\n" \
    3327     "\tset_egress_map  [vlan-name]      [skb_priority]  [vlan_qos]\n" \
    3328     "\tset_ingress_map [vlan-name]      [skb_priority]  [vlan_qos]\n" \
    3329     "\tset_name_type   [name-type]"
     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]"
    33303826
    33313827#define vi_trivial_usage \
    3332     "[OPTION] [FILE]..."
     3828       "[OPTION] [FILE]..."
    33333829#define vi_full_usage \
    3334     "edit FILE.\n\n" \
    3335     "Options:\n" \
    3336     "\t-R\tRead-only- do not write to the file"
     3830       "Edit FILE" \
     3831       "\n\nOptions:\n" \
     3832       "    -R  Read-only - do not write to the file"
    33373833
    33383834#define vlock_trivial_usage \
    3339     "[OPTIONS]"
     3835       "[OPTIONS]"
    33403836#define vlock_full_usage \
    3341     "Lock a virtual terminal.  A password is required to unlock\n" \
    3342     "Options:\n" \
    3343     "\t-a\tLock all VTs"
     3837       "Lock a virtual terminal. A password is required to unlock." \
     3838       "\n\nOptions:\n" \
     3839       "    -a  Lock all VTs"
    33443840
    33453841#define watch_trivial_usage \
    3346     "[-n <seconds>] COMMAND..."
     3842       "[-n seconds] [-t] COMMAND..."
    33473843#define watch_full_usage \
    3348     "Executes a program periodically.\n" \
    3349     "Options:\n" \
    3350     "\t-n\tLoop period in seconds - default is 2"
     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"
    33513848#define watch_example_usage \
    3352     "$ watch date\n" \
    3353     "Mon Dec 17 10:31:40 GMT 2000\n" \
    3354     "Mon Dec 17 10:31:42 GMT 2000\n" \
    3355     "Mon Dec 17 10:31:44 GMT 2000"
     3849       "$ watch date\n" \
     3850       "Mon Dec 17 10:31:40 GMT 2000\n" \
     3851       "Mon Dec 17 10:31:42 GMT 2000\n" \
     3852       "Mon Dec 17 10:31:44 GMT 2000"
    33563853
    33573854#define watchdog_trivial_usage \
    3358     "[-t <seconds>] [-F] DEV"
     3855       "[-t seconds] [-F] DEV"
    33593856#define watchdog_full_usage \
    3360     "Periodically write to watchdog device DEV.\n" \
    3361     "Options:\n" \
    3362     "\t-t\tTimer period in seconds - default is 30\n" \
    3363     "\t-F\tStay in the foreground and don't fork"
     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"
    33643861
    33653862#define wc_trivial_usage \
    3366     "[OPTION]... [FILE]..."
     3863       "[OPTION]... [FILE]..."
    33673864#define wc_full_usage \
    3368     "Print line, word, and byte counts for each FILE, and a total line if\n" \
    3369     "more than one FILE is specified.  With no FILE, read standard input.\n\n" \
    3370     "Options:\n" \
    3371     "\t-c\tprint the byte counts\n" \
    3372     "\t-l\tprint the newline counts\n" \
    3373     "\t-L\tprint the length of the longest line\n" \
    3374     "\t-w\tprint the word counts"
     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"
    33753872#define wc_example_usage \
    3376     "$ wc /etc/passwd\n" \
    3377     "     31      46    1365 /etc/passwd\n"
     3873       "$ wc /etc/passwd\n" \
     3874       "     31      46    1365 /etc/passwd\n"
    33783875
    33793876#define wget_trivial_usage \
    3380     "[-c|--continue] [-q|--quiet] [-O|--output-document file]\n" \
    3381     "\t\t[--header 'header: value'] [-Y|--proxy on/off] [-P DIR] url"
     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"
    33823880#define wget_full_usage \
    3383     "wget retrieves files via HTTP or FTP\n\n" \
    3384     "Options:\n" \
    3385     "\t-c\tcontinue retrieval of aborted transfers\n" \
    3386     "\t-q\tquiet mode - do not print\n" \
    3387     "\t-P\tSet directory prefix to DIR\n" \
    3388     "\t-O\tsave to filename ('-' for stdout)\n" \
    3389     "\t-Y\tuse proxy ('on' or 'off')"
     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')"
    33903890
    33913891#define which_trivial_usage \
    3392     "[COMMAND ...]"
     3892       "[COMMAND ...]"
    33933893#define which_full_usage \
    3394     "Locates a COMMAND."
     3894       "Locate a COMMAND"
    33953895#define which_example_usage \
    3396     "$ which login\n" \
    3397     "/bin/login\n"
     3896       "$ which login\n" \
     3897       "/bin/login\n"
    33983898
    33993899#define who_trivial_usage \
    3400     " "
     3900       " "
    34013901#define who_full_usage \
    3402     "Prints the current user names and related information"
     3902       "Print the current user names and related information"
    34033903
    34043904#define whoami_trivial_usage \
    3405     ""
     3905       ""
    34063906#define whoami_full_usage \
    3407     "Prints the user name associated with the current effective user id."
    3408 
    3409 #ifdef CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION
    3410 #define USAGE_XARGS_CONFIRMATION(a) a
    3411 #else
    3412 #define USAGE_XARGS_CONFIRMATION(a)
    3413 #endif
    3414 #ifdef CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT
    3415 #define USAGE_XARGS_TERMOPT(a) a
    3416 #else
    3417 #define USAGE_XARGS_TERMOPT(a)
    3418 #endif
    3419 #ifdef CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM
    3420 #define USAGE_XARGS_ZERO_TERM(a) a
    3421 #else
    3422 #define USAGE_XARGS_ZERO_TERM(a)
    3423 #endif
    3424 
     3907       "Print the user name associated with the current effective user id"
    34253908
    34263909#define xargs_trivial_usage \
    3427     "[COMMAND] [OPTIONS] [ARGS...]"
     3910       "[OPTIONS] [COMMAND] [ARGS...]"
    34283911#define xargs_full_usage \
    3429     "Executes COMMAND on every item given by standard input.\n\n" \
    3430     "Options:\n" \
    3431     USAGE_XARGS_CONFIRMATION("\t-p\tPrompt the user about whether to run each command\n") \
    3432     "\t-r\tDo not run command for empty read lines\n" \
    3433     USAGE_XARGS_TERMOPT("\t-x\tExit if the size is exceeded\n") \
    3434     USAGE_XARGS_ZERO_TERM("\t-0\tInput filenames are terminated by a null character\n") \
    3435     "\t-t\tPrint the command line on stderr before executing it"
     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"
    34363922#define xargs_example_usage \
    3437     "$ ls | xargs gzip\n" \
    3438     "$ find . -name '*.c' -print | xargs rm\n"
     3923       "$ ls | xargs gzip\n" \
     3924       "$ find . -name '*.c' -print | xargs rm\n"
    34393925
    34403926#define yes_trivial_usage \
    3441     "[OPTION]... [STRING]..."
     3927       "[OPTION]... [STRING]..."
    34423928#define yes_full_usage \
    3443     "Repeatedly outputs a line with all specified STRING(s), or 'y'."
     3929       "Repeatedly output a line with all specified STRING(s), or 'y'"
    34443930
    34453931#define zcat_trivial_usage \
    3446     "FILE"
     3932       "FILE"
    34473933#define zcat_full_usage \
    3448     "Uncompress to stdout."
     3934       "Uncompress to stdout"
    34493935
    34503936#define zcip_trivial_usage \
    3451     "[OPTIONS] ifname script"
     3937       "[OPTIONS] ifname script"
    34523938#define zcip_full_usage \
    3453     "zcip manages a ZeroConf IPv4 link-local address.\n" \
    3454     "Options:\n" \
    3455     "\t-f              foreground mode\n" \
    3456     "\t-q              quit after address (no daemon)\n" \
    3457     "\t-r 169.254.x.x  request this address first\n" \
    3458     "\t-v              verbose"
     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"
    34593945
    34603946#endif /* __BB_USAGE_H__ */
Note: See TracChangeset for help on using the changeset viewer.