summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--coreutils/cp.c12
-rw-r--r--coreutils/ls.c4
-rw-r--r--cp.c12
-rw-r--r--init.c128
-rw-r--r--init/init.c128
-rw-r--r--ls.c4
-rw-r--r--mount.c18
-rw-r--r--umount.c8
-rw-r--r--util-linux/mount.c18
-rw-r--r--util-linux/umount.c8
-rw-r--r--utility.c28
12 files changed, 188 insertions, 182 deletions
diff --git a/Makefile b/Makefile
index 59d6485..3069c07 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@ BUILDTIME=$(shell date "+%Y%m%d-%H%M")
# Comment out the following to make a debuggable build
# Leave this off for production use.
-DODEBUG=true
+#DODEBUG=true
#This will choke on a non-debian system
ARCH=`uname -m | sed -e 's/i.86/i386/' | sed -e 's/sparc.*/sparc/'`
diff --git a/coreutils/cp.c b/coreutils/cp.c
index 94b4ab0..6ca66e6 100644
--- a/coreutils/cp.c
+++ b/coreutils/cp.c
@@ -40,13 +40,14 @@ static int followLinks = FALSE;
static int preserveFlag = FALSE;
static const char *srcName;
static const char *destName;
+static const char *skipName;
static int fileAction(const char *fileName)
{
char newdestName[NAME_MAX];
strcpy(newdestName, destName);
- strcat(newdestName, fileName+(strlen(srcName)));
+ strcat(newdestName, strstr(fileName, skipName));
return (copyFile(fileName, newdestName, preserveFlag, followLinks));
}
@@ -98,10 +99,13 @@ extern int cp_main(int argc, char **argv)
exit (FALSE);
}
- while (argc-- >= 2) {
+ while (argc-- > 1) {
srcName = *(argv++);
- exit( recursiveAction(srcName, recursiveFlag, followLinks,
- fileAction, fileAction));
+ skipName = strrchr(srcName, '/');
+ if (skipName) skipName++;
+ if (recursiveAction(srcName, recursiveFlag, followLinks,
+ fileAction, fileAction) == FALSE)
+ exit( FALSE);
}
exit( TRUE);
}
diff --git a/coreutils/ls.c b/coreutils/ls.c
index 7a1b0f3..50b983e 100644
--- a/coreutils/ls.c
+++ b/coreutils/ls.c
@@ -179,15 +179,13 @@ int ls_main(int argc, char **argv)
#define FEATURE_AUTOWIDTH /* calculate terminal & column widths */
#define FEATURE_FILETYPECHAR /* enable -p and -F */
-#undef OP_BUF_SIZE 1024 /* leave undefined for unbuffered output */
-
#define TERMINAL_WIDTH 80 /* use 79 if your terminal has linefold bug */
#define COLUMN_WIDTH 14 /* default if AUTOWIDTH not defined */
#define COLUMN_GAP 2 /* includes the file type char, if present */
+#define HAS_REWINDDIR
/************************************************************************/
-#define HAS_REWINDDIR
#if 1 /* FIXME libc 6 */
# include <linux/types.h>
diff --git a/cp.c b/cp.c
index 94b4ab0..6ca66e6 100644
--- a/cp.c
+++ b/cp.c
@@ -40,13 +40,14 @@ static int followLinks = FALSE;
static int preserveFlag = FALSE;
static const char *srcName;
static const char *destName;
+static const char *skipName;
static int fileAction(const char *fileName)
{
char newdestName[NAME_MAX];
strcpy(newdestName, destName);
- strcat(newdestName, fileName+(strlen(srcName)));
+ strcat(newdestName, strstr(fileName, skipName));
return (copyFile(fileName, newdestName, preserveFlag, followLinks));
}
@@ -98,10 +99,13 @@ extern int cp_main(int argc, char **argv)
exit (FALSE);
}
- while (argc-- >= 2) {
+ while (argc-- > 1) {
srcName = *(argv++);
- exit( recursiveAction(srcName, recursiveFlag, followLinks,
- fileAction, fileAction));
+ skipName = strrchr(srcName, '/');
+ if (skipName) skipName++;
+ if (recursiveAction(srcName, recursiveFlag, followLinks,
+ fileAction, fileAction) == FALSE)
+ exit( FALSE);
}
exit( TRUE);
}
diff --git a/init.c b/init.c
index 2860272..19cbec1 100644
--- a/init.c
+++ b/init.c
@@ -66,11 +66,8 @@ waitfor(int pid)
}
static int
-run(
- const char * program
-,const char * const * arguments
-,const char * terminal
-,int get_enter)
+run(const char* program, const char* const* arguments,
+ const char* terminal, int get_enter)
{
static const char control_characters[] = {
'\003',
@@ -137,7 +134,8 @@ run(
* before the user wants it. This is critical if swap is not
* enabled and the system has low memory. Generally this will
* be run on the second virtual console, and the first will
- * be allowed to start a shell or the installation system.
+ * be allowed to start a shell or whatever an init script
+ * specifies.
*/
char c;
write(1, press_enter, sizeof(press_enter) - 1);
@@ -246,26 +244,49 @@ exit_signal(int sig)
}
void
-configure_terminals( int serial_cons );
+configure_terminals( int serial_cons )
+{
+ //struct stat statbuf;
+ char *tty;
+
+ switch (serial_cons) {
+ case 1:
+ strcpy( console, "/dev/ttyS0" );
+ break;
+ case 2:
+ strcpy( console, "/dev/ttyS1" );
+ break;
+ default:
+ tty = ttyname(0);
+ if (tty) {
+ strcpy( console, tty );
+ if (!strncmp( tty, "/dev/ttyS", 9 ))
+ serial_cons=1;
+ }
+ else
+ /* falls back to /dev/tty1 if an error occurs */
+ strcpy( console, default_console );
+ }
+ if (!first_terminal)
+ first_terminal = console;
+ if (serial_cons && !strncmp(term_ptr,"TERM=linux",10))
+ term_ptr = "TERM=vt100";
+}
extern int
init_main(int argc, char * * argv)
{
- static const char * const rc = "etc/rc";
- const char * arguments[100];
- int run_rc = 1;
- int j;
- int pid1 = 0;
- int pid2 = 0;
- int create_swap= -1;
- struct stat statbuf;
-#ifndef INCLUDE_DINSTALL
- const char * tty_commands[2] = { "bin/sh", "bin/sh"};
-#else
- const char * tty_commands[2] = { "sbin/dinstall", "bin/sh"};
-#endif
- char swap[20];
- int serial_console = 0;
+ static const char* const rc = "etc/rc";
+ const char * arguments[100];
+ int run_rc = 1;
+ int j;
+ int pid1 = 0;
+ int pid2 = 0;
+ int create_swap= -1;
+ struct stat statbuf;
+ const char * tty_commands[2] = { "bin/sh", "bin/sh"};
+ char swap[20];
+ int serial_console = 0;
/*
* If I am started as /linuxrc instead of /sbin/init, I don't have the
@@ -330,17 +351,13 @@ init_main(int argc, char * * argv)
set_free_pages();
- if (mem_total() < 3500) { /* not enough memory for standard install */
+ /* not enough memory to do anything useful*/
+ if (mem_total() < 2000) {
int retval;
retval= stat("/etc/swappartition",&statbuf);
if (retval) {
- printf("
-You do not have enough RAM, hence you must boot using the Boot Disk
-for Low Memory systems.
-
-Read the instructions in the install.html file.
-");
- while (1) {;}
+ printf("You do not have enough RAM, sorry.\n");
+ while (1) { sleep(1);}
} else { /* everything OK */
FILE *f;
@@ -371,8 +388,13 @@ Read the instructions in the install.html file.
arguments[j] = 0;
if ( run_rc ) {
- printf("running %s\n",rc);
+ printf("running %s with args \"",rc);
+ for ( j = 0; j < argc; j++ ) {
+ printf("%s ", arguments[j]);
+ }
+ printf("\" on console %s\n", console);
waitfor(run(rc, arguments, console, 0));
+ printf("done.\n");
}
if ( 0 == create_swap) {
@@ -392,10 +414,21 @@ Read the instructions in the install.html file.
/*
arguments[0] = tty_commands[0];
*/
- pid1 = run(tty_commands[0], arguments, first_terminal, 0);
+ printf("running %s with args \"",tty_commands[0]);
+ for ( j = 0; j < argc; j++ ) {
+ printf("%s ", arguments[j]);
+ }
+ printf("\" on console %s\n", first_terminal);
+ pid1 = run(tty_commands[0], arguments, first_terminal, 1);
}
- if ( pid2 == 0 && tty_commands[1] )
+ if ( pid2 == 0 && tty_commands[1] ) {
+ printf("running %s with args \"",tty_commands[0]);
+ for ( j = 0; j < argc; j++ ) {
+ printf("%s ", arguments[j]);
+ }
+ printf("\" on console %s\n", first_terminal);
pid2 = run(tty_commands[1], arguments, second_terminal, 1);
+ }
wpid = wait(&status);
if ( wpid > 0 ) {
/* DEBUGGING */
@@ -409,32 +442,3 @@ Read the instructions in the install.html file.
}
}
-void
-configure_terminals( int serial_cons )
-{
- //struct stat statbuf;
- char *tty;
-
- switch (serial_cons) {
- case 1:
- strcpy( console, "/dev/ttyS0" );
- break;
- case 2:
- strcpy( console, "/dev/ttyS1" );
- break;
- default:
- tty = ttyname(0);
- if (tty) {
- strcpy( console, tty );
- if (!strncmp( tty, "/dev/ttyS", 9 ))
- serial_cons=1;
- }
- else
- /* falls back to /dev/tty1 if an error occurs */
- strcpy( console, default_console );
- }
- if (!first_terminal)
- first_terminal = console;
- if (serial_cons && !strncmp(term_ptr,"TERM=linux",10))
- term_ptr = "TERM=vt100";
-}
diff --git a/init/init.c b/init/init.c
index 2860272..19cbec1 100644
--- a/init/init.c
+++ b/init/init.c
@@ -66,11 +66,8 @@ waitfor(int pid)
}
static int
-run(
- const char * program
-,const char * const * arguments
-,const char * terminal
-,int get_enter)
+run(const char* program, const char* const* arguments,
+ const char* terminal, int get_enter)
{
static const char control_characters[] = {
'\003',
@@ -137,7 +134,8 @@ run(
* before the user wants it. This is critical if swap is not
* enabled and the system has low memory. Generally this will
* be run on the second virtual console, and the first will
- * be allowed to start a shell or the installation system.
+ * be allowed to start a shell or whatever an init script
+ * specifies.
*/
char c;
write(1, press_enter, sizeof(press_enter) - 1);
@@ -246,26 +244,49 @@ exit_signal(int sig)
}
void
-configure_terminals( int serial_cons );
+configure_terminals( int serial_cons )
+{
+ //struct stat statbuf;
+ char *tty;
+
+ switch (serial_cons) {
+ case 1:
+ strcpy( console, "/dev/ttyS0" );
+ break;
+ case 2:
+ strcpy( console, "/dev/ttyS1" );
+ break;
+ default:
+ tty = ttyname(0);
+ if (tty) {
+ strcpy( console, tty );
+ if (!strncmp( tty, "/dev/ttyS", 9 ))
+ serial_cons=1;
+ }
+ else
+ /* falls back to /dev/tty1 if an error occurs */
+ strcpy( console, default_console );
+ }
+ if (!first_terminal)
+ first_terminal = console;
+ if (serial_cons && !strncmp(term_ptr,"TERM=linux",10))
+ term_ptr = "TERM=vt100";
+}
extern int
init_main(int argc, char * * argv)
{
- static const char * const rc = "etc/rc";
- const char * arguments[100];
- int run_rc = 1;
- int j;
- int pid1 = 0;
- int pid2 = 0;
- int create_swap= -1;
- struct stat statbuf;
-#ifndef INCLUDE_DINSTALL
- const char * tty_commands[2] = { "bin/sh", "bin/sh"};
-#else
- const char * tty_commands[2] = { "sbin/dinstall", "bin/sh"};
-#endif
- char swap[20];
- int serial_console = 0;
+ static const char* const rc = "etc/rc";
+ const char * arguments[100];
+ int run_rc = 1;
+ int j;
+ int pid1 = 0;
+ int pid2 = 0;
+ int create_swap= -1;
+ struct stat statbuf;
+ const char * tty_commands[2] = { "bin/sh", "bin/sh"};
+ char swap[20];
+ int serial_console = 0;
/*
* If I am started as /linuxrc instead of /sbin/init, I don't have the
@@ -330,17 +351,13 @@ init_main(int argc, char * * argv)
set_free_pages();
- if (mem_total() < 3500) { /* not enough memory for standard install */
+ /* not enough memory to do anything useful*/
+ if (mem_total() < 2000) {
int retval;
retval= stat("/etc/swappartition",&statbuf);
if (retval) {
- printf("
-You do not have enough RAM, hence you must boot using the Boot Disk
-for Low Memory systems.
-
-Read the instructions in the install.html file.
-");
- while (1) {;}
+ printf("You do not have enough RAM, sorry.\n");
+ while (1) { sleep(1);}
} else { /* everything OK */
FILE *f;
@@ -371,8 +388,13 @@ Read the instructions in the install.html file.
arguments[j] = 0;
if ( run_rc ) {
- printf("running %s\n",rc);
+ printf("running %s with args \"",rc);
+ for ( j = 0; j < argc; j++ ) {
+ printf("%s ", arguments[j]);
+ }
+ printf("\" on console %s\n", console);
waitfor(run(rc, arguments, console, 0));
+ printf("done.\n");
}
if ( 0 == create_swap) {
@@ -392,10 +414,21 @@ Read the instructions in the install.html file.
/*
arguments[0] = tty_commands[0];
*/
- pid1 = run(tty_commands[0], arguments, first_terminal, 0);
+ printf("running %s with args \"",tty_commands[0]);
+ for ( j = 0; j < argc; j++ ) {
+ printf("%s ", arguments[j]);
+ }
+ printf("\" on console %s\n", first_terminal);
+ pid1 = run(tty_commands[0], arguments, first_terminal, 1);
}
- if ( pid2 == 0 && tty_commands[1] )
+ if ( pid2 == 0 && tty_commands[1] ) {
+ printf("running %s with args \"",tty_commands[0]);
+ for ( j = 0; j < argc; j++ ) {
+ printf("%s ", arguments[j]);
+ }
+ printf("\" on console %s\n", first_terminal);
pid2 = run(tty_commands[1], arguments, second_terminal, 1);
+ }
wpid = wait(&status);
if ( wpid > 0 ) {
/* DEBUGGING */
@@ -409,32 +442,3 @@ Read the instructions in the install.html file.
}
}
-void
-configure_terminals( int serial_cons )
-{
- //struct stat statbuf;
- char *tty;
-
- switch (serial_cons) {
- case 1:
- strcpy( console, "/dev/ttyS0" );
- break;
- case 2:
- strcpy( console, "/dev/ttyS1" );
- break;
- default:
- tty = ttyname(0);
- if (tty) {
- strcpy( console, tty );
- if (!strncmp( tty, "/dev/ttyS", 9 ))
- serial_cons=1;
- }
- else
- /* falls back to /dev/tty1 if an error occurs */
- strcpy( console, default_console );
- }
- if (!first_terminal)
- first_terminal = console;
- if (serial_cons && !strncmp(term_ptr,"TERM=linux",10))
- term_ptr = "TERM=vt100";
-}
diff --git a/ls.c b/ls.c
index 7a1b0f3..50b983e 100644
--- a/ls.c
+++ b/ls.c
@@ -179,15 +179,13 @@ int ls_main(int argc, char **argv)
#define FEATURE_AUTOWIDTH /* calculate terminal & column widths */
#define FEATURE_FILETYPECHAR /* enable -p and -F */
-#undef OP_BUF_SIZE 1024 /* leave undefined for unbuffered output */
-
#define TERMINAL_WIDTH 80 /* use 79 if your terminal has linefold bug */
#define COLUMN_WIDTH 14 /* default if AUTOWIDTH not defined */
#define COLUMN_GAP 2 /* includes the file type char, if present */
+#define HAS_REWINDDIR
/************************************************************************/
-#define HAS_REWINDDIR
#if 1 /* FIXME libc 6 */
# include <linux/types.h>
diff --git a/mount.c b/mount.c
index 4e5c074..d7b2682 100644
--- a/mount.c
+++ b/mount.c
@@ -190,7 +190,7 @@ extern int mount_main (int argc, char **argv)
}
endmntent (mountTable);
}
- return( TRUE);
+ exit( TRUE);
}
@@ -203,7 +203,7 @@ extern int mount_main (int argc, char **argv)
case 'o':
if (--i == 0) {
fprintf (stderr, "%s\n", mount_usage);
- return( FALSE);
+ exit( FALSE);
}
parse_mount_options (*(++argv), &flags, string_flags);
--i;
@@ -215,7 +215,7 @@ extern int mount_main (int argc, char **argv)
case 't':
if (--i == 0) {
fprintf (stderr, "%s\n", mount_usage);
- return( FALSE);
+ exit( FALSE);
}
filesystemType = *(++argv);
--i;
@@ -231,7 +231,7 @@ extern int mount_main (int argc, char **argv)
case 'h':
case '-':
fprintf (stderr, "%s\n", mount_usage);
- return( TRUE);
+ exit( TRUE);
break;
}
} else {
@@ -241,7 +241,7 @@ extern int mount_main (int argc, char **argv)
directory=*argv;
else {
fprintf (stderr, "%s\n", mount_usage);
- return( TRUE);
+ exit( TRUE);
}
}
i--;
@@ -254,7 +254,7 @@ extern int mount_main (int argc, char **argv)
if (f == NULL) {
perror("/etc/fstab");
- return( FALSE);
+ exit( FALSE);
}
while ((m = getmntent (f)) != NULL) {
// If the file system isn't noauto, and isn't mounted on /, mount
@@ -270,12 +270,12 @@ extern int mount_main (int argc, char **argv)
endmntent (f);
} else {
if (device && directory) {
- return (mount_one (device, directory, filesystemType,
+ exit (mount_one (device, directory, filesystemType,
flags, string_flags));
} else {
fprintf (stderr, "%s\n", mount_usage);
- return( FALSE);
+ exit( FALSE);
}
}
- return( TRUE);
+ exit( TRUE);
}
diff --git a/umount.c b/umount.c
index 5274e2f..04cd8a0 100644
--- a/umount.c
+++ b/umount.c
@@ -69,7 +69,7 @@ umount_main(int argc, char * * argv)
if (argc < 2) {
fprintf(stderr, "Usage: %s", umount_usage);
- return(FALSE);
+ exit(FALSE);
}
argc--;
argv++;
@@ -78,7 +78,7 @@ umount_main(int argc, char * * argv)
while (**argv == '-') {
while (*++(*argv)) switch (**argv) {
case 'a':
- return umount_all();
+ exit ( umount_all() );
break;
default:
fprintf(stderr, "Usage: %s\n", umount_usage);
@@ -86,10 +86,10 @@ umount_main(int argc, char * * argv)
}
}
if ( umount(*argv) == 0 )
- return (TRUE);
+ exit (TRUE);
else {
perror("umount");
- return( FALSE);
+ exit( FALSE);
}
}
diff --git a/util-linux/mount.c b/util-linux/mount.c
index 4e5c074..d7b2682 100644
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -190,7 +190,7 @@ extern int mount_main (int argc, char **argv)
}
endmntent (mountTable);
}
- return( TRUE);
+ exit( TRUE);
}
@@ -203,7 +203,7 @@ extern int mount_main (int argc, char **argv)
case 'o':
if (--i == 0) {
fprintf (stderr, "%s\n", mount_usage);
- return( FALSE);
+ exit( FALSE);
}
parse_mount_options (*(++argv), &flags, string_flags);
--i;
@@ -215,7 +215,7 @@ extern int mount_main (int argc, char **argv)
case 't':
if (--i == 0) {
fprintf (stderr, "%s\n", mount_usage);
- return( FALSE);
+ exit( FALSE);
}
filesystemType = *(++argv);
--i;
@@ -231,7 +231,7 @@ extern int mount_main (int argc, char **argv)
case 'h':
case '-':
fprintf (stderr, "%s\n", mount_usage);
- return( TRUE);
+ exit( TRUE);
break;
}
} else {
@@ -241,7 +241,7 @@ extern int mount_main (int argc, char **argv)
directory=*argv;
else {
fprintf (stderr, "%s\n", mount_usage);
- return( TRUE);
+ exit( TRUE);
}
}
i--;
@@ -254,7 +254,7 @@ extern int mount_main (int argc, char **argv)
if (f == NULL) {
perror("/etc/fstab");
- return( FALSE);
+ exit( FALSE);
}
while ((m = getmntent (f)) != NULL) {
// If the file system isn't noauto, and isn't mounted on /, mount
@@ -270,12 +270,12 @@ extern int mount_main (int argc, char **argv)
endmntent (f);
} else {
if (device && directory) {
- return (mount_one (device, directory, filesystemType,
+ exit (mount_one (device, directory, filesystemType,
flags, string_flags));
} else {
fprintf (stderr, "%s\n", mount_usage);
- return( FALSE);
+ exit( FALSE);
}
}
- return( TRUE);
+ exit( TRUE);
}
diff --git a/util-linux/umount.c b/util-linux/umount.c
index 5274e2f..04cd8a0 100644
--- a/util-linux/umount.c
+++ b/util-linux/umount.c
@@ -69,7 +69,7 @@ umount_main(int argc, char * * argv)
if (argc < 2) {
fprintf(stderr, "Usage: %s", umount_usage);
- return(FALSE);
+ exit(FALSE);
}
argc--;
argv++;
@@ -78,7 +78,7 @@ umount_main(int argc, char * * argv)
while (**argv == '-') {
while (*++(*argv)) switch (**argv) {
case 'a':
- return umount_all();
+ exit ( umount_all() );
break;
default:
fprintf(stderr, "Usage: %s\n", umount_usage);
@@ -86,10 +86,10 @@ umount_main(int argc, char * * argv)
}
}
if ( umount(*argv) == 0 )
- return (TRUE);
+ exit (TRUE);
else {
perror("umount");
- return( FALSE);
+ exit( FALSE);
}
}
diff --git a/utility.c b/utility.c
index b2228f0..cf90f37 100644
--- a/utility.c
+++ b/utility.c
@@ -58,9 +58,8 @@ int isDirectory(const char *name)
* be set.)
*/
int
-copyFile(
- const char *srcName,
- const char *destName, int setModes, int followLinks)
+copyFile( const char *srcName, const char *destName,
+ int setModes, int followLinks)
{
int rfd;
int wfd;
@@ -75,7 +74,6 @@ copyFile(
result = stat(srcName, &srcStatBuf);
else
result = lstat(srcName, &srcStatBuf);
-
if (result < 0) {
perror(srcName);
return FALSE;
@@ -115,7 +113,8 @@ copyFile(
return (FALSE);
}
link_val[link_size] = '\0';
- if (symlink(link_val, destName)) {
+ link_size = symlink(link_val, destName);
+ if (link_size != 0) {
perror(destName);
return (FALSE);
}
@@ -179,7 +178,6 @@ copyFile(
error_exit:
- //fprintf(stderr, "choking on %s\n", destName);
perror(destName);
close(rfd);
close(wfd);
@@ -476,10 +474,11 @@ recursiveAction(const char *fileName, int recurse, int followLinks,
struct stat statbuf;
struct dirent *next;
- if (followLinks)
- status = lstat(fileName, &statbuf);
- else
+ if (followLinks == FALSE)
status = stat(fileName, &statbuf);
+ else
+ status = lstat(fileName, &statbuf);
+
if (status < 0) {
perror(fileName);
return (FALSE);
@@ -487,16 +486,11 @@ recursiveAction(const char *fileName, int recurse, int followLinks,
if (recurse == FALSE) {
if (S_ISDIR(statbuf.st_mode)) {
- if (dirAction == NULL)
- return (TRUE);
- else
+ if (dirAction != NULL)
return (dirAction(fileName));
- } else {
- if (fileAction == NULL)
- return (TRUE);
else
- return (fileAction(fileName));
- }
+ return (TRUE);
+ }
}
if (S_ISDIR(statbuf.st_mode)) {