From be971d6b693ca9cd1c9aa9eb6053aa2592c40547 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Wed, 3 Nov 1999 16:52:50 +0000 Subject: [PATCH] More init fixes. Fixed sync segfault. -Erik --- Changelog | 1 + archival/tar.c | 10 ++++------ busybox.spec | 2 +- coreutils/sync.c | 4 ++-- examples/busybox.spec | 2 +- init.c | 30 +++++++++++++++--------------- init/init.c | 30 +++++++++++++++--------------- sync.c | 4 ++-- tar.c | 10 ++++------ 9 files changed, 45 insertions(+), 48 deletions(-) diff --git a/Changelog b/Changelog index aa549bd17..741b8ebb7 100644 --- a/Changelog +++ b/Changelog @@ -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 diff --git a/archival/tar.c b/archival/tar.c index c7ef3851c..cd255f85c 100644 --- a/archival/tar.c +++ b/archival/tar.c @@ -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; diff --git a/busybox.spec b/busybox.spec index f44cdc7a4..0cc15d435 100644 --- a/busybox.spec +++ b/busybox.spec @@ -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 diff --git a/coreutils/sync.c b/coreutils/sync.c index b9f52c8b0..cb4690c02 100644 --- a/coreutils/sync.c +++ b/coreutils/sync.c @@ -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()); } diff --git a/examples/busybox.spec b/examples/busybox.spec index f44cdc7a4..0cc15d435 100644 --- a/examples/busybox.spec +++ b/examples/busybox.spec @@ -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 diff --git a/init.c b/init.c index 34eca8b77..899e43040 100644 --- a/init.c +++ b/init.c @@ -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 ) { diff --git a/init/init.c b/init/init.c index 34eca8b77..899e43040 100644 --- a/init/init.c +++ b/init/init.c @@ -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 ) { diff --git a/sync.c b/sync.c index b9f52c8b0..cb4690c02 100644 --- a/sync.c +++ b/sync.c @@ -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()); } diff --git a/tar.c b/tar.c index c7ef3851c..cd255f85c 100644 --- a/tar.c +++ b/tar.c @@ -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; -- 2.11.0