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,14 +10,14 @@
|
|||||||
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>:
|
||||||
|
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");
|
||||||
}
|
}
|
||||||
|
argv++;
|
||||||
|
|
||||||
extern int dirname_main(argc, argv)
|
s=*argv+strlen(*argv)-1;
|
||||||
int argc;
|
while (s && *s == '/') {
|
||||||
char **argv;
|
*s = '\0';
|
||||||
{
|
s=*argv+strlen(*argv)-1;
|
||||||
char *p;
|
|
||||||
int ch;
|
|
||||||
|
|
||||||
while ((ch = getopt(argc, argv, "")) != -1)
|
|
||||||
switch (ch) {
|
|
||||||
case '?':
|
|
||||||
default:
|
|
||||||
dirname_usage();
|
|
||||||
}
|
}
|
||||||
argc -= optind;
|
s = strrchr(*argv, '/');
|
||||||
argv += optind;
|
if (s && *s)
|
||||||
|
*s = '\0';
|
||||||
if (argc != 1)
|
printf("%s\n", (s)? *argv : ".");
|
||||||
dirname_usage();
|
exit(TRUE);
|
||||||
|
|
||||||
/*
|
|
||||||
* (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);
|
|
||||||
}
|
}
|
||||||
|
@ -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");
|
||||||
}
|
}
|
||||||
|
argv++;
|
||||||
|
|
||||||
extern int dirname_main(argc, argv)
|
s=*argv+strlen(*argv)-1;
|
||||||
int argc;
|
while (s && *s == '/') {
|
||||||
char **argv;
|
*s = '\0';
|
||||||
{
|
s=*argv+strlen(*argv)-1;
|
||||||
char *p;
|
|
||||||
int ch;
|
|
||||||
|
|
||||||
while ((ch = getopt(argc, argv, "")) != -1)
|
|
||||||
switch (ch) {
|
|
||||||
case '?':
|
|
||||||
default:
|
|
||||||
dirname_usage();
|
|
||||||
}
|
}
|
||||||
argc -= optind;
|
s = strrchr(*argv, '/');
|
||||||
argv += optind;
|
if (s && *s)
|
||||||
|
*s = '\0';
|
||||||
if (argc != 1)
|
printf("%s\n", (s)? *argv : ".");
|
||||||
dirname_usage();
|
exit(TRUE);
|
||||||
|
|
||||||
/*
|
|
||||||
* (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);
|
|
||||||
}
|
}
|
||||||
|
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
|
||||||
|
|
569
docs/busybox.pod
569
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
|
=head1 NAME
|
||||||
|
|
||||||
@ -36,20 +36,18 @@ tries to make itself useful to small systems with limited resources.
|
|||||||
|
|
||||||
Currently defined functions include:
|
Currently defined functions include:
|
||||||
|
|
||||||
basename, cat, chmod, chown, chgrp, chroot, clear, chvt, cp, mv, date,
|
basename, cat, chmod, chown, chgrp, chroot, clear, chvt, cp, date,
|
||||||
dd, df, dirname, dmesg, du, dutmp, echo, fbset, fdflush, find, free,
|
dd, df, dirname, dmesg, du, dutmp, echo, false, fbset, fdflush, find, free,
|
||||||
freeramdisk, deallocvt, fsck.minix, mkfs.minix, grep, gunzip, gzip,
|
freeramdisk, deallocvt, fsck.minix, mkfs.minix, grep, gunzip, gzip,
|
||||||
halt, head, hostid, hostname, init, kill, killall, length, ln, loadacm,
|
halt, head, hostid, hostname, init, kill, killall, length, ln, loadacm,
|
||||||
loadfont, loadkmap, ls, lsmod, makedevs, math, mkdir, mkfifo, mknod,
|
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,
|
pwd, reboot, rm, rmdir, rmmod, sed, sh, fdisk, sfdisk, sleep, sort,
|
||||||
sync, syslogd, logger, logname, swapon, swapoff, tail, tar, [, test,
|
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
|
usleep, wc, whoami, yes, zcat
|
||||||
|
|
||||||
=head1 OPTIONS
|
=head1 COMMON OPTIONS
|
||||||
|
|
||||||
Common Options:
|
|
||||||
|
|
||||||
Most BusyBox commands support the B<--help> option to provide a
|
Most BusyBox commands support the B<--help> option to provide a
|
||||||
terse runtime description of their behavior.
|
terse runtime description of their behavior.
|
||||||
@ -69,6 +67,8 @@ Example:
|
|||||||
$ basename /usr/local/bin/
|
$ basename /usr/local/bin/
|
||||||
bin
|
bin
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item cat
|
=item cat
|
||||||
|
|
||||||
Usage: cat [file ...]
|
Usage: cat [file ...]
|
||||||
@ -80,6 +80,8 @@ Example:
|
|||||||
$ cat /proc/uptime
|
$ cat /proc/uptime
|
||||||
110716.72 17.67
|
110716.72 17.67
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item chmod
|
=item chmod
|
||||||
|
|
||||||
Usage: chmod [B<-R>] MODE[,MODE]... FILE...
|
Usage: chmod [B<-R>] MODE[,MODE]... FILE...
|
||||||
@ -138,6 +140,8 @@ Example:
|
|||||||
$ ls -l /tmp/foo
|
$ ls -l /tmp/foo
|
||||||
-r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
|
-r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item chown
|
=item chown
|
||||||
|
|
||||||
Usage: chown [OPTION]... OWNER[.[GROUP] FILE...
|
Usage: chown [OPTION]... OWNER[.[GROUP] FILE...
|
||||||
@ -159,6 +163,8 @@ Example:
|
|||||||
ls -l /tmp/foo
|
ls -l /tmp/foo
|
||||||
-r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
|
-r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item chgrp
|
=item chgrp
|
||||||
|
|
||||||
Usage: chgrp [OPTION]... GROUP FILE...
|
Usage: chgrp [OPTION]... GROUP FILE...
|
||||||
@ -177,31 +183,38 @@ Example:
|
|||||||
$ ls -l /tmp/foo
|
$ ls -l /tmp/foo
|
||||||
-r--r--r-- 1 andersen root 0 Apr 12 18:25 /tmp/foo
|
-r--r--r-- 1 andersen root 0 Apr 12 18:25 /tmp/foo
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item chroot
|
=item chroot
|
||||||
|
|
||||||
Usage: chroot NEWROOT [COMMAND...]
|
Usage: chroot NEWROOT [COMMAND...]
|
||||||
|
|
||||||
Run COMMAND with root directory set to NEWROOT.
|
Run COMMAND with root directory set to NEWROOT.
|
||||||
|
|
||||||
Exmaple:
|
Example:
|
||||||
|
|
||||||
$ ls -l /bin/ls
|
$ 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
|
$ mount /dev/hdc1 /mnt -t minix
|
||||||
$ chroot /mnt
|
$ chroot /mnt
|
||||||
$ ls -l /bin/ls
|
$ ls -l /bin/ls
|
||||||
-rwxr-xr-x 1 root root 40816 Feb 5 07:45 /bin/ls*
|
-rwxr-xr-x 1 root root 40816 Feb 5 07:45 /bin/ls*
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item clear
|
=item clear
|
||||||
|
|
||||||
Clears the screen.
|
Clears the screen.
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item chvt
|
=item chvt
|
||||||
|
|
||||||
Usage: chvt N
|
Usage: chvt N
|
||||||
|
|
||||||
Change foreground virtual terminal to /dev/ttyN
|
Change foreground virtual terminal to /dev/ttyN
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item cp
|
=item cp
|
||||||
|
|
||||||
@ -216,6 +229,8 @@ Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
|
|||||||
-p preserve file attributes if possable
|
-p preserve file attributes if possable
|
||||||
-R copy directories recursively
|
-R copy directories recursively
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item date
|
=item date
|
||||||
|
|
||||||
Usage: date [OPTION]... [+FORMAT]
|
Usage: date [OPTION]... [+FORMAT]
|
||||||
@ -235,6 +250,8 @@ Example:
|
|||||||
$ date
|
$ date
|
||||||
Wed Apr 12 18:52:41 MDT 2000
|
Wed Apr 12 18:52:41 MDT 2000
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item dd
|
=item dd
|
||||||
|
|
||||||
Usage: dd [if=name] [of=name] [bs=n] [count=n] [skip=n] [seek=n]
|
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)
|
Numbers may be suffixed by w (x2), k (x1024), b (x512), or M (x1024^2)
|
||||||
|
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
$ dd if=/dev/zero of=/dev/ram1 bs=1M count=4
|
$ dd if=/dev/zero of=/dev/ram1 bs=1M count=4
|
||||||
4+0 records in
|
4+0 records in
|
||||||
4+0 records out
|
4+0 records out
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item df
|
=item df
|
||||||
|
|
||||||
Usage: df [filesystem ...]
|
Usage: df [filesystem ...]
|
||||||
|
|
||||||
Prints the filesystem space used and space available.
|
Prints the filesystem space used and space available.
|
||||||
|
|
||||||
Exmaple:
|
Example:
|
||||||
|
|
||||||
$ df
|
$ df
|
||||||
Filesystem 1k-blocks Used Available Use% Mounted on
|
Filesystem 1k-blocks Used Available Use% Mounted on
|
||||||
@ -273,12 +291,31 @@ Exmaple:
|
|||||||
Filesystem 1k-blocks Used Available Use% Mounted on
|
Filesystem 1k-blocks Used Available Use% Mounted on
|
||||||
/dev/sda3 8690864 8553540 137324 98% /
|
/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
|
=item dmesg
|
||||||
|
|
||||||
Usage: dmesg [B<-c>] [B<-n> level] [B<-s> bufsize]
|
Usage: dmesg [B<-c>] [B<-n> level] [B<-s> bufsize]
|
||||||
|
|
||||||
Print or controls the kernel ring buffer.
|
Print or controls the kernel ring buffer.
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item du
|
=item du
|
||||||
|
|
||||||
Usage: du [OPTION]... [FILE]...
|
Usage: du [OPTION]... [FILE]...
|
||||||
@ -305,6 +342,56 @@ Example:
|
|||||||
104 ./docs
|
104 ./docs
|
||||||
2417 .
|
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
|
=item fbset
|
||||||
|
|
||||||
@ -327,6 +414,26 @@ Options:
|
|||||||
-laced
|
-laced
|
||||||
-double
|
-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
|
=item find
|
||||||
|
|
||||||
@ -337,18 +444,18 @@ the current directory; default EXPRESSION is '-print'
|
|||||||
|
|
||||||
|
|
||||||
EXPRESSION may consist of:
|
EXPRESSION may consist of:
|
||||||
-follow
|
|
||||||
Dereference symbolic links.
|
-follow Dereference symbolic links.
|
||||||
-name PATTERN
|
-name PATTERN File name (leading directories removed) matches PATTERN.
|
||||||
File name (with leading directories removed) matches PATTERN.
|
-print print the full file name followed by a newline to stdout.
|
||||||
-print
|
|
||||||
print the full file name followed by a newline to stdout.
|
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
$ find / -name /etc/passwd
|
$ find / -name /etc/passwd
|
||||||
/etc/passwd
|
/etc/passwd
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item free
|
=item free
|
||||||
|
|
||||||
Usage: free
|
Usage: free
|
||||||
@ -363,6 +470,19 @@ Example:
|
|||||||
Swap: 128516 8404 120112
|
Swap: 128516 8404 120112
|
||||||
Total: 386144 257128 129016
|
Total: 386144 257128 129016
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
=item freeramdisk
|
||||||
|
|
||||||
|
Usage: freeramdisk DEVICE
|
||||||
|
|
||||||
|
Free all memory used by the specified ramdisk.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
$ freeramdisk /dev/ram2
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item deallocvt
|
=item deallocvt
|
||||||
|
|
||||||
@ -370,6 +490,7 @@ Usage: deallocvt N
|
|||||||
|
|
||||||
Deallocates unused virtual terminal /dev/ttyN
|
Deallocates unused virtual terminal /dev/ttyN
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item fsck.minix
|
=item fsck.minix
|
||||||
|
|
||||||
@ -387,6 +508,7 @@ OPTIONS:
|
|||||||
-m Activates MINIX-like "mode not cleared" warnings
|
-m Activates MINIX-like "mode not cleared" warnings
|
||||||
-f Force file system check.
|
-f Force file system check.
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item mkfs.minix
|
=item mkfs.minix
|
||||||
|
|
||||||
@ -402,6 +524,7 @@ OPTIONS:
|
|||||||
-l FILENAME Read the bad blocks list from FILENAME
|
-l FILENAME Read the bad blocks list from FILENAME
|
||||||
-v Make a Minix version 2 filesystem
|
-v Make a Minix version 2 filesystem
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item grep
|
=item grep
|
||||||
|
|
||||||
@ -418,7 +541,6 @@ OPTIONS:
|
|||||||
|
|
||||||
This version of grep matches full regular expresions.
|
This version of grep matches full regular expresions.
|
||||||
|
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
$ grep root /etc/passwd
|
$ grep root /etc/passwd
|
||||||
@ -426,6 +548,23 @@ Example:
|
|||||||
$ grep ^[rR]oo. /etc/passwd
|
$ grep ^[rR]oo. /etc/passwd
|
||||||
root:x:0:0:root:/root:/bin/bash
|
root:x:0:0:root:/root:/bin/bash
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
=item gunzip
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
=item gzip
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
=item halt
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item head
|
=item head
|
||||||
|
|
||||||
Usage: head [OPTION] [FILE]...
|
Usage: head [OPTION] [FILE]...
|
||||||
@ -444,6 +583,13 @@ Example:
|
|||||||
root:x:0:0:root:/root:/bin/bash
|
root:x:0:0:root:/root:/bin/bash
|
||||||
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
|
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
=item hostid
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item hostname
|
=item hostname
|
||||||
|
|
||||||
Usage: hostname [OPTION] {hostname | B<-F> file}
|
Usage: hostname [OPTION] {hostname | B<-F> file}
|
||||||
@ -463,6 +609,13 @@ Example:
|
|||||||
$ hostname
|
$ hostname
|
||||||
slag
|
slag
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
=item init
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item kill
|
=item kill
|
||||||
|
|
||||||
Usage: kill [B<-signal>] process-id [process-id ...]
|
Usage: kill [B<-signal>] process-id [process-id ...]
|
||||||
@ -484,6 +637,17 @@ Example:
|
|||||||
267 www-data www-data S [apache]
|
267 www-data www-data S [apache]
|
||||||
$ kill 252
|
$ kill 252
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
=item killall
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
=item length
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item ln
|
=item ln
|
||||||
|
|
||||||
Usage: ln [OPTION] TARGET... LINK_NAME|DIRECTORY
|
Usage: ln [OPTION] TARGET... LINK_NAME|DIRECTORY
|
||||||
@ -494,30 +658,95 @@ Options:
|
|||||||
-s make symbolic links instead of hard links
|
-s make symbolic links instead of hard links
|
||||||
-f remove existing destination files
|
-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
|
=item ls
|
||||||
|
|
||||||
Usage: ls [B<-1acdelnpuxACF>] [filenames...]
|
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
|
=item lsmod
|
||||||
|
|
||||||
|
Usage: lsmod
|
||||||
|
|
||||||
|
Shows information about all loaded modules.
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
=item makedevs
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
=item math
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item mkdir
|
=item mkdir
|
||||||
|
|
||||||
Usage: Usage: mkdir [OPTION] DIRECTORY...
|
Usage: mkdir [OPTION] DIRECTORY...
|
||||||
|
|
||||||
Create the DIRECTORY(ies), if they do not already exist
|
Create the DIRECTORY(ies), if they do not already exist
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
|
|
||||||
-m set permission mode (as in chmod), not rwxrwxrwx - umask
|
-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
|
=item mknod
|
||||||
|
|
||||||
Usage: mknod NAME TYPE MAJOR MINOR
|
Usage: mknod NAME TYPE MAJOR MINOR
|
||||||
|
|
||||||
Make block or character special files.
|
Make block or character special files.
|
||||||
|
|
||||||
TYPEs include:
|
TYPEs include:
|
||||||
@ -526,10 +755,16 @@ TYPEs include:
|
|||||||
c or u: Make a character (un-buffered) device.
|
c or u: Make a character (un-buffered) device.
|
||||||
p: Make a named pipe. Major and minor are ignored for named pipes.
|
p: Make a named pipe. Major and minor are ignored for named pipes.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
$ mknod /dev/fd0 b 2 0
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item mkswap
|
=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.
|
Prepare a disk partition to be used as a swap partition.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
@ -539,25 +774,39 @@ Options:
|
|||||||
-v1 Make version 1 swap [big!] (default for kernels > 2.1.117).
|
-v1 Make version 1 swap [big!] (default for kernels > 2.1.117).
|
||||||
block-count Number of block to use (default is entire partition).
|
block-count Number of block to use (default is entire partition).
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
=item mnc
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item more
|
=item more
|
||||||
|
|
||||||
Usage: more [file ...]
|
Usage: more [file ...]
|
||||||
|
|
||||||
|
More is a filter for paging through text one screenful at a time.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
$ dmesg | more
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item mount
|
=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.
|
-a: Mount all file systems in fstab.
|
||||||
-o option: One of many filesystem options, listed below.
|
-o option: One of many filesystem options, listed below.
|
||||||
-r: Mount the filesystem read-only.
|
-r: Mount the filesystem read-only.
|
||||||
-t filesystem-type: Specify the filesystem type.
|
-t filesystem-type: Specify the filesystem type.
|
||||||
-w: Mount for reading and writing (default).
|
-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.
|
async / sync: Writes are asynchronous / synchronous.
|
||||||
dev / nodev: Allow use of special device files / disallow them.
|
dev / nodev: Allow use of special device files / disallow them.
|
||||||
exec / noexec: Allow use of executable 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.
|
suid / nosuid: Allow set-user-id-root programs / disallow them.
|
||||||
remount: Re-mount a currently-mounted filesystem, changing its flags.
|
remount: Re-mount a currently-mounted filesystem, changing its flags.
|
||||||
ro / rw: Mount for read-only / read-write.
|
ro / rw: Mount for read-only / read-write.
|
||||||
|
|
||||||
There are EVEN MORE flags that are specific to each filesystem.
|
There are EVEN MORE flags that are specific to each filesystem.
|
||||||
You'll have to see the written documentation for those.
|
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
|
=item mv
|
||||||
|
|
||||||
@ -578,245 +840,154 @@ or: mv SOURCE... DIRECTORY
|
|||||||
|
|
||||||
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
|
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
=item ping
|
$ mv /tmp/foo /bin/bar
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
=item nslookup
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item poweroff
|
=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
|
=item ps
|
||||||
|
|
||||||
Usage: ps
|
-------------------------------
|
||||||
|
|
||||||
Report process status.
|
|
||||||
This version of ps accepts no options.
|
|
||||||
|
|
||||||
|
|
||||||
=item pwd
|
=item pwd
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item reboot
|
=item reboot
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item rm
|
=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
|
=item syslogd
|
||||||
|
|
||||||
Usage: syslogd [OPTION]...
|
-------------------------------
|
||||||
|
|
||||||
Linux system and kernel (provides klogd) logging utility.
|
=item logger
|
||||||
Note that this version of syslogd/klogd ignores /etc/syslog.conf.
|
|
||||||
|
|
||||||
Options:
|
-------------------------------
|
||||||
|
|
||||||
-m Change the mark timestamp interval. default=20min. 0=off
|
=item logname
|
||||||
-n Do not fork into the background (for when run by init)
|
|
||||||
-K Do not start up the klogd process (by default syslogd spawns klogd).
|
|
||||||
-O Specify an alternate log file. default=/var/log/messages
|
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item swapon
|
=item swapon
|
||||||
|
|
||||||
Usage: swapon device
|
-------------------------------
|
||||||
|
|
||||||
Start swapping virtual memory pages on the given device.
|
|
||||||
|
|
||||||
|
|
||||||
=item swapoff
|
=item swapoff
|
||||||
|
|
||||||
Usage: swapoff device
|
-------------------------------
|
||||||
|
|
||||||
Stop swapping virtual memory pages on the given device.
|
|
||||||
|
|
||||||
|
|
||||||
=item tail
|
=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 tar
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
=item test, [
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item tee
|
=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
|
=item touch
|
||||||
|
|
||||||
Usage: touch [B<-c>] file [file ...]
|
-------------------------------
|
||||||
Update the last-modified date on the given file[s].
|
|
||||||
|
|
||||||
|
=item tr
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item true
|
=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
|
=item umount
|
||||||
|
|
||||||
Usage: Usage: umount [flags] filesystem|directory
|
-------------------------------
|
||||||
|
|
||||||
Flags:
|
=item uname
|
||||||
|
|
||||||
-a: Unmount all file systems
|
-------------------------------
|
||||||
|
|
||||||
|
=item uptime
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item uniq
|
=item uniq
|
||||||
|
|
||||||
Usage: Usage: uniq [OPTION]... [INPUT [OUTPUT]]
|
-------------------------------
|
||||||
|
|
||||||
Discard all but one of successive identical lines from INPUT (or
|
=item update
|
||||||
standard input), writing to OUTPUT (or standard output).
|
|
||||||
|
|
||||||
-h display this help and exit
|
-------------------------------
|
||||||
|
|
||||||
A field is a run of whitespace, then non-whitespace characters.
|
=item usleep
|
||||||
Fields are skipped before chars.
|
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
=item wc
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
=item whoami
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
=item yes
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
=item zcat
|
=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
|
=back
|
||||||
|
|
||||||
@ -869,5 +1040,9 @@ Enrique Zanardi <ezanardi@ull.es>
|
|||||||
|
|
||||||
=for html <br>
|
=for html <br>
|
||||||
|
|
||||||
|
Karl M. Hegbloom <karlheg@debian.org>
|
||||||
|
|
||||||
|
=for html <br>
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
|
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