More init fixes. Fixed sync segfault.

-Erik
This commit is contained in:
Eric Andersen 1999-11-03 16:52:50 +00:00
parent 219d6f5e0c
commit be971d6b69
9 changed files with 45 additions and 48 deletions

View File

@ -8,6 +8,7 @@
* Major adjustment of init.c. Code is now readable IMHO,
and much more solid.
* Wrote sed -- weighs only 1.8k (5.8k with full regular expressions!).
* Fixed a stupid seg-fault in sync
-Erik Andersen

View File

@ -37,8 +37,8 @@
static const char tar_usage[] =
"Create, extract, or list files from a TAR file\n\n"
"usage: tar -[cxtvOf] [tarFileName] [FILE] ...\n"
"tar -[cxtvOf] [tarFileName] [FILE] ...\n"
"Create, extract, or list files from a tar file\n\n"
"\tc=create, x=extract, t=list contents, v=verbose,\n"
"\tO=extract to stdout, f=tarfile or \"-\" for stdin\n";
@ -151,10 +151,8 @@ extern int tar_main (int argc, char **argv)
argc--;
argv++;
if (argc < 1) {
fprintf (stderr, "%s", tar_usage);
exit (FALSE);
}
if (argc < 1)
usage( tar_usage);
errorFlag = FALSE;

View File

@ -30,7 +30,7 @@ h=`cat busybox.links`
for i in $h ; do
mkdir -p $RPM_BUILD_ROOT/`echo $i | sed -e 's/\(^.*\/\)\(.*\)/\1/g' `
(cd $RPM_BUILD_ROOT/bin ; ln -s ln `echo $i | sed -e 's/\(^.*\/\)\(.*\)/\2/g' ` );
(cd $RPM_BUILD_ROOT/bin ; ln -s busybox `echo $i | sed -e 's/\(^.*\/\)\(.*\)/\2/g' ` );
done
rm -f $RPM_BUILD_ROOT/bin/busybox
install -m 755 busybox $RPM_BUILD_ROOT/bin/busybox

View File

@ -26,9 +26,9 @@
extern int
sync_main(int argc, char * * argv)
{
if ( **(argv+1) == '-' ) {
if ( argc>1 && **(argv+1) == '-' ) {
usage( "sync\nWrite all buffered filesystem blocks to disk.\n");
}
return sync();
exit( sync());
}

View File

@ -30,7 +30,7 @@ h=`cat busybox.links`
for i in $h ; do
mkdir -p $RPM_BUILD_ROOT/`echo $i | sed -e 's/\(^.*\/\)\(.*\)/\1/g' `
(cd $RPM_BUILD_ROOT/bin ; ln -s ln `echo $i | sed -e 's/\(^.*\/\)\(.*\)/\2/g' ` );
(cd $RPM_BUILD_ROOT/bin ; ln -s busybox `echo $i | sed -e 's/\(^.*\/\)\(.*\)/\2/g' ` );
done
rm -f $RPM_BUILD_ROOT/bin/busybox
install -m 755 busybox $RPM_BUILD_ROOT/bin/busybox

30
init.c
View File

@ -45,18 +45,18 @@
//#define DEBUG_INIT
#define CONSOLE "/dev/console" /* Logical system console */
#define VT_PRIMARY "/dev/tty0" /* Primary virtual console */
#define VT_SECONDARY "/dev/tty1" /* Virtual console */
#define VT_LOG "/dev/tty2" /* Virtual console */
#define VT_PRIMARY "/dev/tty1" /* Primary virtual console */
#define VT_SECONDARY "/dev/tty2" /* Virtual console */
#define VT_LOG "/dev/tty3" /* Virtual console */
#define SERIAL_CON0 "/dev/ttyS0" /* Primary serial console */
#define SERIAL_CON1 "/dev/ttyS1" /* Serial console */
#define SHELL "/bin/sh" /* Default shell */
#define INITSCRIPT "/etc/init.d/rcS" /* Initscript. */
#define PATH_DEFAULT "PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin"
static char *console = VT_PRIMARY;
static char *second_terminal = VT_SECONDARY;
static char *log = "/dev/tty3";
static char *console = CONSOLE;
static char *second_console = VT_SECONDARY;
static char *log = VT_LOG;
@ -173,23 +173,23 @@ static void console_init()
}
#endif
} else {
console = VT_PRIMARY;
tried_vtprimary++;
console = CONSOLE;
tried_devcons++;
}
while ((fd = open(console, O_RDONLY | O_NONBLOCK)) < 0) {
/* Can't open selected console -- try vt1 */
if (!tried_vtprimary) {
tried_vtprimary++;
console = VT_PRIMARY;
continue;
}
/* Can't open selected console -- try /dev/console */
if (!tried_devcons) {
tried_devcons++;
console = CONSOLE;
continue;
}
/* Can't open selected console -- try vt1 */
if (!tried_vtprimary) {
tried_vtprimary++;
console = VT_PRIMARY;
continue;
}
break;
}
if (fd < 0)
@ -449,7 +449,7 @@ extern int init_main(int argc, char **argv)
pid1 = run(tty0_commands, console, wait_for_enter);
}
if (pid2 == 0 && tty1_commands) {
pid2 = run(tty1_commands, second_terminal, TRUE);
pid2 = run(tty1_commands, second_console, TRUE);
}
wpid = wait(&status);
if (wpid > 0 ) {

View File

@ -45,18 +45,18 @@
//#define DEBUG_INIT
#define CONSOLE "/dev/console" /* Logical system console */
#define VT_PRIMARY "/dev/tty0" /* Primary virtual console */
#define VT_SECONDARY "/dev/tty1" /* Virtual console */
#define VT_LOG "/dev/tty2" /* Virtual console */
#define VT_PRIMARY "/dev/tty1" /* Primary virtual console */
#define VT_SECONDARY "/dev/tty2" /* Virtual console */
#define VT_LOG "/dev/tty3" /* Virtual console */
#define SERIAL_CON0 "/dev/ttyS0" /* Primary serial console */
#define SERIAL_CON1 "/dev/ttyS1" /* Serial console */
#define SHELL "/bin/sh" /* Default shell */
#define INITSCRIPT "/etc/init.d/rcS" /* Initscript. */
#define PATH_DEFAULT "PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin"
static char *console = VT_PRIMARY;
static char *second_terminal = VT_SECONDARY;
static char *log = "/dev/tty3";
static char *console = CONSOLE;
static char *second_console = VT_SECONDARY;
static char *log = VT_LOG;
@ -173,23 +173,23 @@ static void console_init()
}
#endif
} else {
console = VT_PRIMARY;
tried_vtprimary++;
console = CONSOLE;
tried_devcons++;
}
while ((fd = open(console, O_RDONLY | O_NONBLOCK)) < 0) {
/* Can't open selected console -- try vt1 */
if (!tried_vtprimary) {
tried_vtprimary++;
console = VT_PRIMARY;
continue;
}
/* Can't open selected console -- try /dev/console */
if (!tried_devcons) {
tried_devcons++;
console = CONSOLE;
continue;
}
/* Can't open selected console -- try vt1 */
if (!tried_vtprimary) {
tried_vtprimary++;
console = VT_PRIMARY;
continue;
}
break;
}
if (fd < 0)
@ -449,7 +449,7 @@ extern int init_main(int argc, char **argv)
pid1 = run(tty0_commands, console, wait_for_enter);
}
if (pid2 == 0 && tty1_commands) {
pid2 = run(tty1_commands, second_terminal, TRUE);
pid2 = run(tty1_commands, second_console, TRUE);
}
wpid = wait(&status);
if (wpid > 0 ) {

4
sync.c
View File

@ -26,9 +26,9 @@
extern int
sync_main(int argc, char * * argv)
{
if ( **(argv+1) == '-' ) {
if ( argc>1 && **(argv+1) == '-' ) {
usage( "sync\nWrite all buffered filesystem blocks to disk.\n");
}
return sync();
exit( sync());
}

10
tar.c
View File

@ -37,8 +37,8 @@
static const char tar_usage[] =
"Create, extract, or list files from a TAR file\n\n"
"usage: tar -[cxtvOf] [tarFileName] [FILE] ...\n"
"tar -[cxtvOf] [tarFileName] [FILE] ...\n"
"Create, extract, or list files from a tar file\n\n"
"\tc=create, x=extract, t=list contents, v=verbose,\n"
"\tO=extract to stdout, f=tarfile or \"-\" for stdin\n";
@ -151,10 +151,8 @@ extern int tar_main (int argc, char **argv)
argc--;
argv++;
if (argc < 1) {
fprintf (stderr, "%s", tar_usage);
exit (FALSE);
}
if (argc < 1)
usage( tar_usage);
errorFlag = FALSE;