+/* vi: set sw=4 ts=4: */
#ifndef __BB_USAGE_H__
#define __BB_USAGE_H__
#define hdparm_trivial_usage \
"[options] [device] .."
#define hdparm_full_usage \
- "Options:" \
+ USE_FEATURE_HDPARM_GET_IDENTITY("\tIf no device name is specified try to read from stdin.\n") \
+ "\nOptions:\n" \
"\t-a get/set fs readahead\n" \
"\t-A set drive read-lookahead flag (0/1)\n" \
"\t-b get/set bus state (0 == off, 1 == on, 2 == tristate)\n" \
"\t-f flush buffer cache for device on exit\n" \
"\t-g display drive geometry\n" \
"\t-h display terse usage information\n" \
- "\t-i display drive identification\n" \
+ USE_FEATURE_HDPARM_GET_IDENTITY("\t-i display drive identification\n") \
USE_FEATURE_HDPARM_GET_IDENTITY("\t-I detailed/current information directly from drive\n") \
- USE_FEATURE_HDPARM_GET_IDENTITY("\t-Istdin similar to -I, but wants /proc/ide/" "*" "/hd?/identify as input\n") \
"\t-k get/set keep_settings_over_reset flag (0/1)\n" \
"\t-K set drive keep_features_over_reset flag (0/1)\n" \
"\t-L set drive doorlock (0/1) (removable harddisks only)\n" \
"\t-c\tcheck MD5 sums against given list\n" \
"\nThe following two options are useful only when verifying checksums:\n" \
"\t-s\tdon't output anything, status code shows success\n" \
- "\t-w\twarn about improperly formated MD5 checksum lines")
+ "\t-w\twarn about improperly formatted MD5 checksum lines")
#define md5sum_example_usage \
"$ md5sum < busybox\n" \
"6fd11e98b98a58f64ff3398d7b324003\n" \
"\t-s\tScan /sys and populate /dev during system boot\n\n" \
"Called with no options (via hotplug) it uses environment variables\n" \
"to determine which device to add/remove."
-#ifdef CONFIG_FEATURE_MDEV_CONFIG
-#define mdev_notes_usage \
+#define mdev_notes_usage "" \
+USE_FEATURE_MDEV_CONFIG( \
"The mdev config file contains lines that look like:\n" \
" hd[a-z][0-9]* 0:3 660\n\n" \
"That's device name (with regex match), uid:gid, and permissions.\n\n" \
- "Optionally, that can be followed (on the same line) by an asterisk\n" \
- "and a command line to run after creating the corresponding device(s),\n"\
- "ala:\n\n" \
- " hdc root:cdrom 660 *ln -s hdc cdrom\n\n" \
+ USE_FEATURE_MDEV_EXEC( \
+ "Optionally, that can be followed (on the same line) by a special character\n" \
+ "and a command line to run after creating/before deleting the corresponding\n" \
+ "device(s). The environment variable $MDEV indicates the active device node\n" \
+ "(which is useful if it's a regex match). For example:\n\n" \
+ " hdc root:cdrom 660 *ln -s $MDEV cdrom\n\n" \
+ "The special characters are @ (run after creating), $ (run before deleting),\n" \
+ "and * (run both after creating and before deleting). The commands run in\n" \
+ "the /dev directory, and use system() which calls /bin/sh.\n\n" \
+ ) \
"Config file parsing stops on the first matching line. If no config\n"\
"entry is matched, devices are created with default 0:0 660. (Make\n"\
- "the last line match .* to override this.)\n\n"
-#endif
+ "the last line match .* to override this.)\n\n" \
+)
#define mesg_trivial_usage \
"[y|n]"
#define more_example_usage \
"$ dmesg | more\n"
-#ifdef CONFIG_FEATURE_MOUNT_LOOP
-# define USAGE_MOUNT_LOOP(a) a
-#else
-# define USAGE_MOUNT_LOOP(a)
-#endif
-#ifdef CONFIG_FEATURE_MTAB_SUPPORT
-# define USAGE_MTAB(a) a
-#else
-# define USAGE_MTAB(a)
-#endif
#define mount_trivial_usage \
"[flags] DEVICE NODE [-o options,more-options]"
#define mount_full_usage \
"Mount a filesystem. Filesystem autodetection requires /proc be mounted.\n\n" \
"Flags:\n" \
"\t-a:\t\tMount all filesystems in fstab\n" \
- USAGE_MTAB( \
- "\t-f:\t\t\"Fake\" Add entry to mount table but don't mount it\n" \
- "\t-n:\t\tDon't write a mount table entry\n" \
+ USE_FEATURE_MTAB_SUPPORT( \
+ "\t-f:\t\t\"Fake\" Add entry to mount table but don't mount it\n" \
+ "\t-n:\t\tDon't write a mount table entry\n" \
) \
"\t-o option:\tOne of many filesystem options, listed below\n" \
"\t-r:\t\tMount the filesystem read-only\n" \
"\t-w:\t\tMount for reading and writing (default)\n" \
"\n" \
"Options for use with the \"-o\" flag:\n" \
- "\tasync/sync:\tWrites are asynchronous / synchronous\n" \
- "\tatime/noatime:\tEnable / disable updates to inode access times\n" \
- "\tdev/nodev:\tAllow use of special device files / disallow them\n" \
- "\texec/noexec:\tAllow use of executable files / disallow them\n" \
- USAGE_MOUNT_LOOP( \
- "\tloop:\t\t Ignored (loop devices are autodetected)\n" \
+ USE_FEATURE_MOUNT_LOOP( \
+ "\tloop:\t\tIgnored (loop devices are autodetected)\n" \
+ ) \
+ USE_FEATURE_MOUNT_FLAGS( \
+ "\t[a]sync:\tWrites are asynchronous / synchronous\n" \
+ "\t[no]atime:\tDisable / enable updates to inode access times\n" \
+ "\t[no]diratime:\tDisable / enable atime updates to directories\n" \
+ "\t[no]dev:\tAllow use of special device files / disallow them\n" \
+ "\t[no]exec:\tAllow use of executable files / disallow them\n" \
+ "\t[no]suid:\tAllow set-user-id-root programs / disallow them\n" \
+ "\t[r]shared:\tConvert [recursively] to a shared subtree.\n" \
+ "\t[r]slave:\tConvert [recursively] to a slave subtree.\n" \
+ "\t[r]private:\tConvert [recursively] to a private subtree\n" \
+ "\t[un]bindable:\tMake mount point [un]able to be bind mounted.\n" \
+ "\tbind:\t\tBind a directory to an additional location\n" \
+ "\tmove:\t\tRelocate an existing mount point.\n" \
) \
- "\tsuid/nosuid:\tAllow set-user-id-root programs / disallow them\n" \
"\tremount:\tRe-mount a mounted filesystem, changing its flags\n" \
"\tro/rw:\t\tMount for read-only / read-write\n" \
- "\tbind:\t\tBind a directory to an additional location\n" \
- "\tmove:\t\tRelocate an existing mount point.\n" \
"\nThere are EVEN MORE flags that are specific to each filesystem\n" \
"You'll have to see the written documentation for those filesystems"
#define mount_example_usage \
"$ mount /dev/fd0 /mnt -t msdos -o ro\n" \
"$ mount /tmp/diskimage /opt -t ext2 -o loop\n" \
"$ mount cd_image.iso mydir\n"
+#define mount_notes_usage \
+ "Returns 0 for success, number of failed mounts for -a, or errno for one mount."
#define mountpoint_trivial_usage \
"[-q] <[-d] DIR | -x DEVICE>"
" or\n" \
"$ nameif -c /etc/my_mactab_file\n" \
-#ifdef CONFIG_NC_GAPING_SECURITY_HOLE
-# define USAGE_NC_EXEC(a) a
+#if ENABLE_NC_SERVER || ENABLE_NC_EXTRA
+#define NC_BR1 "["
+#define NC_BR2 "]"
#else
-# define USAGE_NC_EXEC(a)
+#define NC_BR1
+#define NC_BR2
#endif
+
#define nc_trivial_usage \
- "[OPTIONS] [IP] [port]"
+ "[" \
+ NC_BR1 USE_NC_SERVER("-lp")USE_NC_EXTRA("iwf") NC_BR2 \
+ " ["USE_NC_EXTRA("FILENAME|")"{IPADDR PORTNUM}]"USE_NC_EXTRA(" [-e COMMAND]")
#define nc_full_usage \
- "Netcat opens a pipe to IP:port\n\n" \
- "Options:\n" \
- "\t-l\t\tlisten mode, for inbound connects\n" \
- "\t-p PORT\t\tlocal port number\n" \
- "\t-i SECS\t\tdelay interval for lines sent\n" \
- USAGE_NC_EXEC( \
- "\t-e PROG\t\tprogram to exec after connect (dangerous!)\n" \
+ "Netcat opens a pipe, either to IP:port\n\n" \
+ "Options:" \
+ USE_NC_EXTRA( \
+ "\n\t-e\t\texec rest of command line after connect\n" \
+ "\t-i SECS\t\tdelay interval for lines sent\n" \
+ "\t-w SECS\t\ttimeout for connect\n" \
+ "\t-f filename\tuse file (ala /dev/ttyS0) instead of network" \
) \
- "\t-w SECS\t\ttimeout for connects and final net reads"
+ USE_NC_SERVER( \
+ "\n\t-l\t\tlisten mode, for inbound connects\n" \
+ USE_NC_EXTRA("\t\t\t(use -l twice with -e for persistent server)\n") \
+ "\t-p PORT\t\tlocal port number" \
+ )
+
+
+#define nc_notes_usage "" \
+ USE_NC_EXTRA( \
+ "To use netcat as a terminal emulator on a serial port:\n\n" \
+ "$ stty 115200 -F /dev/ttyS0\n" \
+ "$ stty raw -echo -ctlecho && nc -f /dev/ttyS0\n" \
+ ) ""
+
#define nc_example_usage \
"$ nc foobar.somedomain.com 25\n" \
"220 foobar ESMTP Exim 3.12 #1 Sat, 15 Apr 2000 00:03:02 -0600\n" \
"\t-u\tUnlocks (re-enables) the specified user account"
#define patch_trivial_usage \
- "[-p<num>] [-i<patch.diff>]"
+ "[-p<num>] [-i <diff>]"
#define patch_full_usage \
- "[-p<num>]\n" \
- "[-i<diff>]"
+ "\t-p <num>\tStrip <num> leading components from file names\n" \
+ "\t-i <diff>\tRead <diff> instead of stdin"
#define patch_example_usage \
- "$ patch -p1 <example.diff\n" \
+ "$ patch -p1 < example.diff\n" \
"$ patch -p0 -i example.diff"
#if ENABLE_FEATURE_PIDOF_SINGLE
"\t-c\tcheck SHA1 sums against given list\n" \
"\nThe following two options are useful only when verifying checksums:\n" \
"\t-s\tdon't output anything, status code shows success\n" \
- "\t-w\twarn about improperly formated SHA1 checksum lines")
+ "\t-w\twarn about improperly formatted SHA1 checksum lines")
#ifdef CONFIG_FEATURE_FANCY_SLEEP
# define USAGE_FANCY_SLEEP(a) a
"\n\t-n|--name <process-name>\tstop processes with this name" \
"\n\t-p|--pidfile <pid-file>\t\tsave or load pid using a pid-file" \
"\n\t-q|--quiet\t\t\tbe quiet" \
- "\n\t-s|--signal <signal>\t\tsignal to send (default TERM)"
+USE_FEATURE_START_STOP_DAEMON_FANCY( \
+ "\n\t-o|--oknodo\t\t\texit status 0 if nothing done" \
+ "\n\t-v|--verbose\t\t\tbe verbose" \
+) \
+ "\n\t-s|--signal <signal>\t\tsignal to send (default TERM)" \
+ "\n\t-U|--chuid <username>|<uid>\tstart process with this name"
#ifdef CONFIG_FEATURE_STAT_FORMAT
# define USAGE_STAT_FORMAT(a) a
#define udhcpd_full_usage \
""
-#ifdef CONFIG_FEATURE_MOUNT_FORCE
-# define USAGE_MOUNT_FORCE(a) a
-#else
-# define USAGE_MOUNT_FORCE(a)
-#endif
#define umount_trivial_usage \
"[flags] FILESYSTEM|DIRECTORY"
#define umount_full_usage \
"Unmount file systems\n" \
"\nFlags:\n" "\t-a\tUnmount all file systems" \
- USAGE_MTAB(" in /etc/mtab\n\t-n\tDon't erase /etc/mtab entries") \
+ USE_FEATURE_MTAB_SUPPORT(" in /etc/mtab\n\t-n\tDon't erase /etc/mtab entries") \
"\n\t-r\tTry to remount devices as read-only if mount is busy" \
"\n\t-l\tLazy umount (detach filesystem)" \
"\n\t-f\tForce umount (i.e., unreachable NFS server)" \
- USAGE_MOUNT_LOOP("\n\t-D\tDo not free loop device (if a loop device has been used)")
+ USE_FEATURE_MOUNT_LOOP("\n\t-D\tDo not free loop device (if a loop device has been used)")
#define umount_example_usage \
"$ umount /dev/hdc1 \n"
"Mon Dec 17 10:31:44 GMT 2000"
#define watchdog_trivial_usage \
- "[-t <seconds>] DEV"
+ "[-t <seconds>] [-F] DEV"
#define watchdog_full_usage \
"Periodically write to watchdog device DEV.\n" \
"Options:\n" \
- "\t-t\tTimer period in seconds - default is 30"
+ "\t-t\tTimer period in seconds - default is 30\n" \
+ "\t-F\tStay in the foreground and don't fork"
#define wc_trivial_usage \
"[OPTION]... [FILE]..."
"\t-f foreground mode\n" \
"\t-q quit after address (no daemon)\n" \
"\t-r 169.254.x.x request this address first\n" \
- "\t-v verbose; show version"
+ "\t-v verbose"
#endif /* __BB_USAGE_H__ */