From 9cf3bfa7c1bf3ad959c61711c9a5ac1969149300 Mon Sep 17 00:00:00 2001 From: Erik Andersen Date: Thu, 13 Apr 2000 18:49:43 +0000 Subject: [PATCH] More doc updates for BusyBox, with fixes to apps for bugs revealed while trying to write docs . :-) -Erik --- Changelog | 6 +- Makefile | 8 +- basename.c | 4 +- busybox.def.h | 2 +- coreutils/basename.c | 4 +- coreutils/dirname.c | 163 ++---- coreutils/echo.c | 11 + coreutils/ls.c | 35 +- coreutils/mknod.c | 4 +- dirname.c | 163 ++---- docs/CommandList | 1025 -------------------------------------- docs/Makefile | 22 + docs/busybox.pod | 745 ++++++++++++++++----------- dutmp.c | 7 +- echo.c | 11 + fbset.c | 9 +- fdflush.c | 4 +- find.c | 6 +- findutils/find.c | 6 +- freeramdisk.c | 8 +- ls.c | 35 +- miscutils/dutmp.c | 7 +- mknod.c | 4 +- mount.c | 2 - networking/ping.c | 12 +- ping.c | 12 +- util-linux/fbset.c | 9 +- util-linux/fdflush.c | 4 +- util-linux/freeramdisk.c | 8 +- util-linux/mount.c | 2 - 30 files changed, 680 insertions(+), 1658 deletions(-) delete mode 100644 docs/CommandList create mode 100644 docs/Makefile diff --git a/Changelog b/Changelog index 4227a7822..9496d5fbb 100644 --- a/Changelog +++ b/Changelog @@ -10,18 +10,18 @@ provides. To enable this, turn on BB_FEATURE_USE_DEVPS_PATCH and patch your kernel with the devps patch in the kernel-patches/ directory. - * Wrote basename, killall, and uptime. + * Wrote basename, dirname, killall, and uptime. * tar has been completely rewritten by me. Both tar creation and extraction are now well behaved. Costs 7.6k with all optional tar features enabled, and 5k for just tar extraction support. * Added freeramdisk, which will free up all memory associated with a ram disk. Contributed by Emanuele Caratti and then adjusted a bit by me. - * Added tr and dirname from John Lombardo + * Added tr from John Lombardo * Added echo and test (from me). * Added usleep contributed by Nicolas Pitre * Several fixes from Pavel Roskin : - - When `tail' fails to open a file it now exits. + - When `tail' fails to open a file it now exits. - When `syslogd' is given the `-n' option it should still use fork() for running klogd. * nslookup types are now changed to u_int32_t (instead of uint32_t) diff --git a/Makefile b/Makefile index 1f03754f9..e2d98549f 100644 --- a/Makefile +++ b/Makefile @@ -25,7 +25,7 @@ BUILDTIME := $(shell TZ=UTC date --utc "+%Y.%m.%d-%H:%M%z") # Set the following to `true' to make a debuggable build. # Leave this set to `false' for production use. # eg: `make DODEBUG=true tests' -DODEBUG = false +DODEBUG = true # If you want a static binary, turn this on. DOSTATIC = false @@ -94,7 +94,7 @@ ifdef BB_INIT_SCRIPT CFLAGS += -DINIT_SCRIPT='"$(BB_INIT_SCRIPT)"' endif -all: busybox busybox.links +all: busybox busybox.links docs .PHONY: all busybox: $(OBJECTS) @@ -104,6 +104,9 @@ busybox: $(OBJECTS) busybox.links: busybox.def.h - ./busybox.mkll | sort >$@ +docs: docs/busybox.pod + cd docs && $(MAKE) clean all + regexp.o nfsmount.o: %.o: %.h $(OBJECTS): %.o: busybox.def.h internal.h %.c @@ -128,6 +131,7 @@ install: busybox busybox.links .PHONY: dist release dist release: distclean + cd docs && $(MAKE) clean all cd ..; \ rm -rf busybox-$(VERSION); \ cp -a busybox busybox-$(VERSION); \ diff --git a/basename.c b/basename.c index 06e27663f..5fe5e0f03 100644 --- a/basename.c +++ b/basename.c @@ -34,8 +34,10 @@ extern int basename_main(int argc, char **argv) argv++; s1=*argv+strlen(*argv)-1; - if (*s1 == '/') + while (s1 && *s1 == '/') { *s1 = '\0'; + s1=*argv+strlen(*argv)-1; + } s = strrchr(*argv, '/'); printf("%s\n", (s)? s + 1 : *argv); exit(TRUE); diff --git a/busybox.def.h b/busybox.def.h index 647ed9ba4..1952dd377 100644 --- a/busybox.def.h +++ b/busybox.def.h @@ -194,7 +194,7 @@ //#define BB_FEATURE_SH_TAB_COMPLETION // //Turn on extra fbset options -#define BB_FEATURE_FBSET_FANCY +//#define BB_FEATURE_FBSET_FANCY // // // End of Features List diff --git a/coreutils/basename.c b/coreutils/basename.c index 06e27663f..5fe5e0f03 100644 --- a/coreutils/basename.c +++ b/coreutils/basename.c @@ -34,8 +34,10 @@ extern int basename_main(int argc, char **argv) argv++; s1=*argv+strlen(*argv)-1; - if (*s1 == '/') + while (s1 && *s1 == '/') { *s1 = '\0'; + s1=*argv+strlen(*argv)-1; + } s = strrchr(*argv, '/'); printf("%s\n", (s)? s + 1 : *argv); exit(TRUE); diff --git a/coreutils/dirname.c b/coreutils/dirname.c index 77cb664ac..528b89a56 100644 --- a/coreutils/dirname.c +++ b/coreutils/dirname.c @@ -1,146 +1,45 @@ /* vi: set sw=4 ts=4: */ /* - * This is temporary -- needs to be rewritten to be tighter */ -/* - * Copyright (c) 1991, 1993, 1994 - * The Regents of the University of California. All rights reserved. + * Mini dirname implementation for busybox * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. + * Copyright (C) 2000 by Lineo, inc. + * Written by Erik Andersen , + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. */ - -#if 0 -#ifndef lint -static char copyright[] = "@(#) Copyright (c) 1991, 1993, 1994\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -static char sccsid[] = "@(#)dirname.c 8.4 (Berkeley) 5/4/95"; -#endif /* not lint */ -#endif /* #if 0 */ - #include "internal.h" #include -#include -#include -void dirname_usage() +extern int dirname_main(int argc, char **argv) { + char* s; - (void) fprintf(stderr, "usage: dirname path\n"); - exit(1); -} - -extern int dirname_main(argc, argv) -int argc; -char **argv; -{ - char *p; - int ch; - - while ((ch = getopt(argc, argv, "")) != -1) - switch (ch) { - case '?': - default: - dirname_usage(); - } - argc -= optind; - argv += optind; - - if (argc != 1) - dirname_usage(); - - /* - * (1) If string is //, skip steps (2) through (5). - * (2) If string consists entirely of slash characters, string - * shall be set to a single slash character. In this case, - * skip steps (3) through (8). - */ - for (p = *argv;; ++p) { - if (!*p) { - if (p > *argv) - (void) printf("/\n"); - else - (void) printf(".\n"); - exit(0); - } - if (*p != '/') - break; + if ((argc < 2) || (**(argv + 1) == '-')) { + usage("dirname [file ...]\n"); } + argv++; - /* - * (3) If there are any trailing slash characters in string, they - * shall be removed. - */ - for (; *p; ++p); - while (*--p == '/') - continue; - *++p = '\0'; - - /* - * (4) If there are no slash characters remaining in string, - * string shall be set to a single period character. In this - * case skip steps (5) through (8). - * - * (5) If there are any trailing nonslash characters in string, - * they shall be removed. - */ - while (--p >= *argv) - if (*p == '/') - break; - ++p; - if (p == *argv) { - (void) printf(".\n"); - exit(0); + s=*argv+strlen(*argv)-1; + while (s && *s == '/') { + *s = '\0'; + s=*argv+strlen(*argv)-1; } - - /* - * (6) If the remaining string is //, it is implementation defined - * whether steps (7) and (8) are skipped or processed. - * - * This case has already been handled, as part of steps (1) and (2). - */ - - /* - * (7) If there are any trailing slash characters in string, they - * shall be removed. - */ - while (--p >= *argv) - if (*p != '/') - break; - ++p; - - /* - * (8) If the remaining string is empty, string shall be set to - * a single slash character. - */ - *p = '\0'; - (void) printf("%s\n", p == *argv ? "/" : *argv); - exit(0); + s = strrchr(*argv, '/'); + if (s && *s) + *s = '\0'; + printf("%s\n", (s)? *argv : "."); + exit(TRUE); } diff --git a/coreutils/echo.c b/coreutils/echo.c index 91f17aa0f..2405d0ae1 100644 --- a/coreutils/echo.c +++ b/coreutils/echo.c @@ -25,6 +25,14 @@ #include "internal.h" #include +static const char uname_usage[] = + "echo [-neE] [ARG ...]\n\n" + "Prints the specified ARGs to stdout\n\n" + "Options:\n" + "\t-n\tsuppress trailing newline\n" + "\t-e\tinterpret backslash-escaped characters (i.e. \\t=tab etc)\n" + "\t-E\tdisable interpretation of backslash-escaped characters\n"; + extern int echo_main(int argc, char** argv) { @@ -45,6 +53,9 @@ echo_main(int argc, char** argv) } else if (strcmp(p, "-E")==0) { eflag = 0; } + else if (strncmp(p, "--", 2)==0) { + usage( uname_usage); + } else break; ap++; } diff --git a/coreutils/ls.c b/coreutils/ls.c index 3e010503c..0c7f6522c 100644 --- a/coreutils/ls.c +++ b/coreutils/ls.c @@ -88,7 +88,6 @@ #define DISP_FULLTIME 32 /* show extended time display */ #define DIR_NOLIST 64 /* show directory as itself, not contents */ #define DISP_DIRNAME 128 /* show directory name (for internal use) */ -#define DIR_RECURSE 256 /* -R (not yet implemented) */ #ifndef MAJOR #define MAJOR(dev) (((dev)>>8)&0xff) @@ -450,10 +449,33 @@ static const char ls_usage[] = "ls [-1a" #ifdef BB_FEATURE_LS_FILETYPES "F" #endif -#ifdef FEATURE_RECURSIVE - "R" + "] [filenames...]\n\n" + "Options:\n" + "\t-a\tdo not hide entries starting with .\n" +#ifdef BB_FEATURE_LS_TIMESTAMPS + "\t-c\twith -l: show ctime (the time of last\n" + "\t\tmodification of file status information)\n" #endif - "] [filenames...]\n"; + "\t-d\tlist directory entries instead of contents\n" +#ifdef BB_FEATURE_LS_TIMESTAMPS + "\t-e\tlist both full date and full time\n" +#endif + "\t-l\tuse a long listing format\n" + "\t-n\tlist numeric UIDs and GIDs instead of names\n" +#ifdef BB_FEATURE_LS_FILETYPES + "\t-p\tappend indicator (one of /=@|) to entries\n" +#endif +#ifdef BB_FEATURE_LS_TIMESTAMPS + "\t-u\twith -l: show access time (the time of last\n" + "\t\taccess of the file)\n" +#endif + "\t-x\tlist entries by lines instead of by columns\n" + "\t-A\tdo not list implied . and ..\n" + "\t-C\tlist entries by columns\n" +#ifdef BB_FEATURE_LS_FILETYPES + "\t-F\tappend indicator (one of */=@|) to entries\n" +#endif + ; extern int ls_main(int argc, char **argv) { @@ -508,11 +530,6 @@ extern int ls_main(int argc, char **argv) case 'd': opts |= DIR_NOLIST; break; -#ifdef FEATURE_RECURSIVE - case 'R': - opts |= DIR_RECURSE; - break; -#endif #ifdef BB_FEATURE_LS_TIMESTAMPS case 'u': time_fmt = TIME_ACCESS; diff --git a/coreutils/mknod.c b/coreutils/mknod.c index b11a81f2a..40f508d33 100644 --- a/coreutils/mknod.c +++ b/coreutils/mknod.c @@ -70,7 +70,7 @@ int mknod_main(int argc, char **argv) if (mknod(argv[1], mode, dev) != 0) { perror(argv[1]); - return (FALSE); + exit (FALSE); } - return (TRUE); + exit (TRUE); } diff --git a/dirname.c b/dirname.c index 77cb664ac..528b89a56 100644 --- a/dirname.c +++ b/dirname.c @@ -1,146 +1,45 @@ /* vi: set sw=4 ts=4: */ /* - * This is temporary -- needs to be rewritten to be tighter */ -/* - * Copyright (c) 1991, 1993, 1994 - * The Regents of the University of California. All rights reserved. + * Mini dirname implementation for busybox * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. + * Copyright (C) 2000 by Lineo, inc. + * Written by Erik Andersen , + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. */ - -#if 0 -#ifndef lint -static char copyright[] = "@(#) Copyright (c) 1991, 1993, 1994\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -static char sccsid[] = "@(#)dirname.c 8.4 (Berkeley) 5/4/95"; -#endif /* not lint */ -#endif /* #if 0 */ - #include "internal.h" #include -#include -#include -void dirname_usage() +extern int dirname_main(int argc, char **argv) { + char* s; - (void) fprintf(stderr, "usage: dirname path\n"); - exit(1); -} - -extern int dirname_main(argc, argv) -int argc; -char **argv; -{ - char *p; - int ch; - - while ((ch = getopt(argc, argv, "")) != -1) - switch (ch) { - case '?': - default: - dirname_usage(); - } - argc -= optind; - argv += optind; - - if (argc != 1) - dirname_usage(); - - /* - * (1) If string is //, skip steps (2) through (5). - * (2) If string consists entirely of slash characters, string - * shall be set to a single slash character. In this case, - * skip steps (3) through (8). - */ - for (p = *argv;; ++p) { - if (!*p) { - if (p > *argv) - (void) printf("/\n"); - else - (void) printf(".\n"); - exit(0); - } - if (*p != '/') - break; + if ((argc < 2) || (**(argv + 1) == '-')) { + usage("dirname [file ...]\n"); } + argv++; - /* - * (3) If there are any trailing slash characters in string, they - * shall be removed. - */ - for (; *p; ++p); - while (*--p == '/') - continue; - *++p = '\0'; - - /* - * (4) If there are no slash characters remaining in string, - * string shall be set to a single period character. In this - * case skip steps (5) through (8). - * - * (5) If there are any trailing nonslash characters in string, - * they shall be removed. - */ - while (--p >= *argv) - if (*p == '/') - break; - ++p; - if (p == *argv) { - (void) printf(".\n"); - exit(0); + s=*argv+strlen(*argv)-1; + while (s && *s == '/') { + *s = '\0'; + s=*argv+strlen(*argv)-1; } - - /* - * (6) If the remaining string is //, it is implementation defined - * whether steps (7) and (8) are skipped or processed. - * - * This case has already been handled, as part of steps (1) and (2). - */ - - /* - * (7) If there are any trailing slash characters in string, they - * shall be removed. - */ - while (--p >= *argv) - if (*p != '/') - break; - ++p; - - /* - * (8) If the remaining string is empty, string shall be set to - * a single slash character. - */ - *p = '\0'; - (void) printf("%s\n", p == *argv ? "/" : *argv); - exit(0); + s = strrchr(*argv, '/'); + if (s && *s) + *s = '\0'; + printf("%s\n", (s)? *argv : "."); + exit(TRUE); } diff --git a/docs/CommandList b/docs/CommandList deleted file mode 100644 index 03c74bb87..000000000 --- a/docs/CommandList +++ /dev/null @@ -1,1025 +0,0 @@ -The following document includes a continuous description of the current -commands, functions and utilities included in the busybox. - -John Cooper -johnc@lineo.com - -_______________________________________________________________________________________________________ - - - - - BusyBox 0.38, Functions and the Arguments they Support - - -New Apps that have been added to BusyBox since this document was written: - ping, hostname, mkfifo, free, tail, du, tee, head, sort, uniq, lsmod, rmmod, fbset, and loadacm. - - - -______________________________________________________________________________________________________ - - - - - -cat [file] - Display file contents to standard output. - - - - -_______________________________________________________________________________________________________ - - - - - -chmod [-R] Mode,[Mode] file - - Change file access permissions (mode) of one or more files. - - -R Follows the directory tree from the current location thru all sub-directories, - - applying changes. - - Mode = u User - - g Group - - o Other - - a All - - Permission = r Read - - w Write - - s Set user (or group) ID - - t Sticky bit file cannot be removed by other - - than the owner. - - - - -________________________________________________________________________________________________________ - - - - - -chown [option] owner[group]file - - Change owner and (or) group of file to owner and (or) group. - - Only the current owner or a priveleged user may change an owner. - - -R Follows the directory tree from the current location thru all sub-directories, applying - - changes. - - - - - -________________________________________________________________________________________________________ - - - - - - -chgrp [option] newgroup file - - Change group of file or files to new group name or ID number located in /etc/group. - - Only the current owner or a priveleged user may change the group name or ID - - -R Follows the directory tree from the current location thru all sub-directories, - - applying changes. - - - - - - -________________________________________________________________________________________________________ - - - - - -chroot NEWROOT [Command...] (System Admin Command) - - Run command with root directory set to NEWROOT. Only the current owner or a priveleged - - user may use this command. - - - - - -________________________________________________________________________________________________________ - - - - - -clear - - Clear screen. - - - - - - -________________________________________________________________________________________________________ - - - - - -cp [option] fileA fileB - - Copy fileA to fileB or fileA to directory maintaining fileA name. - - -a archive Maintain file attributes whenever possible. Same as -dpR - - -d no dereference Maintain hard link relationships between fileA and fileB. - - No dereference of symbolic links. - - -p maintain file Maintain all file attributes and information including owner - - attributes group permissions and time information. - - -R recursive Copies directories recursively - - - - - -_________________________________________________________________________________________________________ - - - - - -date [option [+format] [date] - -date [option] [MMDDhhmm[[CC]YY][.SS]] - - Display the current system date and time. - - -R RFC-822 string Output an RFC-822 compliant date string. - - -s set DATE Set date where date is entered in MMDDhhmm etc. format. - - -u universal Print or set Coordinated Universal Time. - - - - - -_______________________________________________________________________________________________________ - - - - - - -dd [if=name] [of=name] [bs=n] [count=n] - - - Copy a file, converting and formatting according to options. Most useful when copying from - - physical input and output devices. - - if=fileA (instead of standard input) - - of=fileB (instead of standard output) - - bs=n Read and write N Bytes at a time. - - count=n Copy only n input blocks. - - Bytes may be suffixed by k for x1024, b for x512 and w for x2. - - - - - -________________________________________________________________________________________________________ - - - - - -df - - - Display filesystem, number of blocks used, number of blocks available, number of blocks in use, - - and mount point. - - - - - - -________________________________________________________________________________________________________ - - - - - - -dmesg [-c] [-n level] [-s bufsize] (System Admin Command) - - - Display system control messages. Stored in the kernel ring buffer are all messages since the - - last system boot, or the most recent if the buffer had been full. - - - -c Clear buffer after printing messages. - - -n level Set the level of system message to be displayed on the console. - - -s bufsize Display the size of the kernel ring buffer. - - - - - -________________________________________________________________________________________________________ - - - - - - -find [PATH] [EXPRESSION] - - Search for files in the current directory, and all subdirectories for patterns that match - - expression. Expressions may consist of the following. - - -follow Dereference symbolic links. - - -name PATTERN Find files that match PATTERN. Metacharacters should be escaped or - - quoted. - - -print Print full file name, followed by a newline, to standard out. - - - - - - -________________________________________________________________________________________________________ - - - - - -chvt N - - Change foreground virtual terminal to /dev/ttyN. - - - - - -________________________________________________________________________________________________________ - - - - - -deallocvt N - - Deallocate unused virtual terminal /dev/ttyN. - - - - - -________________________________________________________________________________________________________ - - - - - -fsck.minix [-larvsmf] /dev/name - - Perform a consistency check for minix filesystems. - - -l List filenames. - - -r Perform interactive repairs. - - -a Perform automatic repairs - - -v Verbose - - -s Output superblock information - - -m Activates minix-like "mode not cleared" warnings. - - -f Force file system check. - - - - -________________________________________________________________________________________________________ - - - - - -mkfs.minix [-c | -l filename ] [-nXX] [-iXX] /dev/name [blocks] - - Make a minix file system. - - -c Check device for bad blocks. - - -n [ 14|30 ] Specify max length of filenames. - - -i Specify number of inodes for filesystem. - - -l filename - - Read the bad blocks list from filename. - - -v Make a minix version 2 filesystem. - - - - - -________________________________________________________________________________________________________ - - - - - -grep [OPTIONS] PATTERN [FILE] - - Search for PATTERN in each FILE or from standard input. - - -h Suppress prefixing filename on output. - - -i Ignore case distinctions. - - -n Print line number with output lines. - - - - - -________________________________________________________________________________________________________ - - - - - -init - - The parent of all processes. Only to be run by the kernel. - - - - - -________________________________________________________________________________________________________ - - - - - -kill [ -s sigspec | -signum | -sigspec ] [pid | job ] or - -kill -l [ exitstatus ] - - Currently no information help page for this command - - - - - -________________________________________________________________________________________________________ - - - - - -ln [option] TARGET... LINK_NAME|DIRECTORY - - Create a link named LINK_NAME or DIRECTORY to TARGET. - - -s Make symbolic links instead of hard links. - - -f Remove existing destination files. - - - - - -________________________________________________________________________________________________________ - - - - - -ls [ -1acdelnpuxACF ] [FILENAMES] - - List contents of directories. - - -1 Single entry per column of output. - - -a All files including hidden files beginning with a .. - - -c Files are listed by status change time. - - -d List directories, not there contents. - - -e List both full date and full time - - -l List in long format including permissions, owner, size - - modification time etc. - - -n Similar to -l, except use group ID and user ID instead - - of owner and group names. - - -p Directories are marked with a /. - - -u Display files sorted by file access time. - - -x Display files across the screen in rows. - - -A Display hidden and all other files except . and ... - - -C (Default, display files in columns) - - -F Tag files by type by appending: - - / to directories - - * to executables - - @ to symbolic links - - | to fifo's - - = to sockets - - - - - - -________________________________________________________________________________________________________ - - - - - -mkdir [OPTION] directory - - Create directories if they do not already exist. You must have write permission to create - - directories. Default mode can be modified by users umask. - - -m Used to set permission mode. (See chmod description) - - -p Make parent directories if they don't already exist. Return error code if - - they already exist. - - - - - - -________________________________________________________________________________________________________ - - - - - -mknod NAME TYPE MAJOR MINOR - -Make 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. - - - -________________________________________________________________________________________________________ - - - - - - -mkswap [-c] [ -v0|-v1 ] device [block-count] - - Prepare a disk partition to be used as a swap partition. - - -c Check for read-ability. - - -v0 Make version 0 swap [max 128 megs] - - -v1 Make version 1 swap [big |] default for - - kernels > 2.1.117. - - block-count - - Number of blocks to use. (Default is the entire - - partition). - - - - - - -________________________________________________________________________________________________________ - - - - - -more [file] - - Display file one screen page at a time. - - - - -________________________________________________________________________________________________________ - - - - - -mount [flags] - -mount [flags] device directory [-o options, more options ] - - Mount a filesystem for file access. - - -a Mount all file systems in fstab. - - -o option - - async/sync: Writes are asynchronous/synchronous. - - dev/nodev: Allow use of special device files - - /disallow them. - - exec/noexec: Allow use of executable files - - /disallow them. - - suid/nosuid: Allow set-user-id-root programs - - /disallow them. - - remount: Remount a currently-mounted filesystem - - changing it's flags. - - ro/rw: Mount for read-only/read-write. - - (There are more flags specific to each filesystem. - - See the written documentation for those.) - - -r Mount the filesystem read only. - - -t FILESYSTEM TYPE - - Specify the filesystem type. - - -w Mount for reading and writing default - - - - - - -________________________________________________________________________________________________________ - - - - - - -mv fileA fileB or - -mv fileA dirA - - Move fileA to fileB. (Renames fileA to fileB) - - Move fileA to dirA (Moves fileA into dirA) - - - - - -________________________________________________________________________________________________________ - - - - - -ps - - Report process status. No options are currently supported. - - - - - -________________________________________________________________________________________________________ - - - - - -pwd - - Print working directory - - - - - -________________________________________________________________________________________________________ - - - - - -reboot - - Reboot system. No options are currently supported. - - - - - -________________________________________________________________________________________________________ - - - - - -rm [option] file - - Remove or unlink the files. - - -f Remove existing destinations. Never prompt. - - -r or -R Remove contents of directories recursively. - - - - -________________________________________________________________________________________________________ - - - - - -rmdir [OPTION] ... directory - - Remove directories if they are empty. - - - - -________________________________________________________________________________________________________ - - - - -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. - - - -________________________________________________________________________________________________________ - - - - - -sleep N - - Pause for N seconds. - - - - - -________________________________________________________________________________________________________ - - - - - -tar -[cxtvOf] [tarFileName] [file] - - Create, extract or list files from a tar file. - - c=create - - x=extract - - t=list contents - - v=verbose - - O=extract to stdout - - f=tarfile or "-" for standard input - - - - - -________________________________________________________________________________________________________ - - - - - -swapon device - - Start swapping virtual memory pages on the given device. - - - - - -________________________________________________________________________________________________________ - - - - - -swapoff device - - Stop swapping virtual memory pages on the given device. - - - - - -________________________________________________________________________________________________________ - - - - - -sync - - Write all buffered filesystem blocks to disk. - - - - - -________________________________________________________________________________________________________ - - - - - -touch [-c] file [file...] - - Update the last modified date on given file(s). - - - - - -________________________________________________________________________________________________________ - - - - - -true - - A null command that returns a successful 0 exit status code. (See false) - - - - - -________________________________________________________________________________________________________ - - - - - -false - - A null command that returns an unsuccessful or non-zero exit status. - - - - - -________________________________________________________________________________________________________ - - - - - -uname [option] - - Print certain system information. With no option, same as -s. - - -a Display all information - - -m Display machine hardware type. - - -n Display machine network node hostname. - - -r Display OS release - - -s Display OS Name. - - -p Display Host processor type. - - -v Display OS Version. - - - - - -________________________________________________________________________________________________________ - - - - - -umount [flags] filesystem | directory - - Unmounts designated filesystem previously mounted on device. - - -a Unmount all file systems. - - - - - -________________________________________________________________________________________________________ - - - - - -update - -cvs update [options] files - - Incorporates recent changes from the repository into files in your working directory. No - - options are currently supported. - - - - - -________________________________________________________________________________________________________ - - - - - -zcat [options] files - - Usage: zcat [OPTION]... FILE - - Uncompress FILE (or standard input if FILE is '-'). - (When invoked as zcat, defaults to having -c turned on) - - Options: - -c Write output to standard output - -t Test compressed file integrity - - - - -________________________________________________________________________________________________________ - - - - - -gunzip (Same as zcat, but without the "-c" option.) - - - - - -________________________________________________________________________________________________________ - - - - - -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 - - - -________________________________________________________________________________________________________ - - - - - - -loadfont - - No information available with --help. - - - - -________________________________________________________________________________________________________ - - - - - -loadkmap - - No information available with --help - - - - - -________________________________________________________________________________________________________ - - - - - -linuxrc - - No information available with --help - - - - - -________________________________________________________________________________________________________ - diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 000000000..aebe8a847 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,22 @@ +# busybox/docs/Makefile - Create the documentation +# ------------------------ +# Copyright (C) 2000 Erik Andersen GPL + +all:: clean doc + +doc: + @echo + @echo BusyBox Documentation + @echo + pod2html busybox.pod > ../BusyBox.html + @rm pod2html-* + pod2man --center=BusyBox --release="version $(VERSION)" busybox.pod > ../BusyBox.1 + pod2text busybox.pod > ../BusyBox.txt + +clean:: + @rm -f ../BusyBox.html ../BusyBox.1 ../BusyBox.txt pod2html* + +distclean: clean + +.PHONY: all clean distclean doc + diff --git a/docs/busybox.pod b/docs/busybox.pod index 3aecf3cff..127cf89b5 100644 --- a/docs/busybox.pod +++ b/docs/busybox.pod @@ -1,4 +1,4 @@ -# pod2man --center=Lineo --release="version 0.43" busybox.pod > busybox.1 +# vi: set sw=4 ts=4: =head1 NAME @@ -36,20 +36,18 @@ tries to make itself useful to small systems with limited resources. Currently defined functions include: -basename, cat, chmod, chown, chgrp, chroot, clear, chvt, cp, mv, date, -dd, df, dirname, dmesg, du, dutmp, echo, fbset, fdflush, find, free, +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, nslookup, poweroff, ping, printf, ps, +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, false, tty, umount, uname, uptime, uniq, update, +tee, touch, tr, true, tty, umount, uname, uptime, uniq, update, usleep, wc, whoami, yes, zcat -=head1 OPTIONS - -Common Options: +=head1 COMMON OPTIONS Most BusyBox commands support the B<--help> option to provide a terse runtime description of their behavior. @@ -69,6 +67,8 @@ Example: $ basename /usr/local/bin/ bin +------------------------------- + =item cat Usage: cat [file ...] @@ -80,6 +80,8 @@ Example: $ cat /proc/uptime 110716.72 17.67 +------------------------------- + =item chmod Usage: chmod [B<-R>] MODE[,MODE]... FILE... @@ -112,20 +114,20 @@ PERMISSION may be chosen from: Alternately, permissions may be set numerically where the first three numbers are calculated by adding the octal values: - + 4 Read 2 Write 1 eXecute An optional fourth digit may also be used to specify - + 4 Set user ID 2 Set group ID 1 sTickey bit Options: - -R change files and directories recursively. + -R change files and directories recursively. Example: @@ -138,6 +140,8 @@ Example: $ ls -l /tmp/foo -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo +------------------------------- + =item chown Usage: chown [OPTION]... OWNER[.[GROUP] FILE... @@ -146,7 +150,7 @@ Changes the owner and/or group of each FILE to OWNER and/or GROUP. Options: - -R change files and directories recursively + -R change files and directories recursively Example: @@ -159,6 +163,8 @@ Example: ls -l /tmp/foo -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo +------------------------------- + =item chgrp Usage: chgrp [OPTION]... GROUP FILE... @@ -167,7 +173,7 @@ Change the group membership of each FILE to GROUP. Options: - -R change files and directories recursively + -R change files and directories recursively Example: @@ -177,31 +183,38 @@ Example: $ ls -l /tmp/foo -r--r--r-- 1 andersen root 0 Apr 12 18:25 /tmp/foo +------------------------------- + =item chroot Usage: chroot NEWROOT [COMMAND...] Run COMMAND with root directory set to NEWROOT. -Exmaple: +Example: $ ls -l /bin/ls - lrwxrwxrwx 1 root root 12 Apr 13 00:46 /bin/ls -> /bin/busybox + lrwxrwxrwx 1 root root 12 Apr 13 00:46 /bin/ls -> /busybox $ mount /dev/hdc1 /mnt -t minix $ chroot /mnt $ ls -l /bin/ls -rwxr-xr-x 1 root root 40816 Feb 5 07:45 /bin/ls* +------------------------------- + =item clear Clears the screen. +------------------------------- + =item chvt Usage: chvt N Change foreground virtual terminal to /dev/ttyN +------------------------------- =item cp @@ -216,6 +229,8 @@ Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY. -p preserve file attributes if possable -R copy directories recursively +------------------------------- + =item date Usage: date [OPTION]... [+FORMAT] @@ -226,44 +241,47 @@ Display the current time in the given FORMAT, or set the system date. Options: - -R output RFC-822 compliant date string - -s set time described by STRING - -u print or set Coordinated Universal Time + -R output RFC-822 compliant date string + -s set time described by STRING + -u print or set Coordinated Universal Time Example: $ date Wed Apr 12 18:52:41 MDT 2000 +------------------------------- + =item dd Usage: dd [if=name] [of=name] [bs=n] [count=n] [skip=n] [seek=n] Copy a file, converting and formatting according to options - if=FILE read from FILE instead of stdin - of=FILE write to FILE instead of stdout - bs=n read and write n bytes at a time - count=n copy only n input blocks - skip=n skip n input blocks - seek=n skip n output blocks + if=FILE read from FILE instead of stdin + of=FILE write to FILE instead of stdout + bs=n read and write n bytes at a time + count=n copy only n input blocks + skip=n skip n input blocks + seek=n skip n output blocks Numbers may be suffixed by w (x2), k (x1024), b (x512), or M (x1024^2) - Example: $ dd if=/dev/zero of=/dev/ram1 bs=1M count=4 4+0 records in 4+0 records out +------------------------------- + =item df Usage: df [filesystem ...] Prints the filesystem space used and space available. -Exmaple: +Example: $ df Filesystem 1k-blocks Used Available Use% Mounted on @@ -273,12 +291,31 @@ Exmaple: Filesystem 1k-blocks Used Available Use% Mounted on /dev/sda3 8690864 8553540 137324 98% / +------------------------------- + +=item dirname + +Usage: dirname NAME + +Strip non-directory suffix from file name + +Example: + + $ dirname /tmp/foo + /tmp + $ dirname /tmp/foo/ + /tmp + +------------------------------- + =item dmesg Usage: dmesg [B<-c>] [B<-n> level] [B<-s> bufsize] Print or controls the kernel ring buffer. +------------------------------- + =item du Usage: du [OPTION]... [FILE]... @@ -288,8 +325,8 @@ Disk space is printed in units of 1k (i.e. 1024 bytes). Options: - -l count sizes many times if hard linked - -s display only a total for each argument + -l count sizes many times if hard linked + -s display only a total for each argument Example: @@ -305,6 +342,56 @@ Example: 104 ./docs 2417 . +------------------------------- + +=item dutmp + +Usage: dutmp [FILE] + +Dump utmp file format (pipe delimited) from FILE +or stdin to stdout. + +Example: + + $ dutmp /var/run/utmp + 8|7||si|||0|0|0|955637625|760097|0 + 2|0|~|~~|reboot||0|0|0|955637625|782235|0 + 1|20020|~|~~|runlevel||0|0|0|955637625|800089|0 + 8|125||l4|||0|0|0|955637629|998367|0 + 6|245|tty1|1|LOGIN||0|0|0|955637630|998974|0 + 6|246|tty2|2|LOGIN||0|0|0|955637630|999498|0 + 7|336|pts/0|vt00andersen|andersen|:0.0|0|0|0|955637763|0|0 + +------------------------------- + +=item echo + +Usage: echo [-neE] [ARG ...] + +Prints the specified ARGs to stdout + +Options: + + -n suppress trailing newline + -e interpret backslash-escaped characters (i.e. \t=tab etc) + -E disable interpretation of backslash-escaped characters + +Example: + + $ echo "Erik is cool" + Erik is cool + $ echo -e "Erik\nis\ncool" + Erik + is + cool + $ echo "Erik\nis\ncool" + Erik\nis\ncool + +------------------------------- + +=item false + +------------------------------- =item fbset @@ -314,19 +401,39 @@ Show and modify frame buffer device settings Options: - -h - -fb - -db - -a - -i - -g - -t - -accel - -hsync - -vsync - -laced - -double + -h + -fb + -db + -a + -i + -g + -t + -accel + -hsync + -vsync + -laced + -double +Example: + + $ fbset + mode "1024x768-76" + # D: 78.653 MHz, H: 59.949 kHz, V: 75.694 Hz + geometry 1024 768 1024 768 16 + timings 12714 128 32 16 4 128 4 + accel false + rgba 5/11,6/5,5/0,0/0 + endmode + +------------------------------- + +=item fdflush + +Usage: fdflush device + +Force floppy disk drive to detect disk change + +------------------------------- =item find @@ -337,18 +444,18 @@ the current directory; default EXPRESSION is '-print' EXPRESSION may consist of: - -follow - Dereference symbolic links. - -name PATTERN - File name (with leading directories removed) matches PATTERN. - -print - print the full file name followed by a newline to stdout. + + -follow Dereference symbolic links. + -name PATTERN File name (leading directories removed) matches PATTERN. + -print print the full file name followed by a newline to stdout. Example: $ find / -name /etc/passwd /etc/passwd +------------------------------- + =item free Usage: free @@ -363,6 +470,19 @@ Example: Swap: 128516 8404 120112 Total: 386144 257128 129016 +------------------------------- + +=item freeramdisk + +Usage: freeramdisk DEVICE + +Free all memory used by the specified ramdisk. + +Example: + + $ freeramdisk /dev/ram2 + +------------------------------- =item deallocvt @@ -370,6 +490,7 @@ Usage: deallocvt N Deallocates unused virtual terminal /dev/ttyN +------------------------------- =item fsck.minix @@ -379,14 +500,15 @@ Performs a consistency check for MINIX filesystems. OPTIONS: - -l Lists all filenames - -r Perform interactive repairs - -a Perform automatic repairs - -v verbose - -s Outputs super-block information - -m Activates MINIX-like "mode not cleared" warnings - -f Force file system check. - + -l Lists all filenames + -r Perform interactive repairs + -a Perform automatic repairs + -v verbose + -s Outputs super-block information + -m Activates MINIX-like "mode not cleared" warnings + -f Force file system check. + +------------------------------- =item mkfs.minix @@ -396,12 +518,13 @@ 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 + -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 @@ -411,14 +534,13 @@ Search for PATTERN in each FILE or standard input. OPTIONS: - -h suppress the prefixing filename on output - -i ignore case distinctions - -n print line number with output lines - -q be quiet. Returns 0 if result was found, 1 otherwise + -h suppress the prefixing filename on output + -i ignore case distinctions + -n print line number with output lines + -q be quiet. Returns 0 if result was found, 1 otherwise This version of grep matches full regular expresions. - Example: $ grep root /etc/passwd @@ -426,6 +548,23 @@ Example: $ grep ^[rR]oo. /etc/passwd root:x:0:0:root:/root:/bin/bash +------------------------------- + +=item gunzip + + +------------------------------- + +=item gzip + + +------------------------------- + +=item halt + + +------------------------------- + =item head Usage: head [OPTION] [FILE]... @@ -436,7 +575,7 @@ file name. With no FILE, or when FILE is -, read standard input. Options: - -n NUM Print first NUM lines instead of first 10 + -n NUM Print first NUM lines instead of first 10 Example: @@ -444,6 +583,13 @@ Example: root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh +------------------------------- + +=item hostid + + +------------------------------- + =item hostname Usage: hostname [OPTION] {hostname | B<-F> file} @@ -453,16 +599,23 @@ Get or set the hostname or DNS domain name. If a hostname is given Options: - -s Short - -i Addresses for the hostname - -d DNS domain name - -F FILE Use the contents of FILE to specify the hostname + -s Short + -i Addresses for the hostname + -d DNS domain name + -F FILE Use the contents of FILE to specify the hostname Example: $ hostname slag +------------------------------- + +=item init + + +------------------------------- + =item kill Usage: kill [B<-signal>] process-id [process-id ...] @@ -471,7 +624,7 @@ Send a signal (default is SIGTERM) to the specified process(es). Options: - -l List all signal names and numbers. + -l List all signal names and numbers. Example: @@ -484,6 +637,17 @@ Example: 267 www-data www-data S [apache] $ kill 252 +------------------------------- + +=item killall + +------------------------------- + +=item length + + +------------------------------- + =item ln Usage: ln [OPTION] TARGET... LINK_NAME|DIRECTORY @@ -491,332 +655,339 @@ Create a link named LINK_NAME or DIRECTORY to the specified TARGET Options: - -s make symbolic links instead of hard links - -f remove existing destination files + -s make symbolic links instead of hard links + -f remove existing destination files +Example: + + $ ln -s busybox /tmp/ls + [andersen@debian busybox]$ ls -l /tmp/ls + lrwxrwxrwx 1 root root 7 Apr 12 18:39 ls -> busybox* + +------------------------------- + +=item loadacm + +------------------------------- + +=item loadfont + +------------------------------- + +=item loadkmap + +------------------------------- =item ls Usage: ls [B<-1acdelnpuxACF>] [filenames...] + +Options: + + -a do not hide entries starting with . + -c with -l: show ctime (the time of last + modification of file status information) + -d list directory entries instead of contents + -e list both full date and full time + -l use a long listing format + -n list numeric UIDs and GIDs instead of names + -p append indicator (one of /=@|) to entries + -u with -l: show access time (the time of last + access of the file) + -x list entries by lines instead of by columns + -A do not list implied . and .. + -C list entries by columns + -F append indicator (one of */=@|) to entries +------------------------------- =item lsmod +Usage: lsmod +Shows information about all loaded modules. + +------------------------------- + +=item makedevs + +------------------------------- + +=item math + +------------------------------- =item mkdir -Usage: Usage: mkdir [OPTION] DIRECTORY... +Usage: mkdir [OPTION] DIRECTORY... + Create the DIRECTORY(ies), if they do not already exist - + Options: - -m set permission mode (as in chmod), not rwxrwxrwx - umask - -p no error if existing, make parent directories as needed - + -m set permission mode (as in chmod), not rwxrwxrwx - umask + -p no error if dir exists, make parent directories as needed + +Example: + + $ mkdir /tmp/foo + $ mkdir /tmp/foo + /tmp/foo: File exists + $ mkdir /tmp/foo/bar/baz + /tmp/foo/bar/baz: No such file or directory + $ mkdir -p /tmp/foo/bar/baz + +------------------------------- + +=item mkfifo + +------------------------------- =item mknod Usage: mknod NAME TYPE MAJOR MINOR + Make 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. - + 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. + +Example: + + $ mknod /dev/fd0 b 2 0 + +------------------------------- =item mkswap -Usage: mkswap [B<-c>] [-v0|-v1] device [block-count] +Usage: mkswap [B<-c>] [B<-v0>|B<-v1>] device [block-count] + Prepare a disk partition to be used as a swap partition. - + Options: - -c Check for read-ability. - -v0 Make version 0 swap [max 128 Megs]. - -v1 Make version 1 swap [big!] (default for kernels > 2.1.117). - block-count Number of block to use (default is entire partition). + -c Check for read-ability. + -v0 Make version 0 swap [max 128 Megs]. + -v1 Make version 1 swap [big!] (default for kernels > 2.1.117). + block-count Number of block to use (default is entire partition). +------------------------------- + +=item mnc + +------------------------------- =item more Usage: more [file ...] + +More is a filter for paging through text one screenful at a time. + +Example: + + $ dmesg | more +------------------------------- =item mount -Usage: mount [flags] +Usage: mount [flags] + mount [flags] device directory [B<-o> options,more-options] -mount [flags] device directory [B<-o> options,more-options] +Flags: - Flags: - -a: Mount all file systems in fstab. - -o option: One of many filesystem options, listed below. - -r: Mount the filesystem read-only. - -t filesystem-type: Specify the filesystem type. - -w: Mount for reading and writing (default). - Options for use with the "-o" flag: - async / sync: Writes are asynchronous / synchronous. - dev / nodev: Allow use of special device files / disallow them. - exec / noexec: Allow use of executable files / disallow them. - loop: Mounts a file via loop device. - suid / nosuid: Allow set-user-id-root programs / disallow them. - remount: Re-mount a currently-mounted filesystem, changing its flags. - ro / rw: Mount for read-only / read-write. + -a: Mount all file systems in fstab. + -o option: One of many filesystem options, listed below. + -r: Mount the filesystem read-only. + -t filesystem-type: Specify the filesystem type. + -w: Mount for reading and writing (default). -There are EVEN MORE flags that are specific to each filesystem. -You'll have to see the written documentation for those. - +Options for use with the "B<-o>" flag: + + async / sync: Writes are asynchronous / synchronous. + dev / nodev: Allow use of special device files / disallow them. + exec / noexec: Allow use of executable files / disallow them. + loop: Mounts a file via loop device. + suid / nosuid: Allow set-user-id-root programs / disallow them. + remount: Re-mount a currently-mounted filesystem, changing its flags. + ro / rw: Mount for read-only / read-write. + There are EVEN MORE flags that are specific to each filesystem. + You'll have to see the written documentation for those. + +Example: + + $ mount + /dev/hda3 on / type minix (rw) + proc on /proc type proc (rw) + devpts on /dev/pts type devpts (rw) + $ mount /dev/fd0 /mnt -t msdos -o ro + $ mount /tmp/diskimage /opt -t ext2 -o loop + +------------------------------- + +=item mt + +------------------------------- =item mv Usage: mv SOURCE DEST -or: mv SOURCE... DIRECTORY + or: mv SOURCE... DIRECTORY Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY. + +Example: + + $ mv /tmp/foo /bin/bar +------------------------------- -=item ping - +=item nslookup +------------------------------- =item poweroff +------------------------------- +=item ping + +Usage: ping [OPTION]... host + +Send ICMP ECHO_REQUEST packets to network hosts. + +Options: + + -c COUNT Send only COUNT pings. + -q Quiet mode, only displays output at start + and when finished. +Example: + + $ ping localhost + PING slag (127.0.0.1): 56 data bytes + 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=20.1 ms + + --- debian ping statistics --- + 1 packets transmitted, 1 packets received, 0% packet loss + round-trip min/avg/max = 20.1/20.1/20.1 ms + +------------------------------- + +=item printf + +------------------------------- =item ps -Usage: ps - -Report process status. -This version of ps accepts no options. - +------------------------------- =item pwd - +------------------------------- =item reboot - +------------------------------- =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 - - -=item rmdir - -Usage: rmdir [OPTION]... DIRECTORY... -Remove the DIRECTORY(ies), if they are empty. - - -=item sed - -Usage: sed [B<-n>] B<-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. - - -=item sleep - -Usage: sleep N - -Pause for N seconds. - - -=item sort - -Usage: Usage: sort [OPTION]... [FILE]... - - -=item sync - -Usage: sync - -Write all buffered filesystem blocks to disk. - +------------------------------- =item syslogd -Usage: syslogd [OPTION]... +------------------------------- -Linux system and kernel (provides klogd) logging utility. -Note that this version of syslogd/klogd ignores /etc/syslog.conf. - -Options: +=item logger - -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 logname + +------------------------------- =item swapon -Usage: swapon device - -Start swapping virtual memory pages on the given device. - +------------------------------- =item swapoff -Usage: swapoff device - -Stop swapping virtual memory pages on the given device. - +------------------------------- =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. - - -c=N[kbm] output the last N bytes - -f output appended data as the file grows - -n=N output the last N lines, instead of last 10 - -q never output headers giving file names - -v always output headers giving file names - --help display this help and exit - -If the first character of N (bytes or lines) is a `+', output begins with -the Nth item from the start of each file, otherwise, print the last N items -in the file. N bytes may be suffixed by k (x1024), b (x512), or m (1024^2). - +------------------------------- =item tar +------------------------------- +=item test, [ + +------------------------------- =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 - +------------------------------- =item touch -Usage: touch [B<-c>] file [file ...] - Update the last-modified date on the given file[s]. - +------------------------------- + +=item tr + +------------------------------- =item true +------------------------------- +=item tty -=item false - - - -=item uname - -Usage: uname [OPTION]... - -Print certain system information. With no OPTION, same as B<-s>. - -Options: - - -a print all information - -m the machine (hardware) type - -n print the machine's network node hostname - -r print the operating system release - -s print the operating system name - -p print the host processor type - -v print the operating system version - +------------------------------- =item umount -Usage: Usage: umount [flags] filesystem|directory +------------------------------- -Flags: +=item uname - -a: Unmount all file systems - +------------------------------- + +=item uptime + +------------------------------- =item uniq -Usage: Usage: uniq [OPTION]... [INPUT [OUTPUT]] +------------------------------- -Discard all but one of successive identical lines from INPUT (or -standard input), writing to OUTPUT (or standard output). +=item update - -h display this help and exit +------------------------------- -A field is a run of whitespace, then non-whitespace characters. -Fields are skipped before chars. - +=item usleep + +------------------------------- + +=item wc + +------------------------------- + +=item whoami + +------------------------------- + +=item yes + +------------------------------- =item zcat -Usage: gunzip [OPTION]... FILE - -Uncompress FILE (or standard input if FILE is '-'). - -Options: - - -c Write output to standard output - -t Test compressed file integrity - - -=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 - - -=item gzip - -Usage: gzip [OPTION]... FILE - -Compress FILE with maximum compression. -When FILE is -, reads standard input. Implies B<-c>. - -Options: - - -c Write output to standard output instead of FILE.gz - - +------------------------------- =back @@ -869,5 +1040,9 @@ Enrique Zanardi =for html
+Karl M. Hegbloom + +=for html
+ =cut diff --git a/dutmp.c b/dutmp.c index cf0d466ef..1629067a1 100644 --- a/dutmp.c +++ b/dutmp.c @@ -19,10 +19,9 @@ #define bb_need_io_error #include "messages.c" -static const char dutmp_usage[] = "dutmp\n" - "\n" - "\tDump file or stdin utmp file format to stdout, pipe delimited.\n" - "\tdutmp /var/run/utmp\n"; +static const char dutmp_usage[] = "dutmp [FILE]\n\n" + "Dump utmp file format (pipe delimited) from FILE\n" + "or stdin to stdout. (i.e. 'dutmp /var/run/utmp')\n"; extern int dutmp_main(int argc, char **argv) { diff --git a/echo.c b/echo.c index 91f17aa0f..2405d0ae1 100644 --- a/echo.c +++ b/echo.c @@ -25,6 +25,14 @@ #include "internal.h" #include +static const char uname_usage[] = + "echo [-neE] [ARG ...]\n\n" + "Prints the specified ARGs to stdout\n\n" + "Options:\n" + "\t-n\tsuppress trailing newline\n" + "\t-e\tinterpret backslash-escaped characters (i.e. \\t=tab etc)\n" + "\t-E\tdisable interpretation of backslash-escaped characters\n"; + extern int echo_main(int argc, char** argv) { @@ -45,6 +53,9 @@ echo_main(int argc, char** argv) } else if (strcmp(p, "-E")==0) { eflag = 0; } + else if (strncmp(p, "--", 2)==0) { + usage( uname_usage); + } else break; ap++; } diff --git a/fbset.c b/fbset.c index 1f471dada..4e5609e41 100644 --- a/fbset.c +++ b/fbset.c @@ -104,9 +104,9 @@ struct cmdoptions_t { "-hsync", 1, CMD_HSYNC}, { "-vsync", 1, CMD_VSYNC}, { "-laced", 1, CMD_LACED}, { - "-double", 1, CMD_DOUBLE}, + "-double", 1, CMD_DOUBLE}, { + "--help", 0, CMD_HELP}, { #ifdef BB_FEATURE_FBSET_FANCY - { "--help", 0, CMD_HELP}, { "-all", 0, CMD_ALL}, { "-xres", 1, CMD_XRES}, { @@ -130,9 +130,8 @@ struct cmdoptions_t { "-bcast", 1, CMD_BCAST}, { "-rgba", 1, CMD_RGBA}, { "-step", 1, CMD_STEP}, { - "-move", 1, CMD_MOVE}, + "-move", 1, CMD_MOVE}, { #endif - { 0, 0, 0} }; @@ -217,7 +216,7 @@ static void showmode(struct fb_var_screeninfo *v) printf("\trgba %u/%u,%u/%u,%u/%u,%u/%u\n", v->red.length, v->red.offset, v->green.length, v->green.offset, v->blue.length, v->blue.offset, v->transp.length, v->transp.offset); - printf("endmode\n"); + printf("endmode\n\n"); } static void fbset_usage(void) diff --git a/fdflush.c b/fdflush.c index 201cea898..56ea2244d 100644 --- a/fdflush.c +++ b/fdflush.c @@ -33,8 +33,8 @@ extern int fdflush_main(int argc, char **argv) int value; int fd; - if (argc <= 1 || **(argv++) == '-') { - usage("fdflush device\n"); + if (argc <= 1 || **(++argv) == '-') { + usage("fdflush device\n\nForce floppy disk drive to detect disk change\n"); } fd = open(*argv, 0); diff --git a/find.c b/find.c index 8fdef2382..f6e63afb9 100644 --- a/find.c +++ b/find.c @@ -37,9 +37,9 @@ static const char find_usage[] = "find [PATH...] [EXPRESSION]\n\n" "Search for files in a directory hierarchy. The default PATH is\n" "the current directory; default EXPRESSION is '-print'\n\n" "\nEXPRESSION may consist of:\n" - "\t-follow\n\t\tDereference symbolic links.\n" - "\t-name PATTERN\n\t\tFile name (with leading directories removed) matches PATTERN.\n" - "\t-print\n\t\tprint the full file name followed by a newline to stdout.\n"; + "\t-follow\t\tDereference symbolic links.\n" + "\t-name PATTERN\tFile name (leading directories removed) matches PATTERN.\n" + "\t-print\t\tprint the full file name followed by a newline to stdout.\n"; static int fileAction(const char *fileName, struct stat *statbuf, void* junk) diff --git a/findutils/find.c b/findutils/find.c index 8fdef2382..f6e63afb9 100644 --- a/findutils/find.c +++ b/findutils/find.c @@ -37,9 +37,9 @@ static const char find_usage[] = "find [PATH...] [EXPRESSION]\n\n" "Search for files in a directory hierarchy. The default PATH is\n" "the current directory; default EXPRESSION is '-print'\n\n" "\nEXPRESSION may consist of:\n" - "\t-follow\n\t\tDereference symbolic links.\n" - "\t-name PATTERN\n\t\tFile name (with leading directories removed) matches PATTERN.\n" - "\t-print\n\t\tprint the full file name followed by a newline to stdout.\n"; + "\t-follow\t\tDereference symbolic links.\n" + "\t-name PATTERN\tFile name (leading directories removed) matches PATTERN.\n" + "\t-print\t\tprint the full file name followed by a newline to stdout.\n"; static int fileAction(const char *fileName, struct stat *statbuf, void* junk) diff --git a/freeramdisk.c b/freeramdisk.c index 06937a70f..9636dbdcf 100644 --- a/freeramdisk.c +++ b/freeramdisk.c @@ -34,7 +34,7 @@ static const char freeramdisk_usage[] = "freeramdisk DEVICE\n\n" - "Frees all memory used by the specified ramdisk.\n"; + "Free all memory used by the specified ramdisk.\n"; extern int freeramdisk_main(int argc, char **argv) @@ -42,7 +42,7 @@ freeramdisk_main(int argc, char **argv) char rname[256] = "/dev/ram"; int f; - if (argc > 2 || ( argv[1] && *argv[1] == '-')) { + if (argc < 2 || ( argv[1] && *argv[1] == '-')) { usage(freeramdisk_usage); } @@ -50,10 +50,10 @@ freeramdisk_main(int argc, char **argv) strcpy(rname, argv[1]); if ((f = open(rname, O_RDWR)) == -1) { - fatalError( "freeramdisk: cannot open %s: %s", rname, strerror(errno)); + fatalError( "freeramdisk: cannot open %s: %s\n", rname, strerror(errno)); } if (ioctl(f, BLKFLSBUF) < 0) { - fatalError( "freeramdisk: failed ioctl on %s: %s", rname, strerror(errno)); + fatalError( "freeramdisk: failed ioctl on %s: %s\n", rname, strerror(errno)); } /* Don't bother closing. Exit does * that, so we can save a few bytes */ diff --git a/ls.c b/ls.c index 3e010503c..0c7f6522c 100644 --- a/ls.c +++ b/ls.c @@ -88,7 +88,6 @@ #define DISP_FULLTIME 32 /* show extended time display */ #define DIR_NOLIST 64 /* show directory as itself, not contents */ #define DISP_DIRNAME 128 /* show directory name (for internal use) */ -#define DIR_RECURSE 256 /* -R (not yet implemented) */ #ifndef MAJOR #define MAJOR(dev) (((dev)>>8)&0xff) @@ -450,10 +449,33 @@ static const char ls_usage[] = "ls [-1a" #ifdef BB_FEATURE_LS_FILETYPES "F" #endif -#ifdef FEATURE_RECURSIVE - "R" + "] [filenames...]\n\n" + "Options:\n" + "\t-a\tdo not hide entries starting with .\n" +#ifdef BB_FEATURE_LS_TIMESTAMPS + "\t-c\twith -l: show ctime (the time of last\n" + "\t\tmodification of file status information)\n" #endif - "] [filenames...]\n"; + "\t-d\tlist directory entries instead of contents\n" +#ifdef BB_FEATURE_LS_TIMESTAMPS + "\t-e\tlist both full date and full time\n" +#endif + "\t-l\tuse a long listing format\n" + "\t-n\tlist numeric UIDs and GIDs instead of names\n" +#ifdef BB_FEATURE_LS_FILETYPES + "\t-p\tappend indicator (one of /=@|) to entries\n" +#endif +#ifdef BB_FEATURE_LS_TIMESTAMPS + "\t-u\twith -l: show access time (the time of last\n" + "\t\taccess of the file)\n" +#endif + "\t-x\tlist entries by lines instead of by columns\n" + "\t-A\tdo not list implied . and ..\n" + "\t-C\tlist entries by columns\n" +#ifdef BB_FEATURE_LS_FILETYPES + "\t-F\tappend indicator (one of */=@|) to entries\n" +#endif + ; extern int ls_main(int argc, char **argv) { @@ -508,11 +530,6 @@ extern int ls_main(int argc, char **argv) case 'd': opts |= DIR_NOLIST; break; -#ifdef FEATURE_RECURSIVE - case 'R': - opts |= DIR_RECURSE; - break; -#endif #ifdef BB_FEATURE_LS_TIMESTAMPS case 'u': time_fmt = TIME_ACCESS; diff --git a/miscutils/dutmp.c b/miscutils/dutmp.c index cf0d466ef..1629067a1 100644 --- a/miscutils/dutmp.c +++ b/miscutils/dutmp.c @@ -19,10 +19,9 @@ #define bb_need_io_error #include "messages.c" -static const char dutmp_usage[] = "dutmp\n" - "\n" - "\tDump file or stdin utmp file format to stdout, pipe delimited.\n" - "\tdutmp /var/run/utmp\n"; +static const char dutmp_usage[] = "dutmp [FILE]\n\n" + "Dump utmp file format (pipe delimited) from FILE\n" + "or stdin to stdout. (i.e. 'dutmp /var/run/utmp')\n"; extern int dutmp_main(int argc, char **argv) { diff --git a/mknod.c b/mknod.c index b11a81f2a..40f508d33 100644 --- a/mknod.c +++ b/mknod.c @@ -70,7 +70,7 @@ int mknod_main(int argc, char **argv) if (mknod(argv[1], mode, dev) != 0) { perror(argv[1]); - return (FALSE); + exit (FALSE); } - return (TRUE); + exit (TRUE); } diff --git a/mount.c b/mount.c index 329c07780..972e5066c 100644 --- a/mount.c +++ b/mount.c @@ -83,8 +83,6 @@ static const char mount_usage[] = "\tmount [flags]\n" "\tsuid / nosuid:\tAllow set-user-id-root programs / disallow them.\n" "\tremount: Re-mount a currently-mounted filesystem, changing its flags.\n" "\tro / rw: Mount for read-only / read-write.\n" - "\t" - "There are EVEN MORE flags that are specific to each filesystem.\n" "You'll have to see the written documentation for those.\n"; diff --git a/networking/ping.c b/networking/ping.c index c9cf5ffb4..ef6503aeb 100644 --- a/networking/ping.c +++ b/networking/ping.c @@ -1,6 +1,6 @@ /* vi: set sw=4 ts=4: */ /* - * $Id: ping.c,v 1.11 2000/02/08 19:58:47 erik Exp $ + * $Id: ping.c,v 1.12 2000/04/13 18:49:43 erik Exp $ * Mini ping implementation for busybox * * Copyright (C) 1999 by Randolph Chung @@ -182,9 +182,9 @@ extern int ping_main(int argc, char **argv) static const char *ping_usage = "ping [OPTION]... host\n\n" "Send ICMP ECHO_REQUEST packets to network hosts.\n\n" "Options:\n" - "\t-q\t\tQuiet mode, only displays output at start" - - "\t\t\tand when finished.\n" "\t-c COUNT\tSend only COUNT pings.\n"; + "\t-c COUNT\tSend only COUNT pings.\n" + "\t-q\t\tQuiet mode, only displays output at start\n" + "\t\t\tand when finished.\n"; static char *hostname = NULL; static struct sockaddr_in pingaddr; @@ -418,9 +418,7 @@ extern int ping_main(int argc, char **argv) argv++; options = 0; /* Parse any options */ - while (argc > 1) { - if (**argv != '-') - usage(ping_usage); + while (argc >= 1 && **argv == '-') { thisarg = *argv; thisarg++; switch (*thisarg) { diff --git a/ping.c b/ping.c index c9cf5ffb4..ef6503aeb 100644 --- a/ping.c +++ b/ping.c @@ -1,6 +1,6 @@ /* vi: set sw=4 ts=4: */ /* - * $Id: ping.c,v 1.11 2000/02/08 19:58:47 erik Exp $ + * $Id: ping.c,v 1.12 2000/04/13 18:49:43 erik Exp $ * Mini ping implementation for busybox * * Copyright (C) 1999 by Randolph Chung @@ -182,9 +182,9 @@ extern int ping_main(int argc, char **argv) static const char *ping_usage = "ping [OPTION]... host\n\n" "Send ICMP ECHO_REQUEST packets to network hosts.\n\n" "Options:\n" - "\t-q\t\tQuiet mode, only displays output at start" - - "\t\t\tand when finished.\n" "\t-c COUNT\tSend only COUNT pings.\n"; + "\t-c COUNT\tSend only COUNT pings.\n" + "\t-q\t\tQuiet mode, only displays output at start\n" + "\t\t\tand when finished.\n"; static char *hostname = NULL; static struct sockaddr_in pingaddr; @@ -418,9 +418,7 @@ extern int ping_main(int argc, char **argv) argv++; options = 0; /* Parse any options */ - while (argc > 1) { - if (**argv != '-') - usage(ping_usage); + while (argc >= 1 && **argv == '-') { thisarg = *argv; thisarg++; switch (*thisarg) { diff --git a/util-linux/fbset.c b/util-linux/fbset.c index 1f471dada..4e5609e41 100644 --- a/util-linux/fbset.c +++ b/util-linux/fbset.c @@ -104,9 +104,9 @@ struct cmdoptions_t { "-hsync", 1, CMD_HSYNC}, { "-vsync", 1, CMD_VSYNC}, { "-laced", 1, CMD_LACED}, { - "-double", 1, CMD_DOUBLE}, + "-double", 1, CMD_DOUBLE}, { + "--help", 0, CMD_HELP}, { #ifdef BB_FEATURE_FBSET_FANCY - { "--help", 0, CMD_HELP}, { "-all", 0, CMD_ALL}, { "-xres", 1, CMD_XRES}, { @@ -130,9 +130,8 @@ struct cmdoptions_t { "-bcast", 1, CMD_BCAST}, { "-rgba", 1, CMD_RGBA}, { "-step", 1, CMD_STEP}, { - "-move", 1, CMD_MOVE}, + "-move", 1, CMD_MOVE}, { #endif - { 0, 0, 0} }; @@ -217,7 +216,7 @@ static void showmode(struct fb_var_screeninfo *v) printf("\trgba %u/%u,%u/%u,%u/%u,%u/%u\n", v->red.length, v->red.offset, v->green.length, v->green.offset, v->blue.length, v->blue.offset, v->transp.length, v->transp.offset); - printf("endmode\n"); + printf("endmode\n\n"); } static void fbset_usage(void) diff --git a/util-linux/fdflush.c b/util-linux/fdflush.c index 201cea898..56ea2244d 100644 --- a/util-linux/fdflush.c +++ b/util-linux/fdflush.c @@ -33,8 +33,8 @@ extern int fdflush_main(int argc, char **argv) int value; int fd; - if (argc <= 1 || **(argv++) == '-') { - usage("fdflush device\n"); + if (argc <= 1 || **(++argv) == '-') { + usage("fdflush device\n\nForce floppy disk drive to detect disk change\n"); } fd = open(*argv, 0); diff --git a/util-linux/freeramdisk.c b/util-linux/freeramdisk.c index 06937a70f..9636dbdcf 100644 --- a/util-linux/freeramdisk.c +++ b/util-linux/freeramdisk.c @@ -34,7 +34,7 @@ static const char freeramdisk_usage[] = "freeramdisk DEVICE\n\n" - "Frees all memory used by the specified ramdisk.\n"; + "Free all memory used by the specified ramdisk.\n"; extern int freeramdisk_main(int argc, char **argv) @@ -42,7 +42,7 @@ freeramdisk_main(int argc, char **argv) char rname[256] = "/dev/ram"; int f; - if (argc > 2 || ( argv[1] && *argv[1] == '-')) { + if (argc < 2 || ( argv[1] && *argv[1] == '-')) { usage(freeramdisk_usage); } @@ -50,10 +50,10 @@ freeramdisk_main(int argc, char **argv) strcpy(rname, argv[1]); if ((f = open(rname, O_RDWR)) == -1) { - fatalError( "freeramdisk: cannot open %s: %s", rname, strerror(errno)); + fatalError( "freeramdisk: cannot open %s: %s\n", rname, strerror(errno)); } if (ioctl(f, BLKFLSBUF) < 0) { - fatalError( "freeramdisk: failed ioctl on %s: %s", rname, strerror(errno)); + fatalError( "freeramdisk: failed ioctl on %s: %s\n", rname, strerror(errno)); } /* Don't bother closing. Exit does * that, so we can save a few bytes */ diff --git a/util-linux/mount.c b/util-linux/mount.c index 329c07780..972e5066c 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c @@ -83,8 +83,6 @@ static const char mount_usage[] = "\tmount [flags]\n" "\tsuid / nosuid:\tAllow set-user-id-root programs / disallow them.\n" "\tremount: Re-mount a currently-mounted filesystem, changing its flags.\n" "\tro / rw: Mount for read-only / read-write.\n" - "\t" - "There are EVEN MORE flags that are specific to each filesystem.\n" "You'll have to see the written documentation for those.\n";