mirror of
https://github.com/sheumann/hush.git
synced 2024-12-27 01:32:08 +00:00
More doc updates for BusyBox, with fixes to apps for bugs revealed
while trying to write docs . :-) -Erik
This commit is contained in:
parent
b4f8606c05
commit
9cf3bfa7c1
@ -10,18 +10,18 @@
|
|||||||
provides. To enable this, turn on BB_FEATURE_USE_DEVPS_PATCH and
|
provides. To enable this, turn on BB_FEATURE_USE_DEVPS_PATCH and
|
||||||
patch your kernel with the devps patch in the kernel-patches/
|
patch your kernel with the devps patch in the kernel-patches/
|
||||||
directory.
|
directory.
|
||||||
* Wrote basename, killall, and uptime.
|
* Wrote basename, dirname, killall, and uptime.
|
||||||
* tar has been completely rewritten by me. Both tar creation and
|
* tar has been completely rewritten by me. Both tar creation and
|
||||||
extraction are now well behaved. Costs 7.6k with all optional
|
extraction are now well behaved. Costs 7.6k with all optional
|
||||||
tar features enabled, and 5k for just tar extraction support.
|
tar features enabled, and 5k for just tar extraction support.
|
||||||
* Added freeramdisk, which will free up all memory associated
|
* Added freeramdisk, which will free up all memory associated
|
||||||
with a ram disk. Contributed by Emanuele Caratti <wiz@iol.it>
|
with a ram disk. Contributed by Emanuele Caratti <wiz@iol.it>
|
||||||
and then adjusted a bit by me.
|
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 echo and test (from me).
|
||||||
* Added usleep contributed by Nicolas Pitre <nico@cam.org>
|
* Added usleep contributed by Nicolas Pitre <nico@cam.org>
|
||||||
* Several fixes from Pavel Roskin <pavel_roskin@geocities.com>:
|
* Several fixes from Pavel Roskin <pavel_roskin@geocities.com>:
|
||||||
- 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
|
- When `syslogd' is given the `-n' option it should still use
|
||||||
fork() for running klogd.
|
fork() for running klogd.
|
||||||
* nslookup types are now changed to u_int32_t (instead of uint32_t)
|
* nslookup types are now changed to u_int32_t (instead of uint32_t)
|
||||||
|
8
Makefile
8
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.
|
# Set the following to `true' to make a debuggable build.
|
||||||
# Leave this set to `false' for production use.
|
# Leave this set to `false' for production use.
|
||||||
# eg: `make DODEBUG=true tests'
|
# eg: `make DODEBUG=true tests'
|
||||||
DODEBUG = false
|
DODEBUG = true
|
||||||
|
|
||||||
# If you want a static binary, turn this on.
|
# If you want a static binary, turn this on.
|
||||||
DOSTATIC = false
|
DOSTATIC = false
|
||||||
@ -94,7 +94,7 @@ ifdef BB_INIT_SCRIPT
|
|||||||
CFLAGS += -DINIT_SCRIPT='"$(BB_INIT_SCRIPT)"'
|
CFLAGS += -DINIT_SCRIPT='"$(BB_INIT_SCRIPT)"'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: busybox busybox.links
|
all: busybox busybox.links docs
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
|
|
||||||
busybox: $(OBJECTS)
|
busybox: $(OBJECTS)
|
||||||
@ -104,6 +104,9 @@ busybox: $(OBJECTS)
|
|||||||
busybox.links: busybox.def.h
|
busybox.links: busybox.def.h
|
||||||
- ./busybox.mkll | sort >$@
|
- ./busybox.mkll | sort >$@
|
||||||
|
|
||||||
|
docs: docs/busybox.pod
|
||||||
|
cd docs && $(MAKE) clean all
|
||||||
|
|
||||||
regexp.o nfsmount.o: %.o: %.h
|
regexp.o nfsmount.o: %.o: %.h
|
||||||
$(OBJECTS): %.o: busybox.def.h internal.h %.c
|
$(OBJECTS): %.o: busybox.def.h internal.h %.c
|
||||||
|
|
||||||
@ -128,6 +131,7 @@ install: busybox busybox.links
|
|||||||
|
|
||||||
.PHONY: dist release
|
.PHONY: dist release
|
||||||
dist release: distclean
|
dist release: distclean
|
||||||
|
cd docs && $(MAKE) clean all
|
||||||
cd ..; \
|
cd ..; \
|
||||||
rm -rf busybox-$(VERSION); \
|
rm -rf busybox-$(VERSION); \
|
||||||
cp -a busybox busybox-$(VERSION); \
|
cp -a busybox busybox-$(VERSION); \
|
||||||
|
@ -34,8 +34,10 @@ extern int basename_main(int argc, char **argv)
|
|||||||
argv++;
|
argv++;
|
||||||
|
|
||||||
s1=*argv+strlen(*argv)-1;
|
s1=*argv+strlen(*argv)-1;
|
||||||
if (*s1 == '/')
|
while (s1 && *s1 == '/') {
|
||||||
*s1 = '\0';
|
*s1 = '\0';
|
||||||
|
s1=*argv+strlen(*argv)-1;
|
||||||
|
}
|
||||||
s = strrchr(*argv, '/');
|
s = strrchr(*argv, '/');
|
||||||
printf("%s\n", (s)? s + 1 : *argv);
|
printf("%s\n", (s)? s + 1 : *argv);
|
||||||
exit(TRUE);
|
exit(TRUE);
|
||||||
|
@ -194,7 +194,7 @@
|
|||||||
//#define BB_FEATURE_SH_TAB_COMPLETION
|
//#define BB_FEATURE_SH_TAB_COMPLETION
|
||||||
//
|
//
|
||||||
//Turn on extra fbset options
|
//Turn on extra fbset options
|
||||||
#define BB_FEATURE_FBSET_FANCY
|
//#define BB_FEATURE_FBSET_FANCY
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// End of Features List
|
// End of Features List
|
||||||
|
@ -34,8 +34,10 @@ extern int basename_main(int argc, char **argv)
|
|||||||
argv++;
|
argv++;
|
||||||
|
|
||||||
s1=*argv+strlen(*argv)-1;
|
s1=*argv+strlen(*argv)-1;
|
||||||
if (*s1 == '/')
|
while (s1 && *s1 == '/') {
|
||||||
*s1 = '\0';
|
*s1 = '\0';
|
||||||
|
s1=*argv+strlen(*argv)-1;
|
||||||
|
}
|
||||||
s = strrchr(*argv, '/');
|
s = strrchr(*argv, '/');
|
||||||
printf("%s\n", (s)? s + 1 : *argv);
|
printf("%s\n", (s)? s + 1 : *argv);
|
||||||
exit(TRUE);
|
exit(TRUE);
|
||||||
|
@ -1,146 +1,45 @@
|
|||||||
/* vi: set sw=4 ts=4: */
|
/* vi: set sw=4 ts=4: */
|
||||||
/*
|
/*
|
||||||
* This is temporary -- needs to be rewritten to be tighter */
|
* Mini dirname implementation for busybox
|
||||||
/*
|
|
||||||
* Copyright (c) 1991, 1993, 1994
|
|
||||||
* The Regents of the University of California. All rights reserved.
|
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Copyright (C) 2000 by Lineo, inc.
|
||||||
* modification, are permitted provided that the following conditions
|
* Written by Erik Andersen <andersen@lineo.com>, <andersee@debian.org>
|
||||||
* are met:
|
*
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* it under the terms of the GNU General Public License as published by
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* (at your option) any later version.
|
||||||
* documentation and/or other materials provided with the distribution.
|
*
|
||||||
* 3. All advertising materials mentioning features or use of this software
|
* This program is distributed in the hope that it will be useful,
|
||||||
* must display the following acknowledgement:
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* This product includes software developed by the University of
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* California, Berkeley and its contributors.
|
* General Public License for more details.
|
||||||
* 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
|
* You should have received a copy of the GNU General Public License
|
||||||
* without specific prior written permission.
|
* 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 "internal.h"
|
||||||
#include <stdio.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");
|
if ((argc < 2) || (**(argv + 1) == '-')) {
|
||||||
exit(1);
|
usage("dirname [file ...]\n");
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
argv++;
|
||||||
|
|
||||||
/*
|
s=*argv+strlen(*argv)-1;
|
||||||
* (3) If there are any trailing slash characters in string, they
|
while (s && *s == '/') {
|
||||||
* shall be removed.
|
*s = '\0';
|
||||||
*/
|
s=*argv+strlen(*argv)-1;
|
||||||
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 = strrchr(*argv, '/');
|
||||||
/*
|
if (s && *s)
|
||||||
* (6) If the remaining string is //, it is implementation defined
|
*s = '\0';
|
||||||
* whether steps (7) and (8) are skipped or processed.
|
printf("%s\n", (s)? *argv : ".");
|
||||||
*
|
exit(TRUE);
|
||||||
* 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);
|
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,14 @@
|
|||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
#include <stdio.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
|
extern int
|
||||||
echo_main(int argc, char** argv)
|
echo_main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
@ -45,6 +53,9 @@ echo_main(int argc, char** argv)
|
|||||||
} else if (strcmp(p, "-E")==0) {
|
} else if (strcmp(p, "-E")==0) {
|
||||||
eflag = 0;
|
eflag = 0;
|
||||||
}
|
}
|
||||||
|
else if (strncmp(p, "--", 2)==0) {
|
||||||
|
usage( uname_usage);
|
||||||
|
}
|
||||||
else break;
|
else break;
|
||||||
ap++;
|
ap++;
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,6 @@
|
|||||||
#define DISP_FULLTIME 32 /* show extended time display */
|
#define DISP_FULLTIME 32 /* show extended time display */
|
||||||
#define DIR_NOLIST 64 /* show directory as itself, not contents */
|
#define DIR_NOLIST 64 /* show directory as itself, not contents */
|
||||||
#define DISP_DIRNAME 128 /* show directory name (for internal use) */
|
#define DISP_DIRNAME 128 /* show directory name (for internal use) */
|
||||||
#define DIR_RECURSE 256 /* -R (not yet implemented) */
|
|
||||||
|
|
||||||
#ifndef MAJOR
|
#ifndef MAJOR
|
||||||
#define MAJOR(dev) (((dev)>>8)&0xff)
|
#define MAJOR(dev) (((dev)>>8)&0xff)
|
||||||
@ -450,10 +449,33 @@ static const char ls_usage[] = "ls [-1a"
|
|||||||
#ifdef BB_FEATURE_LS_FILETYPES
|
#ifdef BB_FEATURE_LS_FILETYPES
|
||||||
"F"
|
"F"
|
||||||
#endif
|
#endif
|
||||||
#ifdef FEATURE_RECURSIVE
|
"] [filenames...]\n\n"
|
||||||
"R"
|
"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
|
#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)
|
extern int ls_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
@ -508,11 +530,6 @@ extern int ls_main(int argc, char **argv)
|
|||||||
case 'd':
|
case 'd':
|
||||||
opts |= DIR_NOLIST;
|
opts |= DIR_NOLIST;
|
||||||
break;
|
break;
|
||||||
#ifdef FEATURE_RECURSIVE
|
|
||||||
case 'R':
|
|
||||||
opts |= DIR_RECURSE;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef BB_FEATURE_LS_TIMESTAMPS
|
#ifdef BB_FEATURE_LS_TIMESTAMPS
|
||||||
case 'u':
|
case 'u':
|
||||||
time_fmt = TIME_ACCESS;
|
time_fmt = TIME_ACCESS;
|
||||||
|
@ -70,7 +70,7 @@ int mknod_main(int argc, char **argv)
|
|||||||
|
|
||||||
if (mknod(argv[1], mode, dev) != 0) {
|
if (mknod(argv[1], mode, dev) != 0) {
|
||||||
perror(argv[1]);
|
perror(argv[1]);
|
||||||
return (FALSE);
|
exit (FALSE);
|
||||||
}
|
}
|
||||||
return (TRUE);
|
exit (TRUE);
|
||||||
}
|
}
|
||||||
|
163
dirname.c
163
dirname.c
@ -1,146 +1,45 @@
|
|||||||
/* vi: set sw=4 ts=4: */
|
/* vi: set sw=4 ts=4: */
|
||||||
/*
|
/*
|
||||||
* This is temporary -- needs to be rewritten to be tighter */
|
* Mini dirname implementation for busybox
|
||||||
/*
|
|
||||||
* Copyright (c) 1991, 1993, 1994
|
|
||||||
* The Regents of the University of California. All rights reserved.
|
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Copyright (C) 2000 by Lineo, inc.
|
||||||
* modification, are permitted provided that the following conditions
|
* Written by Erik Andersen <andersen@lineo.com>, <andersee@debian.org>
|
||||||
* are met:
|
*
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* it under the terms of the GNU General Public License as published by
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* (at your option) any later version.
|
||||||
* documentation and/or other materials provided with the distribution.
|
*
|
||||||
* 3. All advertising materials mentioning features or use of this software
|
* This program is distributed in the hope that it will be useful,
|
||||||
* must display the following acknowledgement:
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* This product includes software developed by the University of
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* California, Berkeley and its contributors.
|
* General Public License for more details.
|
||||||
* 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
|
* You should have received a copy of the GNU General Public License
|
||||||
* without specific prior written permission.
|
* 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 "internal.h"
|
||||||
#include <stdio.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");
|
if ((argc < 2) || (**(argv + 1) == '-')) {
|
||||||
exit(1);
|
usage("dirname [file ...]\n");
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
argv++;
|
||||||
|
|
||||||
/*
|
s=*argv+strlen(*argv)-1;
|
||||||
* (3) If there are any trailing slash characters in string, they
|
while (s && *s == '/') {
|
||||||
* shall be removed.
|
*s = '\0';
|
||||||
*/
|
s=*argv+strlen(*argv)-1;
|
||||||
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 = strrchr(*argv, '/');
|
||||||
/*
|
if (s && *s)
|
||||||
* (6) If the remaining string is //, it is implementation defined
|
*s = '\0';
|
||||||
* whether steps (7) and (8) are skipped or processed.
|
printf("%s\n", (s)? *argv : ".");
|
||||||
*
|
exit(TRUE);
|
||||||
* 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);
|
|
||||||
}
|
}
|
||||||
|
1025
docs/CommandList
1025
docs/CommandList
File diff suppressed because it is too large
Load Diff
22
docs/Makefile
Normal file
22
docs/Makefile
Normal 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
|
||||||
|
|
745
docs/busybox.pod
745
docs/busybox.pod
File diff suppressed because it is too large
Load Diff
7
dutmp.c
7
dutmp.c
@ -19,10 +19,9 @@
|
|||||||
#define bb_need_io_error
|
#define bb_need_io_error
|
||||||
#include "messages.c"
|
#include "messages.c"
|
||||||
|
|
||||||
static const char dutmp_usage[] = "dutmp\n"
|
static const char dutmp_usage[] = "dutmp [FILE]\n\n"
|
||||||
"\n"
|
"Dump utmp file format (pipe delimited) from FILE\n"
|
||||||
"\tDump file or stdin utmp file format to stdout, pipe delimited.\n"
|
"or stdin to stdout. (i.e. 'dutmp /var/run/utmp')\n";
|
||||||
"\tdutmp /var/run/utmp\n";
|
|
||||||
|
|
||||||
extern int dutmp_main(int argc, char **argv)
|
extern int dutmp_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
11
echo.c
11
echo.c
@ -25,6 +25,14 @@
|
|||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
#include <stdio.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
|
extern int
|
||||||
echo_main(int argc, char** argv)
|
echo_main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
@ -45,6 +53,9 @@ echo_main(int argc, char** argv)
|
|||||||
} else if (strcmp(p, "-E")==0) {
|
} else if (strcmp(p, "-E")==0) {
|
||||||
eflag = 0;
|
eflag = 0;
|
||||||
}
|
}
|
||||||
|
else if (strncmp(p, "--", 2)==0) {
|
||||||
|
usage( uname_usage);
|
||||||
|
}
|
||||||
else break;
|
else break;
|
||||||
ap++;
|
ap++;
|
||||||
}
|
}
|
||||||
|
9
fbset.c
9
fbset.c
@ -104,9 +104,9 @@ struct cmdoptions_t {
|
|||||||
"-hsync", 1, CMD_HSYNC}, {
|
"-hsync", 1, CMD_HSYNC}, {
|
||||||
"-vsync", 1, CMD_VSYNC}, {
|
"-vsync", 1, CMD_VSYNC}, {
|
||||||
"-laced", 1, CMD_LACED}, {
|
"-laced", 1, CMD_LACED}, {
|
||||||
"-double", 1, CMD_DOUBLE},
|
"-double", 1, CMD_DOUBLE}, {
|
||||||
|
"--help", 0, CMD_HELP}, {
|
||||||
#ifdef BB_FEATURE_FBSET_FANCY
|
#ifdef BB_FEATURE_FBSET_FANCY
|
||||||
{
|
|
||||||
"--help", 0, CMD_HELP}, {
|
"--help", 0, CMD_HELP}, {
|
||||||
"-all", 0, CMD_ALL}, {
|
"-all", 0, CMD_ALL}, {
|
||||||
"-xres", 1, CMD_XRES}, {
|
"-xres", 1, CMD_XRES}, {
|
||||||
@ -130,9 +130,8 @@ struct cmdoptions_t {
|
|||||||
"-bcast", 1, CMD_BCAST}, {
|
"-bcast", 1, CMD_BCAST}, {
|
||||||
"-rgba", 1, CMD_RGBA}, {
|
"-rgba", 1, CMD_RGBA}, {
|
||||||
"-step", 1, CMD_STEP}, {
|
"-step", 1, CMD_STEP}, {
|
||||||
"-move", 1, CMD_MOVE},
|
"-move", 1, CMD_MOVE}, {
|
||||||
#endif
|
#endif
|
||||||
{
|
|
||||||
0, 0, 0}
|
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,
|
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->red.offset, v->green.length, v->green.offset, v->blue.length,
|
||||||
v->blue.offset, v->transp.length, v->transp.offset);
|
v->blue.offset, v->transp.length, v->transp.offset);
|
||||||
printf("endmode\n");
|
printf("endmode\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fbset_usage(void)
|
static void fbset_usage(void)
|
||||||
|
@ -33,8 +33,8 @@ extern int fdflush_main(int argc, char **argv)
|
|||||||
int value;
|
int value;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
if (argc <= 1 || **(argv++) == '-') {
|
if (argc <= 1 || **(++argv) == '-') {
|
||||||
usage("fdflush device\n");
|
usage("fdflush device\n\nForce floppy disk drive to detect disk change\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
fd = open(*argv, 0);
|
fd = open(*argv, 0);
|
||||||
|
6
find.c
6
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"
|
"Search for files in a directory hierarchy. The default PATH is\n"
|
||||||
"the current directory; default EXPRESSION is '-print'\n\n"
|
"the current directory; default EXPRESSION is '-print'\n\n"
|
||||||
"\nEXPRESSION may consist of:\n"
|
"\nEXPRESSION may consist of:\n"
|
||||||
"\t-follow\n\t\tDereference symbolic links.\n"
|
"\t-follow\t\tDereference symbolic links.\n"
|
||||||
"\t-name PATTERN\n\t\tFile name (with leading directories removed) matches PATTERN.\n"
|
"\t-name PATTERN\tFile name (leading directories removed) matches PATTERN.\n"
|
||||||
"\t-print\n\t\tprint the full file name followed by a newline to stdout.\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)
|
static int fileAction(const char *fileName, struct stat *statbuf, void* junk)
|
||||||
|
@ -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"
|
"Search for files in a directory hierarchy. The default PATH is\n"
|
||||||
"the current directory; default EXPRESSION is '-print'\n\n"
|
"the current directory; default EXPRESSION is '-print'\n\n"
|
||||||
"\nEXPRESSION may consist of:\n"
|
"\nEXPRESSION may consist of:\n"
|
||||||
"\t-follow\n\t\tDereference symbolic links.\n"
|
"\t-follow\t\tDereference symbolic links.\n"
|
||||||
"\t-name PATTERN\n\t\tFile name (with leading directories removed) matches PATTERN.\n"
|
"\t-name PATTERN\tFile name (leading directories removed) matches PATTERN.\n"
|
||||||
"\t-print\n\t\tprint the full file name followed by a newline to stdout.\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)
|
static int fileAction(const char *fileName, struct stat *statbuf, void* junk)
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
static const char freeramdisk_usage[] =
|
static const char freeramdisk_usage[] =
|
||||||
"freeramdisk DEVICE\n\n"
|
"freeramdisk DEVICE\n\n"
|
||||||
"Frees all memory used by the specified ramdisk.\n";
|
"Free all memory used by the specified ramdisk.\n";
|
||||||
|
|
||||||
extern int
|
extern int
|
||||||
freeramdisk_main(int argc, char **argv)
|
freeramdisk_main(int argc, char **argv)
|
||||||
@ -42,7 +42,7 @@ freeramdisk_main(int argc, char **argv)
|
|||||||
char rname[256] = "/dev/ram";
|
char rname[256] = "/dev/ram";
|
||||||
int f;
|
int f;
|
||||||
|
|
||||||
if (argc > 2 || ( argv[1] && *argv[1] == '-')) {
|
if (argc < 2 || ( argv[1] && *argv[1] == '-')) {
|
||||||
usage(freeramdisk_usage);
|
usage(freeramdisk_usage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,10 +50,10 @@ freeramdisk_main(int argc, char **argv)
|
|||||||
strcpy(rname, argv[1]);
|
strcpy(rname, argv[1]);
|
||||||
|
|
||||||
if ((f = open(rname, O_RDWR)) == -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) {
|
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
|
/* Don't bother closing. Exit does
|
||||||
* that, so we can save a few bytes */
|
* that, so we can save a few bytes */
|
||||||
|
35
ls.c
35
ls.c
@ -88,7 +88,6 @@
|
|||||||
#define DISP_FULLTIME 32 /* show extended time display */
|
#define DISP_FULLTIME 32 /* show extended time display */
|
||||||
#define DIR_NOLIST 64 /* show directory as itself, not contents */
|
#define DIR_NOLIST 64 /* show directory as itself, not contents */
|
||||||
#define DISP_DIRNAME 128 /* show directory name (for internal use) */
|
#define DISP_DIRNAME 128 /* show directory name (for internal use) */
|
||||||
#define DIR_RECURSE 256 /* -R (not yet implemented) */
|
|
||||||
|
|
||||||
#ifndef MAJOR
|
#ifndef MAJOR
|
||||||
#define MAJOR(dev) (((dev)>>8)&0xff)
|
#define MAJOR(dev) (((dev)>>8)&0xff)
|
||||||
@ -450,10 +449,33 @@ static const char ls_usage[] = "ls [-1a"
|
|||||||
#ifdef BB_FEATURE_LS_FILETYPES
|
#ifdef BB_FEATURE_LS_FILETYPES
|
||||||
"F"
|
"F"
|
||||||
#endif
|
#endif
|
||||||
#ifdef FEATURE_RECURSIVE
|
"] [filenames...]\n\n"
|
||||||
"R"
|
"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
|
#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)
|
extern int ls_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
@ -508,11 +530,6 @@ extern int ls_main(int argc, char **argv)
|
|||||||
case 'd':
|
case 'd':
|
||||||
opts |= DIR_NOLIST;
|
opts |= DIR_NOLIST;
|
||||||
break;
|
break;
|
||||||
#ifdef FEATURE_RECURSIVE
|
|
||||||
case 'R':
|
|
||||||
opts |= DIR_RECURSE;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef BB_FEATURE_LS_TIMESTAMPS
|
#ifdef BB_FEATURE_LS_TIMESTAMPS
|
||||||
case 'u':
|
case 'u':
|
||||||
time_fmt = TIME_ACCESS;
|
time_fmt = TIME_ACCESS;
|
||||||
|
@ -19,10 +19,9 @@
|
|||||||
#define bb_need_io_error
|
#define bb_need_io_error
|
||||||
#include "messages.c"
|
#include "messages.c"
|
||||||
|
|
||||||
static const char dutmp_usage[] = "dutmp\n"
|
static const char dutmp_usage[] = "dutmp [FILE]\n\n"
|
||||||
"\n"
|
"Dump utmp file format (pipe delimited) from FILE\n"
|
||||||
"\tDump file or stdin utmp file format to stdout, pipe delimited.\n"
|
"or stdin to stdout. (i.e. 'dutmp /var/run/utmp')\n";
|
||||||
"\tdutmp /var/run/utmp\n";
|
|
||||||
|
|
||||||
extern int dutmp_main(int argc, char **argv)
|
extern int dutmp_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
4
mknod.c
4
mknod.c
@ -70,7 +70,7 @@ int mknod_main(int argc, char **argv)
|
|||||||
|
|
||||||
if (mknod(argv[1], mode, dev) != 0) {
|
if (mknod(argv[1], mode, dev) != 0) {
|
||||||
perror(argv[1]);
|
perror(argv[1]);
|
||||||
return (FALSE);
|
exit (FALSE);
|
||||||
}
|
}
|
||||||
return (TRUE);
|
exit (TRUE);
|
||||||
}
|
}
|
||||||
|
2
mount.c
2
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"
|
"\tsuid / nosuid:\tAllow set-user-id-root programs / disallow them.\n"
|
||||||
"\tremount: Re-mount a currently-mounted filesystem, changing its flags.\n"
|
"\tremount: Re-mount a currently-mounted filesystem, changing its flags.\n"
|
||||||
"\tro / rw: Mount for read-only / read-write.\n"
|
"\tro / rw: Mount for read-only / read-write.\n"
|
||||||
"\t"
|
|
||||||
|
|
||||||
"There are EVEN MORE flags that are specific to each filesystem.\n"
|
"There are EVEN MORE flags that are specific to each filesystem.\n"
|
||||||
"You'll have to see the written documentation for those.\n";
|
"You'll have to see the written documentation for those.\n";
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* vi: set sw=4 ts=4: */
|
/* 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
|
* Mini ping implementation for busybox
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
|
* 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"
|
static const char *ping_usage = "ping [OPTION]... host\n\n"
|
||||||
"Send ICMP ECHO_REQUEST packets to network hosts.\n\n"
|
"Send ICMP ECHO_REQUEST packets to network hosts.\n\n"
|
||||||
"Options:\n"
|
"Options:\n"
|
||||||
"\t-q\t\tQuiet mode, only displays output at start"
|
"\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" "\t-c COUNT\tSend only COUNT pings.\n";
|
"\t\t\tand when finished.\n";
|
||||||
|
|
||||||
static char *hostname = NULL;
|
static char *hostname = NULL;
|
||||||
static struct sockaddr_in pingaddr;
|
static struct sockaddr_in pingaddr;
|
||||||
@ -418,9 +418,7 @@ extern int ping_main(int argc, char **argv)
|
|||||||
argv++;
|
argv++;
|
||||||
options = 0;
|
options = 0;
|
||||||
/* Parse any options */
|
/* Parse any options */
|
||||||
while (argc > 1) {
|
while (argc >= 1 && **argv == '-') {
|
||||||
if (**argv != '-')
|
|
||||||
usage(ping_usage);
|
|
||||||
thisarg = *argv;
|
thisarg = *argv;
|
||||||
thisarg++;
|
thisarg++;
|
||||||
switch (*thisarg) {
|
switch (*thisarg) {
|
||||||
|
12
ping.c
12
ping.c
@ -1,6 +1,6 @@
|
|||||||
/* vi: set sw=4 ts=4: */
|
/* 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
|
* Mini ping implementation for busybox
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
|
* 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"
|
static const char *ping_usage = "ping [OPTION]... host\n\n"
|
||||||
"Send ICMP ECHO_REQUEST packets to network hosts.\n\n"
|
"Send ICMP ECHO_REQUEST packets to network hosts.\n\n"
|
||||||
"Options:\n"
|
"Options:\n"
|
||||||
"\t-q\t\tQuiet mode, only displays output at start"
|
"\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" "\t-c COUNT\tSend only COUNT pings.\n";
|
"\t\t\tand when finished.\n";
|
||||||
|
|
||||||
static char *hostname = NULL;
|
static char *hostname = NULL;
|
||||||
static struct sockaddr_in pingaddr;
|
static struct sockaddr_in pingaddr;
|
||||||
@ -418,9 +418,7 @@ extern int ping_main(int argc, char **argv)
|
|||||||
argv++;
|
argv++;
|
||||||
options = 0;
|
options = 0;
|
||||||
/* Parse any options */
|
/* Parse any options */
|
||||||
while (argc > 1) {
|
while (argc >= 1 && **argv == '-') {
|
||||||
if (**argv != '-')
|
|
||||||
usage(ping_usage);
|
|
||||||
thisarg = *argv;
|
thisarg = *argv;
|
||||||
thisarg++;
|
thisarg++;
|
||||||
switch (*thisarg) {
|
switch (*thisarg) {
|
||||||
|
@ -104,9 +104,9 @@ struct cmdoptions_t {
|
|||||||
"-hsync", 1, CMD_HSYNC}, {
|
"-hsync", 1, CMD_HSYNC}, {
|
||||||
"-vsync", 1, CMD_VSYNC}, {
|
"-vsync", 1, CMD_VSYNC}, {
|
||||||
"-laced", 1, CMD_LACED}, {
|
"-laced", 1, CMD_LACED}, {
|
||||||
"-double", 1, CMD_DOUBLE},
|
"-double", 1, CMD_DOUBLE}, {
|
||||||
|
"--help", 0, CMD_HELP}, {
|
||||||
#ifdef BB_FEATURE_FBSET_FANCY
|
#ifdef BB_FEATURE_FBSET_FANCY
|
||||||
{
|
|
||||||
"--help", 0, CMD_HELP}, {
|
"--help", 0, CMD_HELP}, {
|
||||||
"-all", 0, CMD_ALL}, {
|
"-all", 0, CMD_ALL}, {
|
||||||
"-xres", 1, CMD_XRES}, {
|
"-xres", 1, CMD_XRES}, {
|
||||||
@ -130,9 +130,8 @@ struct cmdoptions_t {
|
|||||||
"-bcast", 1, CMD_BCAST}, {
|
"-bcast", 1, CMD_BCAST}, {
|
||||||
"-rgba", 1, CMD_RGBA}, {
|
"-rgba", 1, CMD_RGBA}, {
|
||||||
"-step", 1, CMD_STEP}, {
|
"-step", 1, CMD_STEP}, {
|
||||||
"-move", 1, CMD_MOVE},
|
"-move", 1, CMD_MOVE}, {
|
||||||
#endif
|
#endif
|
||||||
{
|
|
||||||
0, 0, 0}
|
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,
|
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->red.offset, v->green.length, v->green.offset, v->blue.length,
|
||||||
v->blue.offset, v->transp.length, v->transp.offset);
|
v->blue.offset, v->transp.length, v->transp.offset);
|
||||||
printf("endmode\n");
|
printf("endmode\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fbset_usage(void)
|
static void fbset_usage(void)
|
||||||
|
@ -33,8 +33,8 @@ extern int fdflush_main(int argc, char **argv)
|
|||||||
int value;
|
int value;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
if (argc <= 1 || **(argv++) == '-') {
|
if (argc <= 1 || **(++argv) == '-') {
|
||||||
usage("fdflush device\n");
|
usage("fdflush device\n\nForce floppy disk drive to detect disk change\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
fd = open(*argv, 0);
|
fd = open(*argv, 0);
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
static const char freeramdisk_usage[] =
|
static const char freeramdisk_usage[] =
|
||||||
"freeramdisk DEVICE\n\n"
|
"freeramdisk DEVICE\n\n"
|
||||||
"Frees all memory used by the specified ramdisk.\n";
|
"Free all memory used by the specified ramdisk.\n";
|
||||||
|
|
||||||
extern int
|
extern int
|
||||||
freeramdisk_main(int argc, char **argv)
|
freeramdisk_main(int argc, char **argv)
|
||||||
@ -42,7 +42,7 @@ freeramdisk_main(int argc, char **argv)
|
|||||||
char rname[256] = "/dev/ram";
|
char rname[256] = "/dev/ram";
|
||||||
int f;
|
int f;
|
||||||
|
|
||||||
if (argc > 2 || ( argv[1] && *argv[1] == '-')) {
|
if (argc < 2 || ( argv[1] && *argv[1] == '-')) {
|
||||||
usage(freeramdisk_usage);
|
usage(freeramdisk_usage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,10 +50,10 @@ freeramdisk_main(int argc, char **argv)
|
|||||||
strcpy(rname, argv[1]);
|
strcpy(rname, argv[1]);
|
||||||
|
|
||||||
if ((f = open(rname, O_RDWR)) == -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) {
|
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
|
/* Don't bother closing. Exit does
|
||||||
* that, so we can save a few bytes */
|
* that, so we can save a few bytes */
|
||||||
|
@ -83,8 +83,6 @@ static const char mount_usage[] = "\tmount [flags]\n"
|
|||||||
"\tsuid / nosuid:\tAllow set-user-id-root programs / disallow them.\n"
|
"\tsuid / nosuid:\tAllow set-user-id-root programs / disallow them.\n"
|
||||||
"\tremount: Re-mount a currently-mounted filesystem, changing its flags.\n"
|
"\tremount: Re-mount a currently-mounted filesystem, changing its flags.\n"
|
||||||
"\tro / rw: Mount for read-only / read-write.\n"
|
"\tro / rw: Mount for read-only / read-write.\n"
|
||||||
"\t"
|
|
||||||
|
|
||||||
"There are EVEN MORE flags that are specific to each filesystem.\n"
|
"There are EVEN MORE flags that are specific to each filesystem.\n"
|
||||||
"You'll have to see the written documentation for those.\n";
|
"You'll have to see the written documentation for those.\n";
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user