Changeset 3233 in MondoRescue for branches/3.2


Ignore:
Timestamp:
Jan 1, 2014, 9:23:14 AM (10 years ago)
Author:
Bruno Cornec
Message:
  • mindi-busybox 1.21.1 is now complete and builds
Location:
branches/3.2/mindi-busybox
Files:
8 added
3 edited

Legend:

Unmodified
Added
Removed
  • branches/3.2/mindi-busybox/.config

    r3090 r3233  
    11#
    22# Automatically generated make config: don't edit
    3 # Busybox version: 1.18.5-rPBREV
    4 # Wed Mar 13 18:16:16 2013
     3# Busybox version: 1.21.1
     4# Wed Jan  1 01:01:58 2014
    55#
    66CONFIG_HAVE_DOT_CONFIG=y
     
    4040CONFIG_FEATURE_DEVPTS=y
    4141# CONFIG_FEATURE_CLEAN_UP is not set
     42CONFIG_FEATURE_UTMP=y
    4243# CONFIG_FEATURE_WTMP is not set
    43 CONFIG_FEATURE_UTMP=y
    4444# CONFIG_FEATURE_PIDFILE is not set
     45CONFIG_PID_FILE_PATH=""
    4546CONFIG_FEATURE_SUID=y
    4647# CONFIG_FEATURE_SUID_CONFIG is not set
     
    6364CONFIG_LFS=y
    6465CONFIG_CROSS_COMPILER_PREFIX=""
     66CONFIG_SYSROOT=""
    6567CONFIG_EXTRA_CFLAGS=""
     68CONFIG_EXTRA_LDFLAGS=""
     69CONFIG_EXTRA_LDLIBS=""
    6670
    6771#
     
    9094# Busybox Library Tuning
    9195#
     96CONFIG_FEATURE_RTMINMAX=y
    9297CONFIG_PASSWORD_MINLEN=6
    93 CONFIG_MD5_SIZE_VS_SPEED=2
     98CONFIG_MD5_SMALL=1
     99CONFIG_SHA3_SMALL=1
    94100CONFIG_FEATURE_FAST_TOP=y
    95101# CONFIG_FEATURE_ETC_NETWORKS is not set
     
    100106CONFIG_FEATURE_EDITING_HISTORY=15
    101107# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
     108# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set
     109# CONFIG_FEATURE_REVERSE_SEARCH is not set
    102110CONFIG_FEATURE_TAB_COMPLETION=y
    103111# CONFIG_FEATURE_USERNAME_COMPLETION is not set
     
    107115CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
    108116CONFIG_FEATURE_COPYBUF_KB=4
     117CONFIG_FEATURE_SKIP_ROOTFS=y
    109118# CONFIG_MONOTONIC_SYSCALL is not set
    110119CONFIG_IOCTL_HEX2STR_ERROR=y
     
    124133# CONFIG_FEATURE_SEAMLESS_Z is not set
    125134CONFIG_AR=y
    126 # CONFIG_FEATURE_AR_LONG_FILENAMES is not set
     135CONFIG_FEATURE_AR_LONG_FILENAMES=y
    127136CONFIG_FEATURE_AR_CREATE=y
    128 # CONFIG_BUNZIP2 is not set
     137CONFIG_BUNZIP2=y
    129138CONFIG_BZIP2=y
    130139CONFIG_CPIO=y
     
    137146CONFIG_GZIP=y
    138147CONFIG_FEATURE_GZIP_LONG_OPTIONS=y
     148CONFIG_GZIP_FAST=0
    139149CONFIG_LZOP=y
    140150# CONFIG_LZOP_COMPR_HIGH is not set
     
    170180# CONFIG_FEATURE_DATE_NANO is not set
    171181CONFIG_FEATURE_DATE_COMPAT=y
     182# CONFIG_HOSTID is not set
     183CONFIG_ID=y
     184CONFIG_GROUPS=y
    172185CONFIG_TEST=y
    173186# CONFIG_FEATURE_TEST_64 is not set
     187CONFIG_TOUCH=y
     188CONFIG_FEATURE_TOUCH_SUSV3=y
    174189CONFIG_TR=y
    175190CONFIG_FEATURE_TR_CLASSES=y
    176191CONFIG_FEATURE_TR_EQUIV=y
    177192CONFIG_BASE64=y
     193CONFIG_WHO=y
     194CONFIG_USERS=y
    178195# CONFIG_CAL is not set
    179196# CONFIG_CATV is not set
     
    212229CONFIG_HEAD=y
    213230# CONFIG_FEATURE_FANCY_HEAD is not set
    214 # CONFIG_HOSTID is not set
    215 CONFIG_ID=y
    216231# CONFIG_INSTALL is not set
    217232# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
    218 # CONFIG_LENGTH is not set
    219233CONFIG_LN=y
    220234# CONFIG_LOGNAME is not set
     
    251265CONFIG_SHA256SUM=y
    252266CONFIG_SHA512SUM=y
     267CONFIG_SHA3SUM=y
    253268CONFIG_SLEEP=y
    254269# CONFIG_FEATURE_FANCY_SLEEP is not set
     
    268283CONFIG_TEE=y
    269284CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
    270 CONFIG_TOUCH=y
    271285CONFIG_TRUE=y
    272286CONFIG_TTY=y
     
    280294CONFIG_WC=y
    281295# CONFIG_FEATURE_WC_LARGE is not set
    282 CONFIG_WHO=y
    283296CONFIG_WHOAMI=y
    284297CONFIG_YES=y
     
    300313
    301314#
    302 # Common options for md5sum, sha1sum, sha256sum, sha512sum
     315# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum
    303316#
    304317CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
     
    351364#
    352365CONFIG_PATCH=y
     366CONFIG_VI=y
     367CONFIG_FEATURE_VI_MAX_LEN=1024
     368# CONFIG_FEATURE_VI_8BIT is not set
     369CONFIG_FEATURE_VI_COLON=y
     370CONFIG_FEATURE_VI_YANKMARK=y
     371CONFIG_FEATURE_VI_SEARCH=y
     372# CONFIG_FEATURE_VI_REGEX_SEARCH is not set
     373CONFIG_FEATURE_VI_USE_SIGNALS=y
     374CONFIG_FEATURE_VI_DOT_CMD=y
     375CONFIG_FEATURE_VI_READONLY=y
     376CONFIG_FEATURE_VI_SETOPTS=y
     377CONFIG_FEATURE_VI_SET=y
     378CONFIG_FEATURE_VI_WIN_RESIZE=y
     379CONFIG_FEATURE_VI_ASK_TERMINAL=y
    353380CONFIG_AWK=y
    354381CONFIG_FEATURE_AWK_LIBM=y
     
    359386# CONFIG_ED is not set
    360387CONFIG_SED=y
    361 CONFIG_VI=y
    362 CONFIG_FEATURE_VI_MAX_LEN=1024
    363 # CONFIG_FEATURE_VI_8BIT is not set
    364 CONFIG_FEATURE_VI_COLON=y
    365 CONFIG_FEATURE_VI_YANKMARK=y
    366 CONFIG_FEATURE_VI_SEARCH=y
    367 CONFIG_FEATURE_VI_USE_SIGNALS=y
    368 CONFIG_FEATURE_VI_DOT_CMD=y
    369 CONFIG_FEATURE_VI_READONLY=y
    370 CONFIG_FEATURE_VI_SETOPTS=y
    371 CONFIG_FEATURE_VI_SET=y
    372 CONFIG_FEATURE_VI_WIN_RESIZE=y
    373 CONFIG_FEATURE_VI_ASK_TERMINAL=y
    374 CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
    375388CONFIG_FEATURE_ALLOW_EXEC=y
    376389
     
    431444CONFIG_INIT_TERMINAL_TYPE="linux"
    432445CONFIG_MESG=y
     446CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y
    433447
    434448#
     
    455469# CONFIG_GETTY is not set
    456470# CONFIG_LOGIN is not set
     471# CONFIG_LOGIN_SESSION_AS_CHILD is not set
    457472# CONFIG_PAM is not set
    458473# CONFIG_LOGIN_SCRIPTS is not set
     
    463478# CONFIG_CRYPTPW is not set
    464479# CONFIG_CHPASSWD is not set
     480CONFIG_FEATURE_DEFAULT_PASSWD_ALGO=""
    465481# CONFIG_SU is not set
    466482# CONFIG_FEATURE_SU_SYSLOG is not set
     
    512528#
    513529CONFIG_BLOCKDEV=y
     530# CONFIG_MDEV is not set
     531# CONFIG_FEATURE_MDEV_CONF is not set
     532# CONFIG_FEATURE_MDEV_RENAME is not set
     533# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
     534# CONFIG_FEATURE_MDEV_EXEC is not set
     535# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
    514536CONFIG_REV=y
    515537CONFIG_ACPID=y
    516538CONFIG_FEATURE_ACPID_COMPAT=y
    517539# CONFIG_BLKID is not set
     540# CONFIG_FEATURE_BLKID_TYPE is not set
    518541CONFIG_DMESG=y
    519542CONFIG_FEATURE_DMESG_PRETTY=y
     
    524547CONFIG_FDFORMAT=y
    525548# CONFIG_FDISK is not set
    526 CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
     549# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set
    527550# CONFIG_FEATURE_FDISK_WRITABLE is not set
    528551# CONFIG_FEATURE_AIX_LABEL is not set
     
    554577CONFIG_LSPCI=y
    555578CONFIG_LSUSB=y
    556 # CONFIG_MDEV is not set
    557 # CONFIG_FEATURE_MDEV_CONF is not set
    558 # CONFIG_FEATURE_MDEV_RENAME is not set
    559 # CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
    560 # CONFIG_FEATURE_MDEV_EXEC is not set
    561 # CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
    562579# CONFIG_MKSWAP is not set
    563580# CONFIG_FEATURE_MKSWAP_UUID is not set
     
    601618CONFIG_FEATURE_VOLUMEID_REISERFS=y
    602619CONFIG_FEATURE_VOLUMEID_FAT=y
     620CONFIG_FEATURE_VOLUMEID_EXFAT=y
    603621CONFIG_FEATURE_VOLUMEID_HFS=y
    604622CONFIG_FEATURE_VOLUMEID_JFS=y
    605623CONFIG_FEATURE_VOLUMEID_XFS=y
     624CONFIG_FEATURE_VOLUMEID_NILFS=y
    606625CONFIG_FEATURE_VOLUMEID_NTFS=y
    607626CONFIG_FEATURE_VOLUMEID_ISO9660=y
     
    611630CONFIG_FEATURE_VOLUMEID_CRAMFS=y
    612631CONFIG_FEATURE_VOLUMEID_ROMFS=y
     632# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set
    613633CONFIG_FEATURE_VOLUMEID_SYSV=y
    614634CONFIG_FEATURE_VOLUMEID_OCFS2=y
     
    619639#
    620640# CONFIG_CONSPY is not set
     641# CONFIG_LESS is not set
     642CONFIG_FEATURE_LESS_MAXLINES=0
     643# CONFIG_FEATURE_LESS_BRACKETS is not set
     644# CONFIG_FEATURE_LESS_FLAGS is not set
     645# CONFIG_FEATURE_LESS_MARKS is not set
     646# CONFIG_FEATURE_LESS_REGEXP is not set
     647# CONFIG_FEATURE_LESS_WINCH is not set
     648# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set
     649# CONFIG_FEATURE_LESS_DASHCMD is not set
     650# CONFIG_FEATURE_LESS_LINENUMS is not set
    621651# CONFIG_NANDWRITE is not set
    622652# CONFIG_NANDDUMP is not set
     
    663693# CONFIG_FEATURE_LAST_SMALL is not set
    664694# CONFIG_FEATURE_LAST_FANCY is not set
    665 # CONFIG_LESS is not set
    666 CONFIG_FEATURE_LESS_MAXLINES=0
    667 # CONFIG_FEATURE_LESS_BRACKETS is not set
    668 # CONFIG_FEATURE_LESS_FLAGS is not set
    669 # CONFIG_FEATURE_LESS_MARKS is not set
    670 # CONFIG_FEATURE_LESS_REGEXP is not set
    671 # CONFIG_FEATURE_LESS_WINCH is not set
    672 # CONFIG_FEATURE_LESS_DASHCMD is not set
    673 # CONFIG_FEATURE_LESS_LINENUMS is not set
    674695# CONFIG_HDPARM is not set
    675696# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
     
    705726# Networking Utilities
    706727#
     728# CONFIG_NAMEIF is not set
     729# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
    707730CONFIG_NBDCLIENT=y
    708731CONFIG_NC=y
     
    710733CONFIG_NC_EXTRA=y
    711734# CONFIG_NC_110_COMPAT is not set
     735CONFIG_PING=y
     736# CONFIG_PING6 is not set
     737CONFIG_FEATURE_FANCY_PING=y
    712738# CONFIG_FEATURE_IPV6 is not set
    713739# CONFIG_FEATURE_UNIX_LOCAL is not set
     
    782808# CONFIG_FEATURE_IPCALC_FANCY is not set
    783809# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
    784 # CONFIG_NAMEIF is not set
    785 # CONFIG_FEATURE_NAMEIF_EXTENDED is not set
    786810CONFIG_NETSTAT=y
    787811# CONFIG_FEATURE_NETSTAT_WIDE is not set
     
    790814# CONFIG_NTPD is not set
    791815# CONFIG_FEATURE_NTPD_SERVER is not set
    792 CONFIG_PING=y
    793 # CONFIG_PING6 is not set
    794 CONFIG_FEATURE_FANCY_PING=y
    795816# CONFIG_PSCAN is not set
    796817CONFIG_ROUTE=y
     
    825846# CONFIG_DUMPLEASES is not set
    826847# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
     848# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set
    827849CONFIG_DHCPD_LEASES_FILE=""
    828850CONFIG_UDHCPC=y
     
    831853CONFIG_UDHCP_DEBUG=9
    832854# CONFIG_FEATURE_UDHCP_RFC3397 is not set
     855CONFIG_FEATURE_UDHCP_8021Q=y
    833856CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
    834857CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
     
    866889# CONFIG_IOSTAT is not set
    867890# CONFIG_MPSTAT is not set
     891# CONFIG_NMETER is not set
    868892# CONFIG_PMAP is not set
    869893# CONFIG_POWERTOP is not set
    870894# CONFIG_SMEMCAP is not set
     895CONFIG_TOP=y
     896CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
     897CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
     898CONFIG_FEATURE_TOP_SMP_CPU=y
     899# CONFIG_FEATURE_TOP_DECIMALS is not set
     900CONFIG_FEATURE_TOP_SMP_PROCESS=y
     901CONFIG_FEATURE_TOPMEM=y
     902# CONFIG_UPTIME is not set
     903# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set
    871904CONFIG_FREE=y
    872905# CONFIG_FUSER is not set
     
    874907CONFIG_KILLALL=y
    875908# CONFIG_KILLALL5 is not set
    876 # CONFIG_NMETER is not set
    877909# CONFIG_PGREP is not set
    878910# CONFIG_PIDOF is not set
     
    882914CONFIG_PS=y
    883915CONFIG_FEATURE_PS_WIDE=y
     916CONFIG_FEATURE_PS_LONG=y
    884917# CONFIG_FEATURE_PS_TIME is not set
    885918# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
     
    887920# CONFIG_RENICE is not set
    888921# CONFIG_BB_SYSCTL is not set
    889 CONFIG_TOP=y
    890 CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
    891 CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
    892 CONFIG_FEATURE_TOP_SMP_CPU=y
    893 # CONFIG_FEATURE_TOP_DECIMALS is not set
    894 CONFIG_FEATURE_TOP_SMP_PROCESS=y
    895 CONFIG_FEATURE_TOPMEM=y
    896922CONFIG_FEATURE_SHOW_THREADS=y
    897 # CONFIG_UPTIME is not set
    898923# CONFIG_WATCH is not set
    899924
     
    933958CONFIG_ASH=y
    934959CONFIG_ASH_BASH_COMPAT=y
     960# CONFIG_ASH_IDLE_TIMEOUT is not set
    935961CONFIG_ASH_JOB_CONTROL=y
    936962CONFIG_ASH_ALIAS=y
     
    973999# CONFIG_FEATURE_SH_STANDALONE is not set
    9741000# CONFIG_FEATURE_SH_NOFORK is not set
     1001CONFIG_FEATURE_SH_HISTFILESIZE=y
    9751002
    9761003#
     
    9811008CONFIG_FEATURE_REMOTE_LOG=y
    9821009CONFIG_FEATURE_SYSLOGD_DUP=y
     1010CONFIG_FEATURE_SYSLOGD_CFG=y
    9831011CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
    9841012CONFIG_FEATURE_IPC_SYSLOG=y
     
    9861014CONFIG_LOGREAD=y
    9871015CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
     1016CONFIG_FEATURE_KMSG_SYSLOG=y
    9881017CONFIG_KLOGD=y
     1018
     1019#
     1020# klogd should not be used together with syslog to kernel printk buffer
     1021#
    9891022CONFIG_FEATURE_KLOGD_KLOGCTL=y
    9901023# CONFIG_LOGGER is not set
  • branches/3.2/mindi-busybox/include/applets.h

    r2725 r3233  
    1414l     - location to install link to: [/usr]/[s]bin
    1515s     - suid type:
    16         _BB_SUID_REQUIRE: will complain if busybox isn't suid
     16        BB_SUID_REQUIRE: will complain if busybox isn't suid
    1717        and is run by non-root (applet_main() will not be called at all)
    18         _BB_SUID_DROP: will drop suid prior to applet_main()
    19         _BB_SUID_MAYBE: neither of the above
     18        BB_SUID_DROP: will drop suid prior to applet_main()
     19        BB_SUID_MAYBE: neither of the above
     20        (every instance of BB_SUID_REQUIRE and BB_SUID_MAYBE
     21        needs to be justified in comment)
     22        NB: please update FEATURE_SUID help text whenever you add/remove
     23        BB_SUID_REQUIRE or BB_SUID_MAYBE applet.
    2024*/
    2125
     
    5963
    6064#if ENABLE_INSTALL_NO_USR
    61 # define _BB_DIR_USR_BIN _BB_DIR_BIN
    62 # define _BB_DIR_USR_SBIN _BB_DIR_SBIN
     65# define BB_DIR_USR_BIN BB_DIR_BIN
     66# define BB_DIR_USR_SBIN BB_DIR_SBIN
    6367#endif
    6468
    6569
    66 IF_BUNZIP2(APPLET(bunzip2, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    67 IF_BUNZIP2(APPLET_ODDNAME(bzcat, bunzip2, _BB_DIR_USR_BIN, _BB_SUID_DROP, bzcat))
    68 IF_DATE(APPLET(date, _BB_DIR_BIN, _BB_SUID_DROP))
    69 IF_BASE64(APPLET(base64, _BB_DIR_BIN, _BB_SUID_DROP))
    70 IF_PATCH(APPLET(patch, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    71 IF_FIND(APPLET_NOEXEC(find, find, _BB_DIR_USR_BIN, _BB_SUID_DROP, find))
    72 IF_GREP(APPLET(grep, _BB_DIR_BIN, _BB_SUID_DROP))
    73 IF_FEATURE_GREP_EGREP_ALIAS(APPLET_ODDNAME(egrep, grep, _BB_DIR_BIN, _BB_SUID_DROP, egrep))
    74 IF_FEATURE_GREP_FGREP_ALIAS(APPLET_ODDNAME(fgrep, grep, _BB_DIR_BIN, _BB_SUID_DROP, fgrep))
    75 IF_XARGS(APPLET_NOEXEC(xargs, xargs, _BB_DIR_USR_BIN, _BB_SUID_DROP, xargs))
    76 IF_BOOTCHARTD(APPLET(bootchartd, _BB_DIR_SBIN, _BB_SUID_DROP))
    77 IF_HALT(APPLET(halt, _BB_DIR_SBIN, _BB_SUID_DROP))
    78 IF_HALT(APPLET_ODDNAME(poweroff, halt, _BB_DIR_SBIN, _BB_SUID_DROP, poweroff))
    79 IF_HALT(APPLET_ODDNAME(reboot, halt, _BB_DIR_SBIN, _BB_SUID_DROP, reboot))
    80 IF_INIT(APPLET(init, _BB_DIR_SBIN, _BB_SUID_DROP))
    81 IF_FEATURE_INITRD(APPLET_ODDNAME(linuxrc, init, _BB_DIR_ROOT, _BB_SUID_DROP, linuxrc))
    82 IF_MESG(APPLET(mesg, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    83 IF_ADD_SHELL(   APPLET_ODDNAME(add-shell   , add_remove_shell, _BB_DIR_USR_BIN, _BB_SUID_DROP, add_shell   ))
    84 IF_REMOVE_SHELL(APPLET_ODDNAME(remove-shell, add_remove_shell, _BB_DIR_USR_BIN, _BB_SUID_DROP, remove_shell))
    85 IF_CONSPY(APPLET(conspy, _BB_DIR_BIN, _BB_SUID_DROP))
    86 IF_NANDWRITE(APPLET(nandwrite, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    87 IF_NANDWRITE(APPLET_ODDNAME(nanddump, nandwrite, _BB_DIR_USR_SBIN, _BB_SUID_DROP, nanddump))
     70IF_BUNZIP2(APPLET(bunzip2, BB_DIR_USR_BIN, BB_SUID_DROP))
     71IF_BUNZIP2(APPLET_ODDNAME(bzcat, bunzip2, BB_DIR_USR_BIN, BB_SUID_DROP, bzcat))
     72IF_DATE(APPLET(date, BB_DIR_BIN, BB_SUID_DROP))
     73IF_HOSTID(APPLET_NOFORK(hostid, hostid, BB_DIR_USR_BIN, BB_SUID_DROP, hostid))
     74IF_GROUPS(APPLET_NOEXEC(groups, id, BB_DIR_USR_BIN, BB_SUID_DROP, groups))
     75IF_ID(    APPLET_NOEXEC(id,     id, BB_DIR_USR_BIN, BB_SUID_DROP, id    ))
     76IF_TOUCH(APPLET_NOFORK(touch, touch, BB_DIR_BIN, BB_SUID_DROP, touch))
     77IF_BASE64(APPLET(base64, BB_DIR_BIN, BB_SUID_DROP))
     78IF_USERS(APPLET_ODDNAME(users, who, BB_DIR_USR_BIN, BB_SUID_DROP, users))
     79IF_WHO(  APPLET(  who, BB_DIR_USR_BIN, BB_SUID_DROP))
     80IF_PATCH(APPLET(patch, BB_DIR_USR_BIN, BB_SUID_DROP))
     81IF_VI(APPLET(vi, BB_DIR_BIN, BB_SUID_DROP))
     82IF_FIND(APPLET_NOEXEC(find, find, BB_DIR_USR_BIN, BB_SUID_DROP, find))
     83IF_GREP(APPLET(grep, BB_DIR_BIN, BB_SUID_DROP))
     84IF_FEATURE_GREP_EGREP_ALIAS(APPLET_ODDNAME(egrep, grep, BB_DIR_BIN, BB_SUID_DROP, egrep))
     85IF_FEATURE_GREP_FGREP_ALIAS(APPLET_ODDNAME(fgrep, grep, BB_DIR_BIN, BB_SUID_DROP, fgrep))
     86IF_XARGS(APPLET_NOEXEC(xargs, xargs, BB_DIR_USR_BIN, BB_SUID_DROP, xargs))
     87IF_BOOTCHARTD(APPLET(bootchartd, BB_DIR_SBIN, BB_SUID_DROP))
     88IF_HALT(APPLET(halt, BB_DIR_SBIN, BB_SUID_DROP))
     89IF_HALT(APPLET_ODDNAME(poweroff, halt, BB_DIR_SBIN, BB_SUID_DROP, poweroff))
     90IF_HALT(APPLET_ODDNAME(reboot, halt, BB_DIR_SBIN, BB_SUID_DROP, reboot))
     91IF_INIT(APPLET(init, BB_DIR_SBIN, BB_SUID_DROP))
     92IF_FEATURE_INITRD(APPLET_ODDNAME(linuxrc, init, BB_DIR_ROOT, BB_SUID_DROP, linuxrc))
     93IF_MESG(APPLET(mesg, BB_DIR_USR_BIN, BB_SUID_DROP))
     94IF_ADD_SHELL(   APPLET_ODDNAME(add-shell   , add_remove_shell, BB_DIR_USR_SBIN, BB_SUID_DROP, add_shell   ))
     95IF_REMOVE_SHELL(APPLET_ODDNAME(remove-shell, add_remove_shell, BB_DIR_USR_SBIN, BB_SUID_DROP, remove_shell))
     96IF_CONSPY(APPLET(conspy, BB_DIR_BIN, BB_SUID_DROP))
     97IF_NANDWRITE(APPLET(nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP))
     98IF_NANDWRITE(APPLET_ODDNAME(nanddump, nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP, nanddump))
    8899IF_UBIATTACH(APPLET_ODDNAME(ubiattach, ubi_attach_detach, _BB_DIR_USR_SBIN, _BB_SUID_DROP, ubiattach))
    89100IF_UBIDETACH(APPLET_ODDNAME(ubidetach, ubi_attach_detach, _BB_DIR_USR_SBIN, _BB_SUID_DROP, ubidetach))
    90 IF_DEPMOD(APPLET(depmod, _BB_DIR_SBIN, _BB_SUID_DROP))
    91 IF_INSMOD(APPLET(insmod, _BB_DIR_SBIN, _BB_SUID_DROP))
    92 IF_LSMOD(APPLET(lsmod, _BB_DIR_SBIN, _BB_SUID_DROP))
    93 IF_MODINFO(APPLET(modinfo, _BB_DIR_SBIN, _BB_SUID_DROP))
    94 IF_MODPROBE(APPLET(modprobe, _BB_DIR_SBIN, _BB_SUID_DROP))
    95 IF_MODPROBE_SMALL(APPLET(modprobe, _BB_DIR_SBIN, _BB_SUID_DROP))
    96 IF_MODPROBE_SMALL(APPLET_ODDNAME(depmod, modprobe, _BB_DIR_SBIN, _BB_SUID_DROP, modprobe))
    97 IF_MODPROBE_SMALL(APPLET_ODDNAME(insmod, modprobe, _BB_DIR_SBIN, _BB_SUID_DROP, modprobe))
    98 IF_MODPROBE_SMALL(APPLET_ODDNAME(lsmod, modprobe, _BB_DIR_SBIN, _BB_SUID_DROP, modprobe))
    99 IF_MODPROBE_SMALL(APPLET_ODDNAME(rmmod, modprobe, _BB_DIR_SBIN, _BB_SUID_DROP, modprobe))
    100 IF_RMMOD(APPLET(rmmod, _BB_DIR_SBIN, _BB_SUID_DROP))
    101 IF_NBDCLIENT(APPLET_ODDNAME(nbd-client, nbdclient, _BB_DIR_USR_SBIN, _BB_SUID_DROP, nbdclient))
    102 IF_IOSTAT(APPLET(iostat, _BB_DIR_BIN, _BB_SUID_DROP))
    103 IF_MPSTAT(APPLET(mpstat, _BB_DIR_BIN, _BB_SUID_DROP))
    104 IF_PMAP(APPLET(pmap, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    105 IF_POWERTOP(APPLET(powertop, _BB_DIR_BIN, _BB_SUID_DROP))
    106 IF_SMEMCAP(APPLET(smemcap, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    107 IF_ASH(APPLET(ash, _BB_DIR_BIN, _BB_SUID_DROP))
    108 IF_FEATURE_SH_IS_ASH(APPLET_ODDNAME(sh, ash, _BB_DIR_BIN, _BB_SUID_DROP, sh))
    109 IF_FEATURE_BASH_IS_ASH(APPLET_ODDNAME(bash, ash, _BB_DIR_BIN, _BB_SUID_DROP, bash))
    110 IF_CTTYHACK(APPLET(cttyhack, _BB_DIR_BIN, _BB_SUID_DROP))
    111 IF_HUSH(APPLET(hush, _BB_DIR_BIN, _BB_SUID_DROP))
    112 IF_MSH(APPLET(msh, _BB_DIR_BIN, _BB_SUID_DROP))
    113 IF_FEATURE_SH_IS_HUSH(APPLET_ODDNAME(sh, hush, _BB_DIR_BIN, _BB_SUID_DROP, sh))
    114 IF_FEATURE_BASH_IS_HUSH(APPLET_ODDNAME(bash, hush, _BB_DIR_BIN, _BB_SUID_DROP, bash))
    115 IF_BLOCKDEV(APPLET(blockdev, _BB_DIR_SBIN, _BB_SUID_DROP))
    116 IF_REV(APPLET(rev, _BB_DIR_BIN, _BB_SUID_DROP))
    117 IF_TEST(APPLET_NOFORK([,  test, _BB_DIR_USR_BIN, _BB_SUID_DROP, test))
    118 IF_TEST(APPLET_NOFORK([[, test, _BB_DIR_USR_BIN, _BB_SUID_DROP, test))
    119 IF_ACPID(APPLET(acpid, _BB_DIR_SBIN, _BB_SUID_DROP))
    120 IF_ADDGROUP(APPLET(addgroup, _BB_DIR_BIN, _BB_SUID_DROP))
    121 IF_ADDUSER(APPLET(adduser, _BB_DIR_BIN, _BB_SUID_DROP))
    122 IF_ADJTIMEX(APPLET(adjtimex, _BB_DIR_SBIN, _BB_SUID_DROP))
    123 IF_AR(APPLET(ar, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    124 IF_ARP(APPLET(arp, _BB_DIR_SBIN, _BB_SUID_DROP))
    125 IF_ARPING(APPLET(arping, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    126 IF_AWK(APPLET_NOEXEC(awk, awk, _BB_DIR_USR_BIN, _BB_SUID_DROP, awk))
    127 IF_BASENAME(APPLET_NOFORK(basename, basename, _BB_DIR_USR_BIN, _BB_SUID_DROP, basename))
    128 IF_BBCONFIG(APPLET(bbconfig, _BB_DIR_BIN, _BB_SUID_DROP))
    129 IF_BEEP(APPLET(beep, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    130 IF_BLKID(APPLET(blkid, _BB_DIR_SBIN, _BB_SUID_DROP))
    131 IF_BRCTL(APPLET(brctl, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    132 IF_BZIP2(APPLET(bzip2, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    133 IF_CAL(APPLET(cal, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    134 IF_CAT(APPLET_NOFORK(cat, cat, _BB_DIR_BIN, _BB_SUID_DROP, cat))
    135 IF_CATV(APPLET(catv, _BB_DIR_BIN, _BB_SUID_DROP))
    136 IF_CHAT(APPLET(chat, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    137 IF_CHATTR(APPLET(chattr, _BB_DIR_BIN, _BB_SUID_DROP))
    138 IF_CHCON(APPLET(chcon, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    139 IF_CHGRP(APPLET_NOEXEC(chgrp, chgrp, _BB_DIR_BIN, _BB_SUID_DROP, chgrp))
    140 IF_CHMOD(APPLET_NOEXEC(chmod, chmod, _BB_DIR_BIN, _BB_SUID_DROP, chmod))
    141 IF_CHOWN(APPLET_NOEXEC(chown, chown, _BB_DIR_BIN, _BB_SUID_DROP, chown))
    142 IF_CHPASSWD(APPLET(chpasswd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    143 IF_CHPST(APPLET(chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    144 IF_CHROOT(APPLET(chroot, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    145 IF_CHRT(APPLET(chrt, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    146 IF_CHVT(APPLET(chvt, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    147 IF_CKSUM(APPLET_NOEXEC(cksum, cksum, _BB_DIR_USR_BIN, _BB_SUID_DROP, cksum))
    148 IF_CLEAR(APPLET(clear, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    149 IF_CMP(APPLET(cmp, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    150 IF_COMM(APPLET(comm, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    151 IF_CP(APPLET_NOEXEC(cp, cp, _BB_DIR_BIN, _BB_SUID_DROP, cp))
    152 IF_CPIO(APPLET(cpio, _BB_DIR_BIN, _BB_SUID_DROP))
    153 IF_CROND(APPLET(crond, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    154 IF_CRONTAB(APPLET(crontab, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE))
    155 IF_CRYPTPW(APPLET(cryptpw, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    156 IF_CUT(APPLET_NOEXEC(cut, cut, _BB_DIR_USR_BIN, _BB_SUID_DROP, cut))
    157 IF_DC(APPLET(dc, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    158 IF_DD(APPLET_NOEXEC(dd, dd, _BB_DIR_BIN, _BB_SUID_DROP, dd))
    159 IF_DEALLOCVT(APPLET(deallocvt, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    160 IF_DELGROUP(APPLET_ODDNAME(delgroup, deluser, _BB_DIR_BIN, _BB_SUID_DROP, delgroup))
    161 IF_DELUSER(APPLET(deluser, _BB_DIR_BIN, _BB_SUID_DROP))
    162 IF_DEVFSD(APPLET(devfsd, _BB_DIR_SBIN, _BB_SUID_DROP))
    163 IF_DEVMEM(APPLET(devmem, _BB_DIR_SBIN, _BB_SUID_DROP))
    164 IF_DF(APPLET(df, _BB_DIR_BIN, _BB_SUID_DROP))
    165 IF_DHCPRELAY(APPLET(dhcprelay, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    166 IF_DIFF(APPLET(diff, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    167 IF_DIRNAME(APPLET_NOFORK(dirname, dirname, _BB_DIR_USR_BIN, _BB_SUID_DROP, dirname))
    168 IF_DMESG(APPLET(dmesg, _BB_DIR_BIN, _BB_SUID_DROP))
    169 IF_DNSD(APPLET(dnsd, _BB_DIR_USR_SBIN, _BB_SUID_REQUIRE))
    170 IF_HOSTNAME(APPLET_ODDNAME(dnsdomainname, hostname, _BB_DIR_BIN, _BB_SUID_DROP, dnsdomainname))
    171 IF_DOS2UNIX(APPLET_NOEXEC(dos2unix, dos2unix, _BB_DIR_USR_BIN, _BB_SUID_DROP, dos2unix))
    172 IF_DPKG(APPLET(dpkg, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    173 IF_DPKG_DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, _BB_DIR_USR_BIN, _BB_SUID_DROP, dpkg_deb))
    174 IF_DU(APPLET(du, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    175 IF_DUMPKMAP(APPLET(dumpkmap, _BB_DIR_BIN, _BB_SUID_DROP))
    176 IF_DUMPLEASES(APPLET(dumpleases, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    177 //IF_E2FSCK(APPLET(e2fsck, _BB_DIR_SBIN, _BB_SUID_DROP))
    178 //IF_E2LABEL(APPLET_ODDNAME(e2label, tune2fs, _BB_DIR_SBIN, _BB_SUID_DROP, e2label))
    179 IF_ECHO(APPLET_NOFORK(echo, echo, _BB_DIR_BIN, _BB_SUID_DROP, echo))
    180 IF_ED(APPLET(ed, _BB_DIR_BIN, _BB_SUID_DROP))
    181 IF_EJECT(APPLET(eject, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    182 IF_ENV(APPLET_NOEXEC(env, env, _BB_DIR_USR_BIN, _BB_SUID_DROP, env))
    183 IF_ENVDIR(APPLET_ODDNAME(envdir, chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP, envdir))
    184 IF_ENVUIDGID(APPLET_ODDNAME(envuidgid, chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP, envuidgid))
    185 IF_ETHER_WAKE(APPLET_ODDNAME(ether-wake, ether_wake, _BB_DIR_USR_BIN, _BB_SUID_DROP, ether_wake))
    186 IF_EXPAND(APPLET(expand, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    187 IF_EXPR(APPLET(expr, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    188 IF_FAKEIDENTD(APPLET(fakeidentd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    189 IF_FALSE(APPLET_NOFORK(false, false, _BB_DIR_BIN, _BB_SUID_DROP, false))
    190 IF_FBSET(APPLET(fbset, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    191 IF_FBSPLASH(APPLET(fbsplash, _BB_DIR_SBIN, _BB_SUID_DROP))
    192 IF_FDFLUSH(APPLET_ODDNAME(fdflush, freeramdisk, _BB_DIR_BIN, _BB_SUID_DROP, fdflush))
    193 IF_FDFORMAT(APPLET(fdformat, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    194 IF_FDISK(APPLET(fdisk, _BB_DIR_SBIN, _BB_SUID_DROP))
    195 IF_FGCONSOLE(APPLET(fgconsole, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    196 IF_FINDFS(APPLET(findfs, _BB_DIR_SBIN, _BB_SUID_MAYBE))
    197 IF_FLASH_ERASEALL(APPLET(flash_eraseall, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    198 IF_FLASH_LOCK(APPLET_ODDNAME(flash_lock, flash_lock_unlock, _BB_DIR_USR_SBIN, _BB_SUID_DROP, flash_lock))
    199 IF_FLASH_UNLOCK(APPLET_ODDNAME(flash_unlock, flash_lock_unlock, _BB_DIR_USR_SBIN, _BB_SUID_DROP, flash_unlock))
    200 IF_FLASHCP(APPLET(flashcp, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    201 IF_FLOCK(APPLET(flock, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    202 IF_FOLD(APPLET_NOEXEC(fold, fold, _BB_DIR_USR_BIN, _BB_SUID_DROP, fold))
    203 IF_FREE(APPLET(free, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    204 IF_FREERAMDISK(APPLET(freeramdisk, _BB_DIR_SBIN, _BB_SUID_DROP))
    205 IF_FSCK(APPLET(fsck, _BB_DIR_SBIN, _BB_SUID_DROP))
    206 //IF_E2FSCK(APPLET_ODDNAME(fsck.ext2, e2fsck, _BB_DIR_SBIN, _BB_SUID_DROP, fsck_ext2))
    207 //IF_E2FSCK(APPLET_ODDNAME(fsck.ext3, e2fsck, _BB_DIR_SBIN, _BB_SUID_DROP, fsck_ext3))
    208 IF_FSCK_MINIX(APPLET_ODDNAME(fsck.minix, fsck_minix, _BB_DIR_SBIN, _BB_SUID_DROP, fsck_minix))
    209 IF_FSYNC(APPLET_NOFORK(fsync, fsync, _BB_DIR_BIN, _BB_SUID_DROP, fsync))
    210 IF_FTPD(APPLET(ftpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    211 IF_FTPGET(APPLET_ODDNAME(ftpget, ftpgetput, _BB_DIR_USR_BIN, _BB_SUID_DROP, ftpget))
    212 IF_FTPPUT(APPLET_ODDNAME(ftpput, ftpgetput, _BB_DIR_USR_BIN, _BB_SUID_DROP, ftpput))
    213 IF_FUSER(APPLET(fuser, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    214 IF_GETENFORCE(APPLET(getenforce, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    215 IF_GETOPT(APPLET(getopt, _BB_DIR_BIN, _BB_SUID_DROP))
    216 IF_GETSEBOOL(APPLET(getsebool, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    217 IF_GETTY(APPLET(getty, _BB_DIR_SBIN, _BB_SUID_DROP))
    218 IF_GUNZIP(APPLET(gunzip, _BB_DIR_BIN, _BB_SUID_DROP))
    219 IF_GZIP(APPLET(gzip, _BB_DIR_BIN, _BB_SUID_DROP))
    220 IF_HD(APPLET_NOEXEC(hd, hexdump, _BB_DIR_USR_BIN, _BB_SUID_DROP, hd))
    221 IF_HDPARM(APPLET(hdparm, _BB_DIR_SBIN, _BB_SUID_DROP))
    222 IF_HEAD(APPLET_NOEXEC(head, head, _BB_DIR_USR_BIN, _BB_SUID_DROP, head))
    223 IF_HEXDUMP(APPLET_NOEXEC(hexdump, hexdump, _BB_DIR_USR_BIN, _BB_SUID_DROP, hexdump))
    224 IF_HOSTID(APPLET_NOFORK(hostid, hostid, _BB_DIR_USR_BIN, _BB_SUID_DROP, hostid))
    225 IF_HOSTNAME(APPLET(hostname, _BB_DIR_BIN, _BB_SUID_DROP))
    226 IF_HTTPD(APPLET(httpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    227 IF_HWCLOCK(APPLET(hwclock, _BB_DIR_SBIN, _BB_SUID_DROP))
    228 IF_ID(APPLET_NOEXEC(id, id, _BB_DIR_USR_BIN, _BB_SUID_DROP, id))
    229 IF_IFCONFIG(APPLET(ifconfig, _BB_DIR_SBIN, _BB_SUID_DROP))
    230 IF_IFUPDOWN(APPLET_ODDNAME(ifdown, ifupdown, _BB_DIR_SBIN, _BB_SUID_DROP, ifdown))
    231 IF_IFENSLAVE(APPLET(ifenslave, _BB_DIR_SBIN, _BB_SUID_DROP))
    232 IF_IFPLUGD(APPLET(ifplugd, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    233 IF_IFUPDOWN(APPLET_ODDNAME(ifup, ifupdown, _BB_DIR_SBIN, _BB_SUID_DROP, ifup))
    234 IF_INETD(APPLET(inetd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    235 IF_INOTIFYD(APPLET(inotifyd, _BB_DIR_SBIN, _BB_SUID_DROP))
    236 IF_INSTALL(APPLET(install, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    237 IF_IONICE(APPLET(ionice, _BB_DIR_BIN, _BB_SUID_DROP))
     101IF_DEPMOD(APPLET(depmod, BB_DIR_SBIN, BB_SUID_DROP))
     102IF_INSMOD(APPLET(insmod, BB_DIR_SBIN, BB_SUID_DROP))
     103IF_LSMOD(APPLET(lsmod, BB_DIR_SBIN, BB_SUID_DROP))
     104IF_MODINFO(APPLET(modinfo, BB_DIR_SBIN, BB_SUID_DROP))
     105IF_MODPROBE(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP))
     106IF_MODPROBE_SMALL(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP))
     107IF_MODPROBE_SMALL(APPLET_ODDNAME(depmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe))
     108IF_MODPROBE_SMALL(APPLET_ODDNAME(insmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe))
     109IF_MODPROBE_SMALL(APPLET_ODDNAME(lsmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe))
     110IF_MODPROBE_SMALL(APPLET_ODDNAME(rmmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe))
     111IF_RMMOD(APPLET(rmmod, BB_DIR_SBIN, BB_SUID_DROP))
     112IF_NBDCLIENT(APPLET_ODDNAME(nbd-client, nbdclient, BB_DIR_USR_SBIN, BB_SUID_DROP, nbdclient))
     113IF_PING(APPLET(ping, BB_DIR_BIN, BB_SUID_MAYBE))
     114IF_PING6(APPLET(ping6, BB_DIR_BIN, BB_SUID_MAYBE))
     115IF_IOSTAT(APPLET(iostat, BB_DIR_BIN, BB_SUID_DROP))
     116IF_MPSTAT(APPLET(mpstat, BB_DIR_BIN, BB_SUID_DROP))
     117IF_NMETER(APPLET(nmeter, BB_DIR_USR_BIN, BB_SUID_DROP))
     118IF_PMAP(APPLET(pmap, BB_DIR_USR_BIN, BB_SUID_DROP))
     119IF_POWERTOP(APPLET(powertop, BB_DIR_USR_SBIN, BB_SUID_DROP))
     120IF_SMEMCAP(APPLET(smemcap, BB_DIR_USR_BIN, BB_SUID_DROP))
     121IF_ASH(APPLET(ash, BB_DIR_BIN, BB_SUID_DROP))
     122IF_FEATURE_SH_IS_ASH(APPLET_ODDNAME(sh, ash, BB_DIR_BIN, BB_SUID_DROP, sh))
     123IF_FEATURE_BASH_IS_ASH(APPLET_ODDNAME(bash, ash, BB_DIR_BIN, BB_SUID_DROP, bash))
     124IF_CTTYHACK(APPLET(cttyhack, BB_DIR_BIN, BB_SUID_DROP))
     125IF_HUSH(APPLET(hush, BB_DIR_BIN, BB_SUID_DROP))
     126IF_MSH(APPLET(msh, BB_DIR_BIN, BB_SUID_DROP))
     127IF_FEATURE_SH_IS_HUSH(APPLET_ODDNAME(sh, hush, BB_DIR_BIN, BB_SUID_DROP, sh))
     128IF_FEATURE_BASH_IS_HUSH(APPLET_ODDNAME(bash, hush, BB_DIR_BIN, BB_SUID_DROP, bash))
     129IF_BLOCKDEV(APPLET(blockdev, BB_DIR_SBIN, BB_SUID_DROP))
     130IF_MDEV(APPLET(mdev, BB_DIR_SBIN, BB_SUID_DROP))
     131IF_REV(APPLET(rev, BB_DIR_BIN, BB_SUID_DROP))
     132IF_TEST(APPLET_NOFORK([,  test, BB_DIR_USR_BIN, BB_SUID_DROP, test))
     133IF_TEST(APPLET_NOFORK([[, test, BB_DIR_USR_BIN, BB_SUID_DROP, test))
     134IF_ACPID(APPLET(acpid, BB_DIR_SBIN, BB_SUID_DROP))
     135IF_ADDGROUP(APPLET(addgroup, BB_DIR_USR_SBIN, BB_SUID_DROP))
     136IF_ADDUSER(APPLET(adduser, BB_DIR_USR_SBIN, BB_SUID_DROP))
     137IF_ADJTIMEX(APPLET(adjtimex, BB_DIR_SBIN, BB_SUID_DROP))
     138IF_AR(APPLET(ar, BB_DIR_USR_BIN, BB_SUID_DROP))
     139IF_ARP(APPLET(arp, BB_DIR_SBIN, BB_SUID_DROP))
     140IF_ARPING(APPLET(arping, BB_DIR_USR_SBIN, BB_SUID_DROP))
     141IF_AWK(APPLET_NOEXEC(awk, awk, BB_DIR_USR_BIN, BB_SUID_DROP, awk))
     142IF_BASENAME(APPLET_NOFORK(basename, basename, BB_DIR_USR_BIN, BB_SUID_DROP, basename))
     143IF_BBCONFIG(APPLET(bbconfig, BB_DIR_BIN, BB_SUID_DROP))
     144IF_BEEP(APPLET(beep, BB_DIR_USR_BIN, BB_SUID_DROP))
     145IF_BLKID(APPLET(blkid, BB_DIR_SBIN, BB_SUID_DROP))
     146IF_BRCTL(APPLET(brctl, BB_DIR_USR_SBIN, BB_SUID_DROP))
     147IF_BZIP2(APPLET(bzip2, BB_DIR_USR_BIN, BB_SUID_DROP))
     148IF_CAL(APPLET(cal, BB_DIR_USR_BIN, BB_SUID_DROP))
     149IF_CAT(APPLET_NOFORK(cat, cat, BB_DIR_BIN, BB_SUID_DROP, cat))
     150IF_CATV(APPLET(catv, BB_DIR_BIN, BB_SUID_DROP))
     151IF_CHAT(APPLET(chat, BB_DIR_USR_SBIN, BB_SUID_DROP))
     152IF_CHATTR(APPLET(chattr, BB_DIR_BIN, BB_SUID_DROP))
     153IF_CHCON(APPLET(chcon, BB_DIR_USR_BIN, BB_SUID_DROP))
     154IF_CHGRP(APPLET_NOEXEC(chgrp, chgrp, BB_DIR_BIN, BB_SUID_DROP, chgrp))
     155IF_CHMOD(APPLET_NOEXEC(chmod, chmod, BB_DIR_BIN, BB_SUID_DROP, chmod))
     156IF_CHOWN(APPLET_NOEXEC(chown, chown, BB_DIR_BIN, BB_SUID_DROP, chown))
     157IF_CHPASSWD(APPLET(chpasswd, BB_DIR_USR_SBIN, BB_SUID_DROP))
     158IF_CHPST(APPLET(chpst, BB_DIR_USR_BIN, BB_SUID_DROP))
     159IF_CHROOT(APPLET(chroot, BB_DIR_USR_SBIN, BB_SUID_DROP))
     160IF_CHRT(APPLET(chrt, BB_DIR_USR_BIN, BB_SUID_DROP))
     161IF_CHVT(APPLET(chvt, BB_DIR_USR_BIN, BB_SUID_DROP))
     162IF_CKSUM(APPLET_NOEXEC(cksum, cksum, BB_DIR_USR_BIN, BB_SUID_DROP, cksum))
     163IF_CLEAR(APPLET(clear, BB_DIR_USR_BIN, BB_SUID_DROP))
     164IF_CMP(APPLET(cmp, BB_DIR_USR_BIN, BB_SUID_DROP))
     165IF_COMM(APPLET(comm, BB_DIR_USR_BIN, BB_SUID_DROP))
     166IF_CP(APPLET_NOEXEC(cp, cp, BB_DIR_BIN, BB_SUID_DROP, cp))
     167IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP))
     168IF_CROND(APPLET(crond, BB_DIR_USR_SBIN, BB_SUID_DROP))
     169/* Needs to be run by root or be suid root - needs to change /var/spool/cron* files: */
     170IF_CRONTAB(APPLET(crontab, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
     171IF_CRYPTPW(APPLET(cryptpw, BB_DIR_USR_BIN, BB_SUID_DROP))
     172IF_CUT(APPLET_NOEXEC(cut, cut, BB_DIR_USR_BIN, BB_SUID_DROP, cut))
     173IF_DC(APPLET(dc, BB_DIR_USR_BIN, BB_SUID_DROP))
     174IF_DD(APPLET_NOEXEC(dd, dd, BB_DIR_BIN, BB_SUID_DROP, dd))
     175IF_DEALLOCVT(APPLET(deallocvt, BB_DIR_USR_BIN, BB_SUID_DROP))
     176IF_DELGROUP(APPLET_ODDNAME(delgroup, deluser, BB_DIR_USR_SBIN, BB_SUID_DROP, delgroup))
     177IF_DELUSER(APPLET(deluser, BB_DIR_USR_SBIN, BB_SUID_DROP))
     178IF_DEVFSD(APPLET(devfsd, BB_DIR_SBIN, BB_SUID_DROP))
     179IF_DEVMEM(APPLET(devmem, BB_DIR_SBIN, BB_SUID_DROP))
     180IF_DF(APPLET(df, BB_DIR_BIN, BB_SUID_DROP))
     181IF_DHCPRELAY(APPLET(dhcprelay, BB_DIR_USR_SBIN, BB_SUID_DROP))
     182IF_DIFF(APPLET(diff, BB_DIR_USR_BIN, BB_SUID_DROP))
     183IF_DIRNAME(APPLET_NOFORK(dirname, dirname, BB_DIR_USR_BIN, BB_SUID_DROP, dirname))
     184IF_DMESG(APPLET(dmesg, BB_DIR_BIN, BB_SUID_DROP))
     185IF_DNSD(APPLET(dnsd, BB_DIR_USR_SBIN, BB_SUID_DROP))
     186IF_HOSTNAME(APPLET_ODDNAME(dnsdomainname, hostname, BB_DIR_BIN, BB_SUID_DROP, dnsdomainname))
     187IF_DOS2UNIX(APPLET_NOEXEC(dos2unix, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, dos2unix))
     188IF_DPKG(APPLET(dpkg, BB_DIR_USR_BIN, BB_SUID_DROP))
     189IF_DPKG_DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, BB_DIR_USR_BIN, BB_SUID_DROP, dpkg_deb))
     190IF_DU(APPLET(du, BB_DIR_USR_BIN, BB_SUID_DROP))
     191IF_DUMPKMAP(APPLET(dumpkmap, BB_DIR_BIN, BB_SUID_DROP))
     192IF_DUMPLEASES(APPLET(dumpleases, BB_DIR_USR_BIN, BB_SUID_DROP))
     193//IF_E2FSCK(APPLET(e2fsck, BB_DIR_SBIN, BB_SUID_DROP))
     194//IF_E2LABEL(APPLET_ODDNAME(e2label, tune2fs, BB_DIR_SBIN, BB_SUID_DROP, e2label))
     195IF_ECHO(APPLET_NOFORK(echo, echo, BB_DIR_BIN, BB_SUID_DROP, echo))
     196IF_ED(APPLET(ed, BB_DIR_BIN, BB_SUID_DROP))
     197IF_EJECT(APPLET(eject, BB_DIR_USR_BIN, BB_SUID_DROP))
     198IF_ENV(APPLET_NOEXEC(env, env, BB_DIR_USR_BIN, BB_SUID_DROP, env))
     199IF_ENVDIR(APPLET_ODDNAME(envdir, chpst, BB_DIR_USR_BIN, BB_SUID_DROP, envdir))
     200IF_ENVUIDGID(APPLET_ODDNAME(envuidgid, chpst, BB_DIR_USR_BIN, BB_SUID_DROP, envuidgid))
     201IF_ETHER_WAKE(APPLET_ODDNAME(ether-wake, ether_wake, BB_DIR_USR_SBIN, BB_SUID_DROP, ether_wake))
     202IF_EXPAND(APPLET(expand, BB_DIR_USR_BIN, BB_SUID_DROP))
     203IF_EXPR(APPLET(expr, BB_DIR_USR_BIN, BB_SUID_DROP))
     204IF_FAKEIDENTD(APPLET(fakeidentd, BB_DIR_USR_SBIN, BB_SUID_DROP))
     205IF_FALSE(APPLET_NOFORK(false, false, BB_DIR_BIN, BB_SUID_DROP, false))
     206IF_FBSET(APPLET(fbset, BB_DIR_USR_SBIN, BB_SUID_DROP))
     207IF_FBSPLASH(APPLET(fbsplash, BB_DIR_SBIN, BB_SUID_DROP))
     208IF_FDFLUSH(APPLET_ODDNAME(fdflush, freeramdisk, BB_DIR_BIN, BB_SUID_DROP, fdflush))
     209IF_FDFORMAT(APPLET(fdformat, BB_DIR_USR_SBIN, BB_SUID_DROP))
     210IF_FDISK(APPLET(fdisk, BB_DIR_SBIN, BB_SUID_DROP))
     211IF_FGCONSOLE(APPLET(fgconsole, BB_DIR_USR_BIN, BB_SUID_DROP))
     212/* Benefits from suid root: better access to /dev/BLOCKDEVs: */
     213IF_FINDFS(APPLET(findfs, BB_DIR_SBIN, BB_SUID_MAYBE))
     214IF_FLASH_ERASEALL(APPLET(flash_eraseall, BB_DIR_USR_SBIN, BB_SUID_DROP))
     215IF_FLASH_LOCK(APPLET_ODDNAME(flash_lock, flash_lock_unlock, BB_DIR_USR_SBIN, BB_SUID_DROP, flash_lock))
     216IF_FLASH_UNLOCK(APPLET_ODDNAME(flash_unlock, flash_lock_unlock, BB_DIR_USR_SBIN, BB_SUID_DROP, flash_unlock))
     217IF_FLASHCP(APPLET(flashcp, BB_DIR_USR_SBIN, BB_SUID_DROP))
     218IF_FLOCK(APPLET(flock, BB_DIR_USR_BIN, BB_SUID_DROP))
     219IF_FOLD(APPLET_NOEXEC(fold, fold, BB_DIR_USR_BIN, BB_SUID_DROP, fold))
     220IF_FREE(APPLET(free, BB_DIR_USR_BIN, BB_SUID_DROP))
     221IF_FREERAMDISK(APPLET(freeramdisk, BB_DIR_SBIN, BB_SUID_DROP))
     222IF_FSCK(APPLET(fsck, BB_DIR_SBIN, BB_SUID_DROP))
     223//IF_E2FSCK(APPLET_ODDNAME(fsck.ext2, e2fsck, BB_DIR_SBIN, BB_SUID_DROP, fsck_ext2))
     224//IF_E2FSCK(APPLET_ODDNAME(fsck.ext3, e2fsck, BB_DIR_SBIN, BB_SUID_DROP, fsck_ext3))
     225IF_FSCK_MINIX(APPLET_ODDNAME(fsck.minix, fsck_minix, BB_DIR_SBIN, BB_SUID_DROP, fsck_minix))
     226IF_FSYNC(APPLET_NOFORK(fsync, fsync, BB_DIR_BIN, BB_SUID_DROP, fsync))
     227IF_FTPD(APPLET(ftpd, BB_DIR_USR_SBIN, BB_SUID_DROP))
     228IF_FTPGET(APPLET_ODDNAME(ftpget, ftpgetput, BB_DIR_USR_BIN, BB_SUID_DROP, ftpget))
     229IF_FTPPUT(APPLET_ODDNAME(ftpput, ftpgetput, BB_DIR_USR_BIN, BB_SUID_DROP, ftpput))
     230IF_FUSER(APPLET(fuser, BB_DIR_USR_BIN, BB_SUID_DROP))
     231IF_GETENFORCE(APPLET(getenforce, BB_DIR_USR_SBIN, BB_SUID_DROP))
     232IF_GETOPT(APPLET(getopt, BB_DIR_BIN, BB_SUID_DROP))
     233IF_GETSEBOOL(APPLET(getsebool, BB_DIR_USR_SBIN, BB_SUID_DROP))
     234IF_GETTY(APPLET(getty, BB_DIR_SBIN, BB_SUID_DROP))
     235IF_GUNZIP(APPLET(gunzip, BB_DIR_BIN, BB_SUID_DROP))
     236IF_GZIP(APPLET(gzip, BB_DIR_BIN, BB_SUID_DROP))
     237IF_HD(APPLET_NOEXEC(hd, hexdump, BB_DIR_USR_BIN, BB_SUID_DROP, hd))
     238IF_HDPARM(APPLET(hdparm, BB_DIR_SBIN, BB_SUID_DROP))
     239IF_HEAD(APPLET_NOEXEC(head, head, BB_DIR_USR_BIN, BB_SUID_DROP, head))
     240IF_HEXDUMP(APPLET_NOEXEC(hexdump, hexdump, BB_DIR_USR_BIN, BB_SUID_DROP, hexdump))
     241IF_HOSTNAME(APPLET(hostname, BB_DIR_BIN, BB_SUID_DROP))
     242IF_HTTPD(APPLET(httpd, BB_DIR_USR_SBIN, BB_SUID_DROP))
     243IF_HWCLOCK(APPLET(hwclock, BB_DIR_SBIN, BB_SUID_DROP))
     244IF_IFCONFIG(APPLET(ifconfig, BB_DIR_SBIN, BB_SUID_DROP))
     245IF_IFUPDOWN(APPLET_ODDNAME(ifdown, ifupdown, BB_DIR_SBIN, BB_SUID_DROP, ifdown))
     246IF_IFENSLAVE(APPLET(ifenslave, BB_DIR_SBIN, BB_SUID_DROP))
     247IF_IFPLUGD(APPLET(ifplugd, BB_DIR_USR_SBIN, BB_SUID_DROP))
     248IF_IFUPDOWN(APPLET_ODDNAME(ifup, ifupdown, BB_DIR_SBIN, BB_SUID_DROP, ifup))
     249IF_INETD(APPLET(inetd, BB_DIR_USR_SBIN, BB_SUID_DROP))
     250IF_INOTIFYD(APPLET(inotifyd, BB_DIR_SBIN, BB_SUID_DROP))
     251IF_INSTALL(APPLET(install, BB_DIR_USR_BIN, BB_SUID_DROP))
     252IF_IONICE(APPLET(ionice, BB_DIR_BIN, BB_SUID_DROP))
    238253#if ENABLE_FEATURE_IP_ADDRESS \
    239254 || ENABLE_FEATURE_IP_ROUTE \
     
    241256 || ENABLE_FEATURE_IP_TUNNEL \
    242257 || ENABLE_FEATURE_IP_RULE
    243 IF_IP(APPLET(ip, _BB_DIR_BIN, _BB_SUID_DROP))
     258IF_IP(APPLET(ip, BB_DIR_SBIN, BB_SUID_DROP))
    244259#endif
    245 IF_IPADDR(APPLET(ipaddr, _BB_DIR_BIN, _BB_SUID_DROP))
    246 IF_IPCALC(APPLET(ipcalc, _BB_DIR_BIN, _BB_SUID_DROP))
    247 IF_IPCRM(APPLET(ipcrm, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE))
    248 IF_IPCS(APPLET(ipcs, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE))
    249 IF_IPLINK(APPLET(iplink, _BB_DIR_BIN, _BB_SUID_DROP))
    250 IF_IPROUTE(APPLET(iproute, _BB_DIR_BIN, _BB_SUID_DROP))
    251 IF_IPRULE(APPLET(iprule, _BB_DIR_BIN, _BB_SUID_DROP))
    252 IF_IPTUNNEL(APPLET(iptunnel, _BB_DIR_BIN, _BB_SUID_DROP))
    253 IF_KBD_MODE(APPLET(kbd_mode, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    254 IF_KILL(APPLET(kill, _BB_DIR_BIN, _BB_SUID_DROP))
    255 IF_KILLALL(APPLET_ODDNAME(killall, kill, _BB_DIR_USR_BIN, _BB_SUID_DROP, killall))
    256 IF_KILLALL5(APPLET_ODDNAME(killall5, kill, _BB_DIR_USR_BIN, _BB_SUID_DROP, killall5))
    257 IF_KLOGD(APPLET(klogd, _BB_DIR_SBIN, _BB_SUID_DROP))
    258 IF_LAST(APPLET(last, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    259 IF_LENGTH(APPLET_NOFORK(length, length, _BB_DIR_USR_BIN, _BB_SUID_DROP, length))
    260 IF_LESS(APPLET(less, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    261 IF_SETARCH(APPLET_ODDNAME(linux32, setarch, _BB_DIR_BIN, _BB_SUID_DROP, linux32))
    262 IF_SETARCH(APPLET_ODDNAME(linux64, setarch, _BB_DIR_BIN, _BB_SUID_DROP, linux64))
    263 IF_LN(APPLET_NOEXEC(ln, ln, _BB_DIR_BIN, _BB_SUID_DROP, ln))
    264 IF_LOAD_POLICY(APPLET(load_policy, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    265 IF_LOADFONT(APPLET(loadfont, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    266 IF_LOADKMAP(APPLET(loadkmap, _BB_DIR_SBIN, _BB_SUID_DROP))
    267 IF_LOGGER(APPLET(logger, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    268 IF_LOGIN(APPLET(login, _BB_DIR_BIN, _BB_SUID_REQUIRE))
    269 IF_LOGNAME(APPLET_NOFORK(logname, logname, _BB_DIR_USR_BIN, _BB_SUID_DROP, logname))
    270 IF_LOGREAD(APPLET(logread, _BB_DIR_SBIN, _BB_SUID_DROP))
    271 IF_LOSETUP(APPLET(losetup, _BB_DIR_SBIN, _BB_SUID_DROP))
    272 IF_LPD(APPLET(lpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    273 IF_LPQ(APPLET_ODDNAME(lpq, lpqr, _BB_DIR_USR_BIN, _BB_SUID_DROP, lpq))
    274 IF_LPR(APPLET_ODDNAME(lpr, lpqr, _BB_DIR_USR_BIN, _BB_SUID_DROP, lpr))
    275 IF_LS(APPLET_NOEXEC(ls, ls, _BB_DIR_BIN, _BB_SUID_DROP, ls))
    276 IF_LSATTR(APPLET(lsattr, _BB_DIR_BIN, _BB_SUID_DROP))
    277 IF_LSPCI(APPLET(lspci, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    278 IF_LSUSB(APPLET(lsusb, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    279 IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, _BB_DIR_USR_BIN, _BB_SUID_DROP, lzcat))
    280 IF_LZMA(APPLET_ODDNAME(lzma, unlzma, _BB_DIR_USR_BIN, _BB_SUID_DROP, lzma))
    281 IF_LZOP(APPLET(lzop, _BB_DIR_BIN, _BB_SUID_DROP))
    282 IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, _BB_DIR_USR_BIN, _BB_SUID_DROP, lzopcat))
    283 IF_MAKEDEVS(APPLET(makedevs, _BB_DIR_SBIN, _BB_SUID_DROP))
    284 IF_MAKEMIME(APPLET(makemime, _BB_DIR_BIN, _BB_SUID_DROP))
    285 IF_MAN(APPLET(man, _BB_DIR_SBIN, _BB_SUID_DROP))
    286 IF_MATCHPATHCON(APPLET(matchpathcon, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    287 IF_MD5SUM(APPLET_NOEXEC(md5sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, md5sum))
    288 IF_MDEV(APPLET(mdev, _BB_DIR_SBIN, _BB_SUID_DROP))
    289 IF_MICROCOM(APPLET(microcom, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    290 IF_MKDIR(APPLET_NOFORK(mkdir, mkdir, _BB_DIR_BIN, _BB_SUID_DROP, mkdir))
    291 IF_MKFS_VFAT(APPLET_ODDNAME(mkdosfs, mkfs_vfat, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_vfat))
    292 IF_MKFS_EXT2(APPLET_ODDNAME(mke2fs, mkfs_ext2, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_ext2))
    293 IF_MKFIFO(APPLET_NOEXEC(mkfifo, mkfifo, _BB_DIR_USR_BIN, _BB_SUID_DROP, mkfifo))
    294 IF_MKFS_EXT2(APPLET_ODDNAME(mkfs.ext2, mkfs_ext2, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_ext2))
    295 //IF_MKE2FS(APPLET_ODDNAME(mkfs.ext3, mke2fs, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_ext3))
    296 IF_MKFS_MINIX(APPLET_ODDNAME(mkfs.minix, mkfs_minix, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_minix))
    297 IF_MKFS_REISER(APPLET_ODDNAME(mkfs.reiser, mkfs_reiser, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_reiser))
    298 IF_MKFS_VFAT(APPLET_ODDNAME(mkfs.vfat, mkfs_vfat, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_vfat))
    299 IF_MKNOD(APPLET_NOEXEC(mknod, mknod, _BB_DIR_BIN, _BB_SUID_DROP, mknod))
    300 IF_CRYPTPW(APPLET_ODDNAME(mkpasswd, cryptpw, _BB_DIR_USR_BIN, _BB_SUID_DROP, mkpasswd))
    301 IF_MKSWAP(APPLET(mkswap, _BB_DIR_SBIN, _BB_SUID_DROP))
    302 IF_MKTEMP(APPLET(mktemp, _BB_DIR_BIN, _BB_SUID_DROP))
    303 IF_MORE(APPLET(more, _BB_DIR_BIN, _BB_SUID_DROP))
    304 IF_MOUNT(APPLET(mount, _BB_DIR_BIN, IF_DESKTOP(_BB_SUID_MAYBE) IF_NOT_DESKTOP(_BB_SUID_DROP)))
    305 IF_MOUNTPOINT(APPLET(mountpoint, _BB_DIR_BIN, _BB_SUID_DROP))
    306 IF_MT(APPLET(mt, _BB_DIR_BIN, _BB_SUID_DROP))
    307 IF_MV(APPLET(mv, _BB_DIR_BIN, _BB_SUID_DROP))
    308 IF_NAMEIF(APPLET(nameif, _BB_DIR_SBIN, _BB_SUID_DROP))
    309 IF_NC(APPLET(nc, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    310 IF_NETSTAT(APPLET(netstat, _BB_DIR_BIN, _BB_SUID_DROP))
    311 IF_NICE(APPLET(nice, _BB_DIR_BIN, _BB_SUID_DROP))
    312 IF_NMETER(APPLET(nmeter, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    313 IF_NOHUP(APPLET(nohup, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    314 IF_NSLOOKUP(APPLET(nslookup, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    315 IF_NTPD(APPLET(ntpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    316 IF_OD(APPLET(od, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    317 IF_OPENVT(APPLET(openvt, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    318 //IF_PARSE(APPLET(parse, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    319 IF_PASSWD(APPLET(passwd, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE))
    320 IF_PGREP(APPLET(pgrep, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    321 IF_PIDOF(APPLET(pidof, _BB_DIR_BIN, _BB_SUID_DROP))
    322 IF_PING(APPLET(ping, _BB_DIR_BIN, _BB_SUID_MAYBE))
    323 IF_PING6(APPLET(ping6, _BB_DIR_BIN, _BB_SUID_MAYBE))
    324 IF_PIPE_PROGRESS(APPLET(pipe_progress, _BB_DIR_BIN, _BB_SUID_DROP))
    325 IF_PIVOT_ROOT(APPLET(pivot_root, _BB_DIR_SBIN, _BB_SUID_DROP))
    326 IF_PKILL(APPLET_ODDNAME(pkill, pgrep, _BB_DIR_USR_BIN, _BB_SUID_DROP, pkill))
    327 IF_POPMAILDIR(APPLET(popmaildir, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    328 IF_PRINTENV(APPLET_NOFORK(printenv, printenv, _BB_DIR_BIN, _BB_SUID_DROP, printenv))
    329 IF_PRINTF(APPLET_NOFORK(printf, printf, _BB_DIR_USR_BIN, _BB_SUID_DROP, printf))
    330 IF_PS(APPLET(ps, _BB_DIR_BIN, _BB_SUID_DROP))
    331 IF_PSCAN(APPLET(pscan, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    332 IF_PWD(APPLET_NOFORK(pwd, pwd, _BB_DIR_BIN, _BB_SUID_DROP, pwd))
    333 IF_RAIDAUTORUN(APPLET(raidautorun, _BB_DIR_SBIN, _BB_SUID_DROP))
    334 IF_RDATE(APPLET(rdate, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    335 IF_RDEV(APPLET(rdev, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    336 IF_READAHEAD(APPLET(readahead, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    337 IF_READLINK(APPLET(readlink, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    338 IF_READPROFILE(APPLET(readprofile, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    339 IF_REALPATH(APPLET(realpath, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    340 IF_REFORMIME(APPLET(reformime, _BB_DIR_BIN, _BB_SUID_DROP))
    341 IF_RENICE(APPLET(renice, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    342 IF_RESET(APPLET(reset, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    343 IF_RESIZE(APPLET(resize, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    344 IF_RESTORECON(APPLET_ODDNAME(restorecon, setfiles, _BB_DIR_SBIN, _BB_SUID_DROP, restorecon))
    345 IF_RFKILL(APPLET(rfkill, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    346 IF_RM(APPLET_NOFORK(rm, rm, _BB_DIR_BIN, _BB_SUID_DROP, rm))
    347 IF_RMDIR(APPLET_NOFORK(rmdir, rmdir, _BB_DIR_BIN, _BB_SUID_DROP, rmdir))
    348 IF_ROUTE(APPLET(route, _BB_DIR_SBIN, _BB_SUID_DROP))
    349 IF_RPM(APPLET(rpm, _BB_DIR_BIN, _BB_SUID_DROP))
    350 IF_RPM2CPIO(APPLET(rpm2cpio, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    351 IF_RTCWAKE(APPLET(rtcwake, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    352 IF_RUN_PARTS(APPLET_ODDNAME(run-parts, run_parts, _BB_DIR_BIN, _BB_SUID_DROP, run_parts))
    353 IF_RUNCON(APPLET(runcon, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    354 IF_RUNLEVEL(APPLET(runlevel, _BB_DIR_SBIN, _BB_SUID_DROP))
    355 IF_RUNSV(APPLET(runsv, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    356 IF_RUNSVDIR(APPLET(runsvdir, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    357 IF_RX(APPLET(rx, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    358 IF_SCRIPT(APPLET(script, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    359 IF_SCRIPTREPLAY(APPLET(scriptreplay, _BB_DIR_BIN, _BB_SUID_DROP))
    360 IF_SED(APPLET(sed, _BB_DIR_BIN, _BB_SUID_DROP))
    361 IF_SELINUXENABLED(APPLET(selinuxenabled, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    362 IF_SENDMAIL(APPLET(sendmail, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    363 IF_SEQ(APPLET_NOFORK(seq, seq, _BB_DIR_USR_BIN, _BB_SUID_DROP, seq))
    364 IF_SESTATUS(APPLET(sestatus, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    365 IF_SETARCH(APPLET(setarch, _BB_DIR_BIN, _BB_SUID_DROP))
    366 IF_SETCONSOLE(APPLET(setconsole, _BB_DIR_SBIN, _BB_SUID_DROP))
    367 IF_SETENFORCE(APPLET(setenforce, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    368 IF_SETFILES(APPLET(setfiles, _BB_DIR_SBIN, _BB_SUID_DROP))
    369 IF_SETFONT(APPLET(setfont, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    370 IF_SETKEYCODES(APPLET(setkeycodes, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    371 IF_SETLOGCONS(APPLET(setlogcons, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    372 IF_SETSEBOOL(APPLET(setsebool, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    373 IF_SETSID(APPLET(setsid, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    374 IF_SETUIDGID(APPLET_ODDNAME(setuidgid, chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP, setuidgid))
    375 IF_SHA1SUM(APPLET_NOEXEC(sha1sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, sha1sum))
    376 IF_SHA256SUM(APPLET_NOEXEC(sha256sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, sha256sum))
    377 IF_SHA512SUM(APPLET_NOEXEC(sha512sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, sha512sum))
    378 IF_SHOWKEY(APPLET(showkey, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    379 IF_SLATTACH(APPLET(slattach, _BB_DIR_SBIN, _BB_SUID_DROP))
    380 /* Do not make this applet NOFORK. It breaks ^C-ing of pauses in shells */
    381 IF_SLEEP(APPLET(sleep, _BB_DIR_BIN, _BB_SUID_DROP))
    382 IF_SOFTLIMIT(APPLET_ODDNAME(softlimit, chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP, softlimit))
    383 IF_SORT(APPLET_NOEXEC(sort, sort, _BB_DIR_USR_BIN, _BB_SUID_DROP, sort))
    384 IF_SPLIT(APPLET(split, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    385 IF_START_STOP_DAEMON(APPLET_ODDNAME(start-stop-daemon, start_stop_daemon, _BB_DIR_SBIN, _BB_SUID_DROP, start_stop_daemon))
    386 IF_STAT(APPLET(stat, _BB_DIR_BIN, _BB_SUID_DROP))
    387 IF_STRINGS(APPLET(strings, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    388 IF_STTY(APPLET(stty, _BB_DIR_BIN, _BB_SUID_DROP))
    389 IF_SU(APPLET(su, _BB_DIR_BIN, _BB_SUID_REQUIRE))
    390 IF_SULOGIN(APPLET(sulogin, _BB_DIR_SBIN, _BB_SUID_DROP))
    391 IF_SUM(APPLET(sum, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    392 IF_SV(APPLET(sv, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    393 IF_SVLOGD(APPLET(svlogd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    394 IF_SWAPONOFF(APPLET_ODDNAME(swapoff, swap_on_off, _BB_DIR_SBIN, _BB_SUID_DROP, swapoff))
    395 IF_SWAPONOFF(APPLET_ODDNAME(swapon, swap_on_off, _BB_DIR_SBIN, _BB_SUID_DROP, swapon))
    396 IF_SWITCH_ROOT(APPLET(switch_root, _BB_DIR_SBIN, _BB_SUID_DROP))
    397 IF_SYNC(APPLET_NOFORK(sync, sync, _BB_DIR_BIN, _BB_SUID_DROP, sync))
    398 IF_BB_SYSCTL(APPLET(sysctl, _BB_DIR_SBIN, _BB_SUID_DROP))
    399 IF_SYSLOGD(APPLET(syslogd, _BB_DIR_SBIN, _BB_SUID_DROP))
    400 IF_TAC(APPLET_NOEXEC(tac, tac, _BB_DIR_USR_BIN, _BB_SUID_DROP, tac))
    401 IF_TAIL(APPLET(tail, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    402 IF_TAR(APPLET(tar, _BB_DIR_BIN, _BB_SUID_DROP))
    403 IF_TASKSET(APPLET(taskset, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    404 /* IF_TC(APPLET(tc, _BB_DIR_SBIN, _BB_SUID_DROP)) */
    405 IF_TCPSVD(APPLET_ODDNAME(tcpsvd, tcpudpsvd, _BB_DIR_USR_BIN, _BB_SUID_DROP, tcpsvd))
    406 IF_TEE(APPLET(tee, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    407 IF_TELNET(APPLET(telnet, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    408 IF_TELNETD(APPLET(telnetd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    409 IF_TEST(APPLET_NOFORK(test, test, _BB_DIR_USR_BIN, _BB_SUID_DROP, test))
     260IF_IPADDR(APPLET(ipaddr, BB_DIR_SBIN, BB_SUID_DROP))
     261IF_IPCALC(APPLET(ipcalc, BB_DIR_BIN, BB_SUID_DROP))
     262IF_IPCRM(APPLET(ipcrm, BB_DIR_USR_BIN, BB_SUID_DROP))
     263IF_IPCS(APPLET(ipcs, BB_DIR_USR_BIN, BB_SUID_DROP))
     264IF_IPLINK(APPLET(iplink, BB_DIR_SBIN, BB_SUID_DROP))
     265IF_IPROUTE(APPLET(iproute, BB_DIR_SBIN, BB_SUID_DROP))
     266IF_IPRULE(APPLET(iprule, BB_DIR_SBIN, BB_SUID_DROP))
     267IF_IPTUNNEL(APPLET(iptunnel, BB_DIR_SBIN, BB_SUID_DROP))
     268IF_KBD_MODE(APPLET(kbd_mode, BB_DIR_BIN, BB_SUID_DROP))
     269IF_KILL(APPLET(kill, BB_DIR_BIN, BB_SUID_DROP))
     270IF_KILLALL(APPLET_ODDNAME(killall, kill, BB_DIR_USR_BIN, BB_SUID_DROP, killall))
     271IF_KILLALL5(APPLET_ODDNAME(killall5, kill, BB_DIR_USR_SBIN, BB_SUID_DROP, killall5))
     272IF_KLOGD(APPLET(klogd, BB_DIR_SBIN, BB_SUID_DROP))
     273IF_LAST(APPLET(last, BB_DIR_USR_BIN, BB_SUID_DROP))
     274//IF_LENGTH(APPLET_NOFORK(length, length, BB_DIR_USR_BIN, BB_SUID_DROP, length))
     275IF_LESS(APPLET(less, BB_DIR_USR_BIN, BB_SUID_DROP))
     276IF_SETARCH(APPLET_ODDNAME(linux32, setarch, BB_DIR_BIN, BB_SUID_DROP, linux32))
     277IF_SETARCH(APPLET_ODDNAME(linux64, setarch, BB_DIR_BIN, BB_SUID_DROP, linux64))
     278IF_LN(APPLET_NOEXEC(ln, ln, BB_DIR_BIN, BB_SUID_DROP, ln))
     279IF_LOAD_POLICY(APPLET(load_policy, BB_DIR_USR_SBIN, BB_SUID_DROP))
     280IF_LOADFONT(APPLET(loadfont, BB_DIR_USR_SBIN, BB_SUID_DROP))
     281IF_LOADKMAP(APPLET(loadkmap, BB_DIR_SBIN, BB_SUID_DROP))
     282IF_LOGGER(APPLET(logger, BB_DIR_USR_BIN, BB_SUID_DROP))
     283/* Needs to be run by root or be suid root - needs to change uid and gid: */
     284IF_LOGIN(APPLET(login, BB_DIR_BIN, BB_SUID_REQUIRE))
     285IF_LOGNAME(APPLET_NOFORK(logname, logname, BB_DIR_USR_BIN, BB_SUID_DROP, logname))
     286IF_LOGREAD(APPLET(logread, BB_DIR_SBIN, BB_SUID_DROP))
     287IF_LOSETUP(APPLET(losetup, BB_DIR_SBIN, BB_SUID_DROP))
     288IF_LPD(APPLET(lpd, BB_DIR_USR_SBIN, BB_SUID_DROP))
     289IF_LPQ(APPLET_ODDNAME(lpq, lpqr, BB_DIR_USR_BIN, BB_SUID_DROP, lpq))
     290IF_LPR(APPLET_ODDNAME(lpr, lpqr, BB_DIR_USR_BIN, BB_SUID_DROP, lpr))
     291IF_LS(APPLET_NOEXEC(ls, ls, BB_DIR_BIN, BB_SUID_DROP, ls))
     292IF_LSATTR(APPLET(lsattr, BB_DIR_BIN, BB_SUID_DROP))
     293IF_LSPCI(APPLET(lspci, BB_DIR_USR_BIN, BB_SUID_DROP))
     294IF_LSUSB(APPLET(lsusb, BB_DIR_USR_BIN, BB_SUID_DROP))
     295IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzcat))
     296IF_LZMA(APPLET_ODDNAME(lzma, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzma))
     297IF_LZOP(APPLET(lzop, BB_DIR_BIN, BB_SUID_DROP))
     298IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, lzopcat))
     299IF_MAKEDEVS(APPLET(makedevs, BB_DIR_SBIN, BB_SUID_DROP))
     300IF_MAKEMIME(APPLET(makemime, BB_DIR_BIN, BB_SUID_DROP))
     301IF_MAN(APPLET(man, BB_DIR_SBIN, BB_SUID_DROP))
     302IF_MATCHPATHCON(APPLET(matchpathcon, BB_DIR_USR_SBIN, BB_SUID_DROP))
     303IF_MD5SUM(APPLET_NOEXEC(md5sum, md5_sha1_sum, BB_DIR_USR_BIN, BB_SUID_DROP, md5sum))
     304IF_MICROCOM(APPLET(microcom, BB_DIR_USR_BIN, BB_SUID_DROP))
     305IF_MKDIR(APPLET_NOFORK(mkdir, mkdir, BB_DIR_BIN, BB_SUID_DROP, mkdir))
     306IF_MKFS_VFAT(APPLET_ODDNAME(mkdosfs, mkfs_vfat, BB_DIR_SBIN, BB_SUID_DROP, mkfs_vfat))
     307IF_MKFS_EXT2(APPLET_ODDNAME(mke2fs, mkfs_ext2, BB_DIR_SBIN, BB_SUID_DROP, mkfs_ext2))
     308IF_MKFIFO(APPLET_NOEXEC(mkfifo, mkfifo, BB_DIR_USR_BIN, BB_SUID_DROP, mkfifo))
     309IF_MKFS_EXT2(APPLET_ODDNAME(mkfs.ext2, mkfs_ext2, BB_DIR_SBIN, BB_SUID_DROP, mkfs_ext2))
     310//IF_MKE2FS(APPLET_ODDNAME(mkfs.ext3, mke2fs, BB_DIR_SBIN, BB_SUID_DROP, mkfs_ext3))
     311IF_MKFS_MINIX(APPLET_ODDNAME(mkfs.minix, mkfs_minix, BB_DIR_SBIN, BB_SUID_DROP, mkfs_minix))
     312IF_MKFS_REISER(APPLET_ODDNAME(mkfs.reiser, mkfs_reiser, BB_DIR_SBIN, BB_SUID_DROP, mkfs_reiser))
     313IF_MKFS_VFAT(APPLET_ODDNAME(mkfs.vfat, mkfs_vfat, BB_DIR_SBIN, BB_SUID_DROP, mkfs_vfat))
     314IF_MKNOD(APPLET_NOEXEC(mknod, mknod, BB_DIR_BIN, BB_SUID_DROP, mknod))
     315IF_CRYPTPW(APPLET_ODDNAME(mkpasswd, cryptpw, BB_DIR_USR_BIN, BB_SUID_DROP, mkpasswd))
     316IF_MKSWAP(APPLET(mkswap, BB_DIR_SBIN, BB_SUID_DROP))
     317IF_MKTEMP(APPLET(mktemp, BB_DIR_BIN, BB_SUID_DROP))
     318IF_MORE(APPLET(more, BB_DIR_BIN, BB_SUID_DROP))
     319/* On full-blown systems, requires suid for user mounts.
     320 * But it's not unthinkable to have it available in non-suid flavor on some systems,
     321 * for viewing mount table.
     322 * Therefore we use BB_SUID_MAYBE instead of BB_SUID_REQUIRE: */
     323IF_MOUNT(APPLET(mount, BB_DIR_BIN, IF_DESKTOP(BB_SUID_MAYBE) IF_NOT_DESKTOP(BB_SUID_DROP)))
     324IF_MOUNTPOINT(APPLET(mountpoint, BB_DIR_BIN, BB_SUID_DROP))
     325IF_MT(APPLET(mt, BB_DIR_BIN, BB_SUID_DROP))
     326IF_MV(APPLET(mv, BB_DIR_BIN, BB_SUID_DROP))
     327IF_NAMEIF(APPLET(nameif, BB_DIR_SBIN, BB_SUID_DROP))
     328IF_NC(APPLET(nc, BB_DIR_USR_BIN, BB_SUID_DROP))
     329IF_NETSTAT(APPLET(netstat, BB_DIR_BIN, BB_SUID_DROP))
     330IF_NICE(APPLET(nice, BB_DIR_BIN, BB_SUID_DROP))
     331IF_NOHUP(APPLET(nohup, BB_DIR_USR_BIN, BB_SUID_DROP))
     332IF_NSLOOKUP(APPLET(nslookup, BB_DIR_USR_BIN, BB_SUID_DROP))
     333IF_NTPD(APPLET(ntpd, BB_DIR_USR_SBIN, BB_SUID_DROP))
     334IF_OD(APPLET(od, BB_DIR_USR_BIN, BB_SUID_DROP))
     335IF_OPENVT(APPLET(openvt, BB_DIR_USR_BIN, BB_SUID_DROP))
     336//IF_PARSE(APPLET(parse, BB_DIR_USR_BIN, BB_SUID_DROP))
     337/* Needs to be run by root or be suid root - needs to change /etc/{passwd,shadow}: */
     338IF_PASSWD(APPLET(passwd, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
     339IF_PGREP(APPLET(pgrep, BB_DIR_USR_BIN, BB_SUID_DROP))
     340IF_PIDOF(APPLET(pidof, BB_DIR_BIN, BB_SUID_DROP))
     341IF_PIPE_PROGRESS(APPLET(pipe_progress, BB_DIR_BIN, BB_SUID_DROP))
     342IF_PIVOT_ROOT(APPLET(pivot_root, BB_DIR_SBIN, BB_SUID_DROP))
     343IF_PKILL(APPLET_ODDNAME(pkill, pgrep, BB_DIR_USR_BIN, BB_SUID_DROP, pkill))
     344IF_POPMAILDIR(APPLET(popmaildir, BB_DIR_USR_SBIN, BB_SUID_DROP))
     345IF_PRINTENV(APPLET_NOFORK(printenv, printenv, BB_DIR_BIN, BB_SUID_DROP, printenv))
     346IF_PRINTF(APPLET_NOFORK(printf, printf, BB_DIR_USR_BIN, BB_SUID_DROP, printf))
     347IF_PS(APPLET(ps, BB_DIR_BIN, BB_SUID_DROP))
     348IF_PSCAN(APPLET(pscan, BB_DIR_USR_BIN, BB_SUID_DROP))
     349IF_PWD(APPLET_NOFORK(pwd, pwd, BB_DIR_BIN, BB_SUID_DROP, pwd))
     350IF_RAIDAUTORUN(APPLET(raidautorun, BB_DIR_SBIN, BB_SUID_DROP))
     351IF_RDATE(APPLET(rdate, BB_DIR_USR_SBIN, BB_SUID_DROP))
     352IF_RDEV(APPLET(rdev, BB_DIR_USR_SBIN, BB_SUID_DROP))
     353IF_READAHEAD(APPLET(readahead, BB_DIR_USR_SBIN, BB_SUID_DROP))
     354IF_READLINK(APPLET(readlink, BB_DIR_USR_BIN, BB_SUID_DROP))
     355IF_READPROFILE(APPLET(readprofile, BB_DIR_USR_SBIN, BB_SUID_DROP))
     356IF_REALPATH(APPLET(realpath, BB_DIR_USR_BIN, BB_SUID_DROP))
     357IF_REFORMIME(APPLET(reformime, BB_DIR_BIN, BB_SUID_DROP))
     358IF_RENICE(APPLET(renice, BB_DIR_USR_BIN, BB_SUID_DROP))
     359IF_RESET(APPLET(reset, BB_DIR_USR_BIN, BB_SUID_DROP))
     360IF_RESIZE(APPLET(resize, BB_DIR_USR_BIN, BB_SUID_DROP))
     361IF_RESTORECON(APPLET_ODDNAME(restorecon, setfiles, BB_DIR_SBIN, BB_SUID_DROP, restorecon))
     362IF_RFKILL(APPLET(rfkill, BB_DIR_USR_SBIN, BB_SUID_DROP))
     363IF_RM(APPLET_NOFORK(rm, rm, BB_DIR_BIN, BB_SUID_DROP, rm))
     364IF_RMDIR(APPLET_NOFORK(rmdir, rmdir, BB_DIR_BIN, BB_SUID_DROP, rmdir))
     365IF_ROUTE(APPLET(route, BB_DIR_SBIN, BB_SUID_DROP))
     366IF_RPM(APPLET(rpm, BB_DIR_BIN, BB_SUID_DROP))
     367IF_RPM2CPIO(APPLET(rpm2cpio, BB_DIR_USR_BIN, BB_SUID_DROP))
     368IF_RTCWAKE(APPLET(rtcwake, BB_DIR_USR_SBIN, BB_SUID_DROP))
     369IF_RUN_PARTS(APPLET_ODDNAME(run-parts, run_parts, BB_DIR_BIN, BB_SUID_DROP, run_parts))
     370IF_RUNCON(APPLET(runcon, BB_DIR_USR_BIN, BB_SUID_DROP))
     371IF_RUNLEVEL(APPLET(runlevel, BB_DIR_SBIN, BB_SUID_DROP))
     372IF_RUNSV(APPLET(runsv, BB_DIR_USR_BIN, BB_SUID_DROP))
     373IF_RUNSVDIR(APPLET(runsvdir, BB_DIR_USR_BIN, BB_SUID_DROP))
     374IF_RX(APPLET(rx, BB_DIR_USR_BIN, BB_SUID_DROP))
     375IF_SCRIPT(APPLET(script, BB_DIR_USR_BIN, BB_SUID_DROP))
     376IF_SCRIPTREPLAY(APPLET(scriptreplay, BB_DIR_BIN, BB_SUID_DROP))
     377IF_SED(APPLET(sed, BB_DIR_BIN, BB_SUID_DROP))
     378IF_SELINUXENABLED(APPLET(selinuxenabled, BB_DIR_USR_SBIN, BB_SUID_DROP))
     379IF_SENDMAIL(APPLET(sendmail, BB_DIR_USR_SBIN, BB_SUID_DROP))
     380IF_SEQ(APPLET_NOFORK(seq, seq, BB_DIR_USR_BIN, BB_SUID_DROP, seq))
     381IF_SESTATUS(APPLET(sestatus, BB_DIR_USR_SBIN, BB_SUID_DROP))
     382IF_SETARCH(APPLET(setarch, BB_DIR_BIN, BB_SUID_DROP))
     383IF_SETCONSOLE(APPLET(setconsole, BB_DIR_SBIN, BB_SUID_DROP))
     384IF_SETENFORCE(APPLET(setenforce, BB_DIR_USR_SBIN, BB_SUID_DROP))
     385IF_SETFILES(APPLET(setfiles, BB_DIR_SBIN, BB_SUID_DROP))
     386IF_SETFONT(APPLET(setfont, BB_DIR_USR_SBIN, BB_SUID_DROP))
     387IF_SETKEYCODES(APPLET(setkeycodes, BB_DIR_USR_BIN, BB_SUID_DROP))
     388IF_SETLOGCONS(APPLET(setlogcons, BB_DIR_USR_SBIN, BB_SUID_DROP))
     389IF_SETSEBOOL(APPLET(setsebool, BB_DIR_USR_SBIN, BB_SUID_DROP))
     390IF_SETSID(APPLET(setsid, BB_DIR_USR_BIN, BB_SUID_DROP))
     391IF_SETUIDGID(APPLET_ODDNAME(setuidgid, chpst, BB_DIR_USR_BIN, BB_SUID_DROP, setuidgid))
     392IF_SHA1SUM(APPLET_NOEXEC(sha1sum, md5_sha1_sum, BB_DIR_USR_BIN, BB_SUID_DROP, sha1sum))
     393IF_SHA3SUM(APPLET_NOEXEC(sha3sum, md5_sha1_sum, BB_DIR_USR_BIN, BB_SUID_DROP, sha3sum))
     394IF_SHA256SUM(APPLET_NOEXEC(sha256sum, md5_sha1_sum, BB_DIR_USR_BIN, BB_SUID_DROP, sha256sum))
     395IF_SHA512SUM(APPLET_NOEXEC(sha512sum, md5_sha1_sum, BB_DIR_USR_BIN, BB_SUID_DROP, sha512sum))
     396IF_SHOWKEY(APPLET(showkey, BB_DIR_USR_BIN, BB_SUID_DROP))
     397IF_SLATTACH(APPLET(slattach, BB_DIR_SBIN, BB_SUID_DROP))
     398/* Do not make this applet NOFORK. It breaks ^C-ing of pauses in shells: */
     399IF_SLEEP(APPLET(sleep, BB_DIR_BIN, BB_SUID_DROP))
     400IF_SOFTLIMIT(APPLET_ODDNAME(softlimit, chpst, BB_DIR_USR_BIN, BB_SUID_DROP, softlimit))
     401IF_SORT(APPLET_NOEXEC(sort, sort, BB_DIR_USR_BIN, BB_SUID_DROP, sort))
     402IF_SPLIT(APPLET(split, BB_DIR_USR_BIN, BB_SUID_DROP))
     403IF_START_STOP_DAEMON(APPLET_ODDNAME(start-stop-daemon, start_stop_daemon, BB_DIR_SBIN, BB_SUID_DROP, start_stop_daemon))
     404IF_STAT(APPLET(stat, BB_DIR_BIN, BB_SUID_DROP))
     405IF_STRINGS(APPLET(strings, BB_DIR_USR_BIN, BB_SUID_DROP))
     406IF_STTY(APPLET(stty, BB_DIR_BIN, BB_SUID_DROP))
     407/* Needs to be run by root or be suid root - needs to change uid and gid: */
     408IF_SU(APPLET(su, BB_DIR_BIN, BB_SUID_REQUIRE))
     409IF_SULOGIN(APPLET(sulogin, BB_DIR_SBIN, BB_SUID_DROP))
     410IF_SUM(APPLET(sum, BB_DIR_USR_BIN, BB_SUID_DROP))
     411IF_SV(APPLET(sv, BB_DIR_USR_BIN, BB_SUID_DROP))
     412IF_SVLOGD(APPLET(svlogd, BB_DIR_USR_SBIN, BB_SUID_DROP))
     413IF_SWAPONOFF(APPLET_ODDNAME(swapoff, swap_on_off, BB_DIR_SBIN, BB_SUID_DROP, swapoff))
     414IF_SWAPONOFF(APPLET_ODDNAME(swapon, swap_on_off, BB_DIR_SBIN, BB_SUID_DROP, swapon))
     415IF_SWITCH_ROOT(APPLET(switch_root, BB_DIR_SBIN, BB_SUID_DROP))
     416IF_SYNC(APPLET_NOFORK(sync, sync, BB_DIR_BIN, BB_SUID_DROP, sync))
     417IF_BB_SYSCTL(APPLET(sysctl, BB_DIR_SBIN, BB_SUID_DROP))
     418IF_SYSLOGD(APPLET(syslogd, BB_DIR_SBIN, BB_SUID_DROP))
     419IF_TAC(APPLET_NOEXEC(tac, tac, BB_DIR_USR_BIN, BB_SUID_DROP, tac))
     420IF_TAIL(APPLET(tail, BB_DIR_USR_BIN, BB_SUID_DROP))
     421IF_TAR(APPLET(tar, BB_DIR_BIN, BB_SUID_DROP))
     422IF_TASKSET(APPLET(taskset, BB_DIR_USR_BIN, BB_SUID_DROP))
     423/* IF_TC(APPLET(tc, BB_DIR_SBIN, BB_SUID_DROP)) */
     424IF_TCPSVD(APPLET_ODDNAME(tcpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, tcpsvd))
     425IF_TEE(APPLET(tee, BB_DIR_USR_BIN, BB_SUID_DROP))
     426IF_TELNET(APPLET(telnet, BB_DIR_USR_BIN, BB_SUID_DROP))
     427IF_TELNETD(APPLET(telnetd, BB_DIR_USR_SBIN, BB_SUID_DROP))
     428IF_TEST(APPLET_NOFORK(test, test, BB_DIR_USR_BIN, BB_SUID_DROP, test))
    410429#if ENABLE_FEATURE_TFTP_GET || ENABLE_FEATURE_TFTP_PUT
    411 IF_TFTP(APPLET(tftp, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    412 IF_TFTPD(APPLET(tftpd, _BB_DIR_USR_BIN, _BB_SUID_DROP))
     430IF_TFTP(APPLET(tftp, BB_DIR_USR_BIN, BB_SUID_DROP))
     431IF_TFTPD(APPLET(tftpd, BB_DIR_USR_SBIN, BB_SUID_DROP))
    413432#endif
    414 IF_TIME(APPLET(time, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    415 IF_TIMEOUT(APPLET(timeout, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    416 IF_TOP(APPLET(top, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    417 IF_TOUCH(APPLET_NOFORK(touch, touch, _BB_DIR_BIN, _BB_SUID_DROP, touch))
    418 IF_TR(APPLET(tr, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    419 IF_TRACEROUTE(APPLET(traceroute, _BB_DIR_USR_BIN, _BB_SUID_MAYBE))
    420 IF_TRACEROUTE6(APPLET(traceroute6, _BB_DIR_USR_BIN, _BB_SUID_MAYBE))
    421 IF_TRUE(APPLET_NOFORK(true, true, _BB_DIR_BIN, _BB_SUID_DROP, true))
    422 IF_TTY(APPLET(tty, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    423 IF_TTYSIZE(APPLET(ttysize, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    424 IF_TUNCTL(APPLET(tunctl, _BB_DIR_SBIN, _BB_SUID_DROP))
    425 IF_TUNE2FS(APPLET(tune2fs, _BB_DIR_SBIN, _BB_SUID_DROP))
    426 IF_UDHCPC(APPLET(udhcpc, _BB_DIR_SBIN, _BB_SUID_DROP))
    427 IF_UDHCPD(APPLET(udhcpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
    428 IF_UDPSVD(APPLET_ODDNAME(udpsvd, tcpudpsvd, _BB_DIR_USR_BIN, _BB_SUID_DROP, udpsvd))
    429 IF_UMOUNT(APPLET(umount, _BB_DIR_BIN, _BB_SUID_DROP))
    430 IF_UNAME(APPLET(uname, _BB_DIR_BIN, _BB_SUID_DROP))
    431 IF_UNCOMPRESS(APPLET(uncompress, _BB_DIR_BIN, _BB_SUID_DROP))
    432 IF_UNEXPAND(APPLET_ODDNAME(unexpand, expand, _BB_DIR_USR_BIN, _BB_SUID_DROP, unexpand))
    433 IF_UNIQ(APPLET(uniq, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    434 IF_UNIX2DOS(APPLET_NOEXEC(unix2dos, dos2unix, _BB_DIR_USR_BIN, _BB_SUID_DROP, unix2dos))
    435 IF_UNXZ(APPLET(unxz, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    436 IF_UNLZMA(APPLET(unlzma, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    437 IF_LZOP(APPLET_ODDNAME(unlzop, lzop, _BB_DIR_USR_BIN, _BB_SUID_DROP, unlzop))
    438 IF_UNZIP(APPLET(unzip, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    439 IF_UPTIME(APPLET(uptime, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    440 IF_USLEEP(APPLET_NOFORK(usleep, usleep, _BB_DIR_BIN, _BB_SUID_DROP, usleep))
    441 IF_UUDECODE(APPLET(uudecode, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    442 IF_UUENCODE(APPLET(uuencode, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    443 IF_VCONFIG(APPLET(vconfig, _BB_DIR_SBIN, _BB_SUID_DROP))
    444 IF_VI(APPLET(vi, _BB_DIR_BIN, _BB_SUID_DROP))
    445 IF_VLOCK(APPLET(vlock, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE))
    446 IF_VOLNAME(APPLET(volname, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    447 IF_WALL(APPLET(wall, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE))
    448 IF_WATCH(APPLET(watch, _BB_DIR_BIN, _BB_SUID_DROP))
    449 IF_WATCHDOG(APPLET(watchdog, _BB_DIR_SBIN, _BB_SUID_DROP))
    450 IF_WC(APPLET(wc, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    451 IF_WGET(APPLET(wget, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    452 IF_WHICH(APPLET(which, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    453 IF_WHO(APPLET(who, _BB_DIR_USR_BIN, _BB_SUID_DROP))
    454 IF_WHOAMI(APPLET_NOFORK(whoami, whoami, _BB_DIR_USR_BIN, _BB_SUID_DROP, whoami))
    455 IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, _BB_DIR_USR_BIN, _BB_SUID_DROP, xzcat))
    456 IF_XZ(APPLET_ODDNAME(xz, unxz, _BB_DIR_USR_BIN, _BB_SUID_DROP, xz))
    457 IF_YES(APPLET_NOFORK(yes, yes, _BB_DIR_USR_BIN, _BB_SUID_DROP, yes))
    458 IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, _BB_DIR_BIN, _BB_SUID_DROP, zcat))
    459 IF_ZCIP(APPLET(zcip, _BB_DIR_SBIN, _BB_SUID_DROP))
     433IF_TIME(APPLET(time, BB_DIR_USR_BIN, BB_SUID_DROP))
     434IF_TIMEOUT(APPLET(timeout, BB_DIR_USR_BIN, BB_SUID_DROP))
     435IF_TOP(APPLET(top, BB_DIR_USR_BIN, BB_SUID_DROP))
     436IF_TR(APPLET(tr, BB_DIR_USR_BIN, BB_SUID_DROP))
     437/* Needs socket(AF_INET, SOCK_RAW, IPPROTO_ICMP), therefore BB_SUID_MAYBE: */
     438IF_TRACEROUTE(APPLET(traceroute, BB_DIR_USR_BIN, BB_SUID_MAYBE))
     439IF_TRACEROUTE6(APPLET(traceroute6, BB_DIR_USR_BIN, BB_SUID_MAYBE))
     440IF_TRUE(APPLET_NOFORK(true, true, BB_DIR_BIN, BB_SUID_DROP, true))
     441IF_TTY(APPLET(tty, BB_DIR_USR_BIN, BB_SUID_DROP))
     442IF_TTYSIZE(APPLET(ttysize, BB_DIR_USR_BIN, BB_SUID_DROP))
     443IF_TUNCTL(APPLET(tunctl, BB_DIR_SBIN, BB_SUID_DROP))
     444IF_TUNE2FS(APPLET(tune2fs, BB_DIR_SBIN, BB_SUID_DROP))
     445IF_UDHCPC(APPLET(udhcpc, BB_DIR_SBIN, BB_SUID_DROP))
     446IF_UDHCPD(APPLET(udhcpd, BB_DIR_USR_SBIN, BB_SUID_DROP))
     447IF_UDPSVD(APPLET_ODDNAME(udpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, udpsvd))
     448IF_UMOUNT(APPLET(umount, BB_DIR_BIN, BB_SUID_DROP))
     449IF_UNAME(APPLET(uname, BB_DIR_BIN, BB_SUID_DROP))
     450IF_UNCOMPRESS(APPLET(uncompress, BB_DIR_BIN, BB_SUID_DROP))
     451IF_UNEXPAND(APPLET_ODDNAME(unexpand, expand, BB_DIR_USR_BIN, BB_SUID_DROP, unexpand))
     452IF_UNIQ(APPLET(uniq, BB_DIR_USR_BIN, BB_SUID_DROP))
     453IF_UNIX2DOS(APPLET_NOEXEC(unix2dos, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, unix2dos))
     454IF_UNXZ(APPLET(unxz, BB_DIR_USR_BIN, BB_SUID_DROP))
     455IF_UNLZMA(APPLET(unlzma, BB_DIR_USR_BIN, BB_SUID_DROP))
     456IF_LZOP(APPLET_ODDNAME(unlzop, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, unlzop))
     457IF_UNZIP(APPLET(unzip, BB_DIR_USR_BIN, BB_SUID_DROP))
     458IF_UPTIME(APPLET(uptime, BB_DIR_USR_BIN, BB_SUID_DROP))
     459IF_USLEEP(APPLET_NOFORK(usleep, usleep, BB_DIR_BIN, BB_SUID_DROP, usleep))
     460IF_UUDECODE(APPLET(uudecode, BB_DIR_USR_BIN, BB_SUID_DROP))
     461IF_UUENCODE(APPLET(uuencode, BB_DIR_USR_BIN, BB_SUID_DROP))
     462IF_VCONFIG(APPLET(vconfig, BB_DIR_SBIN, BB_SUID_DROP))
     463/* Needs to be run by root or be suid root - needs to change uid and gid: */
     464IF_VLOCK(APPLET(vlock, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
     465IF_VOLNAME(APPLET(volname, BB_DIR_USR_BIN, BB_SUID_DROP))
     466/* Needs to be run by root or be suid root - needs to write to /dev/TTY: */
     467IF_WALL(APPLET(wall, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
     468IF_WATCH(APPLET(watch, BB_DIR_BIN, BB_SUID_DROP))
     469IF_WATCHDOG(APPLET(watchdog, BB_DIR_SBIN, BB_SUID_DROP))
     470IF_WC(APPLET(wc, BB_DIR_USR_BIN, BB_SUID_DROP))
     471IF_WGET(APPLET(wget, BB_DIR_USR_BIN, BB_SUID_DROP))
     472IF_WHICH(APPLET(which, BB_DIR_USR_BIN, BB_SUID_DROP))
     473IF_WHOAMI(APPLET_NOFORK(whoami, whoami, BB_DIR_USR_BIN, BB_SUID_DROP, whoami))
     474IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat))
     475IF_XZ(APPLET_ODDNAME(xz, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xz))
     476IF_YES(APPLET_NOFORK(yes, yes, BB_DIR_USR_BIN, BB_SUID_DROP, yes))
     477IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat))
     478IF_ZCIP(APPLET(zcip, BB_DIR_SBIN, BB_SUID_DROP))
    460479
    461480#if !defined(PROTOTYPES) && !defined(NAME_MAIN_CNAME) && !defined(MAKE_USAGE)
  • branches/3.2/mindi-busybox/include/usage.h

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