More doc updates for BusyBox, with fixes to apps for bugs revealed

while trying to write docs . :-)
 -Erik
This commit is contained in:
Erik Andersen 2000-04-13 18:49:43 +00:00
parent b4f8606c05
commit 9cf3bfa7c1
30 changed files with 680 additions and 1658 deletions

View File

@ -10,14 +10,14 @@
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 <wiz@iol.it>
and then adjusted a bit by me.
* Added tr and dirname from John Lombardo <john@deltanet.com>
* Added tr from John Lombardo <john@deltanet.com>
* Added echo and test (from me).
* Added usleep contributed by Nicolas Pitre <nico@cam.org>
* Several fixes from Pavel Roskin <pavel_roskin@geocities.com>:

View File

@ -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); \

View File

@ -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);

View File

@ -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

View File

@ -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);

View File

@ -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 <andersen@lineo.com>, <andersee@debian.org>
*
* 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 <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void dirname_usage()
extern int dirname_main(int argc, char **argv)
{
char* s;
(void) fprintf(stderr, "usage: dirname path\n");
exit(1);
if ((argc < 2) || (**(argv + 1) == '-')) {
usage("dirname [file ...]\n");
}
argv++;
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();
s=*argv+strlen(*argv)-1;
while (s && *s == '/') {
*s = '\0';
s=*argv+strlen(*argv)-1;
}
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;
}
/*
* (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);
}
/*
* (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);
}

View File

@ -25,6 +25,14 @@
#include "internal.h"
#include <stdio.h>
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++;
}

View File

@ -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;

View File

@ -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);
}

163
dirname.c
View File

@ -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 <andersen@lineo.com>, <andersee@debian.org>
*
* 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 <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void dirname_usage()
extern int dirname_main(int argc, char **argv)
{
char* s;
(void) fprintf(stderr, "usage: dirname path\n");
exit(1);
if ((argc < 2) || (**(argv + 1) == '-')) {
usage("dirname [file ...]\n");
}
argv++;
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();
s=*argv+strlen(*argv)-1;
while (s && *s == '/') {
*s = '\0';
s=*argv+strlen(*argv)-1;
}
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;
}
/*
* (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);
}
/*
* (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);
}

File diff suppressed because it is too large Load Diff

22
docs/Makefile Normal file
View File

@ -0,0 +1,22 @@
# busybox/docs/Makefile - Create the documentation
# ------------------------
# Copyright (C) 2000 Erik Andersen <andersee@debian.org> 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

View File

@ -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...
@ -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...
@ -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...
@ -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]
@ -235,6 +250,8 @@ 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]
@ -250,20 +267,21 @@ Copy a file, converting and formatting according to options
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]...
@ -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
@ -327,6 +414,26 @@ Options:
-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
@ -387,6 +508,7 @@ OPTIONS:
-m Activates MINIX-like "mode not cleared" warnings
-f Force file system check.
-------------------------------
=item mkfs.minix
@ -402,6 +524,7 @@ OPTIONS:
-l FILENAME Read the bad blocks list from FILENAME
-v Make a Minix version 2 filesystem
-------------------------------
=item grep
@ -418,7 +541,6 @@ OPTIONS:
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]...
@ -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}
@ -463,6 +609,13 @@ Example:
$ hostname
slag
-------------------------------
=item init
-------------------------------
=item kill
Usage: kill [B<-signal>] process-id [process-id ...]
@ -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
@ -494,30 +658,95 @@ Options:
-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
-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:
@ -526,10 +755,16 @@ TYPEs include:
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:
@ -539,25 +774,39 @@ Options:
-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]
mount [flags] device directory [B<-o> options,more-options]
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:
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.
@ -565,10 +814,23 @@ mount [flags] device directory [B<-o> options,more-options]
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
@ -578,245 +840,154 @@ or: mv SOURCE... DIRECTORY
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
Example:
=item ping
$ mv /tmp/foo /bin/bar
-------------------------------
=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.
=item logger
Options:
-------------------------------
-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 <ezanardi@ull.es>
=for html <br>
Karl M. Hegbloom <karlheg@debian.org>
=for html <br>
=cut

View File

@ -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)
{

11
echo.c
View File

@ -25,6 +25,14 @@
#include "internal.h"
#include <stdio.h>
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++;
}

View File

@ -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)

View File

@ -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);

6
find.c
View File

@ -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)

View File

@ -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)

View File

@ -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 */

35
ls.c
View File

@ -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;

View File

@ -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)
{

View File

@ -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);
}

View File

@ -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";

View File

@ -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 <tausq@debian.org>
@ -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) {

12
ping.c
View File

@ -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 <tausq@debian.org>
@ -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) {

View File

@ -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)

View File

@ -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);

View File

@ -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 */

View File

@ -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";