mirror of
https://github.com/sheumann/hush.git
synced 2024-12-21 23:29:34 +00:00
More documentation updates, and minor fixes to make things sync
up with the docs. -Erik
This commit is contained in:
parent
95c1c1e05f
commit
5e1189e187
5
TODO
5
TODO
@ -28,6 +28,11 @@ around to it some time. If you have any good ideas, please let me know.
|
||||
* ftp
|
||||
|
||||
|
||||
-----------------------
|
||||
|
||||
Add a compile option to turn off all the compiled in help
|
||||
andusage information. Some folks don't need or want it...
|
||||
|
||||
-----------------------
|
||||
|
||||
Compile with debugging on, run 'nm --size-sort ./busybox'
|
||||
|
@ -44,15 +44,15 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_CAT
|
||||
{"cat", cat_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_CHMOD_CHOWN_CHGRP
|
||||
{"chgrp", chmod_chown_chgrp_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_CHMOD_CHOWN_CHGRP
|
||||
{"chmod", chmod_chown_chgrp_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_CHMOD_CHOWN_CHGRP
|
||||
{"chown", chmod_chown_chgrp_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_CHMOD_CHOWN_CHGRP
|
||||
{"chgrp", chmod_chown_chgrp_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_CHROOT
|
||||
{"chroot", chroot_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
@ -65,9 +65,6 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_CP_MV
|
||||
{"cp", cp_mv_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_CP_MV
|
||||
{"mv", cp_mv_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_DATE
|
||||
{"date", date_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
@ -92,6 +89,9 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_ECHO
|
||||
{"echo", echo_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_TRUE_FALSE
|
||||
{"false", false_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_FBSET
|
||||
{"fbset", fbset_main, _BB_DIR_USR_SBIN},
|
||||
#endif
|
||||
@ -113,12 +113,15 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_FSCK_MINIX
|
||||
{"fsck.minix", fsck_minix_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
#ifdef BB_MKFS_MINIX
|
||||
{"mkfs.minix", mkfs_minix_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
#ifdef BB_GREP
|
||||
{"grep", grep_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_GUNZIP
|
||||
{"gunzip", gunzip_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_GZIP
|
||||
{"gzip", gzip_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_HALT
|
||||
{"halt", halt_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
@ -137,9 +140,6 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_INSMOD
|
||||
{"insmod", insmod_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
#ifdef BB_FEATURE_LINUXRC //
|
||||
{"linuxrc", init_main, _BB_DIR_ROOT},
|
||||
#endif
|
||||
#ifdef BB_KILL
|
||||
{"kill", kill_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
@ -149,6 +149,9 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_LENGTH
|
||||
{"length", length_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_FEATURE_LINUXRC //
|
||||
{"linuxrc", init_main, _BB_DIR_ROOT},
|
||||
#endif
|
||||
#ifdef BB_LN
|
||||
{"ln", ln_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
@ -161,6 +164,12 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_LOADKMAP
|
||||
{"loadkmap", loadkmap_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
#ifdef BB_LOGGER
|
||||
{"logger", logger_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_LOGNAME
|
||||
{"logname", logname_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_LS
|
||||
{"ls", ls_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
@ -179,6 +188,9 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_MKFIFO
|
||||
{"mkfifo", mkfifo_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_MKFS_MINIX
|
||||
{"mkfs.minix", mkfs_minix_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
#ifdef BB_MKNOD
|
||||
{"mknod", mknod_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
@ -197,6 +209,9 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_MT
|
||||
{"mt", mt_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_CP_MV
|
||||
{"mv", cp_mv_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_NSLOOKUP
|
||||
{"nslookup", nslookup_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
@ -248,12 +263,6 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_SYSLOGD
|
||||
{"syslogd", syslogd_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
#ifdef BB_LOGGER
|
||||
{"logger", logger_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_LOGNAME
|
||||
{"logname", logname_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_SWAPONOFF
|
||||
{"swapon", swap_on_off_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
@ -269,9 +278,6 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_TELNET
|
||||
{"telnet", telnet_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_TEST
|
||||
{"[", test_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_TEST
|
||||
{"test", test_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
@ -287,9 +293,6 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_TRUE_FALSE
|
||||
{"true", true_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_TRUE_FALSE
|
||||
{"false", false_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_TTY
|
||||
{"tty", tty_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
@ -299,15 +302,15 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_UNAME
|
||||
{"uname", uname_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_UPTIME
|
||||
{"uptime", uptime_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_UNIQ
|
||||
{"uniq", uniq_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_UPDATE
|
||||
{"update", update_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
#ifdef BB_UPTIME
|
||||
{"uptime", uptime_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_USLEEP
|
||||
{"usleep", usleep_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
@ -323,11 +326,8 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_GUNZIP
|
||||
{"zcat", gunzip_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_GUNZIP
|
||||
{"gunzip", gunzip_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_GZIP
|
||||
{"gzip", gzip_main, _BB_DIR_BIN},
|
||||
#ifdef BB_TEST
|
||||
{"[", test_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
{0}
|
||||
};
|
||||
|
@ -41,7 +41,7 @@
|
||||
static const char gzip_usage[] =
|
||||
"gzip [OPTION]... FILE\n\n"
|
||||
"Compress FILE with maximum compression.\n"
|
||||
"When FILE is -, reads standard input. Implies -c.\n\n"
|
||||
"When FILE is '-', reads standard input. Implies -c.\n\n"
|
||||
|
||||
"Options:\n"
|
||||
"\t-c\tWrite output to standard output instead of FILE.gz\n";
|
||||
|
64
busybox.c
64
busybox.c
@ -44,15 +44,15 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_CAT
|
||||
{"cat", cat_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_CHMOD_CHOWN_CHGRP
|
||||
{"chgrp", chmod_chown_chgrp_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_CHMOD_CHOWN_CHGRP
|
||||
{"chmod", chmod_chown_chgrp_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_CHMOD_CHOWN_CHGRP
|
||||
{"chown", chmod_chown_chgrp_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_CHMOD_CHOWN_CHGRP
|
||||
{"chgrp", chmod_chown_chgrp_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_CHROOT
|
||||
{"chroot", chroot_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
@ -65,9 +65,6 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_CP_MV
|
||||
{"cp", cp_mv_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_CP_MV
|
||||
{"mv", cp_mv_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_DATE
|
||||
{"date", date_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
@ -92,6 +89,9 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_ECHO
|
||||
{"echo", echo_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_TRUE_FALSE
|
||||
{"false", false_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_FBSET
|
||||
{"fbset", fbset_main, _BB_DIR_USR_SBIN},
|
||||
#endif
|
||||
@ -113,12 +113,15 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_FSCK_MINIX
|
||||
{"fsck.minix", fsck_minix_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
#ifdef BB_MKFS_MINIX
|
||||
{"mkfs.minix", mkfs_minix_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
#ifdef BB_GREP
|
||||
{"grep", grep_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_GUNZIP
|
||||
{"gunzip", gunzip_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_GZIP
|
||||
{"gzip", gzip_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_HALT
|
||||
{"halt", halt_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
@ -137,9 +140,6 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_INSMOD
|
||||
{"insmod", insmod_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
#ifdef BB_FEATURE_LINUXRC //
|
||||
{"linuxrc", init_main, _BB_DIR_ROOT},
|
||||
#endif
|
||||
#ifdef BB_KILL
|
||||
{"kill", kill_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
@ -149,6 +149,9 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_LENGTH
|
||||
{"length", length_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_FEATURE_LINUXRC //
|
||||
{"linuxrc", init_main, _BB_DIR_ROOT},
|
||||
#endif
|
||||
#ifdef BB_LN
|
||||
{"ln", ln_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
@ -161,6 +164,12 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_LOADKMAP
|
||||
{"loadkmap", loadkmap_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
#ifdef BB_LOGGER
|
||||
{"logger", logger_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_LOGNAME
|
||||
{"logname", logname_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_LS
|
||||
{"ls", ls_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
@ -179,6 +188,9 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_MKFIFO
|
||||
{"mkfifo", mkfifo_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_MKFS_MINIX
|
||||
{"mkfs.minix", mkfs_minix_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
#ifdef BB_MKNOD
|
||||
{"mknod", mknod_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
@ -197,6 +209,9 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_MT
|
||||
{"mt", mt_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_CP_MV
|
||||
{"mv", cp_mv_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_NSLOOKUP
|
||||
{"nslookup", nslookup_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
@ -248,12 +263,6 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_SYSLOGD
|
||||
{"syslogd", syslogd_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
#ifdef BB_LOGGER
|
||||
{"logger", logger_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_LOGNAME
|
||||
{"logname", logname_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_SWAPONOFF
|
||||
{"swapon", swap_on_off_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
@ -269,9 +278,6 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_TELNET
|
||||
{"telnet", telnet_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_TEST
|
||||
{"[", test_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_TEST
|
||||
{"test", test_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
@ -287,9 +293,6 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_TRUE_FALSE
|
||||
{"true", true_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_TRUE_FALSE
|
||||
{"false", false_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_TTY
|
||||
{"tty", tty_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
@ -299,15 +302,15 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_UNAME
|
||||
{"uname", uname_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_UPTIME
|
||||
{"uptime", uptime_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_UNIQ
|
||||
{"uniq", uniq_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_UPDATE
|
||||
{"update", update_main, _BB_DIR_SBIN},
|
||||
#endif
|
||||
#ifdef BB_UPTIME
|
||||
{"uptime", uptime_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
#ifdef BB_USLEEP
|
||||
{"usleep", usleep_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
@ -323,11 +326,8 @@ static const struct Applet applets[] = {
|
||||
#ifdef BB_GUNZIP
|
||||
{"zcat", gunzip_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_GUNZIP
|
||||
{"gunzip", gunzip_main, _BB_DIR_BIN},
|
||||
#endif
|
||||
#ifdef BB_GZIP
|
||||
{"gzip", gzip_main, _BB_DIR_BIN},
|
||||
#ifdef BB_TEST
|
||||
{"[", test_main, _BB_DIR_USR_BIN},
|
||||
#endif
|
||||
{0}
|
||||
};
|
||||
|
@ -32,12 +32,12 @@
|
||||
#define BB_GREP
|
||||
#define BB_GUNZIP
|
||||
#define BB_GZIP
|
||||
//#define BB_HALT
|
||||
#define BB_HALT
|
||||
#define BB_HEAD
|
||||
#define BB_HOSTID
|
||||
#define BB_HOSTNAME
|
||||
#define BB_INIT
|
||||
// Don't bother turning BB_INSMOD on. It doesn't work.
|
||||
// Don't bother turning BB_INSMOD on. It doesn't work yet.
|
||||
//#define BB_INSMOD
|
||||
#define BB_KILL
|
||||
#define BB_KILLALL
|
||||
@ -65,11 +65,11 @@
|
||||
#define BB_MT
|
||||
#define BB_NSLOOKUP
|
||||
#define BB_PING
|
||||
//#define BB_POWEROFF
|
||||
#define BB_POWEROFF
|
||||
#define BB_PRINTF
|
||||
#define BB_PS
|
||||
#define BB_PWD
|
||||
//#define BB_REBOOT
|
||||
#define BB_REBOOT
|
||||
#define BB_RM
|
||||
#define BB_RMDIR
|
||||
#define BB_RMMOD
|
||||
@ -85,7 +85,7 @@
|
||||
#define BB_TAR
|
||||
#define BB_TEE
|
||||
#define BB_TEST
|
||||
// Don't turn BB_TELNET on. It doesn't work.
|
||||
// Don't bother turning BB_TELNET on. It doesn't work properly yet.
|
||||
//#define BB_TELNET
|
||||
#define BB_TOUCH
|
||||
#define BB_TR
|
||||
@ -115,6 +115,7 @@
|
||||
// the /proc filesystem and thereby saving lots and lots
|
||||
// memory for more important things.
|
||||
// You can't use this and USE_PROCFS at the same time...
|
||||
// (BTW, I emailed Linus and this patch will not be going into the stock kernel)
|
||||
//#define BB_FEATURE_USE_DEVPS_PATCH
|
||||
//
|
||||
// enable features that use the /proc filesystem (apps that
|
||||
|
@ -27,10 +27,10 @@
|
||||
#include <errno.h>
|
||||
|
||||
static const char mkfifo_usage[] = "mkfifo [OPTIONS] name\n\n"
|
||||
"Create the named fifo\n\n"
|
||||
"Creates a named pipe (identical to 'mknod name p')\n\n"
|
||||
|
||||
"Options:\n"
|
||||
"\t-m\tcreate the fifo with the specified mode; default = a=rw-umask\n";
|
||||
"\t-m\tcreate the pipe using the specified mode (default a=rw)\n";
|
||||
|
||||
extern int mkfifo_main(int argc, char **argv)
|
||||
{
|
||||
|
@ -28,23 +28,47 @@
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
static const char mknod_usage[] = "mknod NAME TYPE MAJOR MINOR\n\n"
|
||||
"Make block or character special files.\n\n"
|
||||
static const char mknod_usage[] = "mknod [OPTIONS] NAME TYPE MAJOR MINOR\n\n"
|
||||
"Create a special file (block, character, or pipe).\n\n"
|
||||
"Options:\n"
|
||||
"\t-m\tcreate the special file using the specified mode (default a=rw)\n\n"
|
||||
"TYPEs include:\n"
|
||||
"\tb:\tMake a block (buffered) device.\n"
|
||||
|
||||
"\tc or u:\tMake a character (un-buffered) device.\n"
|
||||
"\tp:\tMake a named pipe. Major and minor are ignored for named pipes.\n";
|
||||
"\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes.\n";
|
||||
|
||||
int mknod_main(int argc, char **argv)
|
||||
{
|
||||
char *thisarg;
|
||||
mode_t mode = 0;
|
||||
mode_t perm = 0666;
|
||||
dev_t dev = 0;
|
||||
|
||||
if (argc != 5 || **(argv + 1) == '-') {
|
||||
argc--;
|
||||
argv++;
|
||||
|
||||
/* Parse any options */
|
||||
while (argc > 1) {
|
||||
if (**argv != '-')
|
||||
break;
|
||||
thisarg = *argv;
|
||||
thisarg++;
|
||||
switch (*thisarg) {
|
||||
case 'm':
|
||||
argc--;
|
||||
argv++;
|
||||
parse_mode(*argv, &perm);
|
||||
break;
|
||||
default:
|
||||
usage(mknod_usage);
|
||||
}
|
||||
switch (argv[2][0]) {
|
||||
argc--;
|
||||
argv++;
|
||||
}
|
||||
if (argc != 4 && argc != 2) {
|
||||
usage(mknod_usage);
|
||||
}
|
||||
switch (argv[1][0]) {
|
||||
case 'c':
|
||||
case 'u':
|
||||
mode = S_IFCHR;
|
||||
@ -54,23 +78,22 @@ int mknod_main(int argc, char **argv)
|
||||
break;
|
||||
case 'p':
|
||||
mode = S_IFIFO;
|
||||
if (argc!=2) {
|
||||
usage(mknod_usage);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
usage(mknod_usage);
|
||||
}
|
||||
|
||||
if (mode == S_IFCHR || mode == S_IFBLK) {
|
||||
dev = (atoi(argv[3]) << 8) | atoi(argv[4]);
|
||||
if (argc != 5) {
|
||||
usage(mknod_usage);
|
||||
}
|
||||
dev = (atoi(argv[2]) << 8) | atoi(argv[1]);
|
||||
}
|
||||
|
||||
mode |= 0666;
|
||||
mode |= perm;
|
||||
|
||||
if (mknod(argv[1], mode, dev) != 0) {
|
||||
perror(argv[1]);
|
||||
exit (FALSE);
|
||||
}
|
||||
if (mknod(argv[0], mode, dev) != 0)
|
||||
fatalError("%s: %s\n", argv[0], strerror(errno));
|
||||
exit (TRUE);
|
||||
}
|
||||
|
||||
|
@ -139,7 +139,7 @@ static void verify __P((char *s, char *end));
|
||||
/* The value to return to the calling program. */
|
||||
static int exit_status;
|
||||
|
||||
static const char printf_usage[] = "printf format [argument...]\n";
|
||||
static const char printf_usage[] = "printf format [argument...]\n\nFormats and prints the given data.\n";
|
||||
|
||||
int printf_main(int argc, char **argv)
|
||||
{
|
||||
|
@ -33,7 +33,7 @@ static const char sort_usage[] = "sort [-n]"
|
||||
#ifdef BB_FEATURE_SORT_REVERSE
|
||||
" [-r]"
|
||||
#endif
|
||||
" [FILE]...\n\n";
|
||||
" [FILE]...\n\nSorts lines of text in the specified files\n";
|
||||
|
||||
#ifdef BB_FEATURE_SORT_REVERSE
|
||||
#define APPLY_REVERSE(x) (reverse ? -(x) : (x))
|
||||
@ -320,4 +320,4 @@ int sort_main(int argc, char **argv)
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/* $Id: sort.c,v 1.13 2000/04/13 01:18:56 erik Exp $ */
|
||||
/* $Id: sort.c,v 1.14 2000/04/15 16:34:54 erik Exp $ */
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* vi: set sw=4 ts=4: */
|
||||
/*
|
||||
* echo implementation for busybox
|
||||
* test implementation for busybox
|
||||
*
|
||||
* Copyright (c) by a whole pile of folks:
|
||||
*
|
||||
@ -185,6 +185,12 @@ test_main(int argc, char** argv)
|
||||
fatalError("missing ]");
|
||||
argv[argc] = NULL;
|
||||
}
|
||||
if (strcmp(argv[1], "--help") == 0) {
|
||||
usage("test EXPRESSION\n"
|
||||
"or [ EXPRESSION ]\n\n"
|
||||
"Checks file types and compares values returning an exit\n"
|
||||
"code determined by the value of EXPRESSION.\n");
|
||||
}
|
||||
|
||||
/* Implement special cases from POSIX.2, section 4.62.4 */
|
||||
switch (argc) {
|
||||
|
@ -44,7 +44,7 @@ static char sccsid[] = "@(#)tr.c 8.2 (Berkeley) 5/4/95";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
|
||||
"$Id: tr.c,v 1.2 2000/03/21 22:32:57 erik Exp $";
|
||||
"$Id: tr.c,v 1.3 2000/04/15 16:34:54 erik Exp $";
|
||||
#endif /* not lint */
|
||||
#endif /* #if 0 */
|
||||
|
||||
@ -138,12 +138,12 @@ int cflag;
|
||||
|
||||
static void tr_usage()
|
||||
{
|
||||
(void) fprintf(stderr, "%s\n%s\n%s\n%s\n",
|
||||
"usage: tr [-csu] string1 string2",
|
||||
" tr [-cu] -d string1",
|
||||
" tr [-cu] -s string1",
|
||||
" tr [-cu] -ds string1 string2");
|
||||
exit(1);
|
||||
usage( "\ttr [-csu] string1 string2\n"
|
||||
"\ttr [-cu] -d string1\n"
|
||||
"\ttr [-cu] -s string1\n"
|
||||
"\ttr [-cu] -ds string1 string2\n\n"
|
||||
"Translate, squeeze, and/or delete characters from standard\n"
|
||||
"input, writing to standard output.\n");
|
||||
}
|
||||
|
||||
|
||||
|
751
docs/busybox.pod
751
docs/busybox.pod
@ -36,16 +36,15 @@ tries to make itself useful to small systems with limited resources.
|
||||
|
||||
Currently defined functions include:
|
||||
|
||||
basename, cat, chmod, chown, chgrp, chroot, clear, chvt, cp, date,
|
||||
dd, df, dirname, dmesg, du, dutmp, echo, false, fbset, fdflush, find, free,
|
||||
freeramdisk, deallocvt, fsck.minix, mkfs.minix, grep, gunzip, gzip,
|
||||
halt, head, hostid, hostname, init, kill, killall, length, ln, loadacm,
|
||||
loadfont, loadkmap, ls, lsmod, makedevs, math, mkdir, mkfifo, mknod,
|
||||
mkswap, mnc, more, mount, mt, mv, nslookup, poweroff, ping, printf, ps,
|
||||
pwd, reboot, rm, rmdir, rmmod, sed, sh, fdisk, sfdisk, sleep, sort,
|
||||
sync, syslogd, logger, logname, swapon, swapoff, tail, tar, [, test,
|
||||
tee, touch, tr, true, tty, umount, uname, uptime, uniq, update,
|
||||
usleep, wc, whoami, yes, zcat
|
||||
basename, cat, chgrp, chmod, chown, chroot, clear, chvt, cp, date, dd, df,
|
||||
dirname, dmesg, du, dutmp, echo, false, fbset, fdflush, find, free,
|
||||
freeramdisk, deallocvt, fsck.minix, grep, gunzip, gzip, halt, head, hostid,
|
||||
hostname, init, kill, killall, length, ln, loadacm, loadfont, loadkmap, logger,
|
||||
logname, ls, lsmod, makedevs, math, mkdir, mkfifo, mkfs.minix, mknod, mkswap,
|
||||
mnc, more, mount, mt, mv, nslookup, ping, poweroff, printf, ps, pwd, reboot,
|
||||
rm, rmdir, rmmod, sed, sh, sfdisk, sleep, sort, sync, syslogd, swapon, swapoff,
|
||||
tail, tar, test, tee, touch, tr, true, tty, umount, uname, uniq, update,
|
||||
uptime, usleep, wc, whoami, yes, zcat, [
|
||||
|
||||
=head1 COMMON OPTIONS
|
||||
|
||||
@ -82,6 +81,26 @@ Example:
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item chgrp
|
||||
|
||||
Usage: chgrp [OPTION]... GROUP FILE...
|
||||
|
||||
Change the group membership of each FILE to GROUP.
|
||||
|
||||
Options:
|
||||
|
||||
-R change files and directories recursively
|
||||
|
||||
Example:
|
||||
|
||||
$ ls -l /tmp/foo
|
||||
-r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
|
||||
$ chgrp root /tmp/foo
|
||||
$ ls -l /tmp/foo
|
||||
-r--r--r-- 1 andersen root 0 Apr 12 18:25 /tmp/foo
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item chmod
|
||||
|
||||
Usage: chmod [B<-R>] MODE[,MODE]... FILE...
|
||||
@ -165,26 +184,6 @@ Example:
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item chgrp
|
||||
|
||||
Usage: chgrp [OPTION]... GROUP FILE...
|
||||
|
||||
Change the group membership of each FILE to GROUP.
|
||||
|
||||
Options:
|
||||
|
||||
-R change files and directories recursively
|
||||
|
||||
Example:
|
||||
|
||||
$ ls -l /tmp/foo
|
||||
-r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
|
||||
$ chgrp root /tmp/foo
|
||||
$ ls -l /tmp/foo
|
||||
-r--r--r-- 1 andersen root 0 Apr 12 18:25 /tmp/foo
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item chroot
|
||||
|
||||
Usage: chroot NEWROOT [COMMAND...]
|
||||
@ -391,6 +390,14 @@ Example:
|
||||
|
||||
=item false
|
||||
|
||||
Returns an exit code of FALSE (1)
|
||||
|
||||
Example:
|
||||
|
||||
$ false
|
||||
$ echo $?
|
||||
1
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item fbset
|
||||
@ -510,22 +517,6 @@ OPTIONS:
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item mkfs.minix
|
||||
|
||||
Usage: mkfs.minix [B<-c> | B<-l> filename] [B<-nXX>] [B<-iXX>] /dev/name [blocks]
|
||||
|
||||
Make a MINIX filesystem.
|
||||
|
||||
OPTIONS:
|
||||
|
||||
-c Check the device for bad blocks
|
||||
-n [14|30] Specify the maximum length of filenames
|
||||
-i Specify the number of inodes for the filesystem
|
||||
-l FILENAME Read the bad blocks list from FILENAME
|
||||
-v Make a Minix version 2 filesystem
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item grep
|
||||
|
||||
Usage: grep [OPTIONS]... PATTERN [FILE]...
|
||||
@ -552,16 +543,52 @@ Example:
|
||||
|
||||
=item gunzip
|
||||
|
||||
Usage: gunzip [OPTION]... FILE
|
||||
|
||||
Uncompress FILE (or standard input if FILE is '-').
|
||||
|
||||
Options:
|
||||
|
||||
-c Write output to standard output
|
||||
-t Test compressed file integrity
|
||||
|
||||
Example:
|
||||
|
||||
$ ls -la /tmp/busybox*
|
||||
-rw-rw-r-- 1 andersen andersen 557009 Apr 11 10:55 /tmp/busybox-0.43.tar.gz
|
||||
$ gunzip /tmp/busybox-0.43.tar.gz
|
||||
$ ls -la /tmp/busybox*
|
||||
-rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/busybox-0.43.tar
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item gzip
|
||||
|
||||
Usage: gzip [OPTION]... FILE
|
||||
|
||||
Compress FILE with maximum compression.
|
||||
When FILE is '-', reads standard input. Implies -c.
|
||||
|
||||
Options:
|
||||
|
||||
-c Write output to standard output instead of FILE.gz
|
||||
|
||||
Example:
|
||||
|
||||
$ ls -la /tmp/busybox*
|
||||
-rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/busybox-0.43.tar
|
||||
$ gzip /tmp/busybox-0.43.tar
|
||||
$ ls -la /tmp/busybox*
|
||||
-rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/busybox-0.43.tar.gz
|
||||
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item halt
|
||||
|
||||
Usage: halt
|
||||
|
||||
This comand halts the system.
|
||||
|
||||
-------------------------------
|
||||
|
||||
@ -587,6 +614,11 @@ Example:
|
||||
|
||||
=item hostid
|
||||
|
||||
Usage: hostid
|
||||
|
||||
Prints out a unique 32-bit identifier for the current
|
||||
machine. The 32-bit identifier is intended to be unique
|
||||
among all UNIX systems in existence.
|
||||
|
||||
-------------------------------
|
||||
|
||||
@ -613,6 +645,94 @@ Example:
|
||||
|
||||
=item init
|
||||
|
||||
Usage: init
|
||||
|
||||
Init is the parent of all processes.
|
||||
|
||||
This version of init is designed to be run only by the kernel.
|
||||
|
||||
BusyBox init doesn't support multiple runlevels. The runlevels field of
|
||||
the /etc/inittab file is completely ignored by BusyBox init. If you want
|
||||
runlevels, use sysvinit.
|
||||
|
||||
BusyBox init works just fine without an inittab. If no inittab is found,
|
||||
it has the following default behavior:
|
||||
|
||||
::sysinit:/etc/init.d/rcS
|
||||
::askfirst:/bin/sh
|
||||
|
||||
if it detects that /dev/console is _not_ a serial console, it will also run:
|
||||
|
||||
tty2::askfirst:/bin/sh
|
||||
|
||||
If you choose to use an /etc/inittab file, the inittab entry format is as follows:
|
||||
|
||||
<id>:<runlevels>:<action>:<process>
|
||||
|
||||
<id>:
|
||||
|
||||
WARNING: This field has a non-traditional meaning for BusyBox init!
|
||||
The id field is used by BusyBox init to specify the controlling tty for
|
||||
the specified process to run on. The contents of this field are
|
||||
appended to "/dev/" and used as-is. There is no need for this field to
|
||||
be unique, although if it isn't you may have strange results. If this
|
||||
field is left blank, it is completely ignored. Also note that if
|
||||
BusyBox detects that a serial console is in use, then all entries
|
||||
containing non-empty id fields will _not_ be run. BusyBox init does
|
||||
nothing with utmp. We don't need no stinkin' utmp.
|
||||
|
||||
<runlevels>:
|
||||
|
||||
The runlevels field is completely ignored.
|
||||
|
||||
<action>:
|
||||
|
||||
Valid actions include: sysinit, respawn, askfirst, wait,
|
||||
once, and ctrlaltdel.
|
||||
|
||||
askfirst acts just like respawn, but before running the specified
|
||||
process it displays the line "Please press Enter to activate this
|
||||
console." and then waits for the user to press enter before starting
|
||||
the specified process.
|
||||
|
||||
Unrecognised actions (like initdefault) will cause init to emit
|
||||
an error message, and then go along with its business.
|
||||
|
||||
<process>:
|
||||
|
||||
Specifies the process to be executed and it's command line.
|
||||
|
||||
|
||||
Example /etc/inittab file:
|
||||
|
||||
# This is run first except when booting in single-user mode.
|
||||
#
|
||||
::sysinit:/etc/init.d/rcS
|
||||
|
||||
# /bin/sh invocations on selected ttys
|
||||
#
|
||||
# Start an "askfirst" shell on the console (whatever that may be)
|
||||
::askfirst:/bin/sh
|
||||
# Start an "askfirst" shell on /dev/tty2
|
||||
tty2::askfirst:/bin/sh
|
||||
|
||||
# /sbin/getty invocations for selected ttys
|
||||
#
|
||||
tty4::respawn:/sbin/getty 38400 tty4
|
||||
tty5::respawn:/sbin/getty 38400 tty5
|
||||
|
||||
|
||||
# Example of how to put a getty on a serial line (for a terminal)
|
||||
#
|
||||
#ttyS0::respawn:/sbin/getty -L ttyS0 9600 vt100
|
||||
#ttyS1::respawn:/sbin/getty -L ttyS1 9600 vt100
|
||||
#
|
||||
# Example how to put a getty on a modem line.
|
||||
#ttyS2::respawn:/sbin/getty -x0 -s 57600 ttyS2
|
||||
|
||||
# Stuff to do before rebooting
|
||||
::ctrlaltdel:/bin/umount -a -r > /dev/null 2>&1
|
||||
::ctrlaltdel:/sbin/swapoff -a > /dev/null 2>&1
|
||||
|
||||
-------------------------------
|
||||
|
||||
@ -641,10 +761,28 @@ Example:
|
||||
|
||||
=item killall
|
||||
|
||||
Usage: killall [-signal] process-name [process-name ...]
|
||||
|
||||
Send a signal (default is SIGTERM) to the specified process(es).
|
||||
|
||||
Options:
|
||||
-l List all signal names and numbers.
|
||||
|
||||
Example:
|
||||
|
||||
$ killall apache
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item length
|
||||
|
||||
Usage: length string
|
||||
|
||||
Prints out the length of the specified string.
|
||||
|
||||
Example:
|
||||
$ length "Hello"
|
||||
5
|
||||
|
||||
-------------------------------
|
||||
|
||||
@ -668,14 +806,52 @@ Example:
|
||||
|
||||
=item loadacm
|
||||
|
||||
FIXME
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item loadfont
|
||||
|
||||
FIXME
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item loadkmap
|
||||
|
||||
FIXME
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item logger
|
||||
|
||||
Usage: logger [OPTION]... [MESSAGE]
|
||||
|
||||
Write MESSAGE to the system log. If MESSAGE is '-', log stdin.
|
||||
|
||||
Options:
|
||||
|
||||
-s Log to stderr as well as the system log.
|
||||
-t Log using the specified tag (defaults to user name).
|
||||
-p Enter the message with the specified priority.
|
||||
This may be numerical or a ``facility.level'' pair.
|
||||
|
||||
Example:
|
||||
|
||||
$ logger "hello"
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item logname
|
||||
|
||||
Usage: logname
|
||||
|
||||
Print the name of the current user.
|
||||
|
||||
Example:
|
||||
|
||||
$ logname
|
||||
root
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item ls
|
||||
@ -705,16 +881,53 @@ Options:
|
||||
|
||||
Usage: lsmod
|
||||
|
||||
Shows information about all loaded modules.
|
||||
Shows a list of all currently loaded kernel modules.
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item makedevs
|
||||
|
||||
Usage: makedevs NAME TYPE MAJOR MINOR FIRST LAST [s]
|
||||
|
||||
Creates a range of block or character special files
|
||||
|
||||
TYPEs include:
|
||||
|
||||
b: Make a block (buffered) device.
|
||||
c or u: Make a character (un-buffered) device.
|
||||
p: Make a named pipe. MAJOR and MINOR are ignored for named pipes.
|
||||
|
||||
FIRST specifies the number appended to NAME to create the first device.
|
||||
LAST specifies the number of the last item that should be created.
|
||||
If 's' is the last argument, the base device is created as well.
|
||||
|
||||
Example:
|
||||
|
||||
$ makedevs /dev/ttyS c 4 66 2 63
|
||||
[creates ttyS2-ttyS63]
|
||||
$ makedevs /dev/hda b 3 0 0 8 s
|
||||
[creates hda,hda1-hda8]
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item math
|
||||
|
||||
Usage: math expression ...
|
||||
|
||||
This is a Tiny RPN calculator that understands the
|
||||
following operations: +, -, /, *, and, or, not, eor.
|
||||
|
||||
Example:
|
||||
|
||||
$ math 2 2 add
|
||||
4
|
||||
$ math 8 8 \* 2 2 + /
|
||||
16
|
||||
$ math 0 1 and
|
||||
0
|
||||
$ math 0 1 or
|
||||
1
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item mkdir
|
||||
@ -741,23 +954,49 @@ Example:
|
||||
|
||||
=item mkfifo
|
||||
|
||||
Usage: mkfifo [OPTIONS] name
|
||||
|
||||
Creates a named pipe (identical to 'mknod name p')
|
||||
|
||||
Options:
|
||||
-m create the pipe using the specified mode (default a=rw)
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item mkfs.minix
|
||||
|
||||
Usage: mkfs.minix [B<-c> | B<-l> filename] [B<-nXX>] [B<-iXX>] /dev/name [blocks]
|
||||
|
||||
Make a MINIX filesystem.
|
||||
|
||||
OPTIONS:
|
||||
|
||||
-c Check the device for bad blocks
|
||||
-n [14|30] Specify the maximum length of filenames
|
||||
-i Specify the number of inodes for the filesystem
|
||||
-l FILENAME Read the bad blocks list from FILENAME
|
||||
-v Make a Minix version 2 filesystem
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item mknod
|
||||
|
||||
Usage: mknod NAME TYPE MAJOR MINOR
|
||||
Usage: mknod [OPTIONS] NAME TYPE MAJOR MINOR
|
||||
|
||||
Make block or character special files.
|
||||
Create a special file (block, character, or pipe).
|
||||
|
||||
Options:
|
||||
-m create the special file using the specified mode (default a=rw)
|
||||
|
||||
TYPEs include:
|
||||
|
||||
b: Make a block (buffered) device.
|
||||
c or u: Make a character (un-buffered) device.
|
||||
p: Make a named pipe. Major and minor are ignored for named pipes.
|
||||
p: Make a named pipe. MAJOR and MINOR are ignored for named pipes.
|
||||
|
||||
Example:
|
||||
|
||||
$ mknod /dev/fd0 b 2 0
|
||||
$ mknod -m 644 /tmp/pipe p
|
||||
|
||||
-------------------------------
|
||||
|
||||
@ -778,6 +1017,21 @@ Options:
|
||||
|
||||
=item mnc
|
||||
|
||||
Usage: mnc [IP] [port]
|
||||
|
||||
mini-netcat opens a pipe to IP:port
|
||||
|
||||
Example:
|
||||
|
||||
$ mnc foobar.somedomain.com 25
|
||||
220 foobar ESMTP Exim 3.12 #1 Sat, 15 Apr 2000 00:03:02 -0600
|
||||
help
|
||||
214-Commands supported:
|
||||
214- HELO EHLO MAIL RCPT DATA AUTH
|
||||
214 NOOP QUIT RSET HELP
|
||||
quit
|
||||
221 foobar closing connection
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item more
|
||||
@ -830,6 +1084,10 @@ Example:
|
||||
|
||||
=item mt
|
||||
|
||||
Usage: mt [-f device] opcode value
|
||||
|
||||
Control magnetic tape drive operation
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item mv
|
||||
@ -848,9 +1106,18 @@ Example:
|
||||
|
||||
=item nslookup
|
||||
|
||||
-------------------------------
|
||||
Usage: nslookup [HOST]
|
||||
|
||||
=item poweroff
|
||||
Queries the nameserver for the IP address of the given HOST
|
||||
|
||||
Example:
|
||||
|
||||
$ nslookup localhost
|
||||
Server: default
|
||||
Address: default
|
||||
|
||||
Name: debian
|
||||
Address: 127.0.0.1
|
||||
|
||||
-------------------------------
|
||||
|
||||
@ -877,116 +1144,478 @@ Example:
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item poweroff
|
||||
|
||||
Shuts down the system, and requests that the kernel turn off power upon halting.
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item printf
|
||||
|
||||
Usage: printf format [argument...]
|
||||
|
||||
Formats and prints the given data in a manner similar to the C printf command.
|
||||
|
||||
Example:
|
||||
|
||||
$ printf "Val=%d\n" 5
|
||||
Val=5
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item ps
|
||||
|
||||
Usage: ps
|
||||
|
||||
Report process status
|
||||
|
||||
This version of ps accepts no options.
|
||||
|
||||
Example:
|
||||
|
||||
$ ps
|
||||
PID Uid Gid State Command
|
||||
1 root root S init
|
||||
2 root root S [kflushd]
|
||||
3 root root S [kupdate]
|
||||
4 root root S [kpiod]
|
||||
5 root root S [kswapd]
|
||||
742 andersen andersen S [bash]
|
||||
743 andersen andersen S -bash
|
||||
745 root root S [getty]
|
||||
2990 andersen andersen R ps
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item pwd
|
||||
|
||||
Prints the full filename of the current working directory.
|
||||
|
||||
Example:
|
||||
|
||||
$ pwd
|
||||
/root
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item reboot
|
||||
|
||||
Instructs the kernel to reboot the system.
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item rm
|
||||
|
||||
Usage: rm [OPTION]... FILE...
|
||||
|
||||
Remove (unlink) the FILE(s).
|
||||
|
||||
Options:
|
||||
|
||||
-f remove existing destinations, never prompt
|
||||
-r or -R remove the contents of directories recursively
|
||||
|
||||
Example:
|
||||
|
||||
$ rm -rf /tmp/foo
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item rmdir
|
||||
|
||||
Usage: rmdir [OPTION]... DIRECTORY...
|
||||
|
||||
Remove the DIRECTORY(ies), if they are empty.
|
||||
|
||||
Example:
|
||||
|
||||
# rmdir /tmp/foo
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item rmmod
|
||||
|
||||
Usage: rmmod [OPTION]... [MODULE]...
|
||||
|
||||
Unloads the specified kernel modules from the kernel.
|
||||
|
||||
Options:
|
||||
|
||||
-a Try to remove all unused kernel modules.
|
||||
|
||||
Example:
|
||||
|
||||
$ rmmod tulip
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item sed
|
||||
|
||||
Usage: sed [-n] -e script [file...]
|
||||
|
||||
Allowed sed scripts come in the following form:
|
||||
|
||||
'ADDR [!] COMMAND'
|
||||
|
||||
where address ADDR can be:
|
||||
NUMBER Match specified line number
|
||||
$ Match last line
|
||||
/REGEXP/ Match specified regexp
|
||||
(! inverts the meaning of the match)
|
||||
|
||||
and COMMAND can be:
|
||||
s/regexp/replacement/[igp]
|
||||
which attempt to match regexp against the pattern space
|
||||
and if successful replaces the matched portion with replacement.
|
||||
|
||||
aTEXT
|
||||
which appends TEXT after the pattern space
|
||||
|
||||
Options:
|
||||
|
||||
-e add the script to the commands to be executed
|
||||
-n suppress automatic printing of pattern space
|
||||
|
||||
This version of sed matches full regular expresions.
|
||||
|
||||
Example:
|
||||
|
||||
$ echo "foo" | sed -e 's/f[a-zA-Z]o/bar/g'
|
||||
bar
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item sh
|
||||
|
||||
FIXME
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item sfdisk
|
||||
|
||||
Usage: sfdisk [options] device ...
|
||||
|
||||
device: something like /dev/hda or /dev/sda
|
||||
|
||||
useful options:
|
||||
|
||||
-s [or --show-size]: list size of a partition
|
||||
-c [or --id]: print or change partition Id
|
||||
-l [or --list]: list partitions of each device
|
||||
-d [or --dump]: idem, but in a format suitable for later input
|
||||
-i [or --increment]: number cylinders etc. from 1 instead of from 0
|
||||
-uS, -uB, -uC, -uM: accept/report in units of sectors/blocks/cylinders/MB
|
||||
-T [or --list-types]:list the known partition types
|
||||
-D [or --DOS]: for DOS-compatibility: waste a little space
|
||||
-R [or --re-read]: make kernel reread partition table
|
||||
-N# : change only the partition with number #
|
||||
-n : do not actually write to disk
|
||||
-O file : save the sectors that will be overwritten to file
|
||||
-I file : restore these sectors again
|
||||
-v [or --version]: print version
|
||||
-? [or --help]: print this message
|
||||
|
||||
dangerous options:
|
||||
|
||||
-g [or --show-geometry]: print the kernel's idea of the geometry
|
||||
-x [or --show-extended]: also list extended partitions on output
|
||||
|
||||
or expect descriptors for them on input
|
||||
-L [or --Linux]: do not complain about things irrelevant for Linux
|
||||
-q [or --quiet]: suppress warning messages
|
||||
You can override the detected geometry using:
|
||||
-C# [or --cylinders #]:set the number of cylinders to use
|
||||
-H# [or --heads #]: set the number of heads to use
|
||||
-S# [or --sectors #]: set the number of sectors to use
|
||||
|
||||
You can disable all consistency checking with:
|
||||
|
||||
-f [or --force]: do what I say, even if it is stupid
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item sleep
|
||||
|
||||
Usage: sleep N
|
||||
|
||||
Pause for N seconds.
|
||||
|
||||
Example:
|
||||
|
||||
$ sleep 2
|
||||
[2 second delay results]
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item sort
|
||||
|
||||
Usage: sort [-n] [-r] [FILE]...
|
||||
|
||||
Sorts lines of text in the specified files
|
||||
|
||||
Example:
|
||||
|
||||
$ echo -e "e\nf\nb\nd\nc\na" | sort
|
||||
a
|
||||
b
|
||||
c
|
||||
d
|
||||
e
|
||||
f
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item sync
|
||||
|
||||
Usage: sync
|
||||
|
||||
Write all buffered filesystem blocks to disk.
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item syslogd
|
||||
|
||||
-------------------------------
|
||||
Usage: syslogd [OPTION]...
|
||||
|
||||
=item logger
|
||||
Linux system and kernel (provides klogd) logging utility.
|
||||
Note that this version of syslogd/klogd ignores /etc/syslog.conf.
|
||||
|
||||
-------------------------------
|
||||
Options:
|
||||
|
||||
=item logname
|
||||
-m Change the mark timestamp interval. default=20min. 0=off
|
||||
-n Do not fork into the background (for when run by init)
|
||||
-K Do not start up the klogd process (by default syslogd spawns klogd).
|
||||
-O Specify an alternate log file. default=/var/log/messages
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item swapon
|
||||
|
||||
Usage: swapon [OPTION] [device]
|
||||
|
||||
Start swapping virtual memory pages on the given device.
|
||||
|
||||
Options:
|
||||
|
||||
-a Start swapping on all swap devices
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item swapoff
|
||||
|
||||
Usage: swapoff [OPTION] [device]
|
||||
|
||||
Stop swapping virtual memory pages on the given device.
|
||||
|
||||
Options:
|
||||
|
||||
-a Stop swapping on all swap devices
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item tail
|
||||
|
||||
Usage: tail [OPTION] [FILE]...
|
||||
|
||||
Print last 10 lines of each FILE to standard output.
|
||||
With more than one FILE, precede each with a header giving the
|
||||
file name. With no FILE, or when FILE is -, read standard input.
|
||||
|
||||
Options:
|
||||
|
||||
-n NUM Print last NUM lines instead of first 10
|
||||
-f Output data as the file grows. This version
|
||||
of 'tail -f' supports only one file at a time.
|
||||
|
||||
Example:
|
||||
|
||||
$ tail -n 1 /etc/resolv.conf
|
||||
nameserver 10.0.0.1
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item tar
|
||||
|
||||
Usage: tar -[cxtvO] [--exclude File] [-f tarFile] [FILE] ...
|
||||
|
||||
Create, extract, or list files from a tar file. Note that
|
||||
this version of tar treats hard links as separate files.
|
||||
|
||||
Main operation mode:
|
||||
|
||||
c create
|
||||
x extract
|
||||
t list
|
||||
|
||||
File selection:
|
||||
|
||||
f name of tarfile or "-" for stdin
|
||||
O extract to stdout
|
||||
--exclude file to exclude
|
||||
|
||||
Informative output:
|
||||
|
||||
v verbosely list files processed
|
||||
|
||||
Example:
|
||||
|
||||
$ zcat /tmp/tarball.tar.gz | tar -xf -
|
||||
$ tar -cf /tmp/tarball.tar /usr/local
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item test, [
|
||||
|
||||
Usage: test EXPRESSION
|
||||
or [ EXPRESSION ]
|
||||
|
||||
Checks file types and compares values returning an exit
|
||||
code determined by the value of EXPRESSION.
|
||||
|
||||
Example:
|
||||
|
||||
$ test 1 -eq 2
|
||||
$ echo $?
|
||||
1
|
||||
$ test 1 -eq 1
|
||||
$ echo $?
|
||||
0
|
||||
$ [ -d /etc ]
|
||||
$ echo $?
|
||||
0
|
||||
$ [ -d /junk ]
|
||||
$ echo $?
|
||||
1
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item tee
|
||||
|
||||
Usage: tee [OPTION]... [FILE]...
|
||||
|
||||
Copy standard input to each FILE, and also to standard output.
|
||||
|
||||
Options:
|
||||
|
||||
-a append to the given FILEs, do not overwrite
|
||||
|
||||
Example:
|
||||
|
||||
$ echo "Hello" | tee /tmp/foo
|
||||
$ cat /tmp/foo
|
||||
Hello
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item touch
|
||||
|
||||
Usage: touch [-c] file [file ...]
|
||||
|
||||
Update the last-modified date on (or create) the selected file[s].
|
||||
|
||||
Example:
|
||||
|
||||
$ ls -l /tmp/foo
|
||||
/bin/ls: /tmp/foo: No such file or directory
|
||||
$ touch /tmp/foo
|
||||
$ ls -l /tmp/foo
|
||||
-rw-rw-r-- 1 andersen andersen 0 Apr 15 01:11 /tmp/foo
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item tr
|
||||
|
||||
Usage: tr [-csu] string1 string2
|
||||
tr [-cu] -d string1
|
||||
tr [-cu] -s string1
|
||||
tr [-cu] -ds string1 string2
|
||||
|
||||
Translate, squeeze, and/or delete characters from standard
|
||||
input, writing to standard output.
|
||||
|
||||
Example:
|
||||
|
||||
$ echo "gdkkn vnqkc" | tr [a-y] [b-z]
|
||||
hello world
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item true
|
||||
|
||||
Returns an exit code of TRUE (0)
|
||||
|
||||
Example:
|
||||
|
||||
$ true
|
||||
$ echo $?
|
||||
0
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item tty
|
||||
|
||||
FIXME
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item umount
|
||||
|
||||
FIXME
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item uname
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item uptime
|
||||
FIXME
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item uniq
|
||||
|
||||
FIXME
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item update
|
||||
|
||||
FIXME
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item uptime
|
||||
|
||||
FIXME
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item usleep
|
||||
|
||||
FIXME
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item wc
|
||||
|
||||
FIXME
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item whoami
|
||||
|
||||
FIXME
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item yes
|
||||
|
||||
FIXME
|
||||
|
||||
-------------------------------
|
||||
|
||||
=item zcat
|
||||
|
||||
FIXME
|
||||
|
||||
-------------------------------
|
||||
|
||||
=back
|
||||
@ -1046,4 +1675,4 @@ Enrique Zanardi <ezanardi@ull.es>
|
||||
|
||||
=cut
|
||||
|
||||
# $Id: busybox.pod,v 1.9 2000/04/13 23:44:04 beppu Exp $
|
||||
# $Id: busybox.pod,v 1.10 2000/04/15 16:34:54 erik Exp $
|
||||
|
2
gzip.c
2
gzip.c
@ -41,7 +41,7 @@
|
||||
static const char gzip_usage[] =
|
||||
"gzip [OPTION]... FILE\n\n"
|
||||
"Compress FILE with maximum compression.\n"
|
||||
"When FILE is -, reads standard input. Implies -c.\n\n"
|
||||
"When FILE is '-', reads standard input. Implies -c.\n\n"
|
||||
|
||||
"Options:\n"
|
||||
"\t-c\tWrite output to standard output instead of FILE.gz\n";
|
||||
|
19
makedevs.c
19
makedevs.c
@ -17,10 +17,18 @@
|
||||
#include <sys/stat.h>
|
||||
|
||||
static const char makedevs_usage[] =
|
||||
"makedevs 0.01 -- Create an entire range of device files\n\n"
|
||||
"\tmakedevs /dev/ttyS c 4 64 0 63 (ttyS0-ttyS63)\n"
|
||||
|
||||
"\tmakedevs /dev/hda b 3 0 0 8 s (hda,hda1-hda8)\n";
|
||||
"makedevs NAME TYPE MAJOR MINOR FIRST LAST [s]\n\n"
|
||||
"Creates a range of block or character special files\n\n"
|
||||
"TYPEs include:\n"
|
||||
"\tb:\tMake a block (buffered) device.\n"
|
||||
"\tc or u:\tMake a character (un-buffered) device.\n"
|
||||
"\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes.\n\n"
|
||||
"FIRST specifies the number appended to NAME to create the first device.\n"
|
||||
"LAST specifies the number of the last item that should be created.\n"
|
||||
"If 's' is the last argument, the base device is created as well.\n\n"
|
||||
"For example:\n"
|
||||
"\tmakedevs /dev/ttyS c 4 66 2 63 -> ttyS2-ttyS63\n"
|
||||
"\tmakedevs /dev/hda b 3 0 0 8 s -> hda,hda1-hda8\n";
|
||||
|
||||
int makedevs_main(int argc, char **argv)
|
||||
{
|
||||
@ -38,6 +46,9 @@ int makedevs_main(int argc, char **argv)
|
||||
char devname[255];
|
||||
char buf[255];
|
||||
|
||||
if (argc < 7 || *argv[1]=='-')
|
||||
usage(makedevs_usage);
|
||||
|
||||
switch (type[0]) {
|
||||
case 'c':
|
||||
mode = S_IFCHR;
|
||||
|
21
math.c
21
math.c
@ -7,7 +7,10 @@
|
||||
|
||||
/* Tiny RPN calculator, because "expr" didn't give me bitwise operations. */
|
||||
|
||||
static const char math_usage[] = "math expression ...";
|
||||
static const char math_usage[] = "math expression ...\n\n"
|
||||
"This is a Tiny RPN calculator that understands the\n"
|
||||
"following operations: +, -, /, *, and, or, not, eor.\n"
|
||||
"i.e. 'math 2 2 add' -> 4, and 'math 8 8 \\* 2 2 + /' -> 16\n";
|
||||
|
||||
static double stack[100];
|
||||
static unsigned int pointer;
|
||||
@ -85,14 +88,14 @@ struct op {
|
||||
};
|
||||
|
||||
static const struct op operators[] = {
|
||||
{"add", add},
|
||||
{"+", add},
|
||||
{"-", sub},
|
||||
{"*", mul},
|
||||
{"/", divide},
|
||||
{"and", and},
|
||||
{"div", divide},
|
||||
{"eor", eor},
|
||||
{"mul", mul},
|
||||
{"not", not},
|
||||
{"or", or},
|
||||
{"sub", sub},
|
||||
{"not", not},
|
||||
{"eor", eor},
|
||||
{0, 0}
|
||||
};
|
||||
|
||||
@ -127,11 +130,13 @@ static void stack_machine(const char *argument)
|
||||
|
||||
int math_main(int argc, char **argv)
|
||||
{
|
||||
if (argc < 1 || *argv[1]=='-')
|
||||
usage(math_usage);
|
||||
while (argc >= 2) {
|
||||
stack_machine(argv[1]);
|
||||
argv++;
|
||||
argc--;
|
||||
}
|
||||
stack_machine(0);
|
||||
return 0;
|
||||
exit( TRUE);
|
||||
}
|
||||
|
@ -17,10 +17,18 @@
|
||||
#include <sys/stat.h>
|
||||
|
||||
static const char makedevs_usage[] =
|
||||
"makedevs 0.01 -- Create an entire range of device files\n\n"
|
||||
"\tmakedevs /dev/ttyS c 4 64 0 63 (ttyS0-ttyS63)\n"
|
||||
|
||||
"\tmakedevs /dev/hda b 3 0 0 8 s (hda,hda1-hda8)\n";
|
||||
"makedevs NAME TYPE MAJOR MINOR FIRST LAST [s]\n\n"
|
||||
"Creates a range of block or character special files\n\n"
|
||||
"TYPEs include:\n"
|
||||
"\tb:\tMake a block (buffered) device.\n"
|
||||
"\tc or u:\tMake a character (un-buffered) device.\n"
|
||||
"\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes.\n\n"
|
||||
"FIRST specifies the number appended to NAME to create the first device.\n"
|
||||
"LAST specifies the number of the last item that should be created.\n"
|
||||
"If 's' is the last argument, the base device is created as well.\n\n"
|
||||
"For example:\n"
|
||||
"\tmakedevs /dev/ttyS c 4 66 2 63 -> ttyS2-ttyS63\n"
|
||||
"\tmakedevs /dev/hda b 3 0 0 8 s -> hda,hda1-hda8\n";
|
||||
|
||||
int makedevs_main(int argc, char **argv)
|
||||
{
|
||||
@ -38,6 +46,9 @@ int makedevs_main(int argc, char **argv)
|
||||
char devname[255];
|
||||
char buf[255];
|
||||
|
||||
if (argc < 7 || *argv[1]=='-')
|
||||
usage(makedevs_usage);
|
||||
|
||||
switch (type[0]) {
|
||||
case 'c':
|
||||
mode = S_IFCHR;
|
||||
|
@ -4,7 +4,8 @@
|
||||
#include <sys/mtio.h>
|
||||
#include <sys/fcntl.h>
|
||||
|
||||
static const char mt_usage[] = "mt [-f device] opcode value\n";
|
||||
static const char mt_usage[] = "mt [-f device] opcode value\n\n"
|
||||
"Control magnetic tape drive operation\n";
|
||||
|
||||
struct mt_opcodes {
|
||||
char *name;
|
||||
@ -57,6 +58,10 @@ extern int mt_main(int argc, char **argv)
|
||||
struct mtop op;
|
||||
int fd;
|
||||
|
||||
if ((argc != 2 && argc != 3) || **(argv + 1) == '-') {
|
||||
usage(mt_usage);
|
||||
}
|
||||
|
||||
if (strcmp(argv[1], "-f") == 0) {
|
||||
if (argc < 4) {
|
||||
usage(mt_usage);
|
||||
@ -74,7 +79,7 @@ extern int mt_main(int argc, char **argv)
|
||||
|
||||
if (code->name == 0) {
|
||||
fprintf(stderr, "mt: unrecognized opcode %s.\n", argv[1]);
|
||||
return (FALSE);
|
||||
exit (FALSE);
|
||||
}
|
||||
|
||||
op.mt_op = code->value;
|
||||
@ -85,13 +90,13 @@ extern int mt_main(int argc, char **argv)
|
||||
|
||||
if ((fd = open(file, O_RDONLY, 0)) < 0) {
|
||||
perror(file);
|
||||
return (FALSE);
|
||||
exit (FALSE);
|
||||
}
|
||||
|
||||
if (ioctl(fd, MTIOCTOP, &op) != 0) {
|
||||
perror(file);
|
||||
return (FALSE);
|
||||
exit (FALSE);
|
||||
}
|
||||
|
||||
return (TRUE);
|
||||
exit (TRUE);
|
||||
}
|
||||
|
4
mkfifo.c
4
mkfifo.c
@ -27,10 +27,10 @@
|
||||
#include <errno.h>
|
||||
|
||||
static const char mkfifo_usage[] = "mkfifo [OPTIONS] name\n\n"
|
||||
"Create the named fifo\n\n"
|
||||
"Creates a named pipe (identical to 'mknod name p')\n\n"
|
||||
|
||||
"Options:\n"
|
||||
"\t-m\tcreate the fifo with the specified mode; default = a=rw-umask\n";
|
||||
"\t-m\tcreate the pipe using the specified mode (default a=rw)\n";
|
||||
|
||||
extern int mkfifo_main(int argc, char **argv)
|
||||
{
|
||||
|
53
mknod.c
53
mknod.c
@ -28,23 +28,47 @@
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
static const char mknod_usage[] = "mknod NAME TYPE MAJOR MINOR\n\n"
|
||||
"Make block or character special files.\n\n"
|
||||
static const char mknod_usage[] = "mknod [OPTIONS] NAME TYPE MAJOR MINOR\n\n"
|
||||
"Create a special file (block, character, or pipe).\n\n"
|
||||
"Options:\n"
|
||||
"\t-m\tcreate the special file using the specified mode (default a=rw)\n\n"
|
||||
"TYPEs include:\n"
|
||||
"\tb:\tMake a block (buffered) device.\n"
|
||||
|
||||
"\tc or u:\tMake a character (un-buffered) device.\n"
|
||||
"\tp:\tMake a named pipe. Major and minor are ignored for named pipes.\n";
|
||||
"\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes.\n";
|
||||
|
||||
int mknod_main(int argc, char **argv)
|
||||
{
|
||||
char *thisarg;
|
||||
mode_t mode = 0;
|
||||
mode_t perm = 0666;
|
||||
dev_t dev = 0;
|
||||
|
||||
if (argc != 5 || **(argv + 1) == '-') {
|
||||
argc--;
|
||||
argv++;
|
||||
|
||||
/* Parse any options */
|
||||
while (argc > 1) {
|
||||
if (**argv != '-')
|
||||
break;
|
||||
thisarg = *argv;
|
||||
thisarg++;
|
||||
switch (*thisarg) {
|
||||
case 'm':
|
||||
argc--;
|
||||
argv++;
|
||||
parse_mode(*argv, &perm);
|
||||
break;
|
||||
default:
|
||||
usage(mknod_usage);
|
||||
}
|
||||
switch (argv[2][0]) {
|
||||
argc--;
|
||||
argv++;
|
||||
}
|
||||
if (argc != 4 && argc != 2) {
|
||||
usage(mknod_usage);
|
||||
}
|
||||
switch (argv[1][0]) {
|
||||
case 'c':
|
||||
case 'u':
|
||||
mode = S_IFCHR;
|
||||
@ -54,23 +78,22 @@ int mknod_main(int argc, char **argv)
|
||||
break;
|
||||
case 'p':
|
||||
mode = S_IFIFO;
|
||||
if (argc!=2) {
|
||||
usage(mknod_usage);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
usage(mknod_usage);
|
||||
}
|
||||
|
||||
if (mode == S_IFCHR || mode == S_IFBLK) {
|
||||
dev = (atoi(argv[3]) << 8) | atoi(argv[4]);
|
||||
if (argc != 5) {
|
||||
usage(mknod_usage);
|
||||
}
|
||||
dev = (atoi(argv[2]) << 8) | atoi(argv[1]);
|
||||
}
|
||||
|
||||
mode |= 0666;
|
||||
mode |= perm;
|
||||
|
||||
if (mknod(argv[1], mode, dev) != 0) {
|
||||
perror(argv[1]);
|
||||
exit (FALSE);
|
||||
}
|
||||
if (mknod(argv[0], mode, dev) != 0)
|
||||
fatalError("%s: %s\n", argv[0], strerror(errno));
|
||||
exit (TRUE);
|
||||
}
|
||||
|
||||
|
6
mnc.c
6
mnc.c
@ -56,11 +56,11 @@ int mnc_main(int argc, char **argv)
|
||||
|
||||
fd_set readfds, testfds;
|
||||
|
||||
if (argc <= 1 || **(argv + 1) == '-') {
|
||||
usage(mnc_usage);
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
if (argc < 2 || **(argv + 1) == '-') {
|
||||
usage(mnc_usage);
|
||||
}
|
||||
|
||||
sfd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
|
||||
|
15
mt.c
15
mt.c
@ -4,7 +4,8 @@
|
||||
#include <sys/mtio.h>
|
||||
#include <sys/fcntl.h>
|
||||
|
||||
static const char mt_usage[] = "mt [-f device] opcode value\n";
|
||||
static const char mt_usage[] = "mt [-f device] opcode value\n\n"
|
||||
"Control magnetic tape drive operation\n";
|
||||
|
||||
struct mt_opcodes {
|
||||
char *name;
|
||||
@ -57,6 +58,10 @@ extern int mt_main(int argc, char **argv)
|
||||
struct mtop op;
|
||||
int fd;
|
||||
|
||||
if ((argc != 2 && argc != 3) || **(argv + 1) == '-') {
|
||||
usage(mt_usage);
|
||||
}
|
||||
|
||||
if (strcmp(argv[1], "-f") == 0) {
|
||||
if (argc < 4) {
|
||||
usage(mt_usage);
|
||||
@ -74,7 +79,7 @@ extern int mt_main(int argc, char **argv)
|
||||
|
||||
if (code->name == 0) {
|
||||
fprintf(stderr, "mt: unrecognized opcode %s.\n", argv[1]);
|
||||
return (FALSE);
|
||||
exit (FALSE);
|
||||
}
|
||||
|
||||
op.mt_op = code->value;
|
||||
@ -85,13 +90,13 @@ extern int mt_main(int argc, char **argv)
|
||||
|
||||
if ((fd = open(file, O_RDONLY, 0)) < 0) {
|
||||
perror(file);
|
||||
return (FALSE);
|
||||
exit (FALSE);
|
||||
}
|
||||
|
||||
if (ioctl(fd, MTIOCTOP, &op) != 0) {
|
||||
perror(file);
|
||||
return (FALSE);
|
||||
exit (FALSE);
|
||||
}
|
||||
|
||||
return (TRUE);
|
||||
exit (TRUE);
|
||||
}
|
||||
|
@ -41,7 +41,7 @@
|
||||
| + find out how the real nslookup gets the default name server
|
||||
*/
|
||||
|
||||
static const char nslookup_usage[] = "nslookup [HOST]\n\n";
|
||||
static const char nslookup_usage[] = "nslookup [HOST]\n\nQueries the nameserver for the IP address of the given HOST\n";
|
||||
|
||||
|
||||
/* I have to see how the real nslookup does this.
|
||||
@ -50,8 +50,8 @@ static const char nslookup_usage[] = "nslookup [HOST]\n\n";
|
||||
*/
|
||||
static void server_fprint(FILE * dst)
|
||||
{
|
||||
fprintf(dst, "Server: %s\n", "something");
|
||||
fprintf(dst, "Address: %s\n\n", "something");
|
||||
fprintf(dst, "Server: %s\n", "default");
|
||||
fprintf(dst, "Address: %s\n\n", "default");
|
||||
}
|
||||
|
||||
/* only works for IPv4 */
|
||||
@ -96,9 +96,9 @@ static int addr_list_fprint(char **h_addr_list, FILE * dst)
|
||||
{
|
||||
int i, j;
|
||||
char *addr_string = (h_addr_list[1])
|
||||
? "Addresses" : "Address";
|
||||
? "Addresses: " : "Address: ";
|
||||
|
||||
fprintf(dst, "%s: ", addr_string);
|
||||
fprintf(dst, "%s ", addr_string);
|
||||
for (i = 0, j = 0; h_addr_list[i]; i++, j++) {
|
||||
addr_fprint(h_addr_list[i], dst);
|
||||
|
||||
@ -159,7 +159,7 @@ int nslookup_main(int argc, char **argv)
|
||||
{
|
||||
struct hostent *host;
|
||||
|
||||
if (argc < 2) {
|
||||
if (argc < 2 || *argv[1]=='-') {
|
||||
usage(nslookup_usage);
|
||||
}
|
||||
|
||||
@ -170,7 +170,7 @@ int nslookup_main(int argc, char **argv)
|
||||
host = gethostbyname(argv[1]);
|
||||
}
|
||||
hostent_fprint(host, stdout);
|
||||
return 0;
|
||||
exit( TRUE);
|
||||
}
|
||||
|
||||
/* $Id: nslookup.c,v 1.6 2000/04/13 01:18:56 erik Exp $ */
|
||||
/* $Id: nslookup.c,v 1.7 2000/04/15 16:34:54 erik Exp $ */
|
||||
|
16
nslookup.c
16
nslookup.c
@ -41,7 +41,7 @@
|
||||
| + find out how the real nslookup gets the default name server
|
||||
*/
|
||||
|
||||
static const char nslookup_usage[] = "nslookup [HOST]\n\n";
|
||||
static const char nslookup_usage[] = "nslookup [HOST]\n\nQueries the nameserver for the IP address of the given HOST\n";
|
||||
|
||||
|
||||
/* I have to see how the real nslookup does this.
|
||||
@ -50,8 +50,8 @@ static const char nslookup_usage[] = "nslookup [HOST]\n\n";
|
||||
*/
|
||||
static void server_fprint(FILE * dst)
|
||||
{
|
||||
fprintf(dst, "Server: %s\n", "something");
|
||||
fprintf(dst, "Address: %s\n\n", "something");
|
||||
fprintf(dst, "Server: %s\n", "default");
|
||||
fprintf(dst, "Address: %s\n\n", "default");
|
||||
}
|
||||
|
||||
/* only works for IPv4 */
|
||||
@ -96,9 +96,9 @@ static int addr_list_fprint(char **h_addr_list, FILE * dst)
|
||||
{
|
||||
int i, j;
|
||||
char *addr_string = (h_addr_list[1])
|
||||
? "Addresses" : "Address";
|
||||
? "Addresses: " : "Address: ";
|
||||
|
||||
fprintf(dst, "%s: ", addr_string);
|
||||
fprintf(dst, "%s ", addr_string);
|
||||
for (i = 0, j = 0; h_addr_list[i]; i++, j++) {
|
||||
addr_fprint(h_addr_list[i], dst);
|
||||
|
||||
@ -159,7 +159,7 @@ int nslookup_main(int argc, char **argv)
|
||||
{
|
||||
struct hostent *host;
|
||||
|
||||
if (argc < 2) {
|
||||
if (argc < 2 || *argv[1]=='-') {
|
||||
usage(nslookup_usage);
|
||||
}
|
||||
|
||||
@ -170,7 +170,7 @@ int nslookup_main(int argc, char **argv)
|
||||
host = gethostbyname(argv[1]);
|
||||
}
|
||||
hostent_fprint(host, stdout);
|
||||
return 0;
|
||||
exit( TRUE);
|
||||
}
|
||||
|
||||
/* $Id: nslookup.c,v 1.6 2000/04/13 01:18:56 erik Exp $ */
|
||||
/* $Id: nslookup.c,v 1.7 2000/04/15 16:34:54 erik Exp $ */
|
||||
|
2
printf.c
2
printf.c
@ -139,7 +139,7 @@ static void verify __P((char *s, char *end));
|
||||
/* The value to return to the calling program. */
|
||||
static int exit_status;
|
||||
|
||||
static const char printf_usage[] = "printf format [argument...]\n";
|
||||
static const char printf_usage[] = "printf format [argument...]\n\nFormats and prints the given data.\n";
|
||||
|
||||
int printf_main(int argc, char **argv)
|
||||
{
|
||||
|
4
sort.c
4
sort.c
@ -33,7 +33,7 @@ static const char sort_usage[] = "sort [-n]"
|
||||
#ifdef BB_FEATURE_SORT_REVERSE
|
||||
" [-r]"
|
||||
#endif
|
||||
" [FILE]...\n\n";
|
||||
" [FILE]...\n\nSorts lines of text in the specified files\n";
|
||||
|
||||
#ifdef BB_FEATURE_SORT_REVERSE
|
||||
#define APPLY_REVERSE(x) (reverse ? -(x) : (x))
|
||||
@ -320,4 +320,4 @@ int sort_main(int argc, char **argv)
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/* $Id: sort.c,v 1.13 2000/04/13 01:18:56 erik Exp $ */
|
||||
/* $Id: sort.c,v 1.14 2000/04/15 16:34:54 erik Exp $ */
|
||||
|
8
test.c
8
test.c
@ -1,6 +1,6 @@
|
||||
/* vi: set sw=4 ts=4: */
|
||||
/*
|
||||
* echo implementation for busybox
|
||||
* test implementation for busybox
|
||||
*
|
||||
* Copyright (c) by a whole pile of folks:
|
||||
*
|
||||
@ -185,6 +185,12 @@ test_main(int argc, char** argv)
|
||||
fatalError("missing ]");
|
||||
argv[argc] = NULL;
|
||||
}
|
||||
if (strcmp(argv[1], "--help") == 0) {
|
||||
usage("test EXPRESSION\n"
|
||||
"or [ EXPRESSION ]\n\n"
|
||||
"Checks file types and compares values returning an exit\n"
|
||||
"code determined by the value of EXPRESSION.\n");
|
||||
}
|
||||
|
||||
/* Implement special cases from POSIX.2, section 4.62.4 */
|
||||
switch (argc) {
|
||||
|
14
tr.c
14
tr.c
@ -44,7 +44,7 @@ static char sccsid[] = "@(#)tr.c 8.2 (Berkeley) 5/4/95";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
|
||||
"$Id: tr.c,v 1.2 2000/03/21 22:32:57 erik Exp $";
|
||||
"$Id: tr.c,v 1.3 2000/04/15 16:34:54 erik Exp $";
|
||||
#endif /* not lint */
|
||||
#endif /* #if 0 */
|
||||
|
||||
@ -138,12 +138,12 @@ int cflag;
|
||||
|
||||
static void tr_usage()
|
||||
{
|
||||
(void) fprintf(stderr, "%s\n%s\n%s\n%s\n",
|
||||
"usage: tr [-csu] string1 string2",
|
||||
" tr [-cu] -d string1",
|
||||
" tr [-cu] -s string1",
|
||||
" tr [-cu] -ds string1 string2");
|
||||
exit(1);
|
||||
usage( "\ttr [-csu] string1 string2\n"
|
||||
"\ttr [-cu] -d string1\n"
|
||||
"\ttr [-cu] -s string1\n"
|
||||
"\ttr [-cu] -ds string1 string2\n\n"
|
||||
"Translate, squeeze, and/or delete characters from standard\n"
|
||||
"input, writing to standard output.\n");
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user