ftpd: stop unconditional logging to syslog. This was the only applet
[oweals/busybox.git] / include / usage.h
index 9e18ff6408173476043009ccccde0999ce6b2c06..e945840b846ab28d42049bffd5cadf895764a523 100644 (file)
 
 #define NOUSAGE_STR "\b"
 
+#define acpid_trivial_usage \
+       "[-d] [-c CONFDIR] [-l LOGFILE] [-e PROC_EVENT_FILE] [EVDEV_EVENT_FILE...]"
+
+#define acpid_full_usage "\n\n" \
+       "Listen to ACPI events and spawn specific helpers on event arrival\n" \
+     "\nOptions:" \
+     "\n       -d      Do not daemonize and log to stderr" \
+     "\n       -c DIR  Config directory [/etc/acpi]" \
+     "\n       -e FILE /proc event file [/proc/acpi/event]" \
+     "\n       -l FILE Log file [/var/log/acpid]" \
+       USE_FEATURE_ACPID_COMPAT( \
+     "\n\nAccept and ignore compatibility options -g -m -s -S -v" \
+       )
+
+#define acpid_example_usage \
+       "# acpid -l /var/log/my-acpi-log\n" \
+       "# acpid -d /dev/input/event*\n"
 
 #define addgroup_trivial_usage \
        "[-g GID] " USE_FEATURE_ADDUSER_TO_GROUP("[user_name] ") "group_name"
 #define addgroup_full_usage "\n\n" \
-       "Add a group " USE_FEATURE_ADDUSER_TO_GROUP("or add an user to a group") "\n" \
+       "Add a group " USE_FEATURE_ADDUSER_TO_GROUP("or add a user to a group") "\n" \
      "\nOptions:" \
      "\n       -g GID  Group id" \
 
 #define adduser_trivial_usage \
        "[OPTIONS] user_name"
 #define adduser_full_usage "\n\n" \
-       "Add an user\n" \
+       "Add a user\n" \
      "\nOptions:" \
      "\n       -h DIR          Home directory" \
      "\n       -g GECOS        GECOS field" \
      "\n       -v      Verbose" \
 
 #define arp_trivial_usage \
-       "\n" \
-       "[-vn]  [-H type] [-i if] -a [hostname]\n" \
-       "[-v]             [-i if] -d hostname [pub]\n" \
-       "[-v]   [-H type] [-i if] -s hostname hw_addr [temp]\n" \
-       "[-v]   [-H type] [-i if] -s hostname hw_addr [netmask nm] pub\n" \
-       "[-v]   [-H type] [-i if] -Ds hostname ifa [netmask nm] pub\n"
+     "\n[-vn]  [-H type] [-i if] -a [hostname]" \
+     "\n[-v]             [-i if] -d hostname [pub]" \
+     "\n[-v]   [-H type] [-i if] -s hostname hw_addr [temp]" \
+     "\n[-v]   [-H type] [-i if] -s hostname hw_addr [netmask nm] pub" \
+     "\n[-v]   [-H type] [-i if] -Ds hostname ifa [netmask nm] pub"
 #define arp_full_usage "\n\n" \
        "Manipulate ARP cache\n" \
      "\nOptions:" \
      "\n       F       Input from file" \
 
 #define crond_trivial_usage \
-       "-fbS -l N " USE_DEBUG_CROND_OPTION("-d N ") "-L LOGFILE -c DIR"
+       "-fbS -l N " USE_FEATURE_CROND_D("-d N ") "-L LOGFILE -c DIR"
 #define crond_full_usage "\n\n" \
        "       -f      Foreground" \
      "\n       -b      Background (default)" \
      "\n       -S      Log to syslog (default)" \
      "\n       -l      Set log level. 0 is the most verbose, default 8" \
-       USE_DEBUG_CROND_OPTION( \
+       USE_FEATURE_CROND_D( \
      "\n       -d      Set log level, log to stderr" \
        ) \
      "\n       -L      Log to file" \
      "\n       FILE    Replace crontab by FILE ('-': stdin)" \
 
 #define cryptpw_trivial_usage \
-       "[-a des|md5] [string]"
+       "[OPTIONS] [PASSWORD] [SALT]"
+/* We do support -s, we just don't mention it */
 #define cryptpw_full_usage "\n\n" \
-       "Output crypted string.\n" \
-       "If string isn't supplied on cmdline, read it from stdin.\n" \
+       "Crypt the PASSWORD using crypt(3)\n" \
+     "\nOptions:" \
+       USE_GETOPT_LONG( \
+     "\n       -P,--password-fd=NUM    Read password from fd NUM" \
+/*   "\n       -s,--stdin              Use stdin; like -P0" */ \
+     "\n       -m,--method=TYPE        Encryption method TYPE" \
+     "\n       -S,--salt=SALT" \
+       ) \
+       SKIP_GETOPT_LONG( \
+     "\n       -P NUM  Read password from fd NUM" \
+/*   "\n       -s      Use stdin; like -P0" */ \
+     "\n       -m TYPE Encryption method TYPE" \
+     "\n       -S SALT" \
+       ) \
+
+/* mkpasswd is an alias to cryptpw */
+
+#define mkpasswd_trivial_usage \
+       "[OPTIONS] [PASSWORD] [SALT]"
+/* We do support -s, we just don't mention it */
+#define mkpasswd_full_usage "\n\n" \
+       "Crypt the PASSWORD using crypt(3)\n" \
      "\nOptions:" \
-     "\n       -a      Algorithm to use (default: md5)" \
+       USE_GETOPT_LONG( \
+     "\n       -P,--password-fd=NUM    Read password from fd NUM" \
+/*   "\n       -s,--stdin              Use stdin; like -P0" */ \
+     "\n       -m,--method=TYPE        Encryption method TYPE" \
+     "\n       -S,--salt=SALT" \
+       ) \
+       SKIP_GETOPT_LONG( \
+     "\n       -P NUM  Read password from fd NUM" \
+/*   "\n       -s      Use stdin; like -P0" */ \
+     "\n       -m TYPE Encryption method TYPE" \
+     "\n       -S SALT" \
+       ) \
 
 #define cttyhack_trivial_usage NOUSAGE_STR
 #define cttyhack_full_usage ""
      "\n       -H HEADS\n" \
      "\n       -S SECTORS" \
 
-#define fetchmail_trivial_usage \
-       "[-w timeout] [-H [user:pass@]server[:port]] [-S] [-t] [-z] maildir [prog]"
-#define fetchmail_full_usage "\n\n" \
-       "Fetch content of remote mailbox to local maildir\n" \
-     "\nOptions:" \
-     "\n       -w timeout      Network timeout" \
-     "\n       -H [user:pass@]server[:port] Server" \
-     "\n       -S              Use openssl connection helper for secure servers" \
-     "\n       -t              Get only headers" \
-     "\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" \
        "$ find / -name passwd\n" \
        "/etc/passwd\n"
 
+#define flash_eraseall_trivial_usage \
+       "[-jq] MTD_DEVICE"
+#define flash_eraseall_full_usage "\n\n" \
+       "Erase an MTD device\n" \
+     "\nOptions:" \
+     "\n       -j      format the device for jffs2" \
+     "\n       -q      don't display progress messages"
+
 #define fold_trivial_usage \
        "[-bs] [-w WIDTH] [FILE]"
 #define fold_full_usage "\n\n" \
      "\n       -m      Show \"mode not cleared\" warnings" \
      "\n       -f      Force file system check" \
 
+#define ftpd_trivial_usage \
+       "[-wvS] [DIR]"
+#define ftpd_full_usage "\n\n" \
+       "FTP server\n" \
+       "\n" \
+       "ftpd should be used as an inetd service.\n" \
+       "ftpd's line for inetd.conf:\n" \
+       "       21 stream tcp nowait root ftpd ftpd /files/to/serve\n" \
+       "It also can be ran from tcpsvd:\n" \
+       "       tcpsvd -vE 0.0.0.0 21 ftpd /files/to/serve\n" \
+     "\nOptions:" \
+     "\n       -w      Allow upload" \
+     "\n       -v      Log to stderr" \
+     "\n       -S      Log to syslog" \
+     "\n       DIR     Change root to this directory" \
+
 #define ftpget_trivial_usage \
        "[options] remote-host local-file remote-file"
 #define ftpget_full_usage "\n\n" \
 "      ::shutdown:/sbin/swapoff -a\n"
 
 #define inotifyd_trivial_usage \
-       "/user/space/agent dir/or/file/being/watched[:mask] ..."
+       "PROG FILE1[:MASK] ..."
 #define inotifyd_full_usage "\n\n" \
-       "Spawn userspace agent on filesystem changes." \
-     "\nWhen a filesystem event matching the mask occurs" \
-     "\non specified file/directory an userspace agent is spawned" \
-     "\nwith the parameters:" \
-     "\n1. actual event(s)" \
-     "\n2. file/directory name" \
-     "\n3. name of subfile (if any), in case of watching a directory" \
-     "\n" \
+       "Run PROG on filesystem changes." \
+     "\nWhen a filesystem event matching MASK occurs on FILEn," \
+     "\nPROG <actual_event(s)> <FILEn> [<subfile_name>] is run." \
+     "\nEvents:" \
      "\n       a       File is accessed" \
      "\n       c       File is modified" \
      "\n       e       Metadata changed" \
      "\n       w       Writtable file is closed" \
      "\n       0       Unwrittable file is closed" \
      "\n       r       File is opened" \
-     "\n       m       File is moved from X" \
-     "\n       y       File is moved to Y" \
+     "\n       D       File is deleted" \
+     "\n       M       File is moved" \
+     "\n       u       Backing fs is unmounted" \
+     "\n       o       Event queue overflowed" \
+     "\n       x       File can't be watched anymore" \
+     "\nIf watching a directory:" \
+     "\n       m       Subfile is moved into dir" \
+     "\n       y       Subfile is moved out of dir" \
      "\n       n       Subfile is created" \
      "\n       d       Subfile is deleted" \
-     "\n       D       Self is deleted" \
-     "\n       M       Self is moved" \
+     "\n" \
+     "\ninotifyd waits for PROG to exit." \
+     "\nWhen x event happens for all FILEs, inotifyd exits" \
 
+/* 2.6 style insmod has no options and required filename
+ * (not module name - .ko can't be omitted) */
 #define insmod_trivial_usage \
-       USE_FEATURE_2_4_MODULES("[OPTION]... ") "MODULE [symbol=value]..."
+       USE_FEATURE_2_4_MODULES("[OPTION]... MODULE ") \
+       SKIP_FEATURE_2_4_MODULES("FILE ") \
+       "[symbol=value]..."
 #define insmod_full_usage "\n\n" \
        "Load the specified kernel modules into the kernel" \
        USE_FEATURE_2_4_MODULES( "\n" \
 
 /* -v, -b, -c are ignored */
 #define install_trivial_usage \
-       "[-cdDsp] [-o USER] [-g GRP] [-m MODE] [source] 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       -Z      Set security context" \
        )
 
+#define ionice_trivial_usage \
+       "[-c 1-3] [-n 0-7] [-p PID] [PROG]"
+#define ionice_full_usage "\n\n" \
+       "Change I/O scheduling class and priority\n" \
+     "\nOptions:" \
+     "\n       -c      Class. 1:realtime 2:best-effort 3:idle" \
+     "\n       -n      Priority" \
+
 /* would need to make the " | " optional depending on more than one selected: */
 #define ip_trivial_usage \
        "[OPTIONS] {" \
        "       [ttl TTL] [tos TOS] [[no]pmtudisc] [dev PHYS_DEV]" \
 
 #define kbd_mode_trivial_usage \
-       "[-a|k|s|u]"
+       "[-a|k|s|u] [-C TTY]"
 #define kbd_mode_full_usage "\n\n" \
        "Report or set the keyboard mode\n" \
      "\nOptions set mode:" \
      "\n       -k      Medium-raw (keyboard)" \
      "\n       -s      Raw (scancode)" \
      "\n       -u      Unicode (utf-8)" \
+     "\n       -C TTY  Affect TTY instead of /dev/tty" \
 
 #define kill_trivial_usage \
-       "[-l] [-signal] process-id..."
+       "[-l] [-SIG] PID..."
 #define kill_full_usage "\n\n" \
-       "Send a signal (default is TERM) to the specified process(es)\n" \
+       "Send a signal (default is TERM) to given PIDs\n" \
      "\nOptions:" \
      "\n       -l      List all signal names and numbers" \
+/*   "\n       -s SIG  Yet another way of specifying SIG" */ \
 
 #define kill_example_usage \
        "$ ps | grep apache\n" \
        "$ kill 252\n"
 
 #define killall_trivial_usage \
-       "[-l] [-q] [-signal] process-name..."
+       "[-l] [-q] [-SIG] process-name..."
 #define killall_full_usage "\n\n" \
-       "Send a signal (default is TERM) to the specified process(es)\n" \
+       "Send a signal (default is TERM) to given processes\n" \
      "\nOptions:" \
      "\n       -l      List all signal names and numbers" \
+/*   "\n       -s SIG  Yet another way of specifying SIG" */ \
      "\n       -q      Do not complain if no processes were killed" \
 
 #define killall_example_usage \
        "$ killall apache\n"
 
 #define killall5_trivial_usage \
-       "[-l] [-signal]"
+       "[-l] [-SIG] [-o PID]..."
 #define killall5_full_usage "\n\n" \
        "Send a signal (default is TERM) to all processes outside current session\n" \
      "\nOptions:" \
      "\n       -l      List all signal names and numbers" \
+     "\n       -o PID  Do not signal this PID" \
+/*   "\n       -s SIG  Yet another way of specifying SIG" */ \
 
 #define klogd_trivial_usage \
        "[-c N] [-n]"
        "lrwxrwxrwx    1 root     root            7 Apr 12 18:39 ls -> BusyBox*\n"
 
 #define load_policy_trivial_usage NOUSAGE_STR
-
 #define load_policy_full_usage ""
 
 #define loadfont_trivial_usage \
        "< font"
 #define loadfont_full_usage "\n\n" \
-       "Load a console font from standard input"
+       "Load a console font from standard input" \
+/*   "\n       -C TTY  Affect TTY instead of /dev/tty" */ \
+
 #define loadfont_example_usage \
        "$ loadfont < /etc/i18n/fontname\n"
 
 #define loadkmap_trivial_usage \
        "< keymap"
 #define loadkmap_full_usage "\n\n" \
-       "Load a binary keyboard translation table from standard input"
+       "Load a binary keyboard translation table from standard input\n" \
+/*   "\n       -C TTY  Affect TTY instead of /dev/tty" */ \
+
 #define loadkmap_example_usage \
        "$ loadkmap < /etc/i18n/lang-keymap\n"
 
        "/dev/hda[0-15]\n"
 #endif
 
+#define makemime_trivial_usage \
+       "[OPTION]... [FILE]..."
+#define makemime_full_usage "\n\n" \
+       "Create MIME-encoded message\n" \
+     "\nOptions:" \
+     "\n       -C      Charset" \
+     "\n       -e      Transfer encoding. Ignored. base64 is assumed" \
+     "\n" \
+     "\nOther options are silently ignored." \
+
 #define man_trivial_usage \
        "[OPTION]... [MANPAGE]..."
 #define man_full_usage "\n\n" \
        "Print" USE_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " MD5 checksums" \
        USE_FEATURE_MD5_SHA1_SUM_CHECK( "\n" \
      "\nOptions:" \
-     "\n       -c      Check MD5 sums against given list" \
+     "\n       -c      Check sums against given list" \
      "\n       -s      Don't output anything, status code shows success" \
-     "\n       -w      Warn about improperly formatted MD5 checksum lines") \
+     "\n       -w      Warn about improperly formatted checksum lines" \
+       )
 
 #define md5sum_example_usage \
        "$ md5sum < busybox\n" \
        "busybox: OK\n" \
        "^D\n"
 
+#define sha1sum_trivial_usage \
+       "[OPTION] [FILEs...]" \
+       USE_FEATURE_MD5_SHA1_SUM_CHECK("\n   or: sha1sum [OPTION] -c [FILE]")
+#define sha1sum_full_usage "\n\n" \
+       "Print" USE_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA1 checksums." \
+       USE_FEATURE_MD5_SHA1_SUM_CHECK( "\n" \
+     "\nOptions:" \
+     "\n       -c      Check sums against given list" \
+     "\n       -s      Don't output anything, status code shows success" \
+     "\n       -w      Warn about improperly formatted checksum lines" \
+       )
+
+#define sha256sum_trivial_usage \
+       "[OPTION] [FILEs...]" \
+       USE_FEATURE_MD5_SHA1_SUM_CHECK("\n   or: sha256sum [OPTION] -c [FILE]")
+#define sha256sum_full_usage "\n\n" \
+       "Print" USE_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA1 checksums." \
+       USE_FEATURE_MD5_SHA1_SUM_CHECK( "\n" \
+     "\nOptions:" \
+     "\n       -c      Check sums against given list" \
+     "\n       -s      Don't output anything, status code shows success" \
+     "\n       -w      Warn about improperly formatted checksum lines" \
+       )
+
+#define sha512sum_trivial_usage \
+       "[OPTION] [FILEs...]" \
+       USE_FEATURE_MD5_SHA1_SUM_CHECK("\n   or: sha512sum [OPTION] -c [FILE]")
+#define sha512sum_full_usage "\n\n" \
+       "Print" USE_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA1 checksums." \
+       USE_FEATURE_MD5_SHA1_SUM_CHECK( "\n" \
+     "\nOptions:" \
+     "\n       -c      Check sums against given list" \
+     "\n       -s      Don't output anything, status code shows success" \
+     "\n       -w      Warn about improperly formatted checksum lines" \
+       )
+
 #define mdev_trivial_usage \
        "[-s]"
 #define mdev_full_usage "\n\n" \
 "loading). modprobe uses a configuration file to determine what option(s) to\n" \
 "pass each module it loads.\n" \
 "\n" \
-"The configuration file is searched (in order) amongst:\n" \
+"The configuration file is searched (in this order):\n" \
 "\n" \
 "    /etc/modprobe.conf (2.6 only)\n" \
 "    /etc/modules.conf\n" \
        "Returns 0 for success, number of failed mounts for -a, or errno for one mount."
 
 #define mountpoint_trivial_usage \
-       "[-q] <[-d] DIR | -x DEVICE>"
+       "[-q] <[-dn] DIR | -x DEVICE>"
 #define mountpoint_full_usage "\n\n" \
-       "mountpoint checks if the directory is a mountpoint\n" \
+       "Check if the directory is a mountpoint\n" \
      "\nOptions:" \
      "\n       -q      Quiet" \
      "\n       -d      Print major/minor device number of the filesystem" \
+     "\n       -n      Print device name of the filesystem" \
      "\n       -x      Print major/minor device number of the blockdevice" \
 
 #define mountpoint_example_usage \
      "\n       -v      Negate the matching" \
      "\n       -x      Match whole name (not substring)" \
 
+#define popmaildir_trivial_usage \
+       "[OPTIONS] Maildir [connection-helper ...]"
+#define popmaildir_full_usage "\n\n" \
+       "Fetch content of remote mailbox to local maildir\n" \
+     "\nOptions:" \
+     "\n       -b              Binary mode. Ignored" \
+     "\n       -d              Debug. Ignored" \
+     "\n       -m              Show used memory. Ignored" \
+     "\n       -V              Show version. Ignored" \
+     "\n       -c              Use tcpclient. Ignored" \
+     "\n       -a              Use APOP protocol. Implied. If server supports APOP -> use it" \
+     "\n       -s              Skip authorization" \
+     "\n       -T              Get messages with TOP instead with RETR" \
+     "\n       -k              Keep retrieved messages on the server" \
+     "\n       -t timeout      Set network timeout" \
+     USE_FEATURE_POPMAILDIR_DELIVERY( \
+     "\n       -F \"program arg1 arg2 ...\"    Filter by program. May be multiple" \
+     "\n       -M \"program arg1 arg2 ...\"    Deliver by program" \
+     ) \
+     "\n       -R size         Remove old messages on the server >= size (in bytes). Ignored" \
+     "\n       -Z N1-N2        Remove messages from N1 to N2 (dangerous). Ignored" \
+     "\n       -L size         Do not retrieve new messages >= size (in bytes). Ignored" \
+     "\n       -H lines        Type specified number of lines of a message. Ignored"
+#define popmaildir_example_usage \
+       "$ popmaildir -k ~/Maildir -- nc pop.drvv.ru 110 [<password_file]\n" \
+       "$ popmaildir ~/Maildir -- openssl s_client -quiet -connect pop.gmail.com:995 [<password_file]\n"
+
 #define poweroff_trivial_usage \
        "[-d delay] [-n] [-f]"
 #define poweroff_full_usage "\n\n" \
      "\n       -n      No call to sync()" \
      "\n       -f      Force reboot (don't go through init)" \
 
+#define reformime_trivial_usage \
+       "[OPTION]... [FILE]..."
+#define reformime_full_usage "\n\n" \
+       "Parse MIME-encoded message\n" \
+     "\nOptions:" \
+     "\n       -x prefix       Extract content of MIME sections to files" \
+     "\n       -X prog [args]  Filter content of MIME sections through prog." \
+     "\n                       Must be the last option" \
+     "\n" \
+     "\nOther options are silently ignored." \
+
 #define renice_trivial_usage \
        "{{-n INCREMENT} | PRIORITY} [[-p | -g | -u] ID...]"
 #define renice_full_usage "\n\n" \
        "Start and monitor a service and optionally an appendant log service"
 
 #define runsvdir_trivial_usage \
-       "[-P] dir"
+       "[-P] [-s SCRIPT] dir"
 #define runsvdir_full_usage "\n\n" \
-       "Start a runsv process for each subdirectory"
+       "Start a runsv process for each subdirectory. If it exits, restart it.\n" \
+     "\n       -P              Put each runsv in a new session" \
+     "\n       -s SCRIPT       Run SCRIPT <signo> after signal is processed" \
 
 #define rx_trivial_usage \
        "FILE"
 #define selinuxenabled_full_usage ""
 
 #define sendmail_trivial_usage \
-       "[-w timeout] [-H [user:pass@]server[:port]] [-S]\n" \
-       "[-N type] [-f sender] [-F fullname] " \
-       USE_FEATURE_SENDMAIL_MAILX("[-s subject] [-c cc-rcpt]... [-j charset] [-a attach]... [-e err-rcpt] ") "[-t] [rcpt]..."
+       "[OPTIONS] [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       -N type         Request delivery notification. Type is ignored" \
      "\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       -j charset      Assume charset for body and subject (" CONFIG_FEATURE_MIME_CHARSET ")" \
+     "\n       -a file         File to attach. May be repeated" \
+     "\n       -H 'prog args'  Run connection helper. E.g. openssl for encryption:" \
+     "\n                       -H 'exec openssl s_client -quiet -tls1 -starttls smtp" \
+     "\n                                       -connect smtp.gmail.com:25' <email.txt" \
+     "\n                                       [4<username_and_passwd.txt]" \
+     "\n       -S server[:port] Server" \
+       ) \
+       USE_FEATURE_SENDMAIL_MAILXX( \
+     "\n       -c rcpt         Cc: recipient. May be repeated" \
      "\n       -e rcpt         Errors-To: recipient" \
-       )
+               ) \
      "\n       -t              Read recipients and subject from body" \
      "\n" \
      "\nOther options are silently ignored; -oi is implied" \
 
 #define seq_trivial_usage \
-       "[first [increment]] last"
+       "[-w] [-s SEP] [FIRST [INC]] LAST"
 #define seq_full_usage "\n\n" \
-       "Print numbers from FIRST to LAST, in steps of INCREMENT.\n" \
-       "FIRST, INCREMENT default to 1\n" \
-     "\nArguments:" \
-     "\n       LAST" \
-     "\n       FIRST LAST" \
-     "\n       FIRST INCREMENT LAST" \
+       "Print numbers from FIRST to LAST, in steps of INC.\n" \
+       "FIRST, INC default to 1\n" \
+     "\nOptions:" \
+     "\n       -w      Pad to last with leading zeros" \
+     "\n       -s SEP  String separator" \
 
 #define sestatus_trivial_usage \
        "[-vb]"
      "\n       -f file Read from file instead of /var/log/wtmp" \
        )
 
-#define sha1sum_trivial_usage \
-       "[OPTION] [FILEs...]" \
-       USE_FEATURE_MD5_SHA1_SUM_CHECK("\n   or: sha1sum [OPTION] -c [FILE]")
-#define sha1sum_full_usage "\n\n" \
-       "Print" USE_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA1 checksums." \
-       USE_FEATURE_MD5_SHA1_SUM_CHECK( "\n" \
-     "\nOptions:" \
-     "\n       -c      Check SHA1 sums against given list" \
-     "\n       -s      Don't output anything, status code shows success" \
-     "\n       -w      Warn about improperly formatted SHA1 checksum lines" \
-       )
-
 #define showkey_trivial_usage \
        "[-a | -k | -s]"
 #define showkey_full_usage "\n\n" \
      "\nOptions:" \
      "\n       -v      Verbose" \
 
+#define timeout_trivial_usage \
+       "[-t SECS] [-s SIG] PROG [ARGS]"
+#define timeout_full_usage "\n\n" \
+       "Runs PROG. Sends SIG to it if it is not gone in SECS seconds.\n" \
+       "Defaults: SECS: 10, SIG: TERM." \
+
 #define top_trivial_usage \
        "[-b] [-nCOUNT] [-dSECONDS]"
 #define top_full_usage "\n\n" \
 #define ttysize_full_usage "\n\n" \
        "Print dimension(s) of standard input's terminal, on error return 80x25"
 
+#define tunctl_trivial_usage \
+       "[-f device] ([-t name] | -d name)" USE_FEATURE_TUNCTL_UG(" [-u owner] [-g group] [-b]")
+#define tunctl_full_usage "\n\n" \
+       "Create or delete tun interfaces" \
+     "\nOptions:" \
+     "\n       -f name         tun device (/dev/net/tun)" \
+     "\n       -t name         Create iface 'name'" \
+     "\n       -d name         Delete iface 'name'" \
+USE_FEATURE_TUNCTL_UG( \
+     "\n       -u owner        Set iface owner" \
+     "\n       -g group        Set iface group" \
+     "\n       -b              Brief output" \
+)
+#define tunctl_example_usage \
+       "# tunctl\n" \
+       "# tunctl -d tun0\n"
+
 #define tune2fs_trivial_usage \
        "[-c max-mounts-count] [-e errors-behavior] [-g group] " \
        "[-i interval[d|m|w]] [-j] [-J journal-options] [-l] [-s sparse-flag] " \
      "\n       -C,--clientid-none      Suppress default client identifier" \
      "\n       -p,--pidfile=file       Create pidfile" \
      "\n       -r,--request=IP         IP address to request" \
-     "\n       -s,--script=file        Run file at DHCP events (default "CONFIG_DHCPC_DEFAULT_SCRIPT")" \
+     "\n       -s,--script=file        Run file at DHCP events (default "CONFIG_UDHCPC_DEFAULT_SCRIPT")" \
      "\n       -t,--retries=N          Send up to N request packets" \
      "\n       -T,--timeout=N          Try to get a lease for N seconds (default 3)" \
      "\n       -A,--tryagain=N         Wait N seconds (default 20) after failure" \
      "\n       -C              Suppress default client identifier" \
      "\n       -p file         Create pidfile" \
      "\n       -r IP           IP address to request" \
-     "\n       -s file         Run file at DHCP events (default "CONFIG_DHCPC_DEFAULT_SCRIPT")" \
+     "\n       -s file         Run file at DHCP events (default "CONFIG_UDHCPC_DEFAULT_SCRIPT")" \
      "\n       -t N            Send up to N request packets" \
      "\n       -T N            Try to get a lease for N seconds (default 3)" \
      "\n       -A N            Wait N seconds (default 20) after failure" \