whitespace cleanup
This commit is contained in:
parent
a6127aacef
commit
9213a9e0f2
2
AUTHORS
2
AUTHORS
@ -113,7 +113,7 @@ Manuel Novoa III <mjn3@codepoet.org>
|
|||||||
|
|
||||||
Vladimir Oleynik <dzo@simtreas.ru>
|
Vladimir Oleynik <dzo@simtreas.ru>
|
||||||
cmdedit; bb_mkdep, xargs(current), httpd(current);
|
cmdedit; bb_mkdep, xargs(current), httpd(current);
|
||||||
ports: ash, crond, fdisk (initial, unmaintained now), inetd, stty, traceroute,
|
ports: ash, crond, fdisk (initial, unmaintained now), inetd, stty, traceroute,
|
||||||
top;
|
top;
|
||||||
locale, various fixes
|
locale, various fixes
|
||||||
and irreconcilable critic of everything not perfect.
|
and irreconcilable critic of everything not perfect.
|
||||||
|
2
TODO
2
TODO
@ -33,7 +33,7 @@ Rob Landley <rob@landley.net>:
|
|||||||
depmod
|
depmod
|
||||||
busybox lacks a way to update module deps when running from firmware without the
|
busybox lacks a way to update module deps when running from firmware without the
|
||||||
use of the depmod.pl (perl is to bloated for most embedded setups) and or orig
|
use of the depmod.pl (perl is to bloated for most embedded setups) and or orig
|
||||||
modutils. The orig depmod is rather pointless to have to add to a firmware image
|
modutils. The orig depmod is rather pointless to have to add to a firmware image
|
||||||
in when we already have a insmod/rmmod and friends.
|
in when we already have a insmod/rmmod and friends.
|
||||||
Unify base64 handling.
|
Unify base64 handling.
|
||||||
There's base64 encoding and decoding going on in:
|
There's base64 encoding and decoding going on in:
|
||||||
|
@ -21,6 +21,6 @@ libraries-y+=$(APPLETS_DIR)$(APPLETS_AR)
|
|||||||
$(APPLETS_DIR)$(APPLETS_AR): $(APPLET_OBJ)
|
$(APPLETS_DIR)$(APPLETS_AR): $(APPLET_OBJ)
|
||||||
$(do_ar)
|
$(do_ar)
|
||||||
|
|
||||||
$(APPLET_OBJ): $(top_builddir)/.config
|
$(APPLET_OBJ): $(top_builddir)/.config
|
||||||
$(APPLET_OBJ): $(APPLETS_DIR)%.o: $(srcdir)/%.c
|
$(APPLET_OBJ): $(APPLETS_DIR)%.o: $(srcdir)/%.c
|
||||||
$(compile.c)
|
$(compile.c)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/* Minimal wrapper to build an individual busybox applet.
|
/* Minimal wrapper to build an individual busybox applet.
|
||||||
*
|
*
|
||||||
* Copyright 2005 Rob Landley <rob@landley.net
|
* Copyright 2005 Rob Landley <rob@landley.net
|
||||||
*
|
*
|
||||||
* Licensed under GPLv2 or later, see file License in this tarball for details
|
* Licensed under GPLv2 or later, see file License in this tarball for details
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -1316,8 +1316,8 @@ static void list_packages(void)
|
|||||||
/* go through status hash, dereference package hash and finally strings */
|
/* go through status hash, dereference package hash and finally strings */
|
||||||
for (i=0; i<STATUS_HASH_PRIME+1; i++) {
|
for (i=0; i<STATUS_HASH_PRIME+1; i++) {
|
||||||
|
|
||||||
if (status_hashtable[i]) {
|
if (status_hashtable[i]) {
|
||||||
const char *stat_str; /* status string */
|
const char *stat_str; /* status string */
|
||||||
const char *name_str; /* package name */
|
const char *name_str; /* package name */
|
||||||
const char *vers_str; /* version */
|
const char *vers_str; /* version */
|
||||||
char s1, s2; /* status abbreviations */
|
char s1, s2; /* status abbreviations */
|
||||||
@ -1333,7 +1333,7 @@ static void list_packages(void)
|
|||||||
|
|
||||||
/* get abbreviation for status field 2 */
|
/* get abbreviation for status field 2 */
|
||||||
for (j=0, spccnt=0; stat_str[j] && spccnt<2; j++) {
|
for (j=0, spccnt=0; stat_str[j] && spccnt<2; j++) {
|
||||||
if (stat_str[j] == ' ') spccnt++;
|
if (stat_str[j] == ' ') spccnt++;
|
||||||
}
|
}
|
||||||
s2 = stat_str[j];
|
s2 = stat_str[j];
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
* Ken Turkowski, Dave Mack and Peter Jannesen.
|
* Ken Turkowski, Dave Mack and Peter Jannesen.
|
||||||
*
|
*
|
||||||
* See the file algorithm.doc for the compression algorithms and file formats.
|
* See the file algorithm.doc for the compression algorithms and file formats.
|
||||||
*
|
*
|
||||||
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -853,7 +853,7 @@ int inflate_unzip(int in, int out)
|
|||||||
/* Create the crc table */
|
/* Create the crc table */
|
||||||
gunzip_crc_table = crc32_filltable(0);
|
gunzip_crc_table = crc32_filltable(0);
|
||||||
gunzip_crc = ~0;
|
gunzip_crc = ~0;
|
||||||
|
|
||||||
/* Allocate space for buffer */
|
/* Allocate space for buffer */
|
||||||
bytebuffer = xmalloc(bytebuffer_max);
|
bytebuffer = xmalloc(bytebuffer_max);
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* vi: set sw=4 ts=4: */
|
/* vi: set sw=4 ts=4: */
|
||||||
/*
|
/*
|
||||||
* setlogcons: Send kernel messages to the current console or to console N
|
* setlogcons: Send kernel messages to the current console or to console N
|
||||||
*
|
*
|
||||||
* Copyright (C) 2006 by Jan Kiszka <jan.kiszka@web.de>
|
* Copyright (C) 2006 by Jan Kiszka <jan.kiszka@web.de>
|
||||||
*
|
*
|
||||||
|
@ -120,11 +120,11 @@ config CONFIG_FEATURE_DD_SIGNAL_HANDLING
|
|||||||
default y
|
default y
|
||||||
depends on CONFIG_DD
|
depends on CONFIG_DD
|
||||||
help
|
help
|
||||||
sending a SIGUSR1 signal to a running `dd' process makes it
|
sending a SIGUSR1 signal to a running `dd' process makes it
|
||||||
print to standard error the number of records read and written
|
print to standard error the number of records read and written
|
||||||
so far, then to resume copying.
|
so far, then to resume copying.
|
||||||
|
|
||||||
$ dd if=/dev/zero of=/dev/null& pid=$! $ kill -USR1 $pid; sleep 1; kill $pid
|
$ dd if=/dev/zero of=/dev/null& pid=$! $ kill -USR1 $pid; sleep 1; kill $pid
|
||||||
10899206+0 records in 10899206+0 records out
|
10899206+0 records in 10899206+0 records out
|
||||||
|
|
||||||
config CONFIG_FEATURE_DD_IBS_OBS
|
config CONFIG_FEATURE_DD_IBS_OBS
|
||||||
@ -744,9 +744,9 @@ config CONFIG_FEATURE_AUTOWIDTH
|
|||||||
depends on CONFIG_LS || CONFIG_MORE || CONFIG_TELNET
|
depends on CONFIG_LS || CONFIG_MORE || CONFIG_TELNET
|
||||||
help
|
help
|
||||||
This option allows utilities such as 'ls', 'more' and 'telnet'
|
This option allows utilities such as 'ls', 'more' and 'telnet'
|
||||||
to determine the width of the screen, which can allow them to
|
to determine the width of the screen, which can allow them to
|
||||||
display additional text or avoid wrapping text onto the next line.
|
display additional text or avoid wrapping text onto the next line.
|
||||||
If you leave this disabled, your utilities will be especially
|
If you leave this disabled, your utilities will be especially
|
||||||
primitive and will be unable to determine the current screen width.
|
primitive and will be unable to determine the current screen width.
|
||||||
|
|
||||||
comment "Common options for df, du, ls"
|
comment "Common options for df, du, ls"
|
||||||
|
@ -33,7 +33,7 @@ static const char days_in_month[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char sep1752[] = {
|
static const char sep1752[] = {
|
||||||
1, 2, 14, 15, 16,
|
1, 2, 14, 15, 16,
|
||||||
17, 18, 19, 20, 21, 22, 23,
|
17, 18, 19, 20, 21, 22, 23,
|
||||||
24, 25, 26, 27, 28, 29, 30
|
24, 25, 26, 27, 28, 29, 30
|
||||||
};
|
};
|
||||||
@ -207,7 +207,7 @@ static void day_array(int month, int year, int *days)
|
|||||||
|
|
||||||
if ((month == 9) && (year == 1752)) {
|
if ((month == 9) && (year == 1752)) {
|
||||||
size_t oday = 0;
|
size_t oday = 0;
|
||||||
|
|
||||||
j_offset = julian * 244;
|
j_offset = julian * 244;
|
||||||
do {
|
do {
|
||||||
days[oday+2] = sep1752[oday] + j_offset;
|
days[oday+2] = sep1752[oday] + j_offset;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
int cksum_main(int argc, char **argv)
|
int cksum_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
|
||||||
uint32_t *crc32_table = crc32_filltable(1);
|
uint32_t *crc32_table = crc32_filltable(1);
|
||||||
|
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
|
@ -77,7 +77,7 @@ int cp_main(int argc, char **argv)
|
|||||||
/* If there are only two arguments and... */
|
/* If there are only two arguments and... */
|
||||||
if (optind + 2 == argc) {
|
if (optind + 2 == argc) {
|
||||||
s_flags = cp_mv_stat2(*argv, &source_stat,
|
s_flags = cp_mv_stat2(*argv, &source_stat,
|
||||||
(flags & FILEUTILS_DEREFERENCE) ? stat : lstat);
|
(flags & FILEUTILS_DEREFERENCE) ? stat : lstat);
|
||||||
if ((s_flags < 0) || ((d_flags = cp_mv_stat(last, &dest_stat)) < 0)) {
|
if ((s_flags < 0) || ((d_flags = cp_mv_stat(last, &dest_stat)) < 0)) {
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
@ -200,7 +200,7 @@ int dd_main(int argc, char **argv)
|
|||||||
out_part++;
|
out_part++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ENABLE_FEATURE_DD_IBS_OBS && oc) {
|
if (ENABLE_FEATURE_DD_IBS_OBS && oc) {
|
||||||
xwrite(ofd, obuf, oc);
|
xwrite(ofd, obuf, oc);
|
||||||
out_part++;
|
out_part++;
|
||||||
|
@ -820,8 +820,8 @@ static void output(char *file1, FILE * f1, char *file2, FILE * f2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following code uses an algorithm due to Harold Stone,
|
* The following code uses an algorithm due to Harold Stone,
|
||||||
* which finds a pair of longest identical subsequences in
|
* which finds a pair of longest identical subsequences in
|
||||||
* the two files.
|
* the two files.
|
||||||
*
|
*
|
||||||
* The major goal is to generate the match vector J.
|
* The major goal is to generate the match vector J.
|
||||||
|
@ -28,7 +28,7 @@ static const struct suffix_mult head_suffixes[] = {
|
|||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const char header_fmt_str[] = "\n==> %s <==\n";
|
static const char header_fmt_str[] = "\n==> %s <==\n";
|
||||||
|
|
||||||
int head_main(int argc, char **argv)
|
int head_main(int argc, char **argv)
|
||||||
@ -83,8 +83,8 @@ int head_main(int argc, char **argv)
|
|||||||
#if !ENABLE_FEATURE_FANCY_HEAD
|
#if !ENABLE_FEATURE_FANCY_HEAD
|
||||||
count = bb_xgetularg10(p);
|
count = bb_xgetularg10(p);
|
||||||
#else
|
#else
|
||||||
count = bb_xgetularg_bnd_sfx(p, 10,
|
count = bb_xgetularg_bnd_sfx(p, 10,
|
||||||
0, ULONG_MAX,
|
0, ULONG_MAX,
|
||||||
head_suffixes);
|
head_suffixes);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
@ -196,7 +196,7 @@ static struct dnode *my_stat(char *fullname, char *name)
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_SELINUX
|
#ifdef CONFIG_SELINUX
|
||||||
if (is_selinux_enabled()) {
|
if (is_selinux_enabled()) {
|
||||||
lgetfilecon(fullname,&sid);
|
lgetfilecon(fullname,&sid);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
/* vi: set sw=4 ts=4: */
|
/* vi: set sw=4 ts=4: */
|
||||||
/* nohup - invoke a utility immune to hangups.
|
/* nohup - invoke a utility immune to hangups.
|
||||||
*
|
*
|
||||||
* Busybox version based on nohup specification at
|
* Busybox version based on nohup specification at
|
||||||
* http://www.opengroup.org/onlinepubs/007904975/utilities/nohup.html
|
* http://www.opengroup.org/onlinepubs/007904975/utilities/nohup.html
|
||||||
*
|
*
|
||||||
* Copyright 2006 Rob Landley <rob@landley.net>
|
* Copyright 2006 Rob Landley <rob@landley.net>
|
||||||
*
|
*
|
||||||
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
int seq_main(int argc, char **argv)
|
int seq_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
double last, first, increment, i;
|
double last, first, increment, i;
|
||||||
|
|
||||||
first = increment = 1;
|
first = increment = 1;
|
||||||
switch (argc) {
|
switch (argc) {
|
||||||
case 4:
|
case 4:
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
* Copyright (C) 2004 by Rob Landley <rob@landley.net>
|
* Copyright (C) 2004 by Rob Landley <rob@landley.net>
|
||||||
*
|
*
|
||||||
* MAINTAINER: Rob Landley <rob@landley.net>
|
* MAINTAINER: Rob Landley <rob@landley.net>
|
||||||
*
|
*
|
||||||
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
||||||
*
|
*
|
||||||
* See SuS3 sort standard at:
|
* See SuS3 sort standard at:
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
static const char * idle_string (time_t t)
|
static const char * idle_string (time_t t)
|
||||||
{
|
{
|
||||||
static char str[6];
|
static char str[6];
|
||||||
|
|
||||||
time_t s = time(NULL) - t;
|
time_t s = time(NULL) - t;
|
||||||
|
|
||||||
if (s < 60)
|
if (s < 60)
|
||||||
@ -43,11 +43,11 @@ int who_main(int argc, char **argv)
|
|||||||
struct utmp *ut;
|
struct utmp *ut;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
char *name;
|
char *name;
|
||||||
|
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
bb_show_usage();
|
bb_show_usage();
|
||||||
}
|
}
|
||||||
|
|
||||||
setutent();
|
setutent();
|
||||||
printf("USER TTY IDLE TIME HOST\n");
|
printf("USER TTY IDLE TIME HOST\n");
|
||||||
while ((ut = getutent()) != NULL) {
|
while ((ut = getutent()) != NULL) {
|
||||||
|
@ -45,7 +45,7 @@ static int pid_is_exec(pid_t pid, const char *name)
|
|||||||
sprintf(buf, "/proc/%d/exe", pid);
|
sprintf(buf, "/proc/%d/exe", pid);
|
||||||
execbuf = xstrdup(name);
|
execbuf = xstrdup(name);
|
||||||
readlink(buf, execbuf, strlen(name)+1);
|
readlink(buf, execbuf, strlen(name)+1);
|
||||||
|
|
||||||
equal = ! strcmp(execbuf, name);
|
equal = ! strcmp(execbuf, name);
|
||||||
if (ENABLE_FEATURE_CLEAN_UP)
|
if (ENABLE_FEATURE_CLEAN_UP)
|
||||||
free(execbuf);
|
free(execbuf);
|
||||||
|
@ -62,7 +62,7 @@
|
|||||||
will be released before then if more bug fixes crop up. (The new plan is
|
will be released before then if more bug fixes crop up. (The new plan is
|
||||||
to have a 1.x.0 new development release every 3 months, with 1.x.y stable
|
to have a 1.x.0 new development release every 3 months, with 1.x.y stable
|
||||||
bugfix only releases based on that as appropriate.)</p>
|
bugfix only releases based on that as appropriate.)</p>
|
||||||
|
|
||||||
<li><b>27 March 2006 -- Software Freedom Law Center representing BusyBox and uClibc</b>
|
<li><b>27 March 2006 -- Software Freedom Law Center representing BusyBox and uClibc</b>
|
||||||
<p>One issue Erik Andersen wanted to resolve when handing off BusyBox
|
<p>One issue Erik Andersen wanted to resolve when handing off BusyBox
|
||||||
maintainership to Rob Landley was license enforcement. BusyBox and
|
maintainership to Rob Landley was license enforcement. BusyBox and
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li><b>31 October 2005 -- 1.1.0-pre1</b>
|
<li><b>31 October 2005 -- 1.1.0-pre1</b>
|
||||||
<p>The development branch of busybox is stable enough for wider testing, so
|
<p>The development branch of busybox is stable enough for wider testing, so
|
||||||
you can now
|
you can now
|
||||||
<a href="http://www.busybox.net/downloads/busybox-1.1.0-pre1.tar.bz2">download</a>,
|
<a href="http://www.busybox.net/downloads/busybox-1.1.0-pre1.tar.bz2">download</a>,
|
||||||
the first prerelease of 1.1.0. This prerelease includes a lot of
|
the first prerelease of 1.1.0. This prerelease includes a lot of
|
||||||
<a href="http://www.busybox.net/downloads/BusyBox.html">new
|
<a href="http://www.busybox.net/downloads/BusyBox.html">new
|
||||||
@ -27,7 +27,7 @@
|
|||||||
developers of BusyBox are busy people, and have only so much they can keep
|
developers of BusyBox are busy people, and have only so much they can keep
|
||||||
in their brains at a time. In my case, I'm lucky if I can remember my own
|
in their brains at a time. In my case, I'm lucky if I can remember my own
|
||||||
name, much less a bug report posted last week... To prevent your bug report
|
name, much less a bug report posted last week... To prevent your bug report
|
||||||
from getting lost, if you find a bug in BusyBox, please use the
|
from getting lost, if you find a bug in BusyBox, please use the
|
||||||
<a href="http://bugs.busybox.net/">shiny new Bug and Patch Tracking System</a>
|
<a href="http://bugs.busybox.net/">shiny new Bug and Patch Tracking System</a>
|
||||||
to post all the gory details.
|
to post all the gory details.
|
||||||
|
|
||||||
@ -856,7 +856,7 @@ image</a>. Here's how you use it:
|
|||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
mount ./busybox.floppy.img /mnt -o loop -t msdos
|
mount ./busybox.floppy.img /mnt -o loop -t msdos
|
||||||
cp /mnt/initrd.gz /tmp
|
cp /mnt/initrd.gz /tmp
|
||||||
umount /mnt
|
umount /mnt
|
||||||
gunzip /tmp/initrd.gz
|
gunzip /tmp/initrd.gz
|
||||||
mount /tmp/initrd /mnt -o loop -t minix
|
mount /tmp/initrd /mnt -o loop -t minix
|
||||||
|
@ -159,7 +159,7 @@ Hat Linux</a>
|
|||||||
with source <a href="http://now-portal.c-lab.de/projects/gigaset/">here, I think...</a>
|
with source <a href="http://now-portal.c-lab.de/projects/gigaset/">here, I think...</a>
|
||||||
with some details <a href="http://heinz.hippenstiel.org/familie/hp/hobby/gigaset_se515dsl.html">here.</a>
|
with some details <a href="http://heinz.hippenstiel.org/familie/hp/hobby/gigaset_se515dsl.html">here.</a>
|
||||||
</li><li><a href="http://frwt.stim.ru/">Free Remote Windows Terminal</a>
|
</li><li><a href="http://frwt.stim.ru/">Free Remote Windows Terminal</a>
|
||||||
|
|
||||||
</li><li><a href="http://www.zyxel.com/">ZyXEL Routers</a>
|
</li><li><a href="http://www.zyxel.com/">ZyXEL Routers</a>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
|
@ -71,7 +71,7 @@ the busybox license by releasing the source code with your product.
|
|||||||
</li><li><a href="http://www.recospa.it/mdpro1/index.php">United *DVX4066 mpeg4 capable DVD players</a>
|
</li><li><a href="http://www.recospa.it/mdpro1/index.php">United *DVX4066 mpeg4 capable DVD players</a>
|
||||||
</li><li><a href="http://www.a-link.com/RR64AP.html">Avaks alink Roadrunner 64</a>
|
</li><li><a href="http://www.a-link.com/RR64AP.html">Avaks alink Roadrunner 64</a>
|
||||||
<br> Partial source available, based on source distributed under NDA from <a href="http://www.lsilogic.com/products/dsl_platform_solutions/hb_linuxr2_2.html"> LSILogic</a>. Why the NDA LSILogic, what are you hiding ?
|
<br> Partial source available, based on source distributed under NDA from <a href="http://www.lsilogic.com/products/dsl_platform_solutions/hb_linuxr2_2.html"> LSILogic</a>. Why the NDA LSILogic, what are you hiding ?
|
||||||
<br>To verify the Avaks infrigment see my slashdot <a href="http://slashdot.org/~bug1/journal/">journal</a>.
|
<br>To verify the Avaks infrigment see my slashdot <a href="http://slashdot.org/~bug1/journal/">journal</a>.
|
||||||
<br>The ZipIt wireless IM device appears to be using Busybox-1.00-pre1 in the ramdisk, however no source has been made available.
|
<br>The ZipIt wireless IM device appears to be using Busybox-1.00-pre1 in the ramdisk, however no source has been made available.
|
||||||
</li><li>Undoubtedly there are others... Please report them so we can shame them (or if necessary sue them) into compliance.
|
</li><li>Undoubtedly there are others... Please report them so we can shame them (or if necessary sue them) into compliance.
|
||||||
|
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
<h3>External Tiny Utilities</h3>
|
<h3>External Tiny Utilities</h3>
|
||||||
|
|
||||||
This is a list of tiny utilities whose functionality is not provided by
|
This is a list of tiny utilities whose functionality is not provided by
|
||||||
busybox. If you have additional suggestions, please send an e-mail to our
|
busybox. If you have additional suggestions, please send an e-mail to our
|
||||||
dev mailing list.
|
dev mailing list.
|
||||||
|
|
||||||
<br><br>
|
<br><br>
|
||||||
|
@ -56,7 +56,7 @@ extern int blkid_get_cache(blkid_cache *cache, const char *filename);
|
|||||||
extern const char *blkid_dev_devname(blkid_dev dev);
|
extern const char *blkid_dev_devname(blkid_dev dev);
|
||||||
|
|
||||||
extern blkid_dev_iterate blkid_dev_iterate_begin(blkid_cache cache);
|
extern blkid_dev_iterate blkid_dev_iterate_begin(blkid_cache cache);
|
||||||
extern int blkid_dev_set_search(blkid_dev_iterate iter,
|
extern int blkid_dev_set_search(blkid_dev_iterate iter,
|
||||||
char *search_type, char *search_value);
|
char *search_type, char *search_value);
|
||||||
extern int blkid_dev_next(blkid_dev_iterate iterate, blkid_dev *dev);
|
extern int blkid_dev_next(blkid_dev_iterate iterate, blkid_dev *dev);
|
||||||
extern void blkid_dev_iterate_end(blkid_dev_iterate iterate);
|
extern void blkid_dev_iterate_end(blkid_dev_iterate iterate);
|
||||||
@ -90,7 +90,7 @@ extern blkid_tag_iterate blkid_tag_iterate_begin(blkid_dev dev);
|
|||||||
extern int blkid_tag_next(blkid_tag_iterate iterate,
|
extern int blkid_tag_next(blkid_tag_iterate iterate,
|
||||||
const char **type, const char **value);
|
const char **type, const char **value);
|
||||||
extern void blkid_tag_iterate_end(blkid_tag_iterate iterate);
|
extern void blkid_tag_iterate_end(blkid_tag_iterate iterate);
|
||||||
extern int blkid_dev_has_tag(blkid_dev dev, const char *type,
|
extern int blkid_dev_has_tag(blkid_dev dev, const char *type,
|
||||||
const char *value);
|
const char *value);
|
||||||
extern blkid_dev blkid_find_dev_with_tag(blkid_cache cache,
|
extern blkid_dev blkid_find_dev_with_tag(blkid_cache cache,
|
||||||
const char *type,
|
const char *type,
|
||||||
|
@ -76,8 +76,8 @@ void blkid_debug_dump_dev(blkid_dev dev)
|
|||||||
|
|
||||||
list_for_each(p, &dev->bid_tags) {
|
list_for_each(p, &dev->bid_tags) {
|
||||||
blkid_tag tag = list_entry(p, struct blkid_struct_tag, bit_tags);
|
blkid_tag tag = list_entry(p, struct blkid_struct_tag, bit_tags);
|
||||||
if (tag)
|
if (tag)
|
||||||
printf(" tag: %s=\"%s\"\n", tag->bit_name,
|
printf(" tag: %s=\"%s\"\n", tag->bit_name,
|
||||||
tag->bit_val);
|
tag->bit_val);
|
||||||
else
|
else
|
||||||
printf(" tag: NULL\n");
|
printf(" tag: NULL\n");
|
||||||
@ -177,7 +177,7 @@ int main(int argc, char **argv)
|
|||||||
case 'm':
|
case 'm':
|
||||||
blkid_debug_mask = strtoul (optarg, &tmp, 0);
|
blkid_debug_mask = strtoul (optarg, &tmp, 0);
|
||||||
if (*tmp) {
|
if (*tmp) {
|
||||||
fprintf(stderr, "Invalid debug mask: %d\n",
|
fprintf(stderr, "Invalid debug mask: %d\n",
|
||||||
optarg);
|
optarg);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@ static void get_ext2_info(blkid_dev dev, unsigned char *buf)
|
|||||||
static int probe_ext3(int fd __BLKID_ATTR((unused)),
|
static int probe_ext3(int fd __BLKID_ATTR((unused)),
|
||||||
blkid_cache cache __BLKID_ATTR((unused)),
|
blkid_cache cache __BLKID_ATTR((unused)),
|
||||||
blkid_dev dev,
|
blkid_dev dev,
|
||||||
const struct blkid_magic *id __BLKID_ATTR((unused)),
|
const struct blkid_magic *id __BLKID_ATTR((unused)),
|
||||||
unsigned char *buf)
|
unsigned char *buf)
|
||||||
{
|
{
|
||||||
struct ext2_super_block *es;
|
struct ext2_super_block *es;
|
||||||
@ -126,7 +126,7 @@ static int probe_ext3(int fd __BLKID_ATTR((unused)),
|
|||||||
static int probe_ext2(int fd __BLKID_ATTR((unused)),
|
static int probe_ext2(int fd __BLKID_ATTR((unused)),
|
||||||
blkid_cache cache __BLKID_ATTR((unused)),
|
blkid_cache cache __BLKID_ATTR((unused)),
|
||||||
blkid_dev dev,
|
blkid_dev dev,
|
||||||
const struct blkid_magic *id __BLKID_ATTR((unused)),
|
const struct blkid_magic *id __BLKID_ATTR((unused)),
|
||||||
unsigned char *buf)
|
unsigned char *buf)
|
||||||
{
|
{
|
||||||
struct ext2_super_block *es;
|
struct ext2_super_block *es;
|
||||||
@ -305,10 +305,10 @@ static int probe_romfs(int fd __BLKID_ATTR((unused)),
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int probe_cramfs(int fd __BLKID_ATTR((unused)),
|
static int probe_cramfs(int fd __BLKID_ATTR((unused)),
|
||||||
blkid_cache cache __BLKID_ATTR((unused)),
|
blkid_cache cache __BLKID_ATTR((unused)),
|
||||||
blkid_dev dev,
|
blkid_dev dev,
|
||||||
const struct blkid_magic *id __BLKID_ATTR((unused)),
|
const struct blkid_magic *id __BLKID_ATTR((unused)),
|
||||||
unsigned char *buf)
|
unsigned char *buf)
|
||||||
{
|
{
|
||||||
struct cramfs_super_block *csb;
|
struct cramfs_super_block *csb;
|
||||||
|
@ -432,7 +432,7 @@ static void debug_dump_dev(blkid_dev dev)
|
|||||||
list_for_each(p, &dev->bid_tags) {
|
list_for_each(p, &dev->bid_tags) {
|
||||||
blkid_tag tag = list_entry(p, struct blkid_struct_tag, bit_tags);
|
blkid_tag tag = list_entry(p, struct blkid_struct_tag, bit_tags);
|
||||||
if (tag)
|
if (tag)
|
||||||
printf(" tag: %s=\"%s\"\n", tag->bit_name,
|
printf(" tag: %s=\"%s\"\n", tag->bit_name,
|
||||||
tag->bit_val);
|
tag->bit_val);
|
||||||
else
|
else
|
||||||
printf(" tag: NULL\n");
|
printf(" tag: NULL\n");
|
||||||
|
@ -355,7 +355,7 @@ extern int optind;
|
|||||||
void usage(char *prog)
|
void usage(char *prog)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Usage: %s [-f blkid_file] [-m debug_mask] device "
|
fprintf(stderr, "Usage: %s [-f blkid_file] [-m debug_mask] device "
|
||||||
"[type value]\n",
|
"[type value]\n",
|
||||||
prog);
|
prog);
|
||||||
fprintf(stderr, "\tList all tags for a device and exit\n", prog);
|
fprintf(stderr, "\tList all tags for a device and exit\n", prog);
|
||||||
exit(1);
|
exit(1);
|
||||||
@ -383,7 +383,7 @@ int main(int argc, char **argv)
|
|||||||
case 'm':
|
case 'm':
|
||||||
blkid_debug_mask = strtoul (optarg, &tmp, 0);
|
blkid_debug_mask = strtoul (optarg, &tmp, 0);
|
||||||
if (*tmp) {
|
if (*tmp) {
|
||||||
fprintf(stderr, "Invalid debug mask: %d\n",
|
fprintf(stderr, "Invalid debug mask: %d\n",
|
||||||
optarg);
|
optarg);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@ -414,7 +414,7 @@ int main(int argc, char **argv)
|
|||||||
if (search_type) {
|
if (search_type) {
|
||||||
found = blkid_dev_has_tag(dev, search_type, search_value);
|
found = blkid_dev_has_tag(dev, search_type, search_value);
|
||||||
printf("Device %s: (%s, %s) %s\n", blkid_dev_devname(dev),
|
printf("Device %s: (%s, %s) %s\n", blkid_dev_devname(dev),
|
||||||
search_type, search_value ? search_value : "NULL",
|
search_type, search_value ? search_value : "NULL",
|
||||||
found ? "FOUND" : "NOT FOUND");
|
found ? "FOUND" : "NOT FOUND");
|
||||||
return(!found);
|
return(!found);
|
||||||
}
|
}
|
||||||
|
@ -3661,7 +3661,7 @@ static void e2fsck_pass1(e2fsck_t ctx)
|
|||||||
e2fsck_read_inode(ctx, EXT2_RESIZE_INO, inode,
|
e2fsck_read_inode(ctx, EXT2_RESIZE_INO, inode,
|
||||||
"recreate inode");
|
"recreate inode");
|
||||||
inode->i_mtime = time(0);
|
inode->i_mtime = time(0);
|
||||||
e2fsck_write_inode(ctx, EXT2_RESIZE_INO, inode,
|
e2fsck_write_inode(ctx, EXT2_RESIZE_INO, inode,
|
||||||
"recreate inode");
|
"recreate inode");
|
||||||
fs->block_map = save_bmap;
|
fs->block_map = save_bmap;
|
||||||
ctx->flags &= ~E2F_FLAG_RESIZE_INODE;
|
ctx->flags &= ~E2F_FLAG_RESIZE_INODE;
|
||||||
|
@ -26,14 +26,14 @@ static void print_user(unsigned short uid, FILE *f)
|
|||||||
{
|
{
|
||||||
struct passwd *pw = getpwuid(uid);
|
struct passwd *pw = getpwuid(uid);
|
||||||
fprintf(f, "%u (user %s)\n", uid,
|
fprintf(f, "%u (user %s)\n", uid,
|
||||||
(pw == NULL ? "unknown" : pw->pw_name));
|
(pw == NULL ? "unknown" : pw->pw_name));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_group(unsigned short gid, FILE *f)
|
static void print_group(unsigned short gid, FILE *f)
|
||||||
{
|
{
|
||||||
struct group *gr = getgrgid(gid);
|
struct group *gr = getgrgid(gid);
|
||||||
fprintf(f, "%u (group %s)\n", gid,
|
fprintf(f, "%u (group %s)\n", gid,
|
||||||
(gr == NULL ? "unknown" : gr->gr_name));
|
(gr == NULL ? "unknown" : gr->gr_name));
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MONTH_INT (86400 * 30)
|
#define MONTH_INT (86400 * 30)
|
||||||
|
@ -737,7 +737,7 @@ static void parse_extended_opts(struct ext2_super_block *sb_param,
|
|||||||
}
|
}
|
||||||
if (resize <= sb_param->s_blocks_count) {
|
if (resize <= sb_param->s_blocks_count) {
|
||||||
bb_error_msg("The resize maximum must be greater "
|
bb_error_msg("The resize maximum must be greater "
|
||||||
"than the filesystem size");
|
"than the filesystem size");
|
||||||
r_usage++;
|
r_usage++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@ force_check:
|
|||||||
bb_error_msg_and_die("it's not safe to run badblocks!");
|
bb_error_msg_and_die("it's not safe to run badblocks!");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mount_flags & EXT2_MF_BUSY) {
|
if (mount_flags & EXT2_MF_BUSY) {
|
||||||
bb_error_msg("%s is apparently in use by the system", device);
|
bb_error_msg("%s is apparently in use by the system", device);
|
||||||
goto force_check;
|
goto force_check;
|
||||||
}
|
}
|
||||||
|
@ -103,7 +103,7 @@ struct sed_globals
|
|||||||
|
|
||||||
regmatch_t regmatch[10];
|
regmatch_t regmatch[10];
|
||||||
regex_t *previous_regex_ptr;
|
regex_t *previous_regex_ptr;
|
||||||
|
|
||||||
/* linked list of sed commands */
|
/* linked list of sed commands */
|
||||||
sed_cmd_t sed_cmd_head, *sed_cmd_tail;
|
sed_cmd_t sed_cmd_head, *sed_cmd_tail;
|
||||||
|
|
||||||
@ -780,7 +780,7 @@ restart:
|
|||||||
|| (sed_cmd->beg_line > 0 && (sed_cmd->beg_line == linenum))
|
|| (sed_cmd->beg_line > 0 && (sed_cmd->beg_line == linenum))
|
||||||
|
|
||||||
/* Or does this line match our begin address regex? */
|
/* Or does this line match our begin address regex? */
|
||||||
|| (sed_cmd->beg_match &&
|
|| (sed_cmd->beg_match &&
|
||||||
!regexec(sed_cmd->beg_match, pattern_space, 0, NULL, 0))
|
!regexec(sed_cmd->beg_match, pattern_space, 0, NULL, 0))
|
||||||
|
|
||||||
/* Or did we match last line of input? */
|
/* Or did we match last line of input? */
|
||||||
|
@ -3923,4 +3923,4 @@ static void crash_test()
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_FEATURE_VI_CRASHME */
|
#endif /* CONFIG_FEATURE_VI_CRASHME */
|
||||||
|
@ -34,7 +34,7 @@ my $dep = {};
|
|||||||
my $mod = {};
|
my $mod = {};
|
||||||
|
|
||||||
my $usage = <<TXT;
|
my $usage = <<TXT;
|
||||||
$0 -b basedir { -k <vmlinux> | -F <System.map> } [options]...
|
$0 -b basedir { -k <vmlinux> | -F <System.map> } [options]...
|
||||||
Where:
|
Where:
|
||||||
-h --help : Show this help screen
|
-h --help : Show this help screen
|
||||||
-b --basedir : Modules base directory (e.g /lib/modules/<2.x.y>)
|
-b --basedir : Modules base directory (e.g /lib/modules/<2.x.y>)
|
||||||
@ -211,7 +211,7 @@ __END__
|
|||||||
|
|
||||||
depmod.pl - a cross platform script to generate kernel module
|
depmod.pl - a cross platform script to generate kernel module
|
||||||
dependency lists (modules.conf) which can then be used by modprobe
|
dependency lists (modules.conf) which can then be used by modprobe
|
||||||
on the target platform.
|
on the target platform.
|
||||||
|
|
||||||
It supports Linux 2.4 and 2.6 styles of modules.conf (auto-detected)
|
It supports Linux 2.4 and 2.6 styles of modules.conf (auto-detected)
|
||||||
|
|
||||||
@ -245,7 +245,7 @@ This displays the help message.
|
|||||||
=item B<-b --basedir>
|
=item B<-b --basedir>
|
||||||
|
|
||||||
The base directory uner which the target's modules will be found. This
|
The base directory uner which the target's modules will be found. This
|
||||||
defaults to the /lib/modules directory.
|
defaults to the /lib/modules directory.
|
||||||
|
|
||||||
If you don't specify the kernel version, this script will search for
|
If you don't specify the kernel version, this script will search for
|
||||||
one under the specified based directory and use the first thing that
|
one under the specified based directory and use the first thing that
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
#undef __GNUC_PREREQ
|
#undef __GNUC_PREREQ
|
||||||
#if defined __GNUC__ && defined __GNUC_MINOR__
|
#if defined __GNUC__ && defined __GNUC_MINOR__
|
||||||
# define __GNUC_PREREQ(maj, min) \
|
# define __GNUC_PREREQ(maj, min) \
|
||||||
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
|
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
|
||||||
#else
|
#else
|
||||||
# define __GNUC_PREREQ(maj, min) 0
|
# define __GNUC_PREREQ(maj, min) 0
|
||||||
#endif
|
#endif
|
||||||
@ -264,7 +264,7 @@ typedef unsigned long long int uintmax_t;
|
|||||||
#define MS_SHARED (1<<20)
|
#define MS_SHARED (1<<20)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if !defined(BLKSSZGET)
|
#if !defined(BLKSSZGET)
|
||||||
#define BLKSSZGET _IO(0x12, 104)
|
#define BLKSSZGET _IO(0x12, 104)
|
||||||
#endif
|
#endif
|
||||||
|
@ -499,9 +499,9 @@ USE_FEATURE_DATE_ISOFMT( \
|
|||||||
"\t-s SIZE\t\tUse a buffer of size SIZE"
|
"\t-s SIZE\t\tUse a buffer of size SIZE"
|
||||||
|
|
||||||
#define dnsd_trivial_usage \
|
#define dnsd_trivial_usage \
|
||||||
"[-c config] [-t seconds] [-p port] [-i iface-ip] [-d]"
|
"[-c config] [-t seconds] [-p port] [-i iface-ip] [-d]"
|
||||||
#define dnsd_full_usage \
|
#define dnsd_full_usage \
|
||||||
"Small and static DNS server daemon\n\n" \
|
"Small and static DNS server daemon\n\n" \
|
||||||
"Options:\n" \
|
"Options:\n" \
|
||||||
"\t-c\t\tconfig filename\n" \
|
"\t-c\t\tconfig filename\n" \
|
||||||
"\t-t\t\tTTL in seconds\n" \
|
"\t-t\t\tTTL in seconds\n" \
|
||||||
@ -2058,7 +2058,7 @@ USE_FEATURE_MDEV_CONFIG( \
|
|||||||
"$ mount /tmp/diskimage /opt -t ext2 -o loop\n" \
|
"$ mount /tmp/diskimage /opt -t ext2 -o loop\n" \
|
||||||
"$ mount cd_image.iso mydir\n"
|
"$ mount cd_image.iso mydir\n"
|
||||||
#define mount_notes_usage \
|
#define mount_notes_usage \
|
||||||
"Returns 0 for success, number of failed mounts for -a, or errno for one mount."
|
"Returns 0 for success, number of failed mounts for -a, or errno for one mount."
|
||||||
|
|
||||||
#define mountpoint_trivial_usage \
|
#define mountpoint_trivial_usage \
|
||||||
"[-q] <[-d] DIR | -x DEVICE>"
|
"[-q] <[-d] DIR | -x DEVICE>"
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
*
|
*
|
||||||
* Based in part on code from sash, Copyright (c) 1999 by David I. Bell
|
* Based in part on code from sash, Copyright (c) 1999 by David I. Bell
|
||||||
* Permission has been granted to redistribute this code under the GPL.
|
* Permission has been granted to redistribute this code under the GPL.
|
||||||
*
|
*
|
||||||
* Licensed under GPLv2 or later, see file License in this tarball for details.
|
* Licensed under GPLv2 or later, see file License in this tarball for details.
|
||||||
*/
|
*/
|
||||||
#ifndef __BB_REGEX__
|
#ifndef __BB_REGEX__
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
* very well-known)
|
* very well-known)
|
||||||
*
|
*
|
||||||
* The following function creates a CRC32 table depending on whether
|
* The following function creates a CRC32 table depending on whether
|
||||||
* a big-endian (0x04c11db7) or little-endian (0xedb88320) CRC32 is
|
* a big-endian (0x04c11db7) or little-endian (0xedb88320) CRC32 is
|
||||||
* required. Admittedly, there are other CRC32 polynomials floating
|
* required. Admittedly, there are other CRC32 polynomials floating
|
||||||
* around, but Busybox doesn't use them.
|
* around, but Busybox doesn't use them.
|
||||||
*
|
*
|
||||||
@ -18,12 +18,12 @@
|
|||||||
|
|
||||||
uint32_t *crc32_filltable(int endian)
|
uint32_t *crc32_filltable(int endian)
|
||||||
{
|
{
|
||||||
|
|
||||||
uint32_t *crc_table = xmalloc(256 * sizeof(uint32_t));
|
uint32_t *crc_table = xmalloc(256 * sizeof(uint32_t));
|
||||||
uint32_t polynomial = endian ? 0x04c11db7 : 0xedb88320;
|
uint32_t polynomial = endian ? 0x04c11db7 : 0xedb88320;
|
||||||
uint32_t c;
|
uint32_t c;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
for (i = 0; i < 256; i++) {
|
for (i = 0; i < 256; i++) {
|
||||||
c = endian ? (i << 24) : i;
|
c = endian ? (i << 24) : i;
|
||||||
for (j = 8; j; j--) {
|
for (j = 8; j; j--) {
|
||||||
|
@ -72,7 +72,7 @@ void print_login_issue(const char *issue_file, const char *tty)
|
|||||||
case 'D':
|
case 'D':
|
||||||
case 'o':
|
case 'o':
|
||||||
c = getdomainname(buf, sizeof(buf) - 1);
|
c = getdomainname(buf, sizeof(buf) - 1);
|
||||||
buf[c >= 0 ? c : 0] = '\0';
|
buf[c >= 0 ? c : 0] = '\0';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'd':
|
case 'd':
|
||||||
|
@ -83,7 +83,7 @@ int set_loop(char **device, const char *file, int offset)
|
|||||||
bb_loop_info loopinfo;
|
bb_loop_info loopinfo;
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
int i, dfd, ffd, mode, rc=-1;
|
int i, dfd, ffd, mode, rc=-1;
|
||||||
|
|
||||||
/* Open the file. Barf if this doesn't work. */
|
/* Open the file. Barf if this doesn't work. */
|
||||||
if((ffd = open(file, mode=O_RDWR))<0 && (ffd = open(file,mode=O_RDONLY))<0)
|
if((ffd = open(file, mode=O_RDWR))<0 && (ffd = open(file,mode=O_RDONLY))<0)
|
||||||
return -errno;
|
return -errno;
|
||||||
|
@ -440,7 +440,7 @@ void *md5_end(void *resbuf, md5_ctx_t *ctx)
|
|||||||
/* Process last bytes. */
|
/* Process last bytes. */
|
||||||
if (buf != ctx->buffer) md5_hash_block(ctx->buffer, ctx);
|
if (buf != ctx->buffer) md5_hash_block(ctx->buffer, ctx);
|
||||||
md5_hash_block(buf, ctx);
|
md5_hash_block(buf, ctx);
|
||||||
|
|
||||||
/* Put result from CTX in first 16 bytes following RESBUF. The result is
|
/* Put result from CTX in first 16 bytes following RESBUF. The result is
|
||||||
* always in little endian byte order, so that a byte-wise output yields
|
* always in little endian byte order, so that a byte-wise output yields
|
||||||
* to the wanted ASCII representation of the message digest.
|
* to the wanted ASCII representation of the message digest.
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
* Copyright (C) 2002 Dr Brian Gladman <brg@gladman.me.uk>, Worcester, UK.
|
* Copyright (C) 2002 Dr Brian Gladman <brg@gladman.me.uk>, Worcester, UK.
|
||||||
* Copyright (C) 2003 Glenn L. McGrath
|
* Copyright (C) 2003 Glenn L. McGrath
|
||||||
* Copyright (C) 2003 Erik Andersen
|
* Copyright (C) 2003 Erik Andersen
|
||||||
*
|
*
|
||||||
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
||||||
*
|
*
|
||||||
* ---------------------------------------------------------------------------
|
* ---------------------------------------------------------------------------
|
||||||
@ -172,7 +172,7 @@ void *sha1_end(void *resbuf, sha1_ctx_t *ctx)
|
|||||||
|
|
||||||
for (i = 0; i < SHA1_DIGEST_SIZE; ++i)
|
for (i = 0; i < SHA1_DIGEST_SIZE; ++i)
|
||||||
hval[i] = (unsigned char) (ctx->hash[i >> 2] >> 8 * (~i & 3));
|
hval[i] = (unsigned char) (ctx->hash[i >> 2] >> 8 * (~i & 3));
|
||||||
|
|
||||||
return resbuf;
|
return resbuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,12 +16,12 @@ static struct signal_name {
|
|||||||
// SUSv3 says kill must support these, and specifies the numerical values,
|
// SUSv3 says kill must support these, and specifies the numerical values,
|
||||||
// http://www.opengroup.org/onlinepubs/009695399/utilities/kill.html
|
// http://www.opengroup.org/onlinepubs/009695399/utilities/kill.html
|
||||||
{"0", 0}, {"HUP", 1}, {"INT", 2}, {"QUIT", 3}, {"ABRT", 6}, {"KILL", 9},
|
{"0", 0}, {"HUP", 1}, {"INT", 2}, {"QUIT", 3}, {"ABRT", 6}, {"KILL", 9},
|
||||||
{"ALRM", 14}, {"TERM", 15},
|
{"ALRM", 14}, {"TERM", 15},
|
||||||
// And Posix adds the following:
|
// And Posix adds the following:
|
||||||
{"ILL", SIGILL}, {"TRAP", SIGTRAP}, {"FPE", SIGFPE}, {"USR1", SIGUSR1},
|
{"ILL", SIGILL}, {"TRAP", SIGTRAP}, {"FPE", SIGFPE}, {"USR1", SIGUSR1},
|
||||||
{"SEGV", SIGSEGV}, {"USR2", SIGUSR2}, {"PIPE", SIGPIPE}, {"CHLD", SIGCHLD},
|
{"SEGV", SIGSEGV}, {"USR2", SIGUSR2}, {"PIPE", SIGPIPE}, {"CHLD", SIGCHLD},
|
||||||
{"CONT", SIGCONT}, {"STOP", SIGSTOP}, {"TSTP", SIGTSTP}, {"TTIN", SIGTTIN},
|
{"CONT", SIGCONT}, {"STOP", SIGSTOP}, {"TSTP", SIGTSTP}, {"TTIN", SIGTTIN},
|
||||||
{"TTOU", SIGTTOU}
|
{"TTOU", SIGTTOU}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Convert signal name to number.
|
// Convert signal name to number.
|
||||||
|
@ -489,8 +489,8 @@ void xlisten(int s, int backlog)
|
|||||||
// xstat() - a stat() which dies on failure with meaningful error message
|
// xstat() - a stat() which dies on failure with meaningful error message
|
||||||
void xstat(char *name, struct stat *stat_buf)
|
void xstat(char *name, struct stat *stat_buf)
|
||||||
{
|
{
|
||||||
if (stat(name, stat_buf))
|
if (stat(name, stat_buf))
|
||||||
bb_perror_msg_and_die("Can't stat '%s'", name);
|
bb_perror_msg_and_die("Can't stat '%s'", name);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ int addgroup_main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
char *group;
|
char *group;
|
||||||
gid_t gid = 0;
|
gid_t gid = 0;
|
||||||
|
|
||||||
/* check for min, max and missing args and exit on error */
|
/* check for min, max and missing args and exit on error */
|
||||||
bb_opt_complementally = "-1:?2:?";
|
bb_opt_complementally = "-1:?2:?";
|
||||||
|
|
||||||
|
@ -137,8 +137,8 @@ static int adduser(struct passwd *p, unsigned long flags)
|
|||||||
if (mkdir(p->pw_dir, 0755)
|
if (mkdir(p->pw_dir, 0755)
|
||||||
|| chown(p->pw_dir, p->pw_uid, p->pw_gid)
|
|| chown(p->pw_dir, p->pw_uid, p->pw_gid)
|
||||||
|| chmod(p->pw_dir, 02755)) {
|
|| chmod(p->pw_dir, 02755)) {
|
||||||
bb_perror_msg("%s", p->pw_dir);
|
bb_perror_msg("%s", p->pw_dir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(flags & DONT_SET_PASS)) {
|
if (!(flags & DONT_SET_PASS)) {
|
||||||
@ -175,7 +175,7 @@ int adduser_main(int argc, char **argv)
|
|||||||
/* got root? */
|
/* got root? */
|
||||||
if(geteuid()) {
|
if(geteuid()) {
|
||||||
bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
|
bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* create string for $HOME if not specified already */
|
/* create string for $HOME if not specified already */
|
||||||
if (!pw.pw_dir) {
|
if (!pw.pw_dir) {
|
||||||
|
@ -337,7 +337,7 @@ static void open_tty(char *tty, struct termio *tp, int local)
|
|||||||
if(fd) {
|
if(fd) {
|
||||||
xdup2(fd, 0, tty);
|
xdup2(fd, 0, tty);
|
||||||
close(fd);
|
close(fd);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* Standard input should already be connected to an open port. Make
|
* Standard input should already be connected to an open port. Make
|
||||||
@ -812,11 +812,11 @@ int getty_main(int argc, char **argv)
|
|||||||
setsid();
|
setsid();
|
||||||
#endif
|
#endif
|
||||||
/* We want special flavor of error_msg_and_die */
|
/* We want special flavor of error_msg_and_die */
|
||||||
die_sleep = 10;
|
die_sleep = 10;
|
||||||
msg_eol = "\r\n";
|
msg_eol = "\r\n";
|
||||||
/* Was "/dev/console". Why should we spam *system console*
|
/* Was "/dev/console". Why should we spam *system console*
|
||||||
* if there is a problem with getty on /dev/ttyS15?... */
|
* if there is a problem with getty on /dev/ttyS15?... */
|
||||||
nullfd = xopen(bb_dev_null, O_RDWR);
|
nullfd = xopen(bb_dev_null, O_RDWR);
|
||||||
dup2(nullfd, 0);
|
dup2(nullfd, 0);
|
||||||
dup2(nullfd, 1);
|
dup2(nullfd, 1);
|
||||||
dup2(nullfd, 2);
|
dup2(nullfd, 2);
|
||||||
|
@ -73,7 +73,7 @@ int sulogin_main(int argc, char **argv)
|
|||||||
|
|
||||||
if (!(pwd = getpwuid(0))) {
|
if (!(pwd = getpwuid(0))) {
|
||||||
goto auth_error;
|
goto auth_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ENABLE_FEATURE_SHADOWPASSWDS) {
|
if (ENABLE_FEATURE_SHADOWPASSWDS) {
|
||||||
if (!(spwd = getspnam(pwd->pw_name))) {
|
if (!(spwd = getspnam(pwd->pw_name))) {
|
||||||
@ -108,6 +108,6 @@ int sulogin_main(int argc, char **argv)
|
|||||||
run_shell(pwd->pw_shell, 1, 0, 0);
|
run_shell(pwd->pw_shell, 1, 0, 0);
|
||||||
/* never returns */
|
/* never returns */
|
||||||
|
|
||||||
auth_error:
|
auth_error:
|
||||||
bb_error_msg_and_die("no password entry for `root'");
|
bb_error_msg_and_die("no password entry for `root'");
|
||||||
}
|
}
|
||||||
|
@ -292,7 +292,7 @@ config CONFIG_READAHEAD
|
|||||||
significantly speed up system startup.
|
significantly speed up system startup.
|
||||||
|
|
||||||
As readahead(2) blocks until each file has been read, it is best to
|
As readahead(2) blocks until each file has been read, it is best to
|
||||||
run this applet as a background job.
|
run this applet as a background job.
|
||||||
|
|
||||||
config CONFIG_RUNLEVEL
|
config CONFIG_RUNLEVEL
|
||||||
bool "runlevel"
|
bool "runlevel"
|
||||||
|
@ -755,7 +755,7 @@ static void identify(uint16_t *id_supplied)
|
|||||||
strng = "<=10ms with INTRQ";
|
strng = "<=10ms with INTRQ";
|
||||||
else if ((val[GEN_CONFIG] & DRQ_RESPONSE_TIME) == DRQ_50US_VAL)
|
else if ((val[GEN_CONFIG] & DRQ_RESPONSE_TIME) == DRQ_50US_VAL)
|
||||||
strng ="50us";
|
strng ="50us";
|
||||||
else
|
else
|
||||||
strng = "Unknown";
|
strng = "Unknown";
|
||||||
printf("\tDRQ response: %s\n\tPacket size: ", strng); /* Data Request (DRQ) */
|
printf("\tDRQ response: %s\n\tPacket size: ", strng); /* Data Request (DRQ) */
|
||||||
|
|
||||||
@ -817,7 +817,7 @@ static void identify(uint16_t *id_supplied)
|
|||||||
|
|
||||||
if (bbbig > 1000)
|
if (bbbig > 1000)
|
||||||
printf("(%"PRIu64" GB)\n", bbbig/1000);
|
printf("(%"PRIu64" GB)\n", bbbig/1000);
|
||||||
else
|
else
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -833,8 +833,8 @@ static void identify(uint16_t *id_supplied)
|
|||||||
|
|
||||||
if (like_std != 1)
|
if (like_std != 1)
|
||||||
{
|
{
|
||||||
printf("IORDY%s(can%s be disabled)\n",
|
printf("IORDY%s(can%s be disabled)\n",
|
||||||
!(val[CAPAB_0] & IORDY_SUP) ? "(may be)" : "",
|
!(val[CAPAB_0] & IORDY_SUP) ? "(may be)" : "",
|
||||||
(val[CAPAB_0] & IORDY_OFF) ? "" :"not");
|
(val[CAPAB_0] & IORDY_OFF) ? "" :"not");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -843,7 +843,7 @@ static void identify(uint16_t *id_supplied)
|
|||||||
if ((like_std == 1) && val[BUF_TYPE])
|
if ((like_std == 1) && val[BUF_TYPE])
|
||||||
{
|
{
|
||||||
printf("\tBuffer type: %04x: %s%s\n", val[BUF_TYPE],
|
printf("\tBuffer type: %04x: %s%s\n", val[BUF_TYPE],
|
||||||
(val[BUF_TYPE] < 2) ? "single port, single-sector" : "dual port, multi-sector",
|
(val[BUF_TYPE] < 2) ? "single port, single-sector" : "dual port, multi-sector",
|
||||||
(val[BUF_TYPE] > 2) ? " with read caching ability" : "");
|
(val[BUF_TYPE] > 2) ? " with read caching ability" : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1063,9 +1063,9 @@ static void identify(uint16_t *id_supplied)
|
|||||||
strng = " determined by the jumper";
|
strng = " determined by the jumper";
|
||||||
else if ((jj & DEV_DET) == CSEL_VAL)
|
else if ((jj & DEV_DET) == CSEL_VAL)
|
||||||
strng = " determined by CSEL";
|
strng = " determined by CSEL";
|
||||||
else
|
else
|
||||||
strng = "";
|
strng = "";
|
||||||
printf("HW reset results:\n\tCBLID- %s Vih\n\tDevice num = %i%s\n",
|
printf("HW reset results:\n\tCBLID- %s Vih\n\tDevice num = %i%s\n",
|
||||||
(val[HWRST_RSLT] & CBLID) ? "above" : "below", !(oo), strng);
|
(val[HWRST_RSLT] & CBLID) ? "above" : "below", !(oo), strng);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1200,8 +1200,8 @@ static void dump_identity(const struct hd_driveid *id)
|
|||||||
printf(" (maybe):");
|
printf(" (maybe):");
|
||||||
|
|
||||||
printf(" CurCHS=%u/%u/%u, CurSects=%lu, LBA=%s",id->cur_cyls, id->cur_heads,
|
printf(" CurCHS=%u/%u/%u, CurSects=%lu, LBA=%s",id->cur_cyls, id->cur_heads,
|
||||||
id->cur_sectors,
|
id->cur_sectors,
|
||||||
(BB_BIG_ENDIAN) ?
|
(BB_BIG_ENDIAN) ?
|
||||||
(long unsigned int)(id->cur_capacity0 << 16) | id->cur_capacity1 :
|
(long unsigned int)(id->cur_capacity0 << 16) | id->cur_capacity1 :
|
||||||
(long unsigned int)(id->cur_capacity1 << 16) | id->cur_capacity0,
|
(long unsigned int)(id->cur_capacity1 << 16) | id->cur_capacity0,
|
||||||
((id->capability&2) == 0) ? "no" : "yes");
|
((id->capability&2) == 0) ? "no" : "yes");
|
||||||
@ -1213,7 +1213,7 @@ static void dump_identity(const struct hd_driveid *id)
|
|||||||
|
|
||||||
if (((id->capability&8) || (id->field_valid&2)) && id->field_valid&2)
|
if (((id->capability&8) || (id->field_valid&2)) && id->field_valid&2)
|
||||||
printf(", tPIO={min:%u,w/IORDY:%u}", id->eide_pio, id->eide_pio_iordy);
|
printf(", tPIO={min:%u,w/IORDY:%u}", id->eide_pio, id->eide_pio_iordy);
|
||||||
|
|
||||||
if ((id->capability&1) && (id->field_valid&2))
|
if ((id->capability&1) && (id->field_valid&2))
|
||||||
printf(", tDMA={min:%u,rec:%u}", id->eide_dma_min, id->eide_dma_time);
|
printf(", tDMA={min:%u,rec:%u}", id->eide_dma_min, id->eide_dma_time);
|
||||||
|
|
||||||
@ -1254,7 +1254,7 @@ static void dump_identity(const struct hd_driveid *id)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (((id->capability&8) || (id->field_valid&2)) && id->field_valid&4)
|
if (((id->capability&8) || (id->field_valid&2)) && id->field_valid&4)
|
||||||
{
|
{
|
||||||
printf("\n UDMA modes: ");
|
printf("\n UDMA modes: ");
|
||||||
if (id->dma_ultra & 0x100) printf("*");
|
if (id->dma_ultra & 0x100) printf("*");
|
||||||
if (id->dma_ultra & 0x001) printf("udma0 ");
|
if (id->dma_ultra & 0x001) printf("udma0 ");
|
||||||
@ -1399,7 +1399,7 @@ static void do_time(int flag, int fd)
|
|||||||
if (read_big_block (fd, buf)) return;
|
if (read_big_block (fd, buf)) return;
|
||||||
printf(" Timing cached reads: ");
|
printf(" Timing cached reads: ");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
||||||
/* Now do the timing */
|
/* Now do the timing */
|
||||||
iterations = 0;
|
iterations = 0;
|
||||||
getitimer(ITIMER_REAL, &e1);
|
getitimer(ITIMER_REAL, &e1);
|
||||||
@ -1422,9 +1422,9 @@ static void do_time(int flag, int fd)
|
|||||||
elapsed2 = (e1.it_value.tv_sec - e2.it_value.tv_sec)
|
elapsed2 = (e1.it_value.tv_sec - e2.it_value.tv_sec)
|
||||||
+ ((e1.it_value.tv_usec - e2.it_value.tv_usec) / 1000000.0);
|
+ ((e1.it_value.tv_usec - e2.it_value.tv_usec) / 1000000.0);
|
||||||
} while (--iterations);
|
} while (--iterations);
|
||||||
|
|
||||||
elapsed -= elapsed2;
|
elapsed -= elapsed2;
|
||||||
print_timing(BUFCACHE_FACTOR * total_MB, elapsed);
|
print_timing(BUFCACHE_FACTOR * total_MB, elapsed);
|
||||||
flush_buffer_cache(fd);
|
flush_buffer_cache(fd);
|
||||||
sleep(1);
|
sleep(1);
|
||||||
}
|
}
|
||||||
@ -1447,7 +1447,7 @@ static void do_time(int flag, int fd)
|
|||||||
elapsed = (e1.it_value.tv_sec - e2.it_value.tv_sec)
|
elapsed = (e1.it_value.tv_sec - e2.it_value.tv_sec)
|
||||||
+ ((e1.it_value.tv_usec - e2.it_value.tv_usec) / 1000000.0);
|
+ ((e1.it_value.tv_usec - e2.it_value.tv_usec) / 1000000.0);
|
||||||
} while (elapsed < 3.0 && iterations < max_iterations);
|
} while (elapsed < 3.0 && iterations < max_iterations);
|
||||||
|
|
||||||
total_MB = iterations * TIMING_BUF_MB;
|
total_MB = iterations * TIMING_BUF_MB;
|
||||||
print_timing(total_MB, elapsed);
|
print_timing(total_MB, elapsed);
|
||||||
}
|
}
|
||||||
@ -2124,7 +2124,7 @@ int hdparm_main(int argc, char **argv)
|
|||||||
do_flush |= do_timings |= (c == 't');
|
do_flush |= do_timings |= (c == 't');
|
||||||
do_flush |= do_ctimings |= (c == 'T');
|
do_flush |= do_ctimings |= (c == 'T');
|
||||||
#ifdef HDIO_DRIVE_CMD
|
#ifdef HDIO_DRIVE_CMD
|
||||||
if (c == 'S') parse_opts(&get_standby, &set_standby, &standby_requested, 0, INT_MAX);
|
if (c == 'S') parse_opts(&get_standby, &set_standby, &standby_requested, 0, INT_MAX);
|
||||||
if (c == 'D') parse_opts(&get_defects, &set_defects, &defects, 0, INT_MAX);
|
if (c == 'D') parse_opts(&get_defects, &set_defects, &defects, 0, INT_MAX);
|
||||||
if (c == 'P') parse_opts(&get_prefetch, &set_prefetch, &prefetch, 0, INT_MAX);
|
if (c == 'P') parse_opts(&get_prefetch, &set_prefetch, &prefetch, 0, INT_MAX);
|
||||||
parse_xfermode((c == 'X'), &get_xfermode, &set_xfermode, &xfermode_requested);
|
parse_xfermode((c == 'X'), &get_xfermode, &set_xfermode, &xfermode_requested);
|
||||||
@ -2138,22 +2138,22 @@ int hdparm_main(int argc, char **argv)
|
|||||||
reread_partn |= (c == 'z');
|
reread_partn |= (c == 'z');
|
||||||
get_seagate = set_seagate |= (c == 'Z');
|
get_seagate = set_seagate |= (c == 'Z');
|
||||||
#endif
|
#endif
|
||||||
USE_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF(if (c == 'U') parse_opts(NULL, &unregister_hwif, &hwif, 0, INT_MAX));
|
USE_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF(if (c == 'U') parse_opts(NULL, &unregister_hwif, &hwif, 0, INT_MAX));
|
||||||
#ifdef HDIO_GET_QDMA
|
#ifdef HDIO_GET_QDMA
|
||||||
if (c == 'Q') {
|
if (c == 'Q') {
|
||||||
#ifdef HDIO_SET_QDMA
|
#ifdef HDIO_SET_QDMA
|
||||||
parse_opts(&get_dma_q, &set_dma_q, &dma_q, 0, INT_MAX);
|
parse_opts(&get_dma_q, &set_dma_q, &dma_q, 0, INT_MAX);
|
||||||
#else
|
#else
|
||||||
parse_opts(&get_dma_q, NULL, NULL, 0, 0);
|
parse_opts(&get_dma_q, NULL, NULL, 0, 0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
USE_FEATURE_HDPARM_HDIO_DRIVE_RESET(perform_reset = (c == 'r'));
|
USE_FEATURE_HDPARM_HDIO_DRIVE_RESET(perform_reset = (c == 'r'));
|
||||||
USE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF(if (c == 'x') parse_opts(NULL, &perform_tristate, &tristate, 0, 1));
|
USE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF(if (c == 'x') parse_opts(NULL, &perform_tristate, &tristate, 0, 1));
|
||||||
USE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF(if (c == 'b') parse_opts(&get_busstate, &set_busstate, &busstate, 0, 2));
|
USE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF(if (c == 'b') parse_opts(&get_busstate, &set_busstate, &busstate, 0, 2));
|
||||||
#if ENABLE_FEATURE_HDPARM_HDIO_SCAN_HWIF
|
#if ENABLE_FEATURE_HDPARM_HDIO_SCAN_HWIF
|
||||||
if (c == 'R') {
|
if (c == 'R') {
|
||||||
parse_opts(NULL, &scan_hwif, &hwif_data, 0, INT_MAX);
|
parse_opts(NULL, &scan_hwif, &hwif_data, 0, INT_MAX);
|
||||||
hwif_ctrl = bb_xgetlarg((argv[optind]) ? argv[optind] : "", 10, 0, INT_MAX);
|
hwif_ctrl = bb_xgetlarg((argv[optind]) ? argv[optind] : "", 10, 0, INT_MAX);
|
||||||
hwif_irq = bb_xgetlarg((argv[optind+1]) ? argv[optind+1] : "", 10, 0, INT_MAX);
|
hwif_irq = bb_xgetlarg((argv[optind+1]) ? argv[optind+1] : "", 10, 0, INT_MAX);
|
||||||
/* Move past the 2 additional arguments */
|
/* Move past the 2 additional arguments */
|
||||||
|
@ -610,26 +610,26 @@ static char *process_regex_on_line(char *line, regex_t *pattern, int action)
|
|||||||
|
|
||||||
match_found = 0;
|
match_found = 0;
|
||||||
match_status = regexec(pattern, line2, 1, &match_structs, 0);
|
match_status = regexec(pattern, line2, 1, &match_structs, 0);
|
||||||
|
|
||||||
while (match_status == 0) {
|
while (match_status == 0) {
|
||||||
if (match_found == 0)
|
if (match_found == 0)
|
||||||
match_found = 1;
|
match_found = 1;
|
||||||
|
|
||||||
if (action) {
|
if (action) {
|
||||||
growline = xasprintf("%s%.*s%s%.*s%s", growline, match_structs.rm_so, line2, HIGHLIGHT, match_structs.rm_eo - match_structs.rm_so, line2 + match_structs.rm_so, NORMAL);
|
growline = xasprintf("%s%.*s%s%.*s%s", growline, match_structs.rm_so, line2, HIGHLIGHT, match_structs.rm_eo - match_structs.rm_so, line2 + match_structs.rm_so, NORMAL);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
growline = xasprintf("%s%.*s%.*s", growline, match_structs.rm_so - 4, line2, match_structs.rm_eo - match_structs.rm_so, line2 + match_structs.rm_so);
|
growline = xasprintf("%s%.*s%.*s", growline, match_structs.rm_so - 4, line2, match_structs.rm_eo - match_structs.rm_so, line2 + match_structs.rm_so);
|
||||||
}
|
}
|
||||||
|
|
||||||
line2 += match_structs.rm_eo;
|
line2 += match_structs.rm_eo;
|
||||||
match_status = regexec(pattern, line2, 1, &match_structs, REG_NOTBOL);
|
match_status = regexec(pattern, line2, 1, &match_structs, REG_NOTBOL);
|
||||||
}
|
}
|
||||||
|
|
||||||
growline = xasprintf("%s%s", growline, line2);
|
growline = xasprintf("%s%s", growline, line2);
|
||||||
|
|
||||||
return (match_found ? growline : line);
|
return (match_found ? growline : line);
|
||||||
|
|
||||||
free(growline);
|
free(growline);
|
||||||
free(line2);
|
free(line2);
|
||||||
}
|
}
|
||||||
@ -656,7 +656,7 @@ static void regex_process(void)
|
|||||||
putchar((match_backwards) ? '?' : '/');
|
putchar((match_backwards) ? '?' : '/');
|
||||||
uncomp_regex[0] = 0;
|
uncomp_regex[0] = 0;
|
||||||
fgets(uncomp_regex, sizeof(uncomp_regex), inp);
|
fgets(uncomp_regex, sizeof(uncomp_regex), inp);
|
||||||
|
|
||||||
if (strlen(uncomp_regex) == 1) {
|
if (strlen(uncomp_regex) == 1) {
|
||||||
if (num_matches)
|
if (num_matches)
|
||||||
goto_match(match_backwards ? match_pos - 1 : match_pos + 1);
|
goto_match(match_backwards ? match_pos - 1 : match_pos + 1);
|
||||||
@ -665,7 +665,7 @@ static void regex_process(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
uncomp_regex[strlen(uncomp_regex) - 1] = '\0';
|
uncomp_regex[strlen(uncomp_regex) - 1] = '\0';
|
||||||
|
|
||||||
/* Compile the regex and check for errors */
|
/* Compile the regex and check for errors */
|
||||||
xregcomp(&pattern, uncomp_regex, 0);
|
xregcomp(&pattern, uncomp_regex, 0);
|
||||||
|
|
||||||
@ -677,7 +677,7 @@ static void regex_process(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
old_pattern = pattern;
|
old_pattern = pattern;
|
||||||
|
|
||||||
/* Reset variables */
|
/* Reset variables */
|
||||||
match_lines = xrealloc(match_lines, sizeof(int));
|
match_lines = xrealloc(match_lines, sizeof(int));
|
||||||
match_lines[0] = -1;
|
match_lines[0] = -1;
|
||||||
@ -694,7 +694,7 @@ static void regex_process(void)
|
|||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
num_matches = j;
|
num_matches = j;
|
||||||
if ((match_lines[0] != -1) && (num_flines > height - 2)) {
|
if ((match_lines[0] != -1) && (num_flines > height - 2)) {
|
||||||
if (match_backwards) {
|
if (match_backwards) {
|
||||||
|
@ -22,7 +22,7 @@ int readahead_main(int argc, char **argv)
|
|||||||
while (*++argv) {
|
while (*++argv) {
|
||||||
if ((f = bb_wfopen(*argv, "r")) != NULL) {
|
if ((f = bb_wfopen(*argv, "r")) != NULL) {
|
||||||
int r, fd=fileno(f);
|
int r, fd=fileno(f);
|
||||||
|
|
||||||
r = readahead(fd, 0, fdlength(fd));
|
r = readahead(fd, 0, fdlength(fd));
|
||||||
fclose(f);
|
fclose(f);
|
||||||
if (r >= 0) continue;
|
if (r >= 0) continue;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
* strings implementation for busybox
|
* strings implementation for busybox
|
||||||
*
|
*
|
||||||
* Copyright Tito Ragusa <farmatito@tiscali.it>
|
* Copyright Tito Ragusa <farmatito@tiscali.it>
|
||||||
*
|
*
|
||||||
* Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
|
* Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -981,7 +981,7 @@ arch_apply_relocation(struct obj_file *f,
|
|||||||
/* dot is the address of the current instruction.
|
/* dot is the address of the current instruction.
|
||||||
* v is the target symbol address.
|
* v is the target symbol address.
|
||||||
* So we need to extract the offset in the code,
|
* So we need to extract the offset in the code,
|
||||||
* adding v, then subtrating the current address
|
* adding v, then subtrating the current address
|
||||||
* of this instruction.
|
* of this instruction.
|
||||||
* Ex: "IMM 0xFFFE bralid 0x0000" = "bralid 0xFFFE0000"
|
* Ex: "IMM 0xFFFE bralid 0x0000" = "bralid 0xFFFE0000"
|
||||||
*/
|
*/
|
||||||
@ -990,7 +990,7 @@ arch_apply_relocation(struct obj_file *f,
|
|||||||
unsigned int temp = (loc[0] & 0xFFFF) << 16 |
|
unsigned int temp = (loc[0] & 0xFFFF) << 16 |
|
||||||
(loc[1] & 0xFFFF);
|
(loc[1] & 0xFFFF);
|
||||||
|
|
||||||
/* Adjust relative offset. -4 adjustment required
|
/* Adjust relative offset. -4 adjustment required
|
||||||
* because dot points to the IMM insn, but branch
|
* because dot points to the IMM insn, but branch
|
||||||
* is computed relative to the branch instruction itself.
|
* is computed relative to the branch instruction itself.
|
||||||
*/
|
*/
|
||||||
|
@ -104,7 +104,7 @@ int lsmod_main(int argc, char **argv)
|
|||||||
if (errno == ENOENT) {
|
if (errno == ENOENT) {
|
||||||
/* The module was removed out from underneath us. */
|
/* The module was removed out from underneath us. */
|
||||||
continue;
|
continue;
|
||||||
} else if (errno != ENOSPC)
|
} else if (errno != ENOSPC)
|
||||||
bb_perror_msg_and_die("module %s: QM_REFS", mn);
|
bb_perror_msg_and_die("module %s: QM_REFS", mn);
|
||||||
deps = xrealloc(deps, count);
|
deps = xrealloc(deps, count);
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ void filename2modname(char *modname, const char *afterslash);
|
|||||||
// There really should be a header file for this...
|
// There really should be a header file for this...
|
||||||
|
|
||||||
int query_module(const char *name, int which, void *buf,
|
int query_module(const char *name, int which, void *buf,
|
||||||
size_t bufsize, size_t *ret);
|
size_t bufsize, size_t *ret);
|
||||||
|
|
||||||
int rmmod_main(int argc, char **argv)
|
int rmmod_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
@ -22,7 +22,7 @@ config CONFIG_DNSD
|
|||||||
bool "dnsd"
|
bool "dnsd"
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
Small and static DNS server daemon.
|
Small and static DNS server daemon.
|
||||||
|
|
||||||
config CONFIG_ETHER_WAKE
|
config CONFIG_ETHER_WAKE
|
||||||
bool "ether-wake"
|
bool "ether-wake"
|
||||||
@ -132,9 +132,9 @@ config CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR
|
|||||||
default n
|
default n
|
||||||
depends on CONFIG_FEATURE_HTTPD_CGI
|
depends on CONFIG_FEATURE_HTTPD_CGI
|
||||||
help
|
help
|
||||||
This option enables support for running scripts through an
|
This option enables support for running scripts through an
|
||||||
interpreter. Turn this on if you want PHP scripts to work
|
interpreter. Turn this on if you want PHP scripts to work
|
||||||
properly. You need to supply an addition line in your httpd
|
properly. You need to supply an addition line in your httpd
|
||||||
config file:
|
config file:
|
||||||
*.php:/path/to/your/php
|
*.php:/path/to/your/php
|
||||||
|
|
||||||
|
@ -708,7 +708,7 @@ static struct interfaces_file_t *read_interfaces(const char *filename)
|
|||||||
llist_t *iface_list;
|
llist_t *iface_list;
|
||||||
for (iface_list = defn->ifaces; iface_list; iface_list = iface_list->link) {
|
for (iface_list = defn->ifaces; iface_list; iface_list = iface_list->link) {
|
||||||
struct interface_defn_t *tmp = (struct interface_defn_t *) iface_list->data;
|
struct interface_defn_t *tmp = (struct interface_defn_t *) iface_list->data;
|
||||||
if ((strcmp(tmp->iface, currif->iface) == 0) &&
|
if ((strcmp(tmp->iface, currif->iface) == 0) &&
|
||||||
(tmp->address_family == currif->address_family)) {
|
(tmp->address_family == currif->address_family)) {
|
||||||
bb_error_msg("duplicate interface \"%s\"", tmp->iface);
|
bb_error_msg("duplicate interface \"%s\"", tmp->iface);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
/* vi: set sw=4 ts=4: */
|
/* vi: set sw=4 ts=4: */
|
||||||
/* nc: mini-netcat - built from the ground up for LRP
|
/* nc: mini-netcat - built from the ground up for LRP
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998, 1999 Charles P. Wright
|
* Copyright (C) 1998, 1999 Charles P. Wright
|
||||||
* Copyright (C) 1998 Dave Cinege
|
* Copyright (C) 1998 Dave Cinege
|
||||||
*
|
*
|
||||||
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -25,7 +25,7 @@ int nc_main(int argc, char **argv)
|
|||||||
|
|
||||||
memset(&address, 0, sizeof(address));
|
memset(&address, 0, sizeof(address));
|
||||||
|
|
||||||
if (ENABLE_NC_SERVER || ENABLE_NC_EXTRA) {
|
if (ENABLE_NC_SERVER || ENABLE_NC_EXTRA) {
|
||||||
while ((opt = getopt(argc, argv, "lp:" USE_NC_EXTRA("i:ew:f:"))) > 0) {
|
while ((opt = getopt(argc, argv, "lp:" USE_NC_EXTRA("i:ew:f:"))) > 0) {
|
||||||
if (ENABLE_NC_SERVER && opt=='l') do_listen++;
|
if (ENABLE_NC_SERVER && opt=='l') do_listen++;
|
||||||
else if (ENABLE_NC_SERVER && opt=='p')
|
else if (ENABLE_NC_SERVER && opt=='p')
|
||||||
@ -40,7 +40,7 @@ int nc_main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// For listen or file we need zero arguments, dialout is 2.
|
// For listen or file we need zero arguments, dialout is 2.
|
||||||
// For exec we need at least one more argument at the end, more ok
|
// For exec we need at least one more argument at the end, more ok
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ int nc_main(int argc, char **argv)
|
|||||||
signal(SIGALRM, timeout);
|
signal(SIGALRM, timeout);
|
||||||
alarm(wsecs);
|
alarm(wsecs);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (infile) cfd = xopen(infile, O_RDWR);
|
if (infile) cfd = xopen(infile, O_RDWR);
|
||||||
else {
|
else {
|
||||||
opt = 1;
|
opt = 1;
|
||||||
@ -132,7 +132,7 @@ repeatyness:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Select loop copying stdin to cfd, and cfd to stdout.
|
// Select loop copying stdin to cfd, and cfd to stdout.
|
||||||
|
|
||||||
FD_ZERO(&readfds);
|
FD_ZERO(&readfds);
|
||||||
FD_SET(cfd, &readfds);
|
FD_SET(cfd, &readfds);
|
||||||
FD_SET(STDIN_FILENO, &readfds);
|
FD_SET(STDIN_FILENO, &readfds);
|
||||||
|
@ -370,7 +370,7 @@ static void ping(const char *host)
|
|||||||
pingaddr.sin6_scope_id = if_index;
|
pingaddr.sin6_scope_id = if_index;
|
||||||
|
|
||||||
printf("PING %s (%s): %d data bytes\n",
|
printf("PING %s (%s): %d data bytes\n",
|
||||||
hostent->h_name,
|
hostent->h_name,
|
||||||
inet_ntop(AF_INET6, &pingaddr.sin6_addr,
|
inet_ntop(AF_INET6, &pingaddr.sin6_addr,
|
||||||
buf, sizeof(buf)),
|
buf, sizeof(buf)),
|
||||||
datalen);
|
datalen);
|
||||||
|
@ -185,9 +185,9 @@ static void handlenetoutput(int len)
|
|||||||
* I don't agree.
|
* I don't agree.
|
||||||
* first - I cannot use programs like sz/rz
|
* first - I cannot use programs like sz/rz
|
||||||
* second - the 0x0D is sent as one character and if the next
|
* second - the 0x0D is sent as one character and if the next
|
||||||
* char is 0x0A then it's eaten by a server side.
|
* char is 0x0A then it's eaten by a server side.
|
||||||
* third - whay doy you have to make 'many write()s'?
|
* third - whay doy you have to make 'many write()s'?
|
||||||
* I don't understand.
|
* I don't understand.
|
||||||
* So I implemented it. It's realy useful for me. I hope that
|
* So I implemented it. It's realy useful for me. I hope that
|
||||||
* others people will find it interesting to.
|
* others people will find it interesting to.
|
||||||
*/
|
*/
|
||||||
|
@ -29,7 +29,7 @@ struct client_config_t {
|
|||||||
uint8_t *hostname; /* Optional hostname to use */
|
uint8_t *hostname; /* Optional hostname to use */
|
||||||
uint8_t *fqdn; /* Optional fully qualified domain name to use */
|
uint8_t *fqdn; /* Optional fully qualified domain name to use */
|
||||||
int ifindex; /* Index number of the interface to use */
|
int ifindex; /* Index number of the interface to use */
|
||||||
int retries; /* Max number of request packets */
|
int retries; /* Max number of request packets */
|
||||||
int timeout; /* Number of seconds to try to get a lease */
|
int timeout; /* Number of seconds to try to get a lease */
|
||||||
uint8_t arp[6]; /* Our arp address */
|
uint8_t arp[6]; /* Our arp address */
|
||||||
};
|
};
|
||||||
|
@ -483,7 +483,7 @@ read_response:
|
|||||||
do {
|
do {
|
||||||
while (filesize > 0 || !got_clen) {
|
while (filesize > 0 || !got_clen) {
|
||||||
unsigned rdsz = sizeof(buf);
|
unsigned rdsz = sizeof(buf);
|
||||||
if (filesize < sizeof(buf) && (chunked || got_clen))
|
if (filesize < sizeof(buf) && (chunked || got_clen))
|
||||||
rdsz = filesize;
|
rdsz = filesize;
|
||||||
n = safe_fread(buf, 1, rdsz, dfp);
|
n = safe_fread(buf, 1, rdsz, dfp);
|
||||||
if (n <= 0)
|
if (n <= 0)
|
||||||
|
@ -314,7 +314,7 @@ int zcip_main(int argc, char *argv[])
|
|||||||
tv1.tv_sec++;
|
tv1.tv_sec++;
|
||||||
}
|
}
|
||||||
tv1.tv_sec += timeout / 1000;
|
tv1.tv_sec += timeout / 1000;
|
||||||
|
|
||||||
VDBG("...wait %ld %s nprobes=%d, nclaims=%d\n",
|
VDBG("...wait %ld %s nprobes=%d, nclaims=%d\n",
|
||||||
timeout, intf, nprobes, nclaims);
|
timeout, intf, nprobes, nclaims);
|
||||||
switch (poll(fds, 1, timeout)) {
|
switch (poll(fds, 1, timeout)) {
|
||||||
@ -479,7 +479,7 @@ int zcip_main(int argc, char *argv[])
|
|||||||
target_ip_conflict = 1;
|
target_ip_conflict = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
VDBG("state = %d, source ip conflict = %d, target ip conflict = %d\n",
|
VDBG("state = %d, source ip conflict = %d, target ip conflict = %d\n",
|
||||||
state, source_ip_conflict, target_ip_conflict);
|
state, source_ip_conflict, target_ip_conflict);
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case PROBE:
|
case PROBE:
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# AWK script to check for missing help entries for config options
|
# AWK script to check for missing help entries for config options
|
||||||
#
|
#
|
||||||
# Copyright (C) 2006 Bernhard Fischer
|
# Copyright (C) 2006 Bernhard Fischer
|
||||||
#
|
#
|
||||||
# This file is distributed under the terms and conditions of the
|
# This file is distributed under the terms and conditions of the
|
||||||
# MIT/X public licenses. See http://opensource.org/licenses/mit-license.html
|
# MIT/X public licenses. See http://opensource.org/licenses/mit-license.html
|
||||||
# and notice http://www.gnu.org/licenses/license-list.html#X11License
|
# and notice http://www.gnu.org/licenses/license-list.html#X11License
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
This is NOT the official version of dialog. This version has been
|
This is NOT the official version of dialog. This version has been
|
||||||
significantly modified from the original. It is for use by the Linux
|
significantly modified from the original. It is for use by the Linux
|
||||||
kernel configuration script. Please do not bother Savio Lam with
|
kernel configuration script. Please do not bother Savio Lam with
|
||||||
questions about this program.
|
questions about this program.
|
||||||
|
@ -305,7 +305,7 @@ dialog_menu (const char *title, const char *prompt, int height, int width,
|
|||||||
|
|
||||||
if (key == KEY_UP || key == '-') {
|
if (key == KEY_UP || key == '-') {
|
||||||
if (choice < 2 && scroll) {
|
if (choice < 2 && scroll) {
|
||||||
/* Scroll menu down */
|
/* Scroll menu down */
|
||||||
scrollok (menu, TRUE);
|
scrollok (menu, TRUE);
|
||||||
wscrl (menu, -1);
|
wscrl (menu, -1);
|
||||||
scrollok (menu, FALSE);
|
scrollok (menu, FALSE);
|
||||||
@ -339,7 +339,7 @@ dialog_menu (const char *title, const char *prompt, int height, int width,
|
|||||||
choice = MIN(choice+1, max_choice-1);
|
choice = MIN(choice+1, max_choice-1);
|
||||||
|
|
||||||
} else if (key == KEY_PPAGE) {
|
} else if (key == KEY_PPAGE) {
|
||||||
scrollok (menu, TRUE);
|
scrollok (menu, TRUE);
|
||||||
for (i=0; (i < max_choice); i++) {
|
for (i=0; (i < max_choice); i++) {
|
||||||
if (scroll > 0) {
|
if (scroll > 0) {
|
||||||
wscrl (menu, -1);
|
wscrl (menu, -1);
|
||||||
@ -361,8 +361,8 @@ dialog_menu (const char *title, const char *prompt, int height, int width,
|
|||||||
scrollok (menu, FALSE);
|
scrollok (menu, FALSE);
|
||||||
scroll++;
|
scroll++;
|
||||||
print_item (menu, items[scroll + max_choice - 1]->name,
|
print_item (menu, items[scroll + max_choice - 1]->name,
|
||||||
max_choice-1, FALSE,
|
max_choice-1, FALSE,
|
||||||
(items[scroll + max_choice - 1]->tag[0] != ':'));
|
(items[scroll + max_choice - 1]->tag[0] != ':'));
|
||||||
} else {
|
} else {
|
||||||
if (choice+1 < max_choice)
|
if (choice+1 < max_choice)
|
||||||
choice++;
|
choice++;
|
||||||
|
@ -224,7 +224,7 @@ print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x)
|
|||||||
while (word && *word) {
|
while (word && *word) {
|
||||||
sp = strchr(word, ' ');
|
sp = strchr(word, ' ');
|
||||||
if (sp)
|
if (sp)
|
||||||
*sp++ = 0;
|
*sp++ = 0;
|
||||||
|
|
||||||
/* Wrap to next line if either the word does not fit,
|
/* Wrap to next line if either the word does not fit,
|
||||||
or it is the first word of a new sentence, and it is
|
or it is the first word of a new sentence, and it is
|
||||||
@ -242,11 +242,11 @@ print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x)
|
|||||||
getyx (win, cur_y, cur_x);
|
getyx (win, cur_y, cur_x);
|
||||||
cur_x++;
|
cur_x++;
|
||||||
if (sp && *sp == ' ') {
|
if (sp && *sp == ' ') {
|
||||||
cur_x++; /* double space */
|
cur_x++; /* double space */
|
||||||
while (*++sp == ' ');
|
while (*++sp == ' ');
|
||||||
newl = 1;
|
newl = 1;
|
||||||
} else
|
} else
|
||||||
newl = 0;
|
newl = 0;
|
||||||
word = sp;
|
word = sp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -408,7 +408,7 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym)
|
|||||||
struct property *prop;
|
struct property *prop;
|
||||||
|
|
||||||
str_printf(r, "Symbol: %s [=%s]\n", sym->name,
|
str_printf(r, "Symbol: %s [=%s]\n", sym->name,
|
||||||
sym_get_string_value(sym));
|
sym_get_string_value(sym));
|
||||||
for_all_prompts(sym, prop)
|
for_all_prompts(sym, prop)
|
||||||
get_prompt_str(r, prop);
|
get_prompt_str(r, prop);
|
||||||
hit = false;
|
hit = false;
|
||||||
|
@ -185,7 +185,7 @@ void sym_check_prop(struct symbol *sym)
|
|||||||
case P_RANGE:
|
case P_RANGE:
|
||||||
if (sym->type != S_INT && sym->type != S_HEX)
|
if (sym->type != S_INT && sym->type != S_HEX)
|
||||||
prop_warn(prop, "range is only allowed "
|
prop_warn(prop, "range is only allowed "
|
||||||
"for int or hex symbols");
|
"for int or hex symbols");
|
||||||
if (!sym_string_valid(sym, prop->expr->left.sym->name) ||
|
if (!sym_string_valid(sym, prop->expr->left.sym->name) ||
|
||||||
!sym_string_valid(sym, prop->expr->right.sym->name))
|
!sym_string_valid(sym, prop->expr->right.sym->name))
|
||||||
prop_warn(prop, "range is invalid");
|
prop_warn(prop, "range is invalid");
|
||||||
|
14
shell/bbsh.c
14
shell/bbsh.c
@ -1,5 +1,5 @@
|
|||||||
/* vi: set ts=4 :
|
/* vi: set ts=4 :
|
||||||
*
|
*
|
||||||
* bbsh - busybox shell
|
* bbsh - busybox shell
|
||||||
*
|
*
|
||||||
* Copyright 2006 Rob Landley <rob@landley.net>
|
* Copyright 2006 Rob Landley <rob@landley.net>
|
||||||
@ -51,7 +51,7 @@
|
|||||||
// What we know about a single process.
|
// What we know about a single process.
|
||||||
struct command {
|
struct command {
|
||||||
struct command *next;
|
struct command *next;
|
||||||
int flags; // exit, suspend, && ||
|
int flags; // exit, suspend, && ||
|
||||||
int pid; // pid (or exit code)
|
int pid; // pid (or exit code)
|
||||||
int argc;
|
int argc;
|
||||||
char *argv[0];
|
char *argv[0];
|
||||||
@ -125,9 +125,9 @@ static char *parse_pipeline(char *cmdline, struct pipeline *line)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allocate next command structure if necessary
|
// Allocate next command structure if necessary
|
||||||
if (!*cmd) *cmd = xzalloc(sizeof(struct command)+8*sizeof(char *));
|
if (!*cmd) *cmd = xzalloc(sizeof(struct command)+8*sizeof(char *));
|
||||||
|
|
||||||
// Parse next argument and add the results to argv[]
|
// Parse next argument and add the results to argv[]
|
||||||
end = parse_word(start, cmd);
|
end = parse_word(start, cmd);
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ static char *parse_pipeline(char *cmdline, struct pipeline *line)
|
|||||||
start++;
|
start++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// handle | & < > >> << || &&
|
// handle | & < > >> << || &&
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -160,7 +160,7 @@ static int run_pipeline(struct pipeline *line)
|
|||||||
if (cmd->argc==2 && !strcmp(cmd->argv[0],"cd"))
|
if (cmd->argc==2 && !strcmp(cmd->argv[0],"cd"))
|
||||||
chdir(cmd->argv[1]);
|
chdir(cmd->argv[1]);
|
||||||
else if(!strcmp(cmd->argv[0],"exit"))
|
else if(!strcmp(cmd->argv[0],"exit"))
|
||||||
exit(cmd->argc>1 ? atoi(cmd->argv[1]) : 0);
|
exit(cmd->argc>1 ? atoi(cmd->argv[1]) : 0);
|
||||||
else {
|
else {
|
||||||
int status;
|
int status;
|
||||||
pid_t pid=fork();
|
pid_t pid=fork();
|
||||||
@ -217,6 +217,6 @@ int bbsh_main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
if (ENABLE_FEATURE_CLEAN_UP) free(command);
|
if (ENABLE_FEATURE_CLEAN_UP) free(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
mkdir bar
|
mkdir bar
|
||||||
touch bar/baz
|
touch bar/baz
|
||||||
busybox cp -R bar foo
|
busybox cp -R bar foo
|
||||||
test -f foo/baz
|
test -f foo/baz
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
mkdir bar
|
mkdir bar
|
||||||
touch bar/baz
|
touch bar/baz
|
||||||
mkdir foo
|
mkdir foo
|
||||||
busybox cp -R bar foo
|
busybox cp -R bar foo
|
||||||
test -f foo/bar/baz
|
test -f foo/bar/baz
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# Copyright 2005 by Rob Landley <rob@landley.net>
|
# Copyright 2005 by Rob Landley <rob@landley.net>
|
||||||
# Licensed under GPL v2, see file LICENSE for details.
|
# Licensed under GPL v2, see file LICENSE for details.
|
||||||
|
|
||||||
# AUDIT:
|
# AUDIT:
|
||||||
|
|
||||||
. testing.sh
|
. testing.sh
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ testing "mount remount nonexistent directory" \
|
|||||||
|
|
||||||
# Fun with mount -a
|
# Fun with mount -a
|
||||||
|
|
||||||
testing "mount -a no fstab" "mount -a 2>/dev/null || echo yes" "yes\n" "" ""
|
testing "mount -a no fstab" "mount -a 2>/dev/null || echo yes" "yes\n" "" ""
|
||||||
|
|
||||||
umount /proc
|
umount /proc
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# Copyright 2005 by Bernhard Fischer
|
# Copyright 2005 by Bernhard Fischer
|
||||||
# Licensed under GPL v2, see file LICENSE for details.
|
# Licensed under GPL v2, see file LICENSE for details.
|
||||||
|
|
||||||
# AUDIT:
|
# AUDIT:
|
||||||
|
|
||||||
. testing.sh
|
. testing.sh
|
||||||
|
|
||||||
@ -24,6 +24,6 @@ testing "pidof -s" "pidof -s init" "1\n" "" ""
|
|||||||
optional FEATURE_PIDOF_OMIT
|
optional FEATURE_PIDOF_OMIT
|
||||||
testing "pidof -o %PPID" "pidof -o %PPID pidof.tests | grep -o -w $$" "" "" ""
|
testing "pidof -o %PPID" "pidof -o %PPID pidof.tests | grep -o -w $$" "" "" ""
|
||||||
testing "pidof -o %PPID NOP" "pidof -o %PPID -s init" "1\n" "" ""
|
testing "pidof -o %PPID NOP" "pidof -o %PPID -s init" "1\n" "" ""
|
||||||
testing "pidof -o init" "pidof -o 1 init | grep -o -w 1" "" "" ""
|
testing "pidof -o init" "pidof -o 1 init | grep -o -w 1" "" "" ""
|
||||||
|
|
||||||
exit $FAILCOUNT
|
exit $FAILCOUNT
|
||||||
|
@ -28,5 +28,5 @@ testing "readlink -f on a wierd dir" "readlink -f $TESTDIR/../$TESTFILE" "$PWD/$
|
|||||||
|
|
||||||
|
|
||||||
# clean up
|
# clean up
|
||||||
rm -r "$TESTLINK" "$TESTDIR"
|
rm -r "$TESTLINK" "$TESTDIR"
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ testing "sed leave off trailing newline" "sed -e 's/woo/bang/' input -" \
|
|||||||
testing "sed autoinsert newline" "sed -e 's/woo/bang/' input -" "bang\nbang" \
|
testing "sed autoinsert newline" "sed -e 's/woo/bang/' input -" "bang\nbang" \
|
||||||
"woo" "woo"
|
"woo" "woo"
|
||||||
testing "sed empty file plus cat" "sed -e 's/nohit//' input -" "one\ntwo" \
|
testing "sed empty file plus cat" "sed -e 's/nohit//' input -" "one\ntwo" \
|
||||||
"" "one\ntwo"
|
"" "one\ntwo"
|
||||||
testing "sed cat plus empty file" "sed -e 's/nohit//' input -" "one\ntwo" \
|
testing "sed cat plus empty file" "sed -e 's/nohit//' input -" "one\ntwo" \
|
||||||
"one\ntwo" ""
|
"one\ntwo" ""
|
||||||
testing "sed append autoinserts newline" "sed -e '/woot/a woo' -" \
|
testing "sed append autoinserts newline" "sed -e '/woot/a woo' -" \
|
||||||
@ -138,7 +138,7 @@ testing "sed selective matches noinsert newline" \
|
|||||||
"c no\nd no"
|
"c no\nd no"
|
||||||
testing "sed clusternewline" \
|
testing "sed clusternewline" \
|
||||||
"sed -e '/one/a 111' -e '/two/i 222' -e p input -" \
|
"sed -e '/one/a 111' -e '/two/i 222' -e p input -" \
|
||||||
"one\none\n111\n222\ntwo\ntwo" "one" "two"
|
"one\none\n111\n222\ntwo\ntwo" "one" "two"
|
||||||
|
|
||||||
# Test end-of-file matching behavior
|
# Test end-of-file matching behavior
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ testing "sort key range with numeric option and global reverse" \
|
|||||||
7 3 42 soup
|
7 3 42 soup
|
||||||
" "$data" ""
|
" "$data" ""
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
||||||
testing "sort key range with multiple options" "sort -k2,3rn input" \
|
testing "sort key range with multiple options" "sort -k2,3rn input" \
|
||||||
"7 3 42 soup
|
"7 3 42 soup
|
||||||
@ -67,7 +67,7 @@ egg 1 2 papyrus
|
|||||||
" "$data" ""
|
" "$data" ""
|
||||||
|
|
||||||
testing "sort key doesn't strip leading blanks, disables fallback global sort" \
|
testing "sort key doesn't strip leading blanks, disables fallback global sort" \
|
||||||
"sort -n -k2 -t ' '" " a \n 1 \n 2 \n" "" " 2 \n 1 \n a \n"
|
"sort -n -k2 -t ' '" " a \n 1 \n 2 \n" "" " 2 \n 1 \n a \n"
|
||||||
|
|
||||||
testing "sort key edge case with -t" "sort -n -k4 -t/" \
|
testing "sort key edge case with -t" "sort -n -k4 -t/" \
|
||||||
"/usr/lib/finish-install.d/1
|
"/usr/lib/finish-install.d/1
|
||||||
|
@ -76,7 +76,7 @@ testing ()
|
|||||||
echo -ne "$5" | eval "$2" > actual
|
echo -ne "$5" | eval "$2" > actual
|
||||||
RETVAL=$?
|
RETVAL=$?
|
||||||
|
|
||||||
cmp expected actual > /dev/null
|
cmp expected actual > /dev/null
|
||||||
if [ $? -ne 0 ]
|
if [ $? -ne 0 ]
|
||||||
then
|
then
|
||||||
FAILCOUNT=$[$FAILCOUNT+1]
|
FAILCOUNT=$[$FAILCOUNT+1]
|
||||||
|
@ -7,7 +7,7 @@ run_tr ()
|
|||||||
tr_test ()
|
tr_test ()
|
||||||
{
|
{
|
||||||
run_tr "cbaab" abc zyx
|
run_tr "cbaab" abc zyx
|
||||||
run_tr "TESTING A B C" '[A-Z]' '[a-z]'
|
run_tr "TESTING A B C" '[A-Z]' '[a-z]'
|
||||||
run_tr "abc[]" "a[b" AXB
|
run_tr "abc[]" "a[b" AXB
|
||||||
run_tr abc '[:alpha:]' A-ZA-Z
|
run_tr abc '[:alpha:]' A-ZA-Z
|
||||||
run_tr abc56 '[:alnum:]' A-ZA-Zxxxxxxxxxx
|
run_tr abc56 '[:alnum:]' A-ZA-Zxxxxxxxxxx
|
||||||
|
@ -40,7 +40,7 @@ testing "uniq input - (specify stdout)" "uniq input -" \
|
|||||||
#-s skip chars
|
#-s skip chars
|
||||||
#-c occurrences
|
#-c occurrences
|
||||||
#-d dups only
|
#-d dups only
|
||||||
#-u
|
#-u
|
||||||
|
|
||||||
# Test various command line options
|
# Test various command line options
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* vi: set sw=4 ts=4: */
|
/* vi: set sw=4 ts=4: */
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* dmesg - display/control kernel ring buffer.
|
* dmesg - display/control kernel ring buffer.
|
||||||
*
|
*
|
||||||
* Copyright 2006 Rob Landley <rob@landley.net>
|
* Copyright 2006 Rob Landley <rob@landley.net>
|
||||||
@ -30,7 +30,7 @@ int dmesg_main(int argc, char *argv[])
|
|||||||
if (0 > (len = klogctl(3 + (flags & 1), buf, len)))
|
if (0 > (len = klogctl(3 + (flags & 1), buf, len)))
|
||||||
bb_perror_msg_and_die("klogctl");
|
bb_perror_msg_and_die("klogctl");
|
||||||
|
|
||||||
// Skip <#> at the start of lines, and make sure we end with a newline.
|
// Skip <#> at the start of lines, and make sure we end with a newline.
|
||||||
|
|
||||||
if (ENABLE_FEATURE_DMESG_PRETTY) {
|
if (ENABLE_FEATURE_DMESG_PRETTY) {
|
||||||
int last = '\n';
|
int last = '\n';
|
||||||
|
@ -1914,9 +1914,9 @@ sgi_set_swappartition(int i)
|
|||||||
static int
|
static int
|
||||||
sgi_check_bootfile(const char* aFile)
|
sgi_check_bootfile(const char* aFile)
|
||||||
{
|
{
|
||||||
if (strlen(aFile) < 3) /* "/a\n" is minimum */ {
|
if (strlen(aFile) < 3) /* "/a\n" is minimum */ {
|
||||||
printf(_("\nInvalid Bootfile!\n"
|
printf(_("\nInvalid Bootfile!\n"
|
||||||
"\tThe bootfile must be an absolute non-zero pathname,\n"
|
"\tThe bootfile must be an absolute non-zero pathname,\n"
|
||||||
"\te.g. \"/unix\" or \"/unix.save\".\n"));
|
"\te.g. \"/unix\" or \"/unix.save\".\n"));
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
@ -1931,7 +1931,7 @@ sgi_check_bootfile(const char* aFile)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (strncmp(aFile, (char*)sgilabel->boot_file, 16)) {
|
if (strncmp(aFile, (char*)sgilabel->boot_file, 16)) {
|
||||||
printf(_("\n\tBe aware, that the bootfile is not checked for existence.\n\t"
|
printf(_("\n\tBe aware, that the bootfile is not checked for existence.\n\t"
|
||||||
"SGI's default is \"/unix\" and for backup \"/unix.save\".\n"));
|
"SGI's default is \"/unix\" and for backup \"/unix.save\".\n"));
|
||||||
@ -2505,7 +2505,7 @@ static const struct systypes sun_sys_types[] = {
|
|||||||
{ "\x83" "Linux native" }, /* LINUX_NATIVE */
|
{ "\x83" "Linux native" }, /* LINUX_NATIVE */
|
||||||
{ "\x8e" "Linux LVM" }, /* 0x8e */
|
{ "\x8e" "Linux LVM" }, /* 0x8e */
|
||||||
/* New (2.2.x) raid partition with autodetect using persistent superblock */
|
/* New (2.2.x) raid partition with autodetect using persistent superblock */
|
||||||
{ "\xfd" "Linux raid autodetect" }, /* 0xfd */
|
{ "\xfd" "Linux raid autodetect" }, /* 0xfd */
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3080,14 +3080,14 @@ sun_list_table(int xtra)
|
|||||||
uint32_t start = SUN_SSWAP32(sunlabel->partitions[i].start_cylinder) * heads * sectors;
|
uint32_t start = SUN_SSWAP32(sunlabel->partitions[i].start_cylinder) * heads * sectors;
|
||||||
uint32_t len = SUN_SSWAP32(sunlabel->partitions[i].num_sectors);
|
uint32_t len = SUN_SSWAP32(sunlabel->partitions[i].num_sectors);
|
||||||
printf("%s %c%c %9ld %9ld %9ld%c %2x %s\n",
|
printf("%s %c%c %9ld %9ld %9ld%c %2x %s\n",
|
||||||
partname(disk_device, i+1, w), /* device */
|
partname(disk_device, i+1, w), /* device */
|
||||||
(sunlabel->infos[i].flags & 0x01) ? 'u' : ' ', /* flags */
|
(sunlabel->infos[i].flags & 0x01) ? 'u' : ' ', /* flags */
|
||||||
(sunlabel->infos[i].flags & 0x10) ? 'r' : ' ',
|
(sunlabel->infos[i].flags & 0x10) ? 'r' : ' ',
|
||||||
(long) scround(start), /* start */
|
(long) scround(start), /* start */
|
||||||
(long) scround(start+len), /* end */
|
(long) scround(start+len), /* end */
|
||||||
(long) len / 2, len & 1 ? '+' : ' ', /* odd flag on end */
|
(long) len / 2, len & 1 ? '+' : ' ', /* odd flag on end */
|
||||||
sunlabel->infos[i].id, /* type id */
|
sunlabel->infos[i].id, /* type id */
|
||||||
partition_type(sunlabel->infos[i].id)); /* type name */
|
partition_type(sunlabel->infos[i].id)); /* type name */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4280,8 +4280,8 @@ get_partition(int warn, int max)
|
|||||||
if (warn) {
|
if (warn) {
|
||||||
if (
|
if (
|
||||||
(
|
(
|
||||||
label_sun != current_label_type &&
|
label_sun != current_label_type &&
|
||||||
label_sgi != current_label_type &&
|
label_sgi != current_label_type &&
|
||||||
!pe->part_table->sys_ind
|
!pe->part_table->sys_ind
|
||||||
)
|
)
|
||||||
#ifdef CONFIG_FEATURE_SUN_LABEL
|
#ifdef CONFIG_FEATURE_SUN_LABEL
|
||||||
|
@ -66,9 +66,9 @@ int hexdump_main(int argc, char **argv)
|
|||||||
bb_dump_add(add_first);
|
bb_dump_add(add_first);
|
||||||
bb_dump_add(add_strings[(int)(p - hexdump_opts)]);
|
bb_dump_add(add_strings[(int)(p - hexdump_opts)]);
|
||||||
} else if (ch == 'C') {
|
} else if (ch == 'C') {
|
||||||
bb_dump_add("\"%08.8_Ax\n\"");
|
bb_dump_add("\"%08.8_Ax\n\"");
|
||||||
bb_dump_add("\"%08.8_ax \" 8/1 \"%02x \" \" \" 8/1 \"%02x \" ");
|
bb_dump_add("\"%08.8_ax \" 8/1 \"%02x \" \" \" 8/1 \"%02x \" ");
|
||||||
bb_dump_add("\" |\" 16/1 \"%_p\" \"|\\n\"");
|
bb_dump_add("\" |\" 16/1 \"%_p\" \"|\\n\"");
|
||||||
} else {
|
} else {
|
||||||
/* Sae a little bit of space below by omitting the 'else's. */
|
/* Sae a little bit of space below by omitting the 'else's. */
|
||||||
if (ch == 'e') {
|
if (ch == 'e') {
|
||||||
|
@ -138,7 +138,7 @@ static void make_device(char *path, int delete)
|
|||||||
// Command to run
|
// Command to run
|
||||||
char *s = "@$*", *s2;
|
char *s = "@$*", *s2;
|
||||||
if (!(s2 = strchr(s, *pos++))) {
|
if (!(s2 = strchr(s, *pos++))) {
|
||||||
// Force error
|
// Force error
|
||||||
field = 1;
|
field = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -171,13 +171,13 @@ static void make_device(char *path, int delete)
|
|||||||
|
|
||||||
if (major == bbg.root_major && minor == bbg.root_minor)
|
if (major == bbg.root_major && minor == bbg.root_minor)
|
||||||
symlink(device_name, "root");
|
symlink(device_name, "root");
|
||||||
|
|
||||||
if (ENABLE_FEATURE_MDEV_CONF) chown(device_name, uid, gid);
|
if (ENABLE_FEATURE_MDEV_CONF) chown(device_name, uid, gid);
|
||||||
}
|
}
|
||||||
if (command) {
|
if (command) {
|
||||||
int rc;
|
int rc;
|
||||||
char *s;
|
char *s;
|
||||||
|
|
||||||
s=xasprintf("MDEV=%s",device_name);
|
s=xasprintf("MDEV=%s",device_name);
|
||||||
putenv(s);
|
putenv(s);
|
||||||
rc = system(command);
|
rc = system(command);
|
||||||
|
@ -19,7 +19,7 @@ int mkswap_main(int argc, char *argv[])
|
|||||||
if (argc!=2) bb_show_usage();
|
if (argc!=2) bb_show_usage();
|
||||||
|
|
||||||
// Figure out how big the device is and announce our intentions.
|
// Figure out how big the device is and announce our intentions.
|
||||||
|
|
||||||
fd = xopen(argv[1],O_RDWR);
|
fd = xopen(argv[1],O_RDWR);
|
||||||
len = fdlength(fd);
|
len = fdlength(fd);
|
||||||
pagesize = getpagesize();
|
pagesize = getpagesize();
|
||||||
|
@ -673,7 +673,7 @@ get_mountport(struct sockaddr_in *server_addr,
|
|||||||
p.pm_vers = version;
|
p.pm_vers = version;
|
||||||
p.pm_prot = proto;
|
p.pm_prot = proto;
|
||||||
p.pm_port = port;
|
p.pm_port = port;
|
||||||
|
|
||||||
while (pmap) {
|
while (pmap) {
|
||||||
if (pmap->pml_map.pm_prog != prog)
|
if (pmap->pml_map.pm_prog != prog)
|
||||||
goto next;
|
goto next;
|
||||||
@ -1315,7 +1315,7 @@ static int singlemount(struct mntent *mp, int ignore_busy)
|
|||||||
s = strrchr(mp->mnt_fsname, '\\');
|
s = strrchr(mp->mnt_fsname, '\\');
|
||||||
if (s == mp->mnt_fsname+1) goto report_error;
|
if (s == mp->mnt_fsname+1) goto report_error;
|
||||||
*s = 0;
|
*s = 0;
|
||||||
he = gethostbyname(mp->mnt_fsname+2);
|
he = gethostbyname(mp->mnt_fsname+2);
|
||||||
*s = '\\';
|
*s = '\\';
|
||||||
if (!he) goto report_error;
|
if (!he) goto report_error;
|
||||||
|
|
||||||
@ -1517,7 +1517,7 @@ int mount_main(int argc, char **argv)
|
|||||||
if (rc) bb_perror_msg_and_die("%s", argv[0]);
|
if (rc) bb_perror_msg_and_die("%s", argv[0]);
|
||||||
goto clean_up;
|
goto clean_up;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open either fstab or mtab
|
// Open either fstab or mtab
|
||||||
|
|
||||||
if (parse_mount_options(cmdopts,0) & MS_REMOUNT)
|
if (parse_mount_options(cmdopts,0) & MS_REMOUNT)
|
||||||
|
@ -76,7 +76,7 @@ int umount_main(int argc, char **argv)
|
|||||||
m = 0;
|
m = 0;
|
||||||
if (!argc) bb_show_usage();
|
if (!argc) bb_show_usage();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Loop through everything we're supposed to umount, and do so.
|
// Loop through everything we're supposed to umount, and do so.
|
||||||
for (;;) {
|
for (;;) {
|
||||||
int curstat;
|
int curstat;
|
||||||
|
Loading…
Reference in New Issue
Block a user