source: branches/3.0/mindi-busybox/include/usage.h @ 3085

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