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

View File

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

View File

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

View File

@ -26,9 +26,9 @@
extern int extern int
sync_main(int argc, char * * argv) sync_main(int argc, char * * argv)
{ {
if ( **(argv+1) == '-' ) { if ( argc>1 && **(argv+1) == '-' ) {
usage( "sync\nWrite all buffered filesystem blocks to disk.\n"); 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 for i in $h ; do
mkdir -p $RPM_BUILD_ROOT/`echo $i | sed -e 's/\(^.*\/\)\(.*\)/\1/g' ` 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 done
rm -f $RPM_BUILD_ROOT/bin/busybox rm -f $RPM_BUILD_ROOT/bin/busybox
install -m 755 busybox $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 DEBUG_INIT
#define CONSOLE "/dev/console" /* Logical system console */ #define CONSOLE "/dev/console" /* Logical system console */
#define VT_PRIMARY "/dev/tty0" /* Primary virtual console */ #define VT_PRIMARY "/dev/tty1" /* Primary virtual console */
#define VT_SECONDARY "/dev/tty1" /* Virtual console */ #define VT_SECONDARY "/dev/tty2" /* Virtual console */
#define VT_LOG "/dev/tty2" /* Virtual console */ #define VT_LOG "/dev/tty3" /* Virtual console */
#define SERIAL_CON0 "/dev/ttyS0" /* Primary serial console */ #define SERIAL_CON0 "/dev/ttyS0" /* Primary serial console */
#define SERIAL_CON1 "/dev/ttyS1" /* Serial console */ #define SERIAL_CON1 "/dev/ttyS1" /* Serial console */
#define SHELL "/bin/sh" /* Default shell */ #define SHELL "/bin/sh" /* Default shell */
#define INITSCRIPT "/etc/init.d/rcS" /* Initscript. */ #define INITSCRIPT "/etc/init.d/rcS" /* Initscript. */
#define PATH_DEFAULT "PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin" #define PATH_DEFAULT "PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin"
static char *console = VT_PRIMARY; static char *console = CONSOLE;
static char *second_terminal = VT_SECONDARY; static char *second_console = VT_SECONDARY;
static char *log = "/dev/tty3"; static char *log = VT_LOG;
@ -173,23 +173,23 @@ static void console_init()
} }
#endif #endif
} else { } else {
console = VT_PRIMARY; console = CONSOLE;
tried_vtprimary++; tried_devcons++;
} }
while ((fd = open(console, O_RDONLY | O_NONBLOCK)) < 0) { 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 */ /* Can't open selected console -- try /dev/console */
if (!tried_devcons) { if (!tried_devcons) {
tried_devcons++; tried_devcons++;
console = CONSOLE; console = CONSOLE;
continue; continue;
} }
/* Can't open selected console -- try vt1 */
if (!tried_vtprimary) {
tried_vtprimary++;
console = VT_PRIMARY;
continue;
}
break; break;
} }
if (fd < 0) if (fd < 0)
@ -449,7 +449,7 @@ extern int init_main(int argc, char **argv)
pid1 = run(tty0_commands, console, wait_for_enter); pid1 = run(tty0_commands, console, wait_for_enter);
} }
if (pid2 == 0 && tty1_commands) { if (pid2 == 0 && tty1_commands) {
pid2 = run(tty1_commands, second_terminal, TRUE); pid2 = run(tty1_commands, second_console, TRUE);
} }
wpid = wait(&status); wpid = wait(&status);
if (wpid > 0 ) { if (wpid > 0 ) {

View File

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

4
sync.c
View File

@ -26,9 +26,9 @@
extern int extern int
sync_main(int argc, char * * argv) sync_main(int argc, char * * argv)
{ {
if ( **(argv+1) == '-' ) { if ( argc>1 && **(argv+1) == '-' ) {
usage( "sync\nWrite all buffered filesystem blocks to disk.\n"); 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[] = static const char tar_usage[] =
"Create, extract, or list files from a TAR file\n\n" "tar -[cxtvOf] [tarFileName] [FILE] ...\n"
"usage: 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" "\tc=create, x=extract, t=list contents, v=verbose,\n"
"\tO=extract to stdout, f=tarfile or \"-\" for stdin\n"; "\tO=extract to stdout, f=tarfile or \"-\" for stdin\n";
@ -151,10 +151,8 @@ extern int tar_main (int argc, char **argv)
argc--; argc--;
argv++; argv++;
if (argc < 1) { if (argc < 1)
fprintf (stderr, "%s", tar_usage); usage( tar_usage);
exit (FALSE);
}
errorFlag = FALSE; errorFlag = FALSE;