X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=usage.h;h=13759d23f5195be13339f7732b3e7f0d515a47d1;hb=deba6dea0340465af76624f9ef3a0bbe28130d8a;hp=6b8b6552b3db32ea3f76e0f5d3ab1dc109830adf;hpb=c96381be40f1fd56f9eca11f43be7a10865c1881;p=oweals%2Fbusybox.git diff --git a/usage.h b/usage.h index 6b8b6552b..13759d23f 100644 --- a/usage.h +++ b/usage.h @@ -12,16 +12,15 @@ "\t-p timeconstant\n" #define ar_trivial_usage \ - "-[ovR]{ptx} archive filenames" + "-[ov][ptx] ARCHIVE FILES" #define ar_full_usage \ - "Extract or list files from an ar archive.\n\n" \ + "Extract or list FILES from an ar archive.\n\n" \ "Options:\n" \ "\t-o\t\tpreserve original dates\n" \ "\t-p\t\textract to stdout\n" \ "\t-t\t\tlist\n" \ "\t-x\t\textract\n" \ - "\t-v\t\tverbosely list files processed\n" \ - "\t-R\t\trecursive action" + "\t-v\t\tverbosely list files processed\n" #define basename_trivial_usage \ "FILE [SUFFIX]" @@ -75,11 +74,12 @@ "-r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo\n" #define chown_trivial_usage \ - "[OPTION]... OWNER[<.|:>[GROUP]] FILE..." + "[ -Rh ]... OWNER[<.|:>[GROUP]] FILE..." #define chown_full_usage \ "Change the owner and/or group of each FILE to OWNER and/or GROUP.\n" \ "\nOptions:\n" \ - "\t-R\tChanges files and directories recursively." + "\t-R\tChanges files and directories recursively.\n" \ + "\t-h\tDo not dereference symbolic links." #define chown_example_usage \ "$ ls -l /tmp/foo\n" \ "-r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo\n" \ @@ -129,6 +129,18 @@ "\t-f\tforce (implied; ignored) - always set\n" \ "\t-R\tCopies directories recursively" +#define cpio_trivial_usage \ + "-[dimtuv][F cpiofile]" +#define cpio_full_usage \ + "Extract or list files from a cpio archive\n" \ + "Main operation mode:\n" \ + "\td\t\tmake leading directories\n" \ + "\ti\t\textract\n" \ + "\tm\t\tpreserve mtime\n" \ + "\tt\t\tlist\n" \ + "\tu\t\tunconditional overwrite\t" \ + "\tF\t\tinput from file\t" + #define cut_trivial_usage \ "[OPTION]... [FILE]..." #define cut_full_usage \ @@ -164,7 +176,7 @@ #define dc_full_usage \ "This is a Tiny RPN calculator that understands the\n" \ "following operations: +, -, /, *, and, or, not, eor.\n" \ - "i.e. 'dc 2 2 add' -> 4, and 'dc 8 8 \\* 2 2 + /' -> 16" + "i.e., 'dc 2 2 add' -> 4, and 'dc 8 8 \\* 2 2 + /' -> 16" #define dc_example_usage \ "$ dc 2 2 +\n" \ "4\n" \ @@ -212,7 +224,7 @@ #define USAGE_NOT_HUMAN_READABLE(a) a #endif #define df_trivial_usage \ - "[-" USAGE_HUMAN_READABLE("hm") USAGE_NOT_HUMAN_READABLE("") "k] [filesystem ...]" + "[-" USAGE_HUMAN_READABLE("hm") USAGE_NOT_HUMAN_READABLE("") "k] [FILESYSTEM ...]" #define df_full_usage \ "Print the filesystem space used and space available.\n\n" \ "Options:\n" \ @@ -220,7 +232,7 @@ "\n\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n" \ "\t-m\tprint sizes in megabytes\n" \ "\t-k\tprint sizes in kilobytes(default)") USAGE_NOT_HUMAN_READABLE( \ - "\n\t-k\tprint sizes in kilobytes(compatability)") + "\n\t-k\tprint sizes in kilobytes(compatibility)") #define df_example_usage \ "$ df\n" \ "Filesystem 1k-blocks Used Available Use% Mounted on\n" \ @@ -250,23 +262,27 @@ "\t-s SIZE\t\tUse a buffer of size SIZE" #define dos2unix_trivial_usage \ - "[option] [file]" + "[option] [FILE]" #define dos2unix_full_usage \ - "Converts a text file to/from dos format to unix format.\n\n" \ + "Converts FILE from dos format to unix format. When no option\n" \ + "is given, the input is converted to the opposite output format.\n" \ + "When no file is given, uses stdin for input and stdout for output.\n\n" \ "Options:\n" \ "\t-u\toutput will be in UNIX format\n" \ - "\t-d\toutput will be in DOS format\n\n" \ - "- when no option is given then input format will be automaticaly detected\n" \ - " and converted to the oposite format on output\n" \ - "- when no file is given, then stdin is used as input and stdout as output" + "\t-d\toutput will be in DOS format" #define dpkg_trivial_usage \ - "[-i|-r|--unpack|--configure] my.deb" + "-i package_file\n" + "[-CPru] package_name" #define dpkg_full_usage \ - "WORK IN PROGRESS, only usefull for debian-installer" + "\t-i\tInstall the package\n" \ + "\t-C\tConfigure an unpackaged package\n" \ + "\t-P\tPurge all files of a package\n" \ + "\t-r\tRemove all but the configuration files for a package\n" \ + "\t-u\tUnpack a package, but dont configure it\n" #define dpkg_deb_trivial_usage \ - "[-cefItxX] file [argument]" + "[-cefItxX] FILE [argument]" #define dpkg_deb_full_usage \ "Perform actions on debian packages (.debs)\n\n" \ "Options:\n" \ @@ -275,7 +291,7 @@ "\t-f\tDisplay control field name starting with [argument]\n" \ "\t-I\tDisplay the control filenamed [argument]\n" \ "\t-t\tExtract filesystem tree to stdout in tar format\n" \ - "\t-x\tExctract packages filesystem tree to directory\n" \ + "\t-x\tExtract packages filesystem tree to directory\n" \ "\t-X\tVerbose extract" #define dpkg_deb_example_usage \ "$ dpkg-deb -X ./busybox_0.48-1_i386.deb /tmp\n" @@ -292,7 +308,7 @@ "\n\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n" \ "\t-m\tprint sizes in megabytes\n" \ "\t-k\tprint sizes in kilobytes(default)") USAGE_NOT_HUMAN_READABLE( \ - "\n\t-k\tprint sizes in kilobytes(compatability)") + "\n\t-k\tprint sizes in kilobytes(compatibility)") #define du_example_usage \ "$ du\n" \ "16 ./CVS\n" \ @@ -317,7 +333,7 @@ "[FILE]" #define dutmp_full_usage \ "Dump utmp file format (pipe delimited) from FILE\n" \ - "or stdin to stdout. (i.e. 'dutmp /var/run/utmp')" + "or stdin to stdout. (i.e., 'dutmp /var/run/utmp')" #define dutmp_example_usage \ "$ dutmp /var/run/utmp\n" \ "8|7||si|||0|0|0|955637625|760097|0\n" \ @@ -334,7 +350,7 @@ "Prints the specified ARGs to stdout\n\n" \ "Options:\n" \ "\t-n\tsuppress trailing newline\n" \ - "\t-e\tinterpret backslash-escaped characters (i.e. \\t=tab etc)\n" \ + "\t-e\tinterpret backslash-escaped characters (i.e., \\t=tab)\n" \ "\t-E\tdisable interpretation of backslash-escaped characters" #define echo_example_usage \ "$ echo "Erik is cool"\n" \ @@ -343,8 +359,8 @@ "Erik\n" \ "is\n" \ "cool\n" \ - "$ echo "Erik\nis\ncool"\n" \ - "Erik\nis\ncool\n" + "$ echo "Erik\\nis\\ncool"\n" \ + "Erik\\nis\\ncool\n" #define env_trivial_usage \ "[-iu] [-] [name=value]... [command]" @@ -518,7 +534,7 @@ "done\n" #define grep_trivial_usage \ - "[-ihHnqvs] pattern [files...]" + "[-ihHnqvs] PATTERN [FILEs...]" #define grep_full_usage \ "Search for PATTERN in each FILE or standard input.\n\n" \ "Options:\n" \ @@ -559,11 +575,11 @@ "\t-c\tWrite output to standard output instead of FILE.gz\n" \ "\t-d\tdecompress" #define gzip_example_usage \ - "$ ls -la /tmp/BusyBox*\n" \ - "-rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar\n" \ - "$ gzip /tmp/BusyBox-0.43.tar\n" \ - "$ ls -la /tmp/BusyBox*\n" \ - "-rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/BusyBox-0.43.tar.gz\n" + "$ ls -la /tmp/busybox*\n" \ + "-rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/busybox.tar\n" \ + "$ gzip /tmp/busybox.tar\n" \ + "$ ls -la /tmp/busybox*\n" \ + "-rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/busybox.tar.gz\n" #define halt_trivial_usage \ "" @@ -589,10 +605,10 @@ "Print out a unique 32-bit identifier for the machine." #define hostname_trivial_usage \ - "[OPTION] {hostname | -F file}" + "[OPTION] {hostname | -F FILE}" #define hostname_full_usage \ "Get or set the hostname or DNS domain name. If a hostname is given\n" \ - "(or a file with the -F parameter), the host name will be set.\n\n" \ + "(or FILE with the -F parameter), the host name will be set.\n\n" \ "Options:\n" \ "\t-s\t\tShort\n" \ "\t-i\t\tAddresses for the hostname\n" \ @@ -600,7 +616,7 @@ "\t-F, --file FILE\tUse the contents of FILE to specify the hostname" #define hostname_example_usage \ "$ hostname\n" \ - "slag \n" + "sage \n" #define id_trivial_usage \ "[OPTIONS]... [USERNAME]" @@ -713,7 +729,7 @@ " sysinit actions are completed before continuing. Following the\n" \ " completion of all sysinit actions, all 'wait' actions are run.\n" \ " 'wait' actions, like 'sysinit' actions, cause init to wait until\n" \ -" the specified task completes. 'once' actions are asyncronous,\n" \ +" the specified task completes. 'once' actions are asynchronous,\n" \ " therefore, init does not wait for them to complete. 'ctrlaltdel'\n" \ " actions are run when the system detects that someone on the system\n" \ " console has pressed the CTRL-ALT-DEL key combination. Typically one\n" \ @@ -949,7 +965,7 @@ USAGE_HUMAN_READABLE( \ "\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n" \ "\t-k\tprint sizes in kilobytes(default)") USAGE_NOT_HUMAN_READABLE( \ - "\t-k\tprint sizes in kilobytes(compatability)") + "\t-k\tprint sizes in kilobytes(compatibility)") #define lsmod_trivial_usage \ "" @@ -1003,7 +1019,7 @@ #define mkdir_trivial_usage \ "[OPTION] DIRECTORY..." #define mkdir_full_usage \ - "Create the DIRECTORY(ies), if they do not already exist\n\n" \ + "Create the DIRECTORY(ies) if they do not already exist\n\n" \ "Options:\n" \ "\t-m\tset permission mode (as in chmod), not rwxrwxrwx - umask\n" \ "\t-p\tno error if existing, make parent directories as needed" @@ -1061,13 +1077,20 @@ "[-q] TEMPLATE" #define mktemp_full_usage \ "Creates a temporary file with its name based on TEMPLATE.\n" \ - "TEMPLATE is any name with six `Xs' (i.e. /tmp/temp.XXXXXX)." + "TEMPLATE is any name with six `Xs' (i.e., /tmp/temp.XXXXXX)." #define mktemp_example_usage \ "$ mktemp /tmp/temp.XXXXXX\n" \ "/tmp/temp.mWiLjM\n" \ "$ ls -la /tmp/temp.mWiLjM\n" \ "-rw------- 1 andersen andersen 0 Apr 25 17:10 /tmp/temp.mWiLjM\n" +#define modprobe_trivial_usage \ + "[FILE ...]" +#define modprobe_full_usage \ + "Used for hight level module loading and unloading." +#define modprobe_example_usage \ + "$ modprobe cdrom\n" + #define more_trivial_usage \ "[FILE ...]" #define more_full_usage \ @@ -1086,7 +1109,7 @@ #define USAGE_MTAB(a) #endif #define mount_trivial_usage \ - "[flags] device directory [-o options,more-options]" + "[flags] DEVICE NODE [-o options,more-options]" #define mount_full_usage \ "Mount a filesystem\n\n" \ "Flags:\n" \ @@ -1111,8 +1134,9 @@ "\tsuid/nosuid:\tAllow set-user-id-root programs / disallow them.\n" \ "\tremount:\tRe-mount a mounted filesystem, changing its flags.\n" \ "\tro/rw:\t\tMount for read-only / read-write.\n" \ + "\tbind:\t\tUse the linux 2.4.x \"bind\" feature.\n" \ "\nThere are EVEN MORE flags that are specific to each filesystem.\n" \ - "You'll have to see the written documentation for those." + "You'll have to see the written documentation for those filesystems." #define mount_example_usage \ "$ mount\n" \ "/dev/hda3 on / type minix (rw)\n" \ @@ -1154,9 +1178,10 @@ "221 foobar closing connection\n" #define nslookup_trivial_usage \ - "[HOST]" + "[HOST] [SERVER]" #define nslookup_full_usage \ - "Queries the nameserver for the IP address of the given HOST" + "Queries the nameserver for the IP address of the given HOST\n" \ + "optionally using a specified DNS server" #define nslookup_example_usage \ "$ nslookup localhost\n" \ "Server: default\n" \ @@ -1165,7 +1190,15 @@ "Name: debian\n" \ "Address: 127.0.0.1\n" -#ifdef BB_FEATURE_SIMPLE_PING +#define pidof_trivial_usage \ + "process-name [process-name ...]" +#define pidof_full_usage \ + "Lists the PIDs of all processes with names that match the names on the command line" +#define pidof_example_usage \ + "$ pidof init\n" \ + "1\n" + +#ifndef BB_FEATURE_FANCY_PING #define ping_trivial_usage "host" #define ping_full_usage "Send ICMP ECHO_REQUEST packets to network hosts" #else @@ -1189,9 +1222,9 @@ "round-trip min/avg/max = 20.1/20.1/20.1 ms\n" #define pivot_root_trivial_usage \ - "new_root put_old" + "NEW_ROOT PUT_OLD" #define pivot_root_full_usage \ - "Move the current root file system to put_old and make new_root\n" \ + "Move the current root file system to PUT_OLD and make NEW_ROOT\n" \ "the new root file system." #define poweroff_trivial_usage \ @@ -1270,7 +1303,7 @@ "Remove (unlink) the FILE(s). You may use '--' to\n" \ "indicate that all following arguments are non-options.\n\n" \ "Options:\n" \ - "\t-i\t\talways prompt before removing each destinations\n" \ + "\t-i\t\talways prompt before removing each destination" \ "\t-f\t\tremove existing destinations, never prompt\n" \ "\t-r or -R\tremove the contents of directories recursively" #define rm_example_usage \ @@ -1297,19 +1330,23 @@ #define route_full_usage \ "Edit the kernel's routing tables" +#define rpm2cpio_trivial_usage \ + "package.rpm" +#define rpm2cpio_full_usage \ + "Outputs a cpio archive of the rpm file." + #define rpmunpack_trivial_usage \ "< package.rpm | gunzip | cpio -idmuv" #define rpmunpack_full_usage \ "Extracts an rpm archive." - + #define sed_trivial_usage \ - "[-Vhnef] pattern [files...]" + "[-nef] pattern [files...]" #define sed_full_usage \ "Options:\n" \ "\t-n\t\tsuppress automatic printing of pattern space\n" \ "\t-e script\tadd the script to the commands to be executed\n" \ "\t-f scriptfile\tadd the contents of script-file to the commands to be executed\n" \ - "\t-h\t\tdisplay this help message\n" \ "\n" \ "If no -e or -f is given, the first non-option argument is taken as the\n" \ "sed script to interpret. All remaining arguments are names of input\n" \ @@ -1328,12 +1365,12 @@ #define setkeycodes_example_usage \ "$ setkeycodes e030 127\n" -#define sh_trivial_usage \ +#define lash_trivial_usage \ "[FILE]...\n" \ "or: sh -c command [args]..." -#define sh_full_usage \ +#define lash_full_usage \ "lash: The BusyBox LAme SHell (command interpreter)" -#define sh_notes_usage \ +#define lash_notes_usage \ "This command does not yet have proper documentation.\n" \ "\n" \ "Use lash just as you would use any other shell. It properly handles pipes,\n" \ @@ -1380,27 +1417,27 @@ "f\n" #define stty_trivial_usage \ - "[-a|g] [-F device] [SETTING]..." + "[-a|g] [-F DEVICE] [SETTING]..." #define stty_full_usage \ "Without arguments, prints baud rate, line discipline," \ "\nand deviations from stty sane." \ "\n\nOptions:" \ - "\n\t-F device\topen device instead of stdin" \ + "\n\t-F DEVICE\topen device instead of stdin" \ "\n\t-a\t\tprint all current settings in human-readable form" \ "\n\t-g\t\tprint in stty-readable form" \ - "\n\t[SETTING]\tsee documentation" + "\n\t[SETTING]\tsee manpage" #define swapoff_trivial_usage \ - "[OPTION] [device]" + "[OPTION] [DEVICE]" #define swapoff_full_usage \ - "Stop swapping virtual memory pages on the given device.\n\n" \ + "Stop swapping virtual memory pages on DEVICE.\n\n" \ "Options:\n" \ "\t-a\tStop swapping on all swap devices" #define swapon_trivial_usage \ - "[OPTION] [device]" + "[OPTION] [DEVICE]" #define swapon_full_usage \ - "Start swapping virtual memory pages on the given device.\n\n" \ + "Start swapping virtual memory pages on DEVICE.\n\n" \ "Options:\n" \ "\t-a\tStart swapping on all swap devices" @@ -1432,7 +1469,7 @@ "$ syslogd -R 192.168.1.1:601\n" -#ifdef BB_FEATURE_SIMPLE_TAIL +#ifndef BB_FEATURE_FANCY_TAIL #define USAGE_UNSIMPLE_TAIL(a) #else #define USAGE_UNSIMPLE_TAIL(a) a @@ -1469,22 +1506,22 @@ #endif #define tar_trivial_usage \ "-[" USAGE_TAR_CREATE("c") "xtvO] " \ - USAGE_TAR_EXCLUDE("[--exclude File] [-X File]") \ - "[-f tarFile] [FILE(s)] ..." + USAGE_TAR_EXCLUDE("[--exclude FILE] [-X FILE]") \ + "[-f TARFILE] [-C DIR] [FILE(s)] ..." #define tar_full_usage \ "Create, extract, or list files from a tar file.\n\n" \ - "Main operation mode:\n" \ + "Options:\n" \ USAGE_TAR_CREATE("\tc\t\tcreate\n") \ "\tx\t\textract\n" \ "\tt\t\tlist\n" \ "\nFile selection:\n" \ - "\tf\t\tname of tarfile or \"-\" for stdin\n" \ + "\tf\t\tname of TARFILE or \"-\" for stdin\n" \ "\tO\t\textract to stdout\n" \ USAGE_TAR_EXCLUDE( \ "\texclude\t\tfile to exclude\n" \ "\tX\t\tfile with names to exclude\n" \ ) \ - "\nInformative output:\n" \ + "\tC\t\tchange to directory DIR before operation\n" \ "\tv\t\tverbosely list files processed" #define tar_example_usage \ "$ zcat /tmp/tarball.tar.gz | tar -xf -\n" \ @@ -1502,7 +1539,7 @@ "Hello\n" #define telnet_trivial_usage \ - "host [port]" + "HOST [PORT]" #define telnet_full_usage \ "Telnet is used to establish interactive communication with another\n"\ "computer over a network using the TELNET protocol." @@ -1551,9 +1588,9 @@ "\nWhen naming a server, use the syntax \"server:file\"." #define touch_trivial_usage \ - "[-c] file [file ...]" + "[-c] FILE [FILE ...]" #define touch_full_usage \ - "Update the last-modified date on the given file[s].\n\n" \ + "Update the last-modified date on the given FILE[s].\n\n" \ "Options:\n" \ "\t-c\tDo not create any files" #define touch_example_usage \ @@ -1576,6 +1613,28 @@ "$ echo "gdkkn vnqkc" | tr [a-y] [b-z]\n" \ "hello world\n" +#define traceroute_trivial_usage \ + "[-dnrv] [-m max_ttl] [-p port#] [-q nqueries]\n\ + [-s src_addr] [-t tos] [-w wait] host [data size]" +#define traceroute_full_usage \ + "trace the route ip packets follow going to \"host\"\n" \ + "Options:\n" \ + "\t-d\tset SO_DEBUG options to socket\n" \ + "\t-n\tPrint hop addresses numerically rather than symbolically\n" \ + "\t-r\tBypass the normal routing tables and send directly to a host\n" \ + "\t-v\tVerbose output\n" \ + "\t-m max_ttl\tSet the max time-to-live (max number of hops)\n" \ + "\t-p port#\tSet the base UDP port number used in probes\n" \ + "\t\t(default is 33434)\n" \ + "\t-q nqueries\tSet the number of probes per ``ttl'' to nqueries\n" \ + "\t\t(default is 3)\n" \ + "\t-s src_addr\tUse the following IP address as the source address\n" \ + "\t-t tos\tSet the type-of-service in probe packets to the following value\n" \ + "\t\t(default 0)\n" \ + "\t-w wait\tSet the time (in seconds) to wait for a response to a probe\n" \ + "\t\t(default 3 sec.)." + + #define true_trivial_usage \ "" #define true_full_usage \ @@ -1601,13 +1660,13 @@ #define USAGE_MOUNT_FORCE(a) #endif #define umount_trivial_usage \ - "[flags] filesystem|directory" + "[flags] FILESYSTEM|DIRECTORY" #define umount_full_usage \ "Unmount file systems\n" \ "\nFlags:\n" "\t-a\tUnmount all file systems" \ USAGE_MTAB(" in /etc/mtab\n\t-n\tDon't erase /etc/mtab entries") \ "\n\t-r\tTry to remount devices as read-only if mount is busy" \ - USAGE_MOUNT_FORCE("\n\t-f\tForce filesystem umount (i.e. unreachable NFS server)") \ + USAGE_MOUNT_FORCE("\n\t-f\tForce umount (i.e., unreachable NFS server)") \ USAGE_MOUNT_LOOP("\n\t-l\tDo not free loop device (if a loop device has been used)") #define umount_example_usage \ "$ umount /dev/hdc1 \n" @@ -1644,9 +1703,14 @@ "c\n" #define unix2dos_trivial_usage \ - "[option] [file]" + "[option] [FILE]" #define unix2dos_full_usage \ - "See 'dos2unix --help' for help!" + "Converts FILE from unix format to dos format. When no option\n" \ + "is given, the input is converted to the opposite output format.\n" \ + "When no file is given, uses stdin for input and stdout for output.\n" \ + "Options:\n" \ + "\t-u\toutput will be in UNIX format\n" \ + "\t-d\toutput will be in DOS format" #define update_trivial_usage \ "[options]" @@ -1689,7 +1753,7 @@ #define uuencode_full_usage \ "Uuencode a file.\n\n" \ "Options:\n" \ - "\t-m\tuse base64 encoding as of RFC1521" + "\t-m\tuse base64 encoding per RFC1521" #define uuencode_example_usage \ "$ uuencode busybox busybox\n" \ "begin 755 busybox\n" \ @@ -1724,12 +1788,13 @@ " 31 46 1365 /etc/passwd\n" #define wget_trivial_usage \ - "[-c] [-q] [-O file] url" + "[-c|--continue] [-q|--quiet] [-O|--output-document file]\n\t[--header 'header: value'] [-P DIR] url" #define wget_full_usage \ "wget retrieves files via HTTP or FTP\n\n" \ "Options:\n" \ "\t-c\tcontinue retrieval of aborted transfers\n" \ "\t-q\tquiet mode - do not print\n" \ + "\t-P\tSet directory prefix to DIR\n" \ "\t-O\tsave to filename ('-' for stdout)" #define which_trivial_usage \