#define depmod_trivial_usage NOUSAGE_STR
#define depmod_full_usage ""
+#define devmem_trivial_usage \
+ "ADDRESS [WIDTH [VALUE]]"
+
+#define devmem_full_usage "\n\n" \
+ "Read/write from physical address\n" \
+ "\n ADDRESS Address to act upon" \
+ "\n WIDTH Width (8/16/...)" \
+ "\n VALUE Data to be written" \
+
#define devfsd_trivial_usage \
"mntpnt [-v]" USE_DEVFSD_FG_NP("[-fg][-np]")
#define devfsd_full_usage "\n\n" \
"\n do not poll for events" \
)
-/* -k is accepted but ignored for !HUMAN_READABLE,
- * but we won't mention this (unimportant) */
-#if ENABLE_FEATURE_HUMAN_READABLE || ENABLE_FEATURE_DF_INODE
-#define DF_HAS_OPTIONS(x) x
-#else
-#define DF_HAS_OPTIONS(x)
-#endif
#define df_trivial_usage \
- DF_HAS_OPTIONS("[-") \
- USE_FEATURE_HUMAN_READABLE("hmk") USE_FEATURE_DF_INODE("i") \
- DF_HAS_OPTIONS("] ") "[FILESYSTEM...]"
+ "[-Pk" \
+ USE_FEATURE_HUMAN_READABLE("mh") \
+ USE_FEATURE_DF_FANCY("ai] [-B SIZE") \
+ "] [FILESYSTEM...]"
#define df_full_usage "\n\n" \
"Print filesystem usage statistics\n" \
- DF_HAS_OPTIONS("\nOptions:") \
+ "\nOptions:" \
+ "\n -P POSIX output format" \
+ "\n -k 1024-byte blocks (default)" \
USE_FEATURE_HUMAN_READABLE( \
+ "\n -m 1M-byte blocks" \
"\n -h Human readable (e.g. 1K 243M 2G)" \
- "\n -m 1024*1024 blocks" \
- "\n -k 1024 blocks" \
) \
- USE_FEATURE_DF_INODE( \
+ USE_FEATURE_DF_FANCY( \
+ "\n -a Show all filesystems" \
"\n -i Inodes" \
- )
+ "\n -B SIZE Blocksize" \
+ ) \
+
#define df_example_usage \
"$ df\n" \
- "Filesystem 1k-blocks Used Available Use% Mounted on\n" \
+ "Filesystem 1K-blocks Used Available Use% Mounted on\n" \
"/dev/sda3 8690864 8553540 137324 98% /\n" \
"/dev/sda1 64216 36364 27852 57% /boot\n" \
"$ df /dev/sda3\n" \
- "Filesystem 1k-blocks Used Available Use% Mounted on\n" \
- "/dev/sda3 8690864 8553540 137324 98% /\n"
+ "Filesystem 1K-blocks Used Available Use% Mounted on\n" \
+ "/dev/sda3 8690864 8553540 137324 98% /\n" \
+ "$ POSIXLY_CORRECT=sure df /dev/sda3\n" \
+ "Filesystem 512B-blocks Used Available Use% Mounted on\n" \
+ "/dev/sda3 17381728 17107080 274648 98% /\n" \
+ "$ POSIXLY_CORRECT=yep df -P /dev/sda3\n" \
+ "Filesystem 512-blocks Used Available Capacity Mounted on\n" \
+ "/dev/sda3 17381728 17107080 274648 98% /\n"
#define dhcprelay_trivial_usage \
"[client1,client2,...] [server_device]"
"\n -z Delete messages on server" \
"\n prog Run 'prog <message_file>' on message delivery" \
+#define blkid_trivial_usage \
+ ""
+#define blkid_full_usage "\n\n" \
+ "Print UUIDs of all filesystems."
+
#define findfs_trivial_usage \
"LABEL=label or UUID=uuid"
#define findfs_full_usage "\n\n" \
#define ftpget_full_usage "\n\n" \
"Retrieve a remote file via FTP\n" \
"\nOptions:" \
- USE_GETOPT_LONG( \
+ USE_FEATURE_FTPGETPUT_LONG_OPTIONS( \
"\n -c,--continue Continue previous transfer" \
"\n -v,--verbose Verbose" \
"\n -u,--username Username" \
"\n -p,--password Password" \
"\n -P,--port Port number" \
) \
- SKIP_GETOPT_LONG( \
+ SKIP_FEATURE_FTPGETPUT_LONG_OPTIONS( \
"\n -c Continue previous transfer" \
"\n -v Verbose" \
"\n -u Username" \
#define ftpput_full_usage "\n\n" \
"Store a local file on a remote machine via FTP\n" \
"\nOptions:" \
- USE_GETOPT_LONG( \
+ USE_FEATURE_FTPGETPUT_LONG_OPTIONS( \
"\n -v,--verbose Verbose" \
"\n -u,--username Username" \
"\n -p,--password Password" \
"\n -P,--port Port number" \
) \
- SKIP_GETOPT_LONG( \
+ SKIP_FEATURE_FTPGETPUT_LONG_OPTIONS( \
"\n -v Verbose" \
"\n -u Username" \
"\n -p Password" \
"-rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/busybox.tar.gz\n"
#define halt_trivial_usage \
- "[-d delay] [-n] [-f]"
+ "[-d delay] [-n] [-f]" USE_FEATURE_WTMP(" [-w]")
#define halt_full_usage "\n\n" \
"Halt the system\n" \
"\nOptions:" \
"\n -d STRING URL decode STRING" \
#define hwclock_trivial_usage \
- USE_GETOPT_LONG( \
+ USE_FEATURE_HWCLOCK_LONG_OPTIONS( \
"[-r|--show] [-s|--hctosys] [-w|--systohc]" \
" [-l|--localtime] [-u|--utc]" \
" [-f FILE]" \
) \
- SKIP_GETOPT_LONG( \
+ SKIP_FEATURE_HWCLOCK_LONG_OPTIONS( \
"[-r] [-s] [-w] [-l] [-u] [-f FILE]" \
)
#define hwclock_full_usage "\n\n" \
USE_SELINUX( \
"\n -Z Print the security context" \
) \
- "\n -g Print group ID" \
"\n -u Print user ID" \
+ "\n -g Print group ID" \
+ "\n -G Print supplementary group IDs" \
"\n -n Print name instead of a number" \
"\n -r Print real user ID instead of effective ID" \
"\n -x Do not export externs" \
)
+/* -v, -b, -c are ignored */
#define install_trivial_usage \
- "[-cgmops] [sources] dest|directory"
+ "[-cdDsp] [-o USER] [-g GRP] [-m MODE] [source] dest|directory"
#define install_full_usage "\n\n" \
"Copy files and set attributes\n" \
"\nOptions:" \
- "\n -c Copy the file, default" \
+ "\n -c Just copy (default)" \
"\n -d Create directories" \
- "\n -g Set group ownership" \
- "\n -m Set permissions" \
- "\n -o Set ownership" \
+ "\n -D Create leading target directories" \
+ "\n -s Strip symbol table" \
"\n -p Preserve date" \
- "\n -s Strip symbol tables" \
+ "\n -o USER Set ownership" \
+ "\n -g GRP Set group ownership" \
+ "\n -m MODE Set permissions" \
USE_SELINUX( \
- "\n -Z Set security context of copy" \
+ "\n -Z Set security context" \
)
/* would need to make the " | " optional depending on more than one selected: */
" [oif STRING] [tos TOS]\n" \
"iproute { add | del | change | append | replace | monitor } ROUTE\n" \
" SELECTOR := [root PREFIX] [match PREFIX] [proto RTPROTO]\n" \
- " ROUTE := [TYPE] PREFIX [tos TOS] [proto RTPROTO]" \
+ " ROUTE := [TYPE] PREFIX [tos TOS] [proto RTPROTO]\n" \
+ " [metric METRIC]" \
#define iprule_trivial_usage \
"{[list | add | del] RULE}"
"5\n"
#define less_trivial_usage \
- "[-EMNmh~?] [FILE...]"
+ "[-EMNmh~I?] [FILE...]"
#define less_full_usage "\n\n" \
"View a file or list of files. The position within files can be\n" \
"changed, and files can be manipulated in various ways.\n" \
"\n -M,-m Display a status line containing the line numbers" \
"\n and percentage through the file" \
"\n -N Prefix line numbers to each line" \
+ "\n -I Ignore case in all searches" \
"\n -~ Suppress ~s displayed past the end of the file" \
#define linux32_trivial_usage NOUSAGE_STR
#define ls_full_usage "\n\n" \
"List directory contents\n" \
"\nOptions:" \
- "\n -1 List files in a single column" \
- "\n -A Do not list implied . and .." \
- "\n -a Do not hide entries starting with ." \
- "\n -C List entries by columns" \
+ "\n -1 List in a single column" \
+ "\n -A Don't list . and .." \
+ "\n -a Don't hide entries starting with ." \
+ "\n -C List by columns" \
USE_FEATURE_LS_TIMESTAMPS( \
- "\n -c With -l: show ctime") \
+ "\n -c With -l: sort by ctime") \
USE_FEATURE_LS_COLOR( \
"\n --color[={always,never,auto}] Control coloring") \
"\n -d List directory entries instead of contents" \
USE_FEATURE_LS_TIMESTAMPS( \
- "\n -e List both full date and full time") \
+ "\n -e List full date and time") \
USE_FEATURE_LS_FILETYPES( \
"\n -F Append indicator (one of */=@|) to entries") \
- "\n -i List the i-node for each file" \
- "\n -l Use a long listing format" \
+ "\n -i List inode numbers" \
+ "\n -l Long listing format" \
"\n -n List numeric UIDs and GIDs instead of names" \
USE_FEATURE_LS_FILETYPES( \
"\n -p Append indicator (one of /=@|) to entries") \
USE_FEATURE_LS_RECURSIVE( \
"\n -R List subdirectories recursively") \
USE_FEATURE_LS_SORTFILES( \
- "\n -r Sort the listing in reverse order") \
+ "\n -r Sort in reverse order") \
USE_FEATURE_LS_SORTFILES( \
- "\n -S Sort the listing by file size") \
+ "\n -S Sort by file size") \
"\n -s List the size of each file, in blocks" \
USE_FEATURE_AUTOWIDTH( \
- "\n -T NUM Assume Tabstop every NUM columns") \
+ "\n -T NUM Assume tabstop every NUM columns") \
USE_FEATURE_LS_TIMESTAMPS( \
- "\n -t With -l: show modification time") \
+ "\n -t With -l: sort by modification time") \
USE_FEATURE_LS_TIMESTAMPS( \
- "\n -u With -l: show access time") \
+ "\n -u With -l: sort by access time") \
USE_FEATURE_LS_SORTFILES( \
- "\n -v Sort the listing by version") \
+ "\n -v Sort by version") \
USE_FEATURE_AUTOWIDTH( \
"\n -w NUM Assume the terminal is NUM columns wide") \
- "\n -x List entries by lines instead of by columns" \
+ "\n -x List by lines" \
USE_FEATURE_LS_SORTFILES( \
- "\n -X Sort the listing by extension") \
+ "\n -X Sort by extension") \
USE_FEATURE_HUMAN_READABLE( \
- "\n -h Print sizes in human readable format (e.g., 1K 243M 2G)") \
+ "\n -h List sizes in human readable format (1K 243M 2G)") \
USE_SELINUX( \
- "\n -k Print security context") \
+ "\n -k List security context") \
USE_SELINUX( \
- "\n -K Print security context in long format") \
+ "\n -K List security context in long format") \
USE_SELINUX( \
- "\n -Z Print security context and permission") \
+ "\n -Z List security context and permission") \
#define lsattr_trivial_usage \
"[-Radlv] [files...]"
"\n -R Recursively list subdirectories" \
"\n -a Do not hide entries starting with ." \
"\n -d List directory entries instead of contents" \
- "\n -l Print long flag names" \
+ "\n -l List long flag names" \
"\n -v List the file's version/generation number" \
#define lsmod_trivial_usage \
"[-knqrsv] MODULE [symbol=value...]"
#define modprobe_full_usage "\n\n" \
"Options:" \
+ USE_FEATURE_2_4_MODULES( \
"\n -k Make module autoclean-able" \
+ ) \
"\n -n Dry run" \
"\n -q Quiet" \
"\n -r Remove module (stacks) or do autoclean" \
"\n -s Report via syslog instead of stderr" \
"\n -v Verbose" \
+ USE_FEATURE_MODPROBE_BLACKLIST( \
+ "\n -b Apply blacklist to module names too" \
+ )
#define modprobe_notes_usage \
"modprobe can (un)load a stack of modules, passing each module options (when\n" \
#define runcon_full_usage "\n\n" \
"Run a program in a different security context\n" \
"\n CONTEXT Complete security context\n" \
- USE_GETOPT_LONG( \
+ USE_FEATURE_RUNCON_LONG_OPTIONS( \
"\n -c,--compute Compute process transition context before modifying" \
"\n -t,--type=TYPE Type (for same role as parent)" \
"\n -u,--user=USER User identity" \
"\n -r,--role=ROLE Role" \
"\n -l,--range=RNG Levelrange" \
) \
- SKIP_GETOPT_LONG( \
+ SKIP_FEATURE_RUNCON_LONG_OPTIONS( \
"\n -c Compute process transition context before modifying" \
"\n -t TYPE Type (for same role as parent)" \
"\n -u USER User identity" \
#define sendmail_trivial_usage \
"[-w timeout] [-H [user:pass@]server[:port]] [-S]\n" \
- "[-c charset] [-N type] [-i] [-s subject] [-a attach]... [-t] [-f sender] [rcpt]..."
+ "[-N type] [-f sender] [-F fullname] " \
+ USE_FEATURE_SENDMAIL_MAILX("[-s subject] [-c cc-rcpt]... [-j charset] [-a attach]... [-e err-rcpt] ") "[-t] [rcpt]..."
#define sendmail_full_usage "\n\n" \
"Send an email\n" \
"\nOptions:" \
"\n -w timeout Network timeout" \
"\n -H [user:pass@]server[:port] Server" \
"\n -S Use openssl connection helper for secure servers" \
- "\n -c charset Assume charset for body and subject (utf-8)" \
"\n -N type Request delivery notification. Type is ignored" \
- "\n -i Ignore single dots in mail body. Implied" \
+ "\n -f sender Sender" \
+ "\n -F fullname Sender full name. Overrides $NAME" \
+ USE_FEATURE_SENDMAIL_MAILX( \
"\n -s subject Subject" \
+ "\n -c rcpt Cc: recipient. May be multiple" \
+ "\n -j charset Assume charset for body and subject (" CONFIG_FEATURE_SENDMAIL_CHARSET ")" \
"\n -a file File to attach. May be multiple" \
+ "\n -e rcpt Errors-To: recipient" \
+ )
"\n -t Read recipients and subject from body" \
- "\n -f sender Sender" \
+ "\n" \
+ "\nOther options are silently ignored; -oi is implied" \
#define seq_trivial_usage \
"[first [increment]] last"
"\n -W Display warnings about entries that had no matching files" \
#define setfont_trivial_usage \
- "[-m mapfile] font"
+ "FONT [-m MAPFILE] [-C TTY]"
#define setfont_full_usage "\n\n" \
"Load a console font\n" \
"\nOptions:" \
- "\n -m mapfile Load console screen map from mapfile"
+ "\n -m MAPFILE Load console screen map" \
+ "\n -C TTY Affect TTY instead of /dev/tty" \
+
#define setfont_example_usage \
"$ setfont -m koi8-r /etc/i18n/fontname\n"
"Search for matching processes, and then\n" \
"-K: stop all matching processes.\n" \
"-S: start a process unless a matching process is found.\n" \
- USE_GETOPT_LONG( \
+ USE_FEATURE_START_STOP_DAEMON_LONG_OPTIONS( \
"\nProcess matching:" \
"\n -u,--user USERNAME|UID Match only this user's processes" \
"\n -n,--name NAME Match processes with NAME" \
"\nOther:" \
USE_FEATURE_START_STOP_DAEMON_FANCY( \
"\n -o,--oknodo Exit with status 0 if nothing is done" \
- "\n -q,--quiet Quiet" \
- ) \
"\n -v,--verbose Verbose" \
) \
- SKIP_GETOPT_LONG( \
+ "\n -q,--quiet Quiet" \
+ ) \
+ SKIP_FEATURE_START_STOP_DAEMON_LONG_OPTIONS( \
"\nProcess matching:" \
"\n -u USERNAME|UID Match only this user's processes" \
"\n -n NAME Match processes with NAME" \
"\nOther:" \
USE_FEATURE_START_STOP_DAEMON_FANCY( \
"\n -o Exit with status 0 if nothing is done" \
- "\n -q Quiet" \
- ) \
"\n -v Verbose" \
) \
+ "\n -q Quiet" \
+ ) \
#define stat_trivial_usage \
"[OPTION] FILE..."
"$ echo $?\n" \
"1\n"
+#define tc_trivial_usage \
+ /*"[OPTIONS] "*/"OBJECT CMD [dev STRING]"
+#define tc_full_usage "\n\n" \
+ "OBJECT: {qdisc|class|filter}\n" \
+ "CMD: {add|del|change|replace|show}\n" \
+ "\n" \
+ "qdisc [ handle QHANDLE ] [ root |"USE_FEATURE_TC_INGRESS(" ingress |")" parent CLASSID ]\n" \
+ /* "\t[ estimator INTERVAL TIME_CONSTANT ]\n" */ \
+ "\t[ [ QDISC_KIND ] [ help | OPTIONS ] ]\n" \
+ "\tQDISC_KIND := { [p|b]fifo | tbf | prio | cbq | red | etc. }\n" \
+ "qdisc show [ dev STRING ]"USE_FEATURE_TC_INGRESS(" [ingress]")"\n" \
+ "class [ classid CLASSID ] [ root | parent CLASSID ]\n" \
+ "\t[ [ QDISC_KIND ] [ help | OPTIONS ] ]\n" \
+ "class show [ dev STRING ] [ root | parent CLASSID ]\n" \
+ "filter [ pref PRIO ] [ protocol PROTO ]\n" \
+ /* "\t[ estimator INTERVAL TIME_CONSTANT ]\n" */ \
+ "\t[ root | classid CLASSID ] [ handle FILTERID ]\n" \
+ "\t[ [ FILTER_TYPE ] [ help | OPTIONS ] ]\n" \
+ "filter show [ dev STRING ] [ root | parent CLASSID ]"
+
#define tcpsvd_trivial_usage \
"[-hEv] [-c n] [-C n:msg] [-b n] [-u user] [-l name] ip port prog..."
/* with not-implemented options: */
"\n -v Verbose" \
#define top_trivial_usage \
- "[-b] [-n COUNT] [-d SECONDS]"
+ "[-b] [-nCOUNT] [-dSECONDS]"
#define top_full_usage "\n\n" \
"Provide a view of process activity in real time.\n" \
"Read the status of all processes from /proc each SECONDS\n" \
"Mon Dec 17 10:31:44 GMT 2000"
#define watchdog_trivial_usage \
- "[-t N[ms]] [-F] DEV"
+ "[-t N[ms]] [-T N[ms]] [-F] DEV"
#define watchdog_full_usage "\n\n" \
"Periodically write to watchdog device DEV\n" \
"\nOptions:" \
- "\n -t N Timer period (default 30)" \
+ "\n -T N Reboot after N seconds if not reset (default 60)" \
+ "\n -t N Reset every N seconds (default 30)" \
"\n -F Run in foreground" \
"\n" \
- "\nUse -t 500ms to specify period in milliseconds" \
+ "\nUse 500ms to specify period in milliseconds" \
#define wc_trivial_usage \
"[OPTION]... [FILE]..."
" 31 46 1365 /etc/passwd\n"
#define wget_trivial_usage \
- USE_GETOPT_LONG( \
+ USE_FEATURE_WGET_LONG_OPTIONS( \
"[-c|--continue] [-s|--spider] [-q|--quiet] [-O|--output-document file]\n" \
" [--header 'header: value'] [-Y|--proxy on/off] [-P DIR]\n" \
" [-U|--user-agent agent] url" \
) \
- SKIP_GETOPT_LONG( \
+ SKIP_FEATURE_WGET_LONG_OPTIONS( \
"[-csq] [-O file] [-Y on/off] [-P DIR] [-U agent] url" \
)
#define wget_full_usage "\n\n" \
"Manage a ZeroConf IPv4 link-local address\n" \
"\nOptions:" \
"\n -f Run in foreground" \
- "\n -q Quit after address (no daemon)" \
+ "\n -q Quit after obtaining address" \
"\n -r 169.254.x.x Request this address first" \
"\n -v Verbose" \
+ "\n" \
+ "\nWith no -q, runs continuously monitoring for ARP conflicts," \
+ "\nexits only on I/O errors (link down etc)" \
#endif /* __BB_USAGE_H__ */