fix/shorten some usage strings

This commit is contained in:
Denis Vlasenko
2006-12-17 17:27:56 +00:00
parent 10f7dd1ea1
commit 7cdc54ff59

View File

@ -246,24 +246,24 @@
"[-p processes] [-f bytes] [-c bytes] prog args" "[-p processes] [-f bytes] [-c bytes] prog args"
#define chpst_full_usage \ #define chpst_full_usage \
"Change the process state and run specified program.\n\n" \ "Change the process state and run specified program.\n\n" \
"-u user[:grp] set uid and gid\n" \ " -u user[:grp] set uid and gid\n" \
"-U user[:grp] set environment variables UID and GID\n" \ " -U user[:grp] set environment variables UID and GID\n" \
"-e dir set environment variables as specified by files\n" \ " -e dir set environment variables as specified by files\n" \
" in the directory: file=1st_line_of_file\n" \ " in the directory: file=1st_line_of_file\n" \
"-/ dir chroot to dir\n" \ " -/ dir chroot to dir\n" \
"-n inc add inc to nice value\n" \ " -n inc add inc to nice value\n" \
"-m bytes limit data segment, stack segment, locked physical pages,\n" \ " -m bytes limit data segment, stack segment, locked physical pages,\n" \
" and total of all segment per process to bytes bytes each\n" \ " and total of all segment per process to bytes bytes each\n" \
"-d bytes limit data segment\n" \ " -d bytes limit data segment\n" \
"-o n limit the number of open file descriptors per process to n\n" \ " -o n limit the number of open file descriptors per process to n\n" \
"-p n limit number of processes per uid to n\n" \ " -p n limit number of processes per uid to n\n" \
"-f bytes limit output file size to bytes bytes\n" \ " -f bytes limit output file size to bytes bytes\n" \
"-c bytes limit core file size to bytes bytes\n" \ " -c bytes limit core file size to bytes bytes\n" \
"-v verbose\n" \ " -v verbose\n" \
"-P run prog in a new process group\n" \ " -P run prog in a new process group\n" \
"-0 close standard input\n" \ " -0 close standard input\n" \
"-1 close standard output\n" \ " -1 close standard output\n" \
"-2 close standard error" " -2 close standard error"
#define setuidgid_trivial_usage \ #define setuidgid_trivial_usage \
"account prog args" "account prog args"
#define setuidgid_full_usage \ #define setuidgid_full_usage \
@ -285,20 +285,20 @@
#define softlimit_full_usage \ #define softlimit_full_usage \
"Sets soft resource limits as specified by options, then runs prog\n" \ "Sets soft resource limits as specified by options, then runs prog\n" \
"\n" \ "\n" \
"-m n Same as -d n -s n -l n -a n\n" \ " -m n Same as -d n -s n -l n -a n\n" \
"-d n Limit the data segment per process to n bytes\n" \ " -d n Limit the data segment per process to n bytes\n" \
"-s n Limit the stack segment per process to n bytes\n" \ " -s n Limit the stack segment per process to n bytes\n" \
"-l n Limit the locked physical pages per process to n bytes\n" \ " -l n Limit the locked physical pages per process to n bytes\n" \
"-a n Limit the total of all segments per process to n bytes\n" \ " -a n Limit the total of all segments per process to n bytes\n" \
"-o n Limit the number of open file descriptors per process to n\n" \ " -o n Limit the number of open file descriptors per process to n\n" \
"-p n Limit the number of processes per uid to n\n" \ " -p n Limit the number of processes per uid to n\n" \
"Options controlling file sizes:\n" \ "Options controlling file sizes:\n" \
"-f n Limit output file sizes to n bytes\n" \ " -f n Limit output file sizes to n bytes\n" \
"-c n Limit core file sizes to n bytes\n" \ " -c n Limit core file sizes to n bytes\n" \
"Efficiency opts:\n" \ "Efficiency opts:\n" \
"-r n Limit the resident set size to n bytes. This limit is not\n" \ " -r n Limit the resident set size to n bytes. This limit is not\n" \
" enforced unless physical memory is full\n" \ " enforced unless physical memory is full\n" \
"-t n Limit the CPU time to n seconds. This limit is not enforced\n" \ " -t n Limit the CPU time to n seconds. This limit is not enforced\n" \
" except that the process receives a SIGXCPU signal after n seconds\n" \ " except that the process receives a SIGXCPU signal after n seconds\n" \
"\n" \ "\n" \
"Some options may have no effect on some operating systems\n" \ "Some options may have no effect on some operating systems\n" \
@ -435,13 +435,13 @@
"\nOptions:\n" \ "\nOptions:\n" \
" -R Outputs RFC-822 compliant date string\n" \ " -R Outputs RFC-822 compliant date string\n" \
" -d STRING Displays time described by STRING, not 'now'\n" \ " -d STRING Displays time described by STRING, not 'now'\n" \
USE_FEATURE_DATE_ISOFMT( \ USE_FEATURE_DATE_ISOFMT( \
" -I[TIMESPEC] Outputs an ISO-8601 compliant date/time string\n" \ " -I[TIMESPEC] Outputs an ISO-8601 compliant date/time string\n" \
" TIMESPEC='date' (or missing) for date only,\n" \ " TIMESPEC='date' (or missing) for date only,\n" \
" 'hours', 'minutes', or 'seconds' for date and,\n" \ " 'hours', 'minutes', or 'seconds' for date and,\n" \
" time to the indicated precision\n" \ " time to the indicated precision\n" \
" -D hint Use 'hint' as date format, via strptime()\n" \ " -D hint Use 'hint' as date format, via strptime()\n" \
) \ ) \
" -s Sets time described by STRING\n" \ " -s Sets time described by STRING\n" \
" -r FILE Displays the last modification time of FILE\n" \ " -r FILE Displays the last modification time of FILE\n" \
" -u Prints or sets Coordinated Universal Time" " -u Prints or sets Coordinated Universal Time"
@ -520,14 +520,15 @@ USE_FEATURE_DATE_ISOFMT( \
USE_DEVFSD_FG_NP("[-fg][-np]" ) USE_DEVFSD_FG_NP("[-fg][-np]" )
#define devfsd_full_usage \ #define devfsd_full_usage \
"Optional daemon for managing devfs permissions and old device name symlinks.\n" \ "Optional daemon for managing devfs permissions and old device name symlinks.\n" \
"\nOptions:\n" \ "\nOptions:" \
" mntpnt The mount point where devfs is mounted.\n\n" \ "\n mntpnt The mount point where devfs is mounted." \
" -v Print the protocol version numbers for devfsd\n" \ "\n -v Print the protocol version numbers for devfsd." \
" and the kernel-side protocol version and exits." \ "\n and the kernel-side protocol version and exits." \
USE_DEVFSD_FG_NP( "\n\n -fg Run the daemon in the foreground.\n\n" \ USE_DEVFSD_FG_NP( \
" -np Exit after parsing the configuration file\n" \ "\n -fg Run the daemon in the foreground." \
" and processing synthetic REGISTER events.\n" \ "\n -np Exit after parsing the configuration file" \
" Do not poll for events.") "\n and processing synthetic REGISTER events." \
"\n Do not poll for events.")
#define df_trivial_usage \ #define df_trivial_usage \
"[-" USE_FEATURE_HUMAN_READABLE("hm") "k] [FILESYSTEM ...]" "[-" USE_FEATURE_HUMAN_READABLE("hm") "k] [FILESYSTEM ...]"
@ -538,7 +539,8 @@ USE_FEATURE_DATE_ISOFMT( \
"\n -h print sizes in human readable format (e.g., 1K 243M 2G )\n" \ "\n -h print sizes in human readable format (e.g., 1K 243M 2G )\n" \
" -m print sizes in megabytes\n" \ " -m print sizes in megabytes\n" \
" -k print sizes in kilobytes(default)") \ " -k print sizes in kilobytes(default)") \
SKIP_FEATURE_HUMAN_READABLE("\n -k ignored") SKIP_FEATURE_HUMAN_READABLE( \
"\n -k ignored")
#define df_example_usage \ #define df_example_usage \
"$ df\n" \ "$ df\n" \
"Filesystem 1k-blocks Used Available Use% Mounted on\n" \ "Filesystem 1k-blocks Used Available Use% Mounted on\n" \
@ -789,13 +791,12 @@ USE_FEATURE_DATE_ISOFMT( \
" STRING : REGEXP anchored pattern match of REGEXP in STRING\n" \ " STRING : REGEXP anchored pattern match of REGEXP in STRING\n" \
" match STRING REGEXP same as STRING : REGEXP\n" \ " match STRING REGEXP same as STRING : REGEXP\n" \
" substr STRING POS LENGTH substring of STRING, POS counted from 1\n" \ " substr STRING POS LENGTH substring of STRING, POS counted from 1\n" \
" index STRING CHARS index in STRING where any CHARS is found,\n" \ " index STRING CHARS index in STRING where any CHARS is found, or 0\n" \
" or 0\n" \
" length STRING length of STRING\n" \ " length STRING length of STRING\n" \
" quote TOKEN interpret TOKEN as a string, even if\n" \ " quote TOKEN interpret TOKEN as a string, even if\n" \
" it is a keyword like 'match' or an\n" \ " it is a keyword like 'match' or an\n" \
" operator like '/'\n" \ " operator like '/'\n" \
" ( EXPRESSION ) value of EXPRESSION\n\n" \ " (EXPRESSION) value of EXPRESSION\n\n" \
"Beware that many operators need to be escaped or quoted for shells.\n" \ "Beware that many operators need to be escaped or quoted for shells.\n" \
"Comparisons are arithmetic if both ARGs are numbers, else\n" \ "Comparisons are arithmetic if both ARGs are numbers, else\n" \
"lexicographical. Pattern matches return the string matched between\n" \ "lexicographical. Pattern matches return the string matched between\n" \
@ -852,7 +853,7 @@ USE_FEATURE_DATE_ISOFMT( \
" -l List partition table(s)\n" \ " -l List partition table(s)\n" \
" -u Give Start and End in sector (instead of cylinder) units\n" \ " -u Give Start and End in sector (instead of cylinder) units\n" \
" -s PARTITION Give partition size(s) in blocks\n" \ " -s PARTITION Give partition size(s) in blocks\n" \
" -b 2048: (for certain MO disks) use 2048-byte sectors\n" \ " -b 2048 (for certain MO disks) use 2048-byte sectors\n" \
" -C CYLINDERS Set the number of cylinders\n" \ " -C CYLINDERS Set the number of cylinders\n" \
" -H HEADS Set the number of heads\n" \ " -H HEADS Set the number of heads\n" \
" -S SECTORS Set the number of sectors\n" \ " -S SECTORS Set the number of sectors\n" \
@ -1059,10 +1060,14 @@ USE_FEATURE_DATE_ISOFMT( \
" -o show only the part of a line that matches PATTERN\n" \ " -o show only the part of a line that matches PATTERN\n" \
" -e PATTERN is a regular expression\n" \ " -e PATTERN is a regular expression\n" \
" -F PATTERN is a set of newline-separated strings" \ " -F PATTERN is a set of newline-separated strings" \
USE_FEATURE_GREP_EGREP_ALIAS("\n -E PATTERN is an extended regular expression") \ USE_FEATURE_GREP_EGREP_ALIAS( \
USE_FEATURE_GREP_CONTEXT("\n -A print NUM lines of trailing context") \ "\n -E PATTERN is an extended regular expression") \
USE_FEATURE_GREP_CONTEXT("\n -B print NUM lines of leading context") \ USE_FEATURE_GREP_CONTEXT( \
USE_FEATURE_GREP_CONTEXT("\n -C print NUM lines of output context") "\n -A print NUM lines of trailing context") \
USE_FEATURE_GREP_CONTEXT( \
"\n -B print NUM lines of leading context") \
USE_FEATURE_GREP_CONTEXT( \
"\n -C print NUM lines of output context")
#define grep_example_usage \ #define grep_example_usage \
"$ grep root /etc/passwd\n" \ "$ grep root /etc/passwd\n" \
@ -1113,7 +1118,8 @@ USE_FEATURE_DATE_ISOFMT( \
#define hdparm_trivial_usage \ #define hdparm_trivial_usage \
"[options] [device] .." "[options] [device] .."
#define hdparm_full_usage \ #define hdparm_full_usage \
USE_FEATURE_HDPARM_GET_IDENTITY(" If no device name is specified try to read from stdin.\n") \ USE_FEATURE_HDPARM_GET_IDENTITY( \
" If no device name is specified try to read from stdin.\n") \
"\nOptions:\n" \ "\nOptions:\n" \
" -a get/set fs readahead\n" \ " -a get/set fs readahead\n" \
" -A set drive read-lookahead flag (0/1)\n" \ " -A set drive read-lookahead flag (0/1)\n" \
@ -1121,13 +1127,16 @@ USE_FEATURE_DATE_ISOFMT( \
" -B set Advanced Power Management setting (1-255)\n" \ " -B set Advanced Power Management setting (1-255)\n" \
" -c get/set IDE 32-bit IO setting\n" \ " -c get/set IDE 32-bit IO setting\n" \
" -C check IDE power mode status\n" \ " -C check IDE power mode status\n" \
USE_FEATURE_HDPARM_HDIO_GETSET_DMA(" -d get/set using_dma flag\n") \ USE_FEATURE_HDPARM_HDIO_GETSET_DMA( \
" -d get/set using_dma flag\n") \
" -D enable/disable drive defect-mgmt\n" \ " -D enable/disable drive defect-mgmt\n" \
" -f flush buffer cache for device on exit\n" \ " -f flush buffer cache for device on exit\n" \
" -g display drive geometry\n" \ " -g display drive geometry\n" \
" -h display terse usage information\n" \ " -h display terse usage information\n" \
USE_FEATURE_HDPARM_GET_IDENTITY(" -i display drive identification\n") \ USE_FEATURE_HDPARM_GET_IDENTITY( \
USE_FEATURE_HDPARM_GET_IDENTITY(" -I detailed/current information directly from drive\n") \ " -i display drive identification\n") \
USE_FEATURE_HDPARM_GET_IDENTITY( \
" -I detailed/current information directly from drive\n") \
" -k get/set keep_settings_over_reset flag (0/1)\n" \ " -k get/set keep_settings_over_reset flag (0/1)\n" \
" -K set drive keep_features_over_reset flag (0/1)\n" \ " -K set drive keep_features_over_reset flag (0/1)\n" \
" -L set drive doorlock (0/1) (removable harddisks only)\n" \ " -L set drive doorlock (0/1) (removable harddisks only)\n" \
@ -1138,17 +1147,21 @@ USE_FEATURE_DATE_ISOFMT( \
" -q change next setting quietly\n" \ " -q change next setting quietly\n" \
" -Q get/set DMA tagged-queuing depth (if supported)\n" \ " -Q get/set DMA tagged-queuing depth (if supported)\n" \
" -r get/set readonly flag (DANGEROUS to set)\n" \ " -r get/set readonly flag (DANGEROUS to set)\n" \
USE_FEATURE_HDPARM_HDIO_SCAN_HWIF(" -R register an IDE interface (DANGEROUS)\n") \ USE_FEATURE_HDPARM_HDIO_SCAN_HWIF( \
" -R register an IDE interface (DANGEROUS)\n") \
" -S set standby (spindown) timeout\n" \ " -S set standby (spindown) timeout\n" \
" -t perform device read timings\n" \ " -t perform device read timings\n" \
" -T perform cache read timings\n" \ " -T perform cache read timings\n" \
" -u get/set unmaskirq flag (0/1)\n" \ " -u get/set unmaskirq flag (0/1)\n" \
USE_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF(" -U un-register an IDE interface (DANGEROUS)\n") \ USE_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF( \
" -U un-register an IDE interface (DANGEROUS)\n") \
" -v defaults; same as -mcudkrag for IDE drives\n" \ " -v defaults; same as -mcudkrag for IDE drives\n" \
" -V display program version and exit immediately\n" \ " -V display program version and exit immediately\n" \
USE_FEATURE_HDPARM_HDIO_DRIVE_RESET(" -w perform device reset (DANGEROUS)\n") \ USE_FEATURE_HDPARM_HDIO_DRIVE_RESET( \
" -w perform device reset (DANGEROUS)\n") \
" -W set drive write-caching flag (0/1) (DANGEROUS)\n" \ " -W set drive write-caching flag (0/1) (DANGEROUS)\n" \
USE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF(" -x tristate device for hotswap (0/1) (DANGEROUS)\n") \ USE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF( \
" -x tristate device for hotswap (0/1) (DANGEROUS)\n") \
" -X set IDE xfer mode (DANGEROUS)\n" \ " -X set IDE xfer mode (DANGEROUS)\n" \
" -y put IDE drive in standby mode\n" \ " -y put IDE drive in standby mode\n" \
" -Y put IDE drive to sleep\n" \ " -Y put IDE drive to sleep\n" \
@ -1161,12 +1174,12 @@ USE_FEATURE_DATE_ISOFMT( \
"Print first 10 lines of each FILE to standard output.\n" \ "Print first 10 lines of each FILE to standard output.\n" \
"With more than one FILE, precede each with a header giving the\n" \ "With more than one FILE, precede each with a header giving the\n" \
"file name. With no FILE, or when FILE is -, read standard input.\n\n" \ "file name. With no FILE, or when FILE is -, read standard input.\n\n" \
"Options:\n" \ "Options:" \
" -n NUM Print first NUM lines instead of first 10" \ "\n -n NUM Print first NUM lines instead of first 10" \
USE_FEATURE_FANCY_HEAD( \ USE_FEATURE_FANCY_HEAD( \
"\n -c NUM output the first NUM bytes\n" \ "\n -c NUM output the first NUM bytes" \
" -q never output headers giving file names\n" \ "\n -q never output headers giving file names" \
" -v always output headers giving file names" ) "\n -v always output headers giving file names")
#define head_example_usage \ #define head_example_usage \
"$ head -n 2 /etc/passwd\n" \ "$ head -n 2 /etc/passwd\n" \
"root:x:0:0:root:/root:/bin/bash\n" \ "root:x:0:0:root:/root:/bin/bash\n" \
@ -1226,9 +1239,12 @@ USE_FEATURE_DATE_ISOFMT( \
" -p PORT Server port (default 80)\n" \ " -p PORT Server port (default 80)\n" \
" -i Assume that we are started from inetd\n" \ " -i Assume that we are started from inetd\n" \
" -f Do not daemonize\n" \ " -f Do not daemonize\n" \
USE_FEATURE_HTTPD_SETUID(" -u USER[:GRP] Set uid/gid after binding to port\n") \ USE_FEATURE_HTTPD_SETUID( \
USE_FEATURE_HTTPD_BASIC_AUTH(" -r REALM Authentication Realm for Basic Authentication\n") \ " -u USER[:GRP] Set uid/gid after binding to port\n") \
USE_FEATURE_HTTPD_AUTH_MD5(" -m PASS Crypt PASS with md5 algorithm\n") \ USE_FEATURE_HTTPD_BASIC_AUTH( \
" -r REALM Authentication Realm for Basic Authentication\n") \
USE_FEATURE_HTTPD_AUTH_MD5( \
" -m PASS Crypt PASS with md5 algorithm\n") \
" -h HOME Specifies http HOME directory (default ./)\n" \ " -h HOME Specifies http HOME directory (default ./)\n" \
" -e STRING HTML encode STRING\n" \ " -e STRING HTML encode STRING\n" \
" -d STRING URL decode STRING" " -d STRING URL decode STRING"
@ -1249,7 +1265,8 @@ USE_FEATURE_DATE_ISOFMT( \
#define id_full_usage \ #define id_full_usage \
"Print information for USERNAME or the current user\n\n" \ "Print information for USERNAME or the current user\n\n" \
"Options:\n" \ "Options:\n" \
USE_SELINUX(" -c prints only the security context\n") \ USE_SELINUX( \
" -c prints only the security context\n") \
" -g prints only the group ID\n" \ " -g prints only the group ID\n" \
" -u prints only the user ID\n" \ " -u prints only the user ID\n" \
" -n print a name instead of a number\n" \ " -n print a name instead of a number\n" \
@ -1263,16 +1280,19 @@ USE_FEATURE_DATE_ISOFMT( \
#define ifconfig_full_usage \ #define ifconfig_full_usage \
"configure a network interface\n\n" \ "configure a network interface\n\n" \
"Options:\n" \ "Options:\n" \
USE_FEATURE_IPV6(" [add <address>[/<prefixlen>]]\n") \ USE_FEATURE_IPV6( \
USE_FEATURE_IPV6(" [del <address>[/<prefixlen>]]\n") \ " [add <address>[/<prefixlen>]]\n") \
USE_FEATURE_IPV6( \
" [del <address>[/<prefixlen>]]\n") \
" [[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n" \ " [[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n" \
" [netmask <address>] [dstaddr <address>]\n" \ " [netmask <address>] [dstaddr <address>]\n" \
USE_FEATURE_IFCONFIG_SLIP(" [outfill <NN>] [keepalive <NN>]\n") \ USE_FEATURE_IFCONFIG_SLIP( \
" " USE_FEATURE_IFCONFIG_HW("[hw ether <address>] ") \ " [outfill <NN>] [keepalive <NN>]\n") \
"[metric <NN>] [mtu <NN>]\n" \ " " USE_FEATURE_IFCONFIG_HW("[hw ether <address>] ") "[metric <NN>] [mtu <NN>]\n" \
" [[-]trailers] [[-]arp] [[-]allmulti]\n" \ " [[-]trailers] [[-]arp] [[-]allmulti]\n" \
" [multicast] [[-]promisc] [txqueuelen <NN>] [[-]dynamic]\n" \ " [multicast] [[-]promisc] [txqueuelen <NN>] [[-]dynamic]\n" \
USE_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ(" [mem_start <NN>] [io_addr <NN>] [irq <NN>]\n") \ USE_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ( \
" [mem_start <NN>] [io_addr <NN>] [irq <NN>]\n") \
" [up|down] ..." " [up|down] ..."
#define ifup_trivial_usage \ #define ifup_trivial_usage \
@ -1453,7 +1473,8 @@ USE_FEATURE_DATE_ISOFMT( \
" -v verbose output\n" \ " -v verbose output\n" \
" -q quiet output\n" \ " -q quiet output\n" \
" -L Lock to prevent simultaneous loads of a module\n" \ " -L Lock to prevent simultaneous loads of a module\n" \
USE_FEATURE_INSMOD_LOAD_MAP(" -m Output load map to stdout\n") \ USE_FEATURE_INSMOD_LOAD_MAP( \
" -m Output load map to stdout\n") \
" -o NAME Set internal module name to NAME\n" \ " -o NAME Set internal module name to NAME\n" \
" -x do not export externs" " -x do not export externs"
@ -1732,36 +1753,53 @@ USE_FEATURE_DATE_ISOFMT( \
USE_SELINUX("K") "] [filenames...]" USE_SELINUX("K") "] [filenames...]"
#define ls_full_usage \ #define ls_full_usage \
"List directory contents\n\n" \ "List directory contents\n\n" \
"Options:\n" \ "Options:" \
" -1 list files in a single column\n" \ "\n -1 list files in a single column" \
" -A do not list implied . and ..\n" \ "\n -A do not list implied . and .." \
" -a do not hide entries starting with .\n" \ "\n -a do not hide entries starting with ." \
" -C list entries by columns\n" \ "\n -C list entries by columns" \
USE_FEATURE_LS_TIMESTAMPS(" -c with -l: show ctime\n") \ USE_FEATURE_LS_TIMESTAMPS( \
USE_FEATURE_LS_COLOR(" --color[={always,never,auto}] to control coloring\n") \ "\n -c with -l: show ctime") \
" -d list directory entries instead of contents\n" \ USE_FEATURE_LS_COLOR( \
USE_FEATURE_LS_TIMESTAMPS(" -e list both full date and full time\n") \ "\n --color[={always,never,auto}] control coloring") \
USE_FEATURE_LS_FILETYPES(" -F append indicator (one of */=@|) to entries\n") \ "\n -d list directory entries instead of contents" \
" -i list the i-node for each file\n" \ USE_FEATURE_LS_TIMESTAMPS( \
" -l use a long listing format\n" \ "\n -e list both full date and full time") \
" -n list numeric UIDs and GIDs instead of names\n" \ USE_FEATURE_LS_FILETYPES( \
USE_FEATURE_LS_FILETYPES(" -p append indicator (one of /=@|) to entries\n") \ "\n -F append indicator (one of */=@|) to entries") \
USE_FEATURE_LS_FOLLOWLINKS(" -L list entries pointed to by symbolic links\n") \ "\n -i list the i-node for each file" \
USE_FEATURE_LS_RECURSIVE(" -R list subdirectories recursively\n") \ "\n -l use a long listing format" \
USE_FEATURE_LS_SORTFILES(" -r sort the listing in reverse order\n") \ "\n -n list numeric UIDs and GIDs instead of names" \
USE_FEATURE_LS_SORTFILES(" -S sort the listing by file size\n") \ USE_FEATURE_LS_FILETYPES( \
" -s list the size of each file, in blocks\n" \ "\n -p append indicator (one of /=@|) to entries") \
USE_FEATURE_AUTOWIDTH(" -T NUM assume Tabstop every NUM columns\n") \ USE_FEATURE_LS_FOLLOWLINKS( \
USE_FEATURE_LS_TIMESTAMPS(" -t with -l: show modification time\n") \ "\n -L list entries pointed to by symbolic links") \
USE_FEATURE_LS_TIMESTAMPS(" -u with -l: show access time\n") \ USE_FEATURE_LS_RECURSIVE( \
USE_FEATURE_LS_SORTFILES(" -v sort the listing by version\n") \ "\n -R list subdirectories recursively") \
USE_FEATURE_AUTOWIDTH(" -w NUM assume the terminal is NUM columns wide\n") \ USE_FEATURE_LS_SORTFILES( \
" -x list entries by lines instead of by columns\n" \ "\n -r sort the listing in reverse order") \
USE_FEATURE_LS_SORTFILES(" -X sort the listing by extension\n") \ USE_FEATURE_LS_SORTFILES( \
"\n -S sort the listing by file size") \
"\n -s list the size of each file, in blocks" \
USE_FEATURE_AUTOWIDTH( \
"\n -T NUM assume Tabstop every NUM columns") \
USE_FEATURE_LS_TIMESTAMPS( \
"\n -t with -l: show modification time") \
USE_FEATURE_LS_TIMESTAMPS( \
"\n -u with -l: show access time") \
USE_FEATURE_LS_SORTFILES( \
"\n -v sort the listing 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" \
USE_FEATURE_LS_SORTFILES( \
"\n -X sort the listing by extension") \
USE_FEATURE_HUMAN_READABLE( \ USE_FEATURE_HUMAN_READABLE( \
" -h print sizes in human readable format (e.g., 1K 243M 2G )\n") \ "\n -h print sizes in human readable format (e.g., 1K 243M 2G)") \
USE_SELINUX(" -k print security context\n") \ USE_SELINUX( \
USE_SELINUX(" -K print security context in long format\n") "\n -k print security context") \
USE_SELINUX( \
"\n -K print security context in long format")
#define lsattr_trivial_usage \ #define lsattr_trivial_usage \
"[-Radlv] [files...]" "[-Radlv] [files...]"
@ -1864,7 +1902,7 @@ USE_FEATURE_DATE_ISOFMT( \
"Called with no options (via hotplug) it uses environment variables\n" \ "Called with no options (via hotplug) it uses environment variables\n" \
"to determine which device to add/remove." "to determine which device to add/remove."
#define mdev_notes_usage "" \ #define mdev_notes_usage "" \
USE_FEATURE_MDEV_CONFIG( \ USE_FEATURE_MDEV_CONFIG( \
"The mdev config file contains lines that look like:\n" \ "The mdev config file contains lines that look like:\n" \
" hd[a-z][0-9]* 0:3 660\n\n" \ " hd[a-z][0-9]* 0:3 660\n\n" \
"That's device name (with regex match), uid:gid, and permissions.\n\n" \ "That's device name (with regex match), uid:gid, and permissions.\n\n" \
@ -1881,7 +1919,7 @@ USE_FEATURE_MDEV_CONFIG( \
"Config file parsing stops on the first matching line. If no config\n"\ "Config file parsing stops on the first matching line. If no config\n"\
"entry is matched, devices are created with default 0:0 660. (Make\n"\ "entry is matched, devices are created with default 0:0 660. (Make\n"\
"the last line match .* to override this.)\n\n" \ "the last line match .* to override this.)\n\n" \
) )
#define mesg_trivial_usage \ #define mesg_trivial_usage \
"[y|n]" "[y|n]"
@ -1975,8 +2013,7 @@ USE_FEATURE_MDEV_CONFIG( \
"Options:\n" \ "Options:\n" \
" -c Check for read-ability\n" \ " -c Check for read-ability\n" \
" -v0 Make version 0 swap [max 128 Megs]\n" \ " -v0 Make version 0 swap [max 128 Megs]\n" \
" -v1 Make version 1 swap [big!] (default for kernels >\n" \ " -v1 Make version 1 swap [big!] (default for kernels > 2.1.117)\n" \
" 2.1.117)\n" \
" block-count Number of block to use (default is entire partition)" " block-count Number of block to use (default is entire partition)"
#define mktemp_trivial_usage \ #define mktemp_trivial_usage \
@ -2179,15 +2216,16 @@ USE_FEATURE_MDEV_CONFIG( \
"Netcat opens a pipe to IP:port" USE_NC_EXTRA(" or file") \ "Netcat opens a pipe to IP:port" USE_NC_EXTRA(" or file") \
NC_OPTIONS_STR \ NC_OPTIONS_STR \
USE_NC_EXTRA( \ USE_NC_EXTRA( \
"\n -e exec rest of command line after connect\n" \ "\n -e exec rest of command line after connect" \
" -i SECS delay interval for lines sent\n" \ "\n -i SECS delay interval for lines sent" \
" -w SECS timeout for connect\n" \ "\n -w SECS timeout for connect" \
" -f file use file (ala /dev/ttyS0) instead of network" \ "\n -f file use file (ala /dev/ttyS0) instead of network" \
) \ ) \
USE_NC_SERVER( \ USE_NC_SERVER( \
"\n -l listen mode, for inbound connects\n" \ "\n -l listen mode, for inbound connects" \
USE_NC_EXTRA(" (use -l twice with -e for persistent server)\n") \ USE_NC_EXTRA( \
" -p PORT local port number" \ "\n (use -l twice with -e for persistent server)") \
"\n -p PORT local port number" \
) )
#define nc_notes_usage "" \ #define nc_notes_usage "" \
@ -2293,7 +2331,7 @@ USE_FEATURE_MDEV_CONFIG( \
"changes the password for the current user.\n" \ "changes the password for the current user.\n" \
"Options:\n" \ "Options:\n" \
" -a Define which algorithm shall be used for the password\n" \ " -a Define which algorithm shall be used for the password\n" \
" (Choices: des, md5, sha1)\n" \ " (Choices: des, md5)\n" /* ", sha1)" */ \
" -d Delete the password for the specified user account\n" \ " -d Delete the password for the specified user account\n" \
" -l Locks (disables) the specified user account\n" \ " -l Locks (disables) the specified user account\n" \
" -u Unlocks (re-enables) the specified user account" " -u Unlocks (re-enables) the specified user account"
@ -2320,14 +2358,19 @@ USE_FEATURE_MDEV_CONFIG( \
"Lists the PIDs of all processes with names that match the\n" \ "Lists the PIDs of all processes with names that match the\n" \
"names on the command line.\n" \ "names on the command line.\n" \
USAGE_PIDOF \ USAGE_PIDOF \
USE_FEATURE_PIDOF_SINGLE("\n -s display only a single PID") \ USE_FEATURE_PIDOF_SINGLE( \
USE_FEATURE_PIDOF_OMIT("\n -o omit given pid.") \ "\n -s display only a single PID") \
USE_FEATURE_PIDOF_OMIT("\n Use %PPID to omit the parent pid of pidof itself") USE_FEATURE_PIDOF_OMIT( \
"\n -o omit given pid.") \
USE_FEATURE_PIDOF_OMIT( \
"\n Use %PPID to omit the parent pid of pidof itself")
#define pidof_example_usage \ #define pidof_example_usage \
"$ pidof init\n" \ "$ pidof init\n" \
"1\n" \ "1\n" \
USE_FEATURE_PIDOF_OMIT("$ pidof /bin/sh\n20351 5973 5950\n") \ USE_FEATURE_PIDOF_OMIT( \
USE_FEATURE_PIDOF_OMIT("$ pidof /bin/sh -o %PPID\n20351 5950") "$ pidof /bin/sh\n20351 5973 5950\n") \
USE_FEATURE_PIDOF_OMIT( \
"$ pidof /bin/sh -o %PPID\n20351 5950")
#ifndef CONFIG_FEATURE_FANCY_PING #ifndef CONFIG_FEATURE_FANCY_PING
#define ping_trivial_usage "host" #define ping_trivial_usage "host"
@ -2338,9 +2381,9 @@ USE_FEATURE_MDEV_CONFIG( \
#define ping_full_usage \ #define ping_full_usage \
"Send ICMP ECHO_REQUEST packets to network hosts.\n\n" \ "Send ICMP ECHO_REQUEST packets to network hosts.\n\n" \
"Options:\n" \ "Options:\n" \
" -c COUNT Send only COUNT pings\n" \ " -c CNT Send only CNT pings\n" \
" -s SIZE Send SIZE data bytes in packets (default=56)\n" \ " -s SIZE Send SIZE data bytes in packets (default=56)\n" \
" -I IPADDR Use IPADDR as source address\n" \ " -I IP Use IP as source address\n" \
" -q Quiet mode, only displays output at start\n" \ " -q Quiet mode, only displays output at start\n" \
" and when finished" " and when finished"
#endif #endif
@ -2362,7 +2405,7 @@ USE_FEATURE_MDEV_CONFIG( \
#define ping6_full_usage \ #define ping6_full_usage \
"Send ICMP ECHO_REQUEST packets to network hosts.\n\n" \ "Send ICMP ECHO_REQUEST packets to network hosts.\n\n" \
"Options:\n" \ "Options:\n" \
" -c COUNT Send only COUNT pings\n" \ " -c CNT Send only CNT pings\n" \
" -s SIZE Send SIZE data bytes in packets (default=56)\n" \ " -s SIZE Send SIZE data bytes in packets (default=56)\n" \
" -q Quiet mode, only displays output at start\n" \ " -q Quiet mode, only displays output at start\n" \
" and when finished" " and when finished"
@ -2429,8 +2472,10 @@ USE_FEATURE_MDEV_CONFIG( \
#define ps_full_usage \ #define ps_full_usage \
"Report process status\n" \ "Report process status\n" \
USAGE_PS \ USAGE_PS \
USE_SELINUX("\n -c show SE Linux context") \ USE_SELINUX( \
USE_FEATURE_PS_WIDE("\n w wide output") "\n -c show SE Linux context") \
USE_FEATURE_PS_WIDE( \
"\n w wide output")
#endif /* ENABLE_DESKTOP */ #endif /* ENABLE_DESKTOP */
@ -2481,7 +2526,8 @@ USE_FEATURE_MDEV_CONFIG( \
USE_FEATURE_READLINK_FOLLOW("[-f] ") "FILE" USE_FEATURE_READLINK_FOLLOW("[-f] ") "FILE"
#define readlink_full_usage \ #define readlink_full_usage \
"Displays the value of a symbolic link." \ "Displays the value of a symbolic link." \
USE_FEATURE_READLINK_FOLLOW("\n\nOptions:\n" \ USE_FEATURE_READLINK_FOLLOW( \
"\n\nOptions:\n" \
" -f canonicalize by following all symlinks") " -f canonicalize by following all symlinks")
#define readprofile_trivial_usage \ #define readprofile_trivial_usage \
@ -2541,7 +2587,7 @@ USE_FEATURE_MDEV_CONFIG( \
"Options:\n" \ "Options:\n" \
" -i always prompt before removing each destination\n" \ " -i always prompt before removing each destination\n" \
" -f remove existing destinations, never prompt\n" \ " -f remove existing destinations, never prompt\n" \
" -r or -R remove the contents of directories recursively" " -r,-R remove the contents of directories recursively"
#define rm_example_usage \ #define rm_example_usage \
"$ rm -rf /tmp/foo\n" "$ rm -rf /tmp/foo\n"
@ -2720,15 +2766,18 @@ USE_FEATURE_MDEV_CONFIG( \
SKIP_FEATURE_FANCY_SLEEP("Pause for N seconds.") \ SKIP_FEATURE_FANCY_SLEEP("Pause for N seconds.") \
USE_FEATURE_FANCY_SLEEP( \ USE_FEATURE_FANCY_SLEEP( \
"Pause for a time equal to the total of the args given, where each arg can\n" \ "Pause for a time equal to the total of the args given, where each arg can\n" \
" have an optional suffix of (s)econds, (m)inutes, (h)ours, or (d)ays.") "have an optional suffix of (s)econds, (m)inutes, (h)ours, or (d)ays.")
#define sleep_example_usage \ #define sleep_example_usage \
"$ sleep 2\n" \ "$ sleep 2\n" \
"[2 second delay results]\n" \ "[2 second delay results]\n" \
USE_FEATURE_FANCY_SLEEP("$ sleep 1d 3h 22m 8s\n" \ USE_FEATURE_FANCY_SLEEP( \
"$ sleep 1d 3h 22m 8s\n" \
"[98528 second delay results]\n") "[98528 second delay results]\n")
#define sort_trivial_usage \ #define sort_trivial_usage \
"[-nru" USE_FEATURE_SORT_BIG("gMcszbdfimSTokt] [-o outfile] [-k start[.offset][opts][,end[.offset][opts]] [-t char") "] [FILE]..." "[-nru" \
USE_FEATURE_SORT_BIG("gMcszbdfimSTokt] [-o outfile] [-k start[.offset][opts][,end[.offset][opts]] [-t char") \
"] [FILE]..."
#define sort_full_usage \ #define sort_full_usage \
"Sorts lines of text in the specified files\n\n" \ "Sorts lines of text in the specified files\n\n" \
"Options:\n" \ "Options:\n" \
@ -2740,19 +2789,20 @@ USE_FEATURE_MDEV_CONFIG( \
" -g general numerical sort\n" \ " -g general numerical sort\n" \
" -i ignore unprintable characters\n" \ " -i ignore unprintable characters\n" \
" -k specify sort key\n" \ " -k specify sort key\n" \
" -M sort month\n" \ " -M sort month\n") \
) \
" -n sort numbers\n" \ " -n sort numbers\n" \
USE_FEATURE_SORT_BIG( \ USE_FEATURE_SORT_BIG( \
" -o output to file\n" \ " -o output to file\n" \
" -k sort by key\n" \ " -k sort by key\n" \
" -t use key separator other than whitespace\n" \ " -t use key separator other than whitespace\n") \
) \
" -r reverse sort order\n" \ " -r reverse sort order\n" \
USE_FEATURE_SORT_BIG(" -s stable (don't sort ties alphabetically)\n") \ USE_FEATURE_SORT_BIG( \
" -s stable (don't sort ties alphabetically)\n") \
" -u suppress duplicate lines" \ " -u suppress duplicate lines" \
USE_FEATURE_SORT_BIG("\n -z input terminated by nulls, not newlines\n") \ USE_FEATURE_SORT_BIG( \
USE_FEATURE_SORT_BIG(" -mST ignored for GNU compatibility") \ "\n -z input terminated by nulls, not newlines\n") \
USE_FEATURE_SORT_BIG( \
" -mST ignored for GNU compatibility") \
"" ""
#define sort_example_usage \ #define sort_example_usage \
"$ echo -e \"e\\nf\\nb\\nd\\nc\\na\" | sort\n" \ "$ echo -e \"e\\nf\\nb\\nd\\nc\\na\" | sort\n" \
@ -2785,11 +2835,11 @@ USE_FEATURE_MDEV_CONFIG( \
"\n -n|--name <process-name> stop processes with this name" \ "\n -n|--name <process-name> stop processes with this name" \
"\n -p|--pidfile <pid-file> save or load pid using a pid-file" \ "\n -p|--pidfile <pid-file> save or load pid using a pid-file" \
"\n -q|--quiet be quiet" \ "\n -q|--quiet be quiet" \
USE_FEATURE_START_STOP_DAEMON_FANCY( \ USE_FEATURE_START_STOP_DAEMON_FANCY( \
"\n -o|--oknodo exit status 0 if nothing done" \ "\n -o|--oknodo exit status 0 if nothing done" \
"\n -v|--verbose be verbose" \ "\n -v|--verbose be verbose" \
"\n -N|--nicelevel <N> add N to process's nice level" \ "\n -N|--nicelevel <N> add N to process's nice level" \
) \ ) \
"\n -s|--signal <signal> signal to send (default TERM)" \ "\n -s|--signal <signal> signal to send (default TERM)" \
"\n -U|--chuid <username>|<uid> start process with this name" "\n -U|--chuid <username>|<uid> start process with this name"
@ -2798,12 +2848,13 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \
#define stat_full_usage \ #define stat_full_usage \
"display file (default) or filesystem status.\n\n" \ "display file (default) or filesystem status.\n\n" \
"Options:\n" \ "Options:\n" \
USE_FEATURE_STAT_FORMAT(" -c fmt use the specified format\n") \ USE_FEATURE_STAT_FORMAT( \
" -c fmt use the specified format\n") \
" -f display filesystem status\n" \ " -f display filesystem status\n" \
" -L,-l dereference links\n" \ " -L,-l dereference links\n" \
" -t display info in terse form\n" \ " -t display info in terse form" \
USE_FEATURE_STAT_FORMAT( \ USE_FEATURE_STAT_FORMAT( \
"\nValid format sequences for files:\n" \ "\n\nValid format sequences for files:\n" \
" %a Access rights in octal\n" \ " %a Access rights in octal\n" \
" %A Access rights in human readable form\n" \ " %A Access rights in human readable form\n" \
" %b Number of blocks allocated (see %B)\n" \ " %b Number of blocks allocated (see %B)\n" \
@ -2842,7 +2893,7 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \
" %s Block size (for faster transfers)\n" \ " %s Block size (for faster transfers)\n" \
" %S Fundamental block size (for block counts)\n" \ " %S Fundamental block size (for block counts)\n" \
" %t Type in hex\n" \ " %t Type in hex\n" \
" %T Type in human readable form\n" \ " %T Type in human readable form" \
) )
#define strings_trivial_usage \ #define strings_trivial_usage \
@ -2959,11 +3010,11 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \
" -l n Sets the local log level of messages to n\n" \ " -l n Sets the local log level of messages to n\n" \
" -S Make logging output smaller" \ " -S Make logging output smaller" \
USE_FEATURE_ROTATE_LOGFILE( \ USE_FEATURE_ROTATE_LOGFILE( \
"\n -s SIZE Max size (KB) before rotate (default=200KB, 0=off)\n" \ "\n -s SIZE Max size (KB) before rotate (default=200KB, 0=off)" \
" -b NUM Number of rotated logs to keep (default=1, max=99, 0=purge)") \ "\n -b NUM Number of rotated logs to keep (default=1, max=99, 0=purge)") \
USE_FEATURE_REMOTE_LOG( \ USE_FEATURE_REMOTE_LOG( \
"\n -R HOST[:PORT] Log to IP or hostname on PORT (default PORT=514/UDP)\n" \ "\n -R HOST[:PORT] Log to IP or hostname on PORT (default PORT=514/UDP)" \
" -L Log locally and via network logging (default is network only)") \ "\n -L Log locally and via network logging (default is network only)") \
USE_FEATURE_IPC_SYSLOG( \ USE_FEATURE_IPC_SYSLOG( \
"\n -C [size(KiB)] Log to a circular buffer (read the buffer using logread)") "\n -C [size(KiB)] Log to a circular buffer (read the buffer using logread)")
#define syslogd_example_usage \ #define syslogd_example_usage \
@ -2977,10 +3028,12 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \
"With more than one FILE, precede each with a header giving the\n" \ "With more than one FILE, precede each with a header giving the\n" \
"file name. With no FILE, or when FILE is -, read standard input.\n\n" \ "file name. With no FILE, or when FILE is -, read standard input.\n\n" \
"Options:\n" \ "Options:\n" \
USE_FEATURE_FANCY_TAIL(" -c N[kbm] output the last N bytes\n") \ USE_FEATURE_FANCY_TAIL( \
" -c N[kbm] output the last N bytes\n") \
" -n N[kbm] print last N lines instead of last 10\n" \ " -n N[kbm] print last N lines instead of last 10\n" \
" -f output data as the file grows" \ " -f output data as the file grows" \
USE_FEATURE_FANCY_TAIL( "\n -q never output headers giving file names\n" \ USE_FEATURE_FANCY_TAIL( \
"\n -q never output headers giving file names\n" \
" -s SEC wait SEC seconds between reads with -f\n" \ " -s SEC wait SEC seconds between reads with -f\n" \
" -v always output headers giving file names\n\n" \ " -v always output headers giving file names\n\n" \
"If the first character of N (bytes or lines) is a '+', output begins with\n" \ "If the first character of N (bytes or lines) is a '+', output begins with\n" \
@ -2999,21 +3052,25 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \
#define tar_full_usage \ #define tar_full_usage \
"Create, extract, or list files from a tar file.\n\n" \ "Create, extract, or list files from a tar file.\n\n" \
"Options:\n" \ "Options:\n" \
USE_FEATURE_TAR_CREATE(" c create\n") \ USE_FEATURE_TAR_CREATE( \
" c create\n") \
" x extract\n" \ " x extract\n" \
" t list\n" \ " t list\n" \
"\nArchive format selection:\n" \ "\nArchive format selection:\n" \
USE_FEATURE_TAR_GZIP(" z Filter the archive through gzip\n") \ USE_FEATURE_TAR_GZIP( \
USE_FEATURE_TAR_BZIP2(" j Filter the archive through bzip2\n") \ " z Filter the archive through gzip\n") \
USE_FEATURE_TAR_LZMA(" a Filter the archive through lzma\n") \ USE_FEATURE_TAR_BZIP2( \
USE_FEATURE_TAR_COMPRESS(" Z Filter the archive through compress\n") \ " j Filter the archive through bzip2\n") \
USE_FEATURE_TAR_LZMA( \
" a Filter the archive through lzma\n") \
USE_FEATURE_TAR_COMPRESS( \
" Z Filter the archive through compress\n") \
"\nFile selection:\n" \ "\nFile selection:\n" \
" f name of TARFILE or \"-\" for stdin\n" \ " f name of TARFILE or \"-\" for stdin\n" \
" O extract to stdout\n" \ " O extract to stdout\n" \
USE_FEATURE_TAR_FROM( \ USE_FEATURE_TAR_FROM( \
" exclude file to exclude\n" \ " exclude file to exclude\n" \
" X file with names to exclude\n" \ " X file with names to exclude\n") \
) \
" C change to directory DIR before operation\n" \ " C change to directory DIR before operation\n" \
" v verbosely list files processed" " v verbosely list files processed"
#define tar_example_usage \ #define tar_example_usage \
@ -3252,12 +3309,15 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \
"[flags] FILESYSTEM|DIRECTORY" "[flags] FILESYSTEM|DIRECTORY"
#define umount_full_usage \ #define umount_full_usage \
"Unmount file systems\n" \ "Unmount file systems\n" \
"\nFlags:\n" " -a Unmount all file systems" \ "\nFlags:" \
USE_FEATURE_MTAB_SUPPORT(" in /etc/mtab\n -n Don't erase /etc/mtab entries") \ "\n -a Unmount all file systems" USE_FEATURE_MTAB_SUPPORT(" in /etc/mtab") \
USE_FEATURE_MTAB_SUPPORT( \
"\n -n Don't erase /etc/mtab entries") \
"\n -r Try to remount devices as read-only if mount is busy" \ "\n -r Try to remount devices as read-only if mount is busy" \
"\n -l Lazy umount (detach filesystem)" \ "\n -l Lazy umount (detach filesystem)" \
"\n -f Force umount (i.e., unreachable NFS server)" \ "\n -f Force umount (i.e., unreachable NFS server)" \
USE_FEATURE_MOUNT_LOOP("\n -D Do not free loop device (if a loop device has been used)") USE_FEATURE_MOUNT_LOOP( \
"\n -D Do not free loop device (if a loop device has been used)")
#define umount_example_usage \ #define umount_example_usage \
"$ umount /dev/hdc1\n" "$ umount /dev/hdc1\n"
@ -3463,10 +3523,13 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \
#define xargs_full_usage \ #define xargs_full_usage \
"Executes COMMAND on every item given by standard input.\n\n" \ "Executes COMMAND on every item given by standard input.\n\n" \
"Options:\n" \ "Options:\n" \
USE_FEATURE_XARGS_SUPPORT_CONFIRMATION(" -p Prompt the user about whether to run each command\n") \ USE_FEATURE_XARGS_SUPPORT_CONFIRMATION( \
" -p Prompt the user about whether to run each command\n") \
" -r Do not run command for empty read lines\n" \ " -r Do not run command for empty read lines\n" \
USE_FEATURE_XARGS_SUPPORT_TERMOPT(" -x Exit if the size is exceeded\n") \ USE_FEATURE_XARGS_SUPPORT_TERMOPT( \
USE_FEATURE_XARGS_SUPPORT_ZERO_TERM(" -0 Input filenames are terminated by a null character\n") \ " -x Exit if the size is exceeded\n") \
USE_FEATURE_XARGS_SUPPORT_ZERO_TERM( \
" -0 Input filenames are terminated by a null character\n") \
" -t Print the command line on stderr before executing it" " -t Print the command line on stderr before executing it"
#define xargs_example_usage \ #define xargs_example_usage \
"$ ls | xargs gzip\n" \ "$ ls | xargs gzip\n" \