Updates to a number of apps to remove warnings/compile errors under libc5.
Tested under both libc5 and libc6 and all seems well with these fixes.
 -Erik
diff --git a/applets/busybox.c b/applets/busybox.c
index be9aa3e..191dee1 100644
--- a/applets/busybox.c
+++ b/applets/busybox.c
@@ -374,18 +374,11 @@
 
 	while (a->name != 0) {
 		if (strcmp(name, a->name) == 0) {
-			int status;
-
-			status = ((*(a->main)) (argc, argv));
-			if (status < 0) {
-				fprintf(stderr, "%s: %s\n", a->name, strerror(errno));
-			}
-			fprintf(stderr, "\n");
-			exit(status);
+			exit(((*(a->main)) (argc, argv)));
 		}
 		a++;
 	}
-	exit(busybox_main(argc, argv));
+	return(busybox_main(argc, argv));
 }
 
 
@@ -419,11 +412,10 @@
 		}
 		fprintf(stderr, "\n\n");
 		exit(-1);
-	} else {
-		/* If we've already been here once, exit now */
-		been_there_done_that = 1;
-		return (main(argc, argv));
 	}
+	/* If we've already been here once, exit now */
+	been_there_done_that = 1;
+	return (main(argc, argv));
 }
 
 /*
diff --git a/archival/gunzip.c b/archival/gunzip.c
index 78ee1d3..f2bb59d 100644
--- a/archival/gunzip.c
+++ b/archival/gunzip.c
@@ -746,7 +746,7 @@
 			exit(FALSE);
 		}
 	}
-	exit(exit_code);
+	return(exit_code);
 }
 
 
diff --git a/archival/gzip.c b/archival/gzip.c
index a971229..9248cfe 100644
--- a/archival/gzip.c
+++ b/archival/gzip.c
@@ -282,8 +282,6 @@
 #define WARN(msg) {if (!quiet) fprintf msg ; \
 		   if (exit_code == OK) exit_code = WARNING;}
 
-#define do_exit(c) exit(c)
-
 
 	/* in zip.c: */
 extern int zip (int in, int out);
@@ -1883,13 +1881,13 @@
 		inFileNum = open(ifname, O_RDONLY);
 		if (inFileNum < 0) {
 			perror(ifname);
-			do_exit(WARNING);
+			exit(WARNING);
 		}
 		/* Get the time stamp on the input file. */
 		result = stat(ifname, &statBuf);
 		if (result < 0) {
 			perror(ifname);
-			do_exit(WARNING);
+			exit(WARNING);
 		}
 		time_stamp = statBuf.st_ctime;
 		ifile_size = statBuf.st_size;
@@ -1923,7 +1921,7 @@
 #endif
 		if (outFileNum < 0) {
 			perror(ofname);
-			do_exit(WARNING);
+			exit(WARNING);
 		}
 		SET_BINARY_MODE(outFileNum);
 		/* Set permissions on the file */
@@ -1948,7 +1946,7 @@
 		}
 	}
 
-	do_exit(exit_code);
+	return(exit_code);
 }
 
 /* trees.c -- output deflated data using Huffman coding
diff --git a/basename.c b/basename.c
index 78265a5..ac371d2 100644
--- a/basename.c
+++ b/basename.c
@@ -60,6 +60,6 @@
 			s[m-n] = '\0';
 	}
 	printf("%s\n", s);
-	exit(TRUE);
+	return(TRUE);
 }
 
diff --git a/busybox.c b/busybox.c
index be9aa3e..191dee1 100644
--- a/busybox.c
+++ b/busybox.c
@@ -374,18 +374,11 @@
 
 	while (a->name != 0) {
 		if (strcmp(name, a->name) == 0) {
-			int status;
-
-			status = ((*(a->main)) (argc, argv));
-			if (status < 0) {
-				fprintf(stderr, "%s: %s\n", a->name, strerror(errno));
-			}
-			fprintf(stderr, "\n");
-			exit(status);
+			exit(((*(a->main)) (argc, argv)));
 		}
 		a++;
 	}
-	exit(busybox_main(argc, argv));
+	return(busybox_main(argc, argv));
 }
 
 
@@ -419,11 +412,10 @@
 		}
 		fprintf(stderr, "\n\n");
 		exit(-1);
-	} else {
-		/* If we've already been here once, exit now */
-		been_there_done_that = 1;
-		return (main(argc, argv));
 	}
+	/* If we've already been here once, exit now */
+	been_there_done_that = 1;
+	return (main(argc, argv));
 }
 
 /*
diff --git a/cat.c b/cat.c
index 561b24f..8004434 100644
--- a/cat.c
+++ b/cat.c
@@ -61,7 +61,7 @@
 		}
 		print_file(file);
 	}
-	exit(TRUE);
+	return(TRUE);
 }
 
 /*
diff --git a/chmod_chown_chgrp.c b/chmod_chown_chgrp.c
index 1ff4bde..d3e2678 100644
--- a/chmod_chown_chgrp.c
+++ b/chmod_chown_chgrp.c
@@ -101,8 +101,8 @@
 int chmod_chown_chgrp_main(int argc, char **argv)
 {
 	int recursiveFlag = FALSE;
-	char *groupName;
-	char *p;
+	char *groupName=NULL;
+	char *p=NULL;
 	const char *appUsage;
 
 	whichApp = (strcmp(*argv, "chown") == 0)? 
diff --git a/chvt.c b/chvt.c
index 37fd21a..45a0439 100644
--- a/chvt.c
+++ b/chvt.c
@@ -33,7 +33,7 @@
 		perror("VT_WAITACTIVE");
 		exit(FALSE);
 	}
-	exit(TRUE);
+	return(TRUE);
 }
 
 
diff --git a/clear.c b/clear.c
index c27787e..dba1056 100644
--- a/clear.c
+++ b/clear.c
@@ -29,5 +29,5 @@
 extern int clear_main(int argc, char **argv)
 {
 	printf("\033[H\033[J");
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/console-tools/chvt.c b/console-tools/chvt.c
index 37fd21a..45a0439 100644
--- a/console-tools/chvt.c
+++ b/console-tools/chvt.c
@@ -33,7 +33,7 @@
 		perror("VT_WAITACTIVE");
 		exit(FALSE);
 	}
-	exit(TRUE);
+	return(TRUE);
 }
 
 
diff --git a/console-tools/clear.c b/console-tools/clear.c
index c27787e..dba1056 100644
--- a/console-tools/clear.c
+++ b/console-tools/clear.c
@@ -29,5 +29,5 @@
 extern int clear_main(int argc, char **argv)
 {
 	printf("\033[H\033[J");
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/console-tools/deallocvt.c b/console-tools/deallocvt.c
index a1b8e4e..b65f7b0 100644
--- a/console-tools/deallocvt.c
+++ b/console-tools/deallocvt.c
@@ -34,7 +34,7 @@
 		/* deallocate all unused consoles */
 		if (ioctl(fd, VT_DISALLOCATE, 0)) {
 			perror("VT_DISALLOCATE");
-			exit(1);
+			exit( FALSE);
 		}
 	} else
 		for (i = 1; i < argc; i++) {
@@ -48,8 +48,8 @@
 				perror("VT_DISALLOCATE");
 				fprintf(stderr, "%s: could not deallocate console %d\n",
 						progname, num);
-				exit(1);
+				exit( FALSE);
 			}
 		}
-	exit(0);
+	return( TRUE);
 }
diff --git a/console-tools/loadacm.c b/console-tools/loadacm.c
index cca5406..cf393d9 100644
--- a/console-tools/loadacm.c
+++ b/console-tools/loadacm.c
@@ -140,10 +140,9 @@
 			perror("PIO_SCRNMAP ioctl"), exit(1);
 		else
 			return 0;
-	} else {
-		fprintf(stderr, "Error parsing symbolic map\n");
-		exit(1);
 	}
+	fprintf(stderr, "Error parsing symbolic map\n");
+	return(1);
 }
 
 
diff --git a/console-tools/loadkmap.c b/console-tools/loadkmap.c
index 99efc51..9057414 100644
--- a/console-tools/loadkmap.c
+++ b/console-tools/loadkmap.c
@@ -94,5 +94,5 @@
 	/* Don't bother to close files.  Exit does that 
 	 * automagically, so we can save a few bytes */
 	/* close(fd); */
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/console-tools/setkeycodes.c b/console-tools/setkeycodes.c
index e933e14..9062caf 100644
--- a/console-tools/setkeycodes.c
+++ b/console-tools/setkeycodes.c
@@ -72,5 +72,5 @@
 	argc -= 2;
 	argv += 2;
     }
-    exit( TRUE);
+    return( TRUE);
 }
diff --git a/coreutils/basename.c b/coreutils/basename.c
index 78265a5..ac371d2 100644
--- a/coreutils/basename.c
+++ b/coreutils/basename.c
@@ -60,6 +60,6 @@
 			s[m-n] = '\0';
 	}
 	printf("%s\n", s);
-	exit(TRUE);
+	return(TRUE);
 }
 
diff --git a/coreutils/cat.c b/coreutils/cat.c
index 561b24f..8004434 100644
--- a/coreutils/cat.c
+++ b/coreutils/cat.c
@@ -61,7 +61,7 @@
 		}
 		print_file(file);
 	}
-	exit(TRUE);
+	return(TRUE);
 }
 
 /*
diff --git a/coreutils/cut.c b/coreutils/cut.c
index 89a934e..7b183e8 100644
--- a/coreutils/cut.c
+++ b/coreutils/cut.c
@@ -307,7 +307,7 @@
 		cut();
 	}
 
-	exit(exit_status);
+	return(exit_status);
 }
 
 /* cut - extract columns from a file or stdin. 	Author: Michael J. Holme
diff --git a/coreutils/date.c b/coreutils/date.c
index 8e584ce..9e8e3f3 100644
--- a/coreutils/date.c
+++ b/coreutils/date.c
@@ -273,6 +273,5 @@
 	strftime(t_buff, 200, date_fmt, &tm_time);
 	printf("%s\n", t_buff);
 
-	exit(TRUE);
-
+	return(TRUE);
 }
diff --git a/coreutils/df.c b/coreutils/df.c
index 07e61d8..ba3227f 100644
--- a/coreutils/df.c
+++ b/coreutils/df.c
@@ -108,7 +108,7 @@
 		endmntent(mountTable);
 	}
 
-	exit(TRUE);
+	return(TRUE);
 }
 
 /*
diff --git a/coreutils/dirname.c b/coreutils/dirname.c
index ce3cd6f..847842e 100644
--- a/coreutils/dirname.c
+++ b/coreutils/dirname.c
@@ -45,5 +45,5 @@
 	if (s && *s)
 		*s = '\0';
 	printf("%s\n", (s)? *argv : ".");
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/coreutils/du.c b/coreutils/du.c
index 9c69997..b8e296d 100644
--- a/coreutils/du.c
+++ b/coreutils/du.c
@@ -181,10 +181,10 @@
 		}
 	}
 
-	exit(0);
+	return(0);
 }
 
-/* $Id: du.c,v 1.19 2000/05/10 05:05:45 erik Exp $ */
+/* $Id: du.c,v 1.20 2000/06/19 17:25:39 andersen Exp $ */
 /*
 Local Variables:
 c-file-style: "linux"
diff --git a/coreutils/echo.c b/coreutils/echo.c
index b31f222..4659e4b 100644
--- a/coreutils/echo.c
+++ b/coreutils/echo.c
@@ -96,7 +96,7 @@
 	if (! nflag)
 		putchar('\n');
 	fflush(stdout);
-	exit( 0);
+	return( 0);
 }
 
 /*-
diff --git a/coreutils/head.c b/coreutils/head.c
index f4ebe05..f42f483 100644
--- a/coreutils/head.c
+++ b/coreutils/head.c
@@ -109,7 +109,7 @@
 			}
 		}
 	}
-	exit(0);
+	return(0);
 }
 
-/* $Id: head.c,v 1.10 2000/05/12 19:41:47 erik Exp $ */
+/* $Id: head.c,v 1.11 2000/06/19 17:25:39 andersen Exp $ */
diff --git a/coreutils/hostid.c b/coreutils/hostid.c
index 9e503e5..f1010a6 100644
--- a/coreutils/hostid.c
+++ b/coreutils/hostid.c
@@ -26,5 +26,5 @@
 extern int hostid_main(int argc, char **argv)
 {
 	printf("%lx\n", gethostid());
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/coreutils/id.c b/coreutils/id.c
index 23bbc16..69dfe26 100644
--- a/coreutils/id.c
+++ b/coreutils/id.c
@@ -89,7 +89,7 @@
 			   my_getpwnam(user), user, my_getgrnam(group), group);
 	
 
-	exit(0);
+	return(0);
 }
 
 
diff --git a/coreutils/ln.c b/coreutils/ln.c
index 3714822..2233a1d 100644
--- a/coreutils/ln.c
+++ b/coreutils/ln.c
@@ -136,7 +136,7 @@
 			exit FALSE;
 		}
 	}
-	exit TRUE;
+	return( TRUE);
 }
 
 /*
diff --git a/coreutils/logname.c b/coreutils/logname.c
index 7c6153f..4b4483c 100644
--- a/coreutils/logname.c
+++ b/coreutils/logname.c
@@ -42,5 +42,5 @@
 		exit(TRUE);
 	}
 	fprintf(stderr, "no login name\n");
-	exit(FALSE);
+	return(FALSE);
 }
diff --git a/coreutils/mkdir.c b/coreutils/mkdir.c
index 9664986..b18c949 100644
--- a/coreutils/mkdir.c
+++ b/coreutils/mkdir.c
@@ -112,5 +112,5 @@
 		argc--;
 		argv++;
 	}
-	exit TRUE;
+	return( TRUE);
 }
diff --git a/coreutils/mkfifo.c b/coreutils/mkfifo.c
index 46b1343..f701a97 100644
--- a/coreutils/mkfifo.c
+++ b/coreutils/mkfifo.c
@@ -65,7 +65,6 @@
 	if (mkfifo(*argv, mode) < 0) {
 		perror("mkfifo");
 		exit(255);
-	} else {
-		exit(TRUE);
 	}
+	return(TRUE);
 }
diff --git a/coreutils/mknod.c b/coreutils/mknod.c
index 8f411a3..ac96817 100644
--- a/coreutils/mknod.c
+++ b/coreutils/mknod.c
@@ -98,6 +98,6 @@
 
 	if (mknod(argv[0], mode, dev) != 0)
 		fatalError("%s: %s\n", argv[0], strerror(errno));
-	exit (TRUE);
+	return (TRUE);
 }
 
diff --git a/coreutils/pwd.c b/coreutils/pwd.c
index 146ef33..87553b3 100644
--- a/coreutils/pwd.c
+++ b/coreutils/pwd.c
@@ -34,5 +34,5 @@
 		fatalError("pwd: %s\n", strerror(errno));
 
 	printf("%s\n", buf);
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/coreutils/rm.c b/coreutils/rm.c
index b1cda3a..2067d87 100644
--- a/coreutils/rm.c
+++ b/coreutils/rm.c
@@ -112,5 +112,5 @@
 			}
 		}
 	}
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/coreutils/rmdir.c b/coreutils/rmdir.c
index 61d7f2a..0751808 100644
--- a/coreutils/rmdir.c
+++ b/coreutils/rmdir.c
@@ -44,5 +44,5 @@
 			exit(FALSE);
 		}
 	}
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/coreutils/sleep.c b/coreutils/sleep.c
index 13f07c0..c7ab32d 100644
--- a/coreutils/sleep.c
+++ b/coreutils/sleep.c
@@ -39,6 +39,6 @@
 	if (sleep(atoi(*(++argv))) != 0) {
 		perror("sleep");
 		exit(FALSE);
-	} else
-		exit(TRUE);
+	}
+	return(TRUE);
 }
diff --git a/coreutils/sort.c b/coreutils/sort.c
index 1edc7d1..93062fa 100644
--- a/coreutils/sort.c
+++ b/coreutils/sort.c
@@ -301,7 +301,7 @@
 		list_release(&list);
 	}
 
-	exit(0);
+	return(0);
 }
 
-/* $Id: sort.c,v 1.16 2000/05/12 19:41:47 erik Exp $ */
+/* $Id: sort.c,v 1.17 2000/06/19 17:25:40 andersen Exp $ */
diff --git a/coreutils/sync.c b/coreutils/sync.c
index 33c7922..db35d72 100644
--- a/coreutils/sync.c
+++ b/coreutils/sync.c
@@ -33,5 +33,5 @@
 #endif
 				);
 	}
-	exit(sync());
+	return(sync());
 }
diff --git a/coreutils/tail.c b/coreutils/tail.c
index 2027d92..3189d20 100644
--- a/coreutils/tail.c
+++ b/coreutils/tail.c
@@ -400,7 +400,7 @@
 			exit_status |= tail_file(argv[i], n_units);
 	}
 
-	exit(exit_status == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+	return(exit_status == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
 }
 
 
diff --git a/coreutils/tee.c b/coreutils/tee.c
index a78edc0..c9b5410 100644
--- a/coreutils/tee.c
+++ b/coreutils/tee.c
@@ -130,7 +130,7 @@
 	/* Don't bother to close files  Exit does that 
 	 * automagically, so we can save a few bytes */
 	/* free(FileList); */
-	exit(0);
+	return(0);
 }
 
-/* $Id: tee.c,v 1.10 2000/05/12 19:41:47 erik Exp $ */
+/* $Id: tee.c,v 1.11 2000/06/19 17:25:40 andersen Exp $ */
diff --git a/coreutils/test.c b/coreutils/test.c
index 0a16e93..36da4db 100644
--- a/coreutils/test.c
+++ b/coreutils/test.c
@@ -235,7 +235,7 @@
 	if (*t_wp != NULL && *++t_wp != NULL)
 		syntax(*t_wp, "unknown operand");
 
-	exit( res);
+	return( res);
 }
 
 static void
diff --git a/coreutils/touch.c b/coreutils/touch.c
index 1364bb7..f52bb02 100644
--- a/coreutils/touch.c
+++ b/coreutils/touch.c
@@ -81,5 +81,5 @@
 		argv++;
 	}
 
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/coreutils/tty.c b/coreutils/tty.c
index 3a318eb..f3c7fb7 100644
--- a/coreutils/tty.c
+++ b/coreutils/tty.c
@@ -46,5 +46,5 @@
 		else
 			puts("not a tty");
 	}
-	exit(isatty(0) ? TRUE : FALSE);
+	return(isatty(0) ? TRUE : FALSE);
 }
diff --git a/coreutils/uname.c b/coreutils/uname.c
index 981ac69..b7c88ec 100644
--- a/coreutils/uname.c
+++ b/coreutils/uname.c
@@ -156,7 +156,7 @@
 	print_element(PRINT_MACHINE, name.machine);
 	print_element(PRINT_PROCESSOR, processor);
 
-	exit(TRUE);
+	return(TRUE);
 }
 
 /* If the name element set in MASK is selected for printing in `toprint',
diff --git a/coreutils/uniq.c b/coreutils/uniq.c
index 0cccbd5..64acf04 100644
--- a/coreutils/uniq.c
+++ b/coreutils/uniq.c
@@ -184,7 +184,7 @@
 	subject_last(&s);
 	subject_study(&s);
 
-	exit(0);
+	return(0);
 }
 
-/* $Id: uniq.c,v 1.10 2000/05/12 19:41:47 erik Exp $ */
+/* $Id: uniq.c,v 1.11 2000/06/19 17:25:40 andersen Exp $ */
diff --git a/coreutils/usleep.c b/coreutils/usleep.c
index 34008a6..da6cca9 100644
--- a/coreutils/usleep.c
+++ b/coreutils/usleep.c
@@ -38,5 +38,5 @@
 	}
 
 	usleep(atoi(*(++argv)));	/* return void */
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/coreutils/uudecode.c b/coreutils/uudecode.c
index 4216e33..752497c 100644
--- a/coreutils/uudecode.c
+++ b/coreutils/uudecode.c
@@ -346,5 +346,5 @@
     }
     while (optind < argc);
   }
-  exit(exit_status);
+  return(exit_status);
 }
diff --git a/coreutils/uuencode.c b/coreutils/uuencode.c
index 91136b3..97801aa 100644
--- a/coreutils/uuencode.c
+++ b/coreutils/uuencode.c
@@ -240,5 +240,5 @@
     errorMsg("Write error\n");
     exit FALSE;
   }
-  exit TRUE;
+  return( TRUE);
 }
diff --git a/coreutils/wc.c b/coreutils/wc.c
index 57bc713..bad03f7 100644
--- a/coreutils/wc.c
+++ b/coreutils/wc.c
@@ -166,5 +166,5 @@
 		print_counts(total_lines, total_words, total_chars,
 					 max_length, "total");
 	}
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/coreutils/whoami.c b/coreutils/whoami.c
index da58479..950f52f 100644
--- a/coreutils/whoami.c
+++ b/coreutils/whoami.c
@@ -45,5 +45,5 @@
 	}
 	fprintf(stderr, "%s: cannot find username for UID %u\n", argv[0],
 			(unsigned) uid);
-	exit(FALSE);
+	return(FALSE);
 }
diff --git a/cp_mv.c b/cp_mv.c
index c8d6562..b15235a 100644
--- a/cp_mv.c
+++ b/cp_mv.c
@@ -90,7 +90,7 @@
 void name_too_long__exit (void)
 {
 	fprintf(stderr, name_too_long, dz);
-	exit FALSE;
+	exit(FALSE);
 }
 
 static void
@@ -333,10 +333,9 @@
 		if (flags_memo)
 			*(baseDestName + baseDestLen) = '\0';
 	}
-// exit_true:
-	exit TRUE;
+	return( TRUE);
  exit_false:
-	exit FALSE;
+	return( FALSE);
 }
 
 /*
diff --git a/cut.c b/cut.c
index 89a934e..7b183e8 100644
--- a/cut.c
+++ b/cut.c
@@ -307,7 +307,7 @@
 		cut();
 	}
 
-	exit(exit_status);
+	return(exit_status);
 }
 
 /* cut - extract columns from a file or stdin. 	Author: Michael J. Holme
diff --git a/date.c b/date.c
index 8e584ce..9e8e3f3 100644
--- a/date.c
+++ b/date.c
@@ -273,6 +273,5 @@
 	strftime(t_buff, 200, date_fmt, &tm_time);
 	printf("%s\n", t_buff);
 
-	exit(TRUE);
-
+	return(TRUE);
 }
diff --git a/deallocvt.c b/deallocvt.c
index a1b8e4e..b65f7b0 100644
--- a/deallocvt.c
+++ b/deallocvt.c
@@ -34,7 +34,7 @@
 		/* deallocate all unused consoles */
 		if (ioctl(fd, VT_DISALLOCATE, 0)) {
 			perror("VT_DISALLOCATE");
-			exit(1);
+			exit( FALSE);
 		}
 	} else
 		for (i = 1; i < argc; i++) {
@@ -48,8 +48,8 @@
 				perror("VT_DISALLOCATE");
 				fprintf(stderr, "%s: could not deallocate console %d\n",
 						progname, num);
-				exit(1);
+				exit( FALSE);
 			}
 		}
-	exit(0);
+	return( TRUE);
 }
diff --git a/df.c b/df.c
index 07e61d8..ba3227f 100644
--- a/df.c
+++ b/df.c
@@ -108,7 +108,7 @@
 		endmntent(mountTable);
 	}
 
-	exit(TRUE);
+	return(TRUE);
 }
 
 /*
diff --git a/dirname.c b/dirname.c
index ce3cd6f..847842e 100644
--- a/dirname.c
+++ b/dirname.c
@@ -45,5 +45,5 @@
 	if (s && *s)
 		*s = '\0';
 	printf("%s\n", (s)? *argv : ".");
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/dmesg.c b/dmesg.c
index c4f4fb4..20846f7 100644
--- a/dmesg.c
+++ b/dmesg.c
@@ -128,6 +128,5 @@
 	exit(FALSE);
   klogctl_error:
 	perror("klogctl");
-	exit(FALSE);
-
+	return(FALSE);
 }
diff --git a/du.c b/du.c
index 9c69997..b8e296d 100644
--- a/du.c
+++ b/du.c
@@ -181,10 +181,10 @@
 		}
 	}
 
-	exit(0);
+	return(0);
 }
 
-/* $Id: du.c,v 1.19 2000/05/10 05:05:45 erik Exp $ */
+/* $Id: du.c,v 1.20 2000/06/19 17:25:39 andersen Exp $ */
 /*
 Local Variables:
 c-file-style: "linux"
diff --git a/dutmp.c b/dutmp.c
index f264fd7..c6bc0c7 100644
--- a/dutmp.c
+++ b/dutmp.c
@@ -56,5 +56,5 @@
 				(long)ut.ut_addr);
 	}
 
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/echo.c b/echo.c
index b31f222..4659e4b 100644
--- a/echo.c
+++ b/echo.c
@@ -96,7 +96,7 @@
 	if (! nflag)
 		putchar('\n');
 	fflush(stdout);
-	exit( 0);
+	return( 0);
 }
 
 /*-
diff --git a/editors/sed.c b/editors/sed.c
index 955858f..d4b721e 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -352,7 +352,7 @@
 			fclose(fp);
 		}
 	}
-	exit(TRUE);
+	return(TRUE);
 }
 
 
diff --git a/fbset.c b/fbset.c
index de4c824..0a84dce 100644
--- a/fbset.c
+++ b/fbset.c
@@ -329,5 +329,5 @@
 	/* Don't close the file, as exiting will take care of that */
 	/* close(fh); */
 
-	exit (TRUE);
+	return (TRUE);
 }
diff --git a/fdflush.c b/fdflush.c
index 4ec0a88..81f0472 100644
--- a/fdflush.c
+++ b/fdflush.c
@@ -56,5 +56,5 @@
 		perror(*argv);
 		exit(FALSE);
 	}
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/find.c b/find.c
index 53b85e6..329d151 100644
--- a/find.c
+++ b/find.c
@@ -116,5 +116,5 @@
 		exit(FALSE);
 	}
 
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/findutils/find.c b/findutils/find.c
index 53b85e6..329d151 100644
--- a/findutils/find.c
+++ b/findutils/find.c
@@ -116,5 +116,5 @@
 		exit(FALSE);
 	}
 
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/findutils/grep.c b/findutils/grep.c
index b91fe7c..0e495ff 100644
--- a/findutils/grep.c
+++ b/findutils/grep.c
@@ -163,7 +163,7 @@
 			fclose(fp);
 		}
 	}
-	exit(match);
+	return(match);
 }
 
 
diff --git a/findutils/which.c b/findutils/which.c
index 7a11bf7..8d4422a 100644
--- a/findutils/which.c
+++ b/findutils/which.c
@@ -88,7 +88,7 @@
 			exit (FALSE);
 		}
 	}
-	exit(TRUE);
+	return(TRUE);
 }
 
 /*
diff --git a/free.c b/free.c
index e6f130e..a81189b 100644
--- a/free.c
+++ b/free.c
@@ -59,5 +59,5 @@
 	printf("%6s%13ld%13ld%13ld\n", "Total:", info.totalram+info.totalswap,
 			(info.totalram-info.freeram)+(info.totalswap-info.freeswap),
 			info.freeram+info.freeswap);
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/freeramdisk.c b/freeramdisk.c
index cabe566..fdac5ea 100644
--- a/freeramdisk.c
+++ b/freeramdisk.c
@@ -58,7 +58,7 @@
 	/* Don't bother closing.  Exit does
 	 * that, so we can save a few bytes */
 	/* close(f); */
-	exit(TRUE);
+	return(TRUE);
 }
 
 /*
diff --git a/grep.c b/grep.c
index b91fe7c..0e495ff 100644
--- a/grep.c
+++ b/grep.c
@@ -163,7 +163,7 @@
 			fclose(fp);
 		}
 	}
-	exit(match);
+	return(match);
 }
 
 
diff --git a/gunzip.c b/gunzip.c
index 78ee1d3..f2bb59d 100644
--- a/gunzip.c
+++ b/gunzip.c
@@ -746,7 +746,7 @@
 			exit(FALSE);
 		}
 	}
-	exit(exit_code);
+	return(exit_code);
 }
 
 
diff --git a/gzip.c b/gzip.c
index a971229..9248cfe 100644
--- a/gzip.c
+++ b/gzip.c
@@ -282,8 +282,6 @@
 #define WARN(msg) {if (!quiet) fprintf msg ; \
 		   if (exit_code == OK) exit_code = WARNING;}
 
-#define do_exit(c) exit(c)
-
 
 	/* in zip.c: */
 extern int zip (int in, int out);
@@ -1883,13 +1881,13 @@
 		inFileNum = open(ifname, O_RDONLY);
 		if (inFileNum < 0) {
 			perror(ifname);
-			do_exit(WARNING);
+			exit(WARNING);
 		}
 		/* Get the time stamp on the input file. */
 		result = stat(ifname, &statBuf);
 		if (result < 0) {
 			perror(ifname);
-			do_exit(WARNING);
+			exit(WARNING);
 		}
 		time_stamp = statBuf.st_ctime;
 		ifile_size = statBuf.st_size;
@@ -1923,7 +1921,7 @@
 #endif
 		if (outFileNum < 0) {
 			perror(ofname);
-			do_exit(WARNING);
+			exit(WARNING);
 		}
 		SET_BINARY_MODE(outFileNum);
 		/* Set permissions on the file */
@@ -1948,7 +1946,7 @@
 		}
 	}
 
-	do_exit(exit_code);
+	return(exit_code);
 }
 
 /* trees.c -- output deflated data using Huffman coding
diff --git a/halt.c b/halt.c
index bcd69b9..2ca36d0 100644
--- a/halt.c
+++ b/halt.c
@@ -28,8 +28,8 @@
 {
 #ifdef BB_FEATURE_LINUXRC
 	/* don't assume init's pid == 1 */
-	exit(kill(*(findPidByName("init")), SIGUSR1));
+	return(kill(*(findPidByName("init")), SIGUSR1));
 #else
-	exit(kill(1, SIGUSR1));
+	return(kill(1, SIGUSR1));
 #endif
 }
diff --git a/head.c b/head.c
index f4ebe05..f42f483 100644
--- a/head.c
+++ b/head.c
@@ -109,7 +109,7 @@
 			}
 		}
 	}
-	exit(0);
+	return(0);
 }
 
-/* $Id: head.c,v 1.10 2000/05/12 19:41:47 erik Exp $ */
+/* $Id: head.c,v 1.11 2000/06/19 17:25:39 andersen Exp $ */
diff --git a/hostid.c b/hostid.c
index 9e503e5..f1010a6 100644
--- a/hostid.c
+++ b/hostid.c
@@ -26,5 +26,5 @@
 extern int hostid_main(int argc, char **argv)
 {
 	printf("%lx\n", gethostid());
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/hostname.c b/hostname.c
index 0df9fed..e909138 100644
--- a/hostname.c
+++ b/hostname.c
@@ -1,6 +1,6 @@
 /* vi: set sw=4 ts=4: */
 /*
- * $Id: hostname.c,v 1.9 2000/05/19 05:35:18 erik Exp $
+ * $Id: hostname.c,v 1.10 2000/06/19 17:25:39 andersen Exp $
  * Mini hostname implementation for busybox
  *
  * Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
@@ -143,5 +143,5 @@
 			printf("%s\n", buf);
 		}
 	}
-	exit(0);
+	return(0);
 }
diff --git a/id.c b/id.c
index 23bbc16..69dfe26 100644
--- a/id.c
+++ b/id.c
@@ -89,7 +89,7 @@
 			   my_getpwnam(user), user, my_getgrnam(group), group);
 	
 
-	exit(0);
+	return(0);
 }
 
 
diff --git a/init/halt.c b/init/halt.c
index bcd69b9..2ca36d0 100644
--- a/init/halt.c
+++ b/init/halt.c
@@ -28,8 +28,8 @@
 {
 #ifdef BB_FEATURE_LINUXRC
 	/* don't assume init's pid == 1 */
-	exit(kill(*(findPidByName("init")), SIGUSR1));
+	return(kill(*(findPidByName("init")), SIGUSR1));
 #else
-	exit(kill(1, SIGUSR1));
+	return(kill(1, SIGUSR1));
 #endif
 }
diff --git a/init/poweroff.c b/init/poweroff.c
index bc8e677..126a0fb 100644
--- a/init/poweroff.c
+++ b/init/poweroff.c
@@ -28,8 +28,8 @@
 {
 #ifdef BB_FEATURE_LINUXRC
 	/* don't assume init's pid == 1 */
-	exit(kill(*(findPidByName("init")), SIGUSR2));
+	return(kill(*(findPidByName("init")), SIGUSR2));
 #else
-	exit(kill(1, SIGUSR2));
+	return(kill(1, SIGUSR2));
 #endif
 }
diff --git a/init/reboot.c b/init/reboot.c
index 6e1f3d5..bde8dbd 100644
--- a/init/reboot.c
+++ b/init/reboot.c
@@ -28,9 +28,9 @@
 {
 #ifdef BB_FEATURE_LINUXRC
 	/* don't assume init's pid == 1 */
-	exit(kill(*(findPidByName("init")), SIGINT));
+	return(kill(*(findPidByName("init")), SIGINT));
 #else
-	exit(kill(1, SIGINT));
+	return(kill(1, SIGINT));
 #endif
 }
 
diff --git a/internal.h b/internal.h
index 9997f4d..fce32c4 100644
--- a/internal.h
+++ b/internal.h
@@ -33,6 +33,7 @@
 #include <sys/stat.h>
 #include <sys/param.h>
 #include <mntent.h>
+#include <asm/string.h>
 
 
 /* Some useful definitions */
diff --git a/lash.c b/lash.c
index 8ea5e30..56d9425 100644
--- a/lash.c
+++ b/lash.c
@@ -188,8 +188,7 @@
 	if (!cmd->progs[0].argv[1] == 1)
 		exit TRUE;
 
-	else
-		exit(atoi(cmd->progs[0].argv[1]));
+	return(atoi(cmd->progs[0].argv[1]));
 }
 
 /* built-in 'fg' and 'bg' handler */
diff --git a/ln.c b/ln.c
index 3714822..2233a1d 100644
--- a/ln.c
+++ b/ln.c
@@ -136,7 +136,7 @@
 			exit FALSE;
 		}
 	}
-	exit TRUE;
+	return( TRUE);
 }
 
 /*
diff --git a/loadacm.c b/loadacm.c
index cca5406..cf393d9 100644
--- a/loadacm.c
+++ b/loadacm.c
@@ -140,10 +140,9 @@
 			perror("PIO_SCRNMAP ioctl"), exit(1);
 		else
 			return 0;
-	} else {
-		fprintf(stderr, "Error parsing symbolic map\n");
-		exit(1);
 	}
+	fprintf(stderr, "Error parsing symbolic map\n");
+	return(1);
 }
 
 
diff --git a/loadkmap.c b/loadkmap.c
index 99efc51..9057414 100644
--- a/loadkmap.c
+++ b/loadkmap.c
@@ -94,5 +94,5 @@
 	/* Don't bother to close files.  Exit does that 
 	 * automagically, so we can save a few bytes */
 	/* close(fd); */
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/logger.c b/logger.c
index 118a5de..d32ccaa 100644
--- a/logger.c
+++ b/logger.c
@@ -118,7 +118,7 @@
 	int option = 0;
 	int fromStdinFlag = FALSE;
 	int stopLookingAtMeLikeThat = FALSE;
-	char *message, buf[1024], name[128];
+	char *message=NULL, buf[1024], name[128];
 
 	/* Fill out the name string early (may be overwritten later */
 	my_getpwuid(name, geteuid());
@@ -175,5 +175,5 @@
 	syslog(pri, message);
 	closelog();
 
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/logname.c b/logname.c
index 7c6153f..4b4483c 100644
--- a/logname.c
+++ b/logname.c
@@ -42,5 +42,5 @@
 		exit(TRUE);
 	}
 	fprintf(stderr, "no login name\n");
-	exit(FALSE);
+	return(FALSE);
 }
diff --git a/lsmod.c b/lsmod.c
index 9b72275..d3b1bb7 100644
--- a/lsmod.c
+++ b/lsmod.c
@@ -36,5 +36,5 @@
 	char *cmd[] = { "cat", "/proc/modules", "\0" };
 #endif
 
-	exit(cat_main(3, cmd));
+	return(cat_main(3, cmd));
 }
diff --git a/math.c b/math.c
index 621b5c9..eb8f331 100644
--- a/math.c
+++ b/math.c
@@ -186,5 +186,5 @@
 		}
 	}
 	stack_machine(0);
-	exit( TRUE);
+	return( TRUE);
 }
diff --git a/miscutils/dutmp.c b/miscutils/dutmp.c
index f264fd7..c6bc0c7 100644
--- a/miscutils/dutmp.c
+++ b/miscutils/dutmp.c
@@ -56,5 +56,5 @@
 				(long)ut.ut_addr);
 	}
 
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/miscutils/mktemp.c b/miscutils/mktemp.c
index b30b9a0..87792cb 100644
--- a/miscutils/mktemp.c
+++ b/miscutils/mktemp.c
@@ -39,5 +39,5 @@
 	if(mkstemp(argv[argc-1]) < 0)
 			exit(FALSE);
 	(void) puts(argv[argc-1]);
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/miscutils/mt.c b/miscutils/mt.c
index 44f2388..304d664 100644
--- a/miscutils/mt.c
+++ b/miscutils/mt.c
@@ -101,5 +101,5 @@
 		exit (FALSE);
 	}
 
-	exit (TRUE);
+	return (TRUE);
 }
diff --git a/mkdir.c b/mkdir.c
index 9664986..b18c949 100644
--- a/mkdir.c
+++ b/mkdir.c
@@ -112,5 +112,5 @@
 		argc--;
 		argv++;
 	}
-	exit TRUE;
+	return( TRUE);
 }
diff --git a/mkfifo.c b/mkfifo.c
index 46b1343..f701a97 100644
--- a/mkfifo.c
+++ b/mkfifo.c
@@ -65,7 +65,6 @@
 	if (mkfifo(*argv, mode) < 0) {
 		perror("mkfifo");
 		exit(255);
-	} else {
-		exit(TRUE);
 	}
+	return(TRUE);
 }
diff --git a/mknod.c b/mknod.c
index 8f411a3..ac96817 100644
--- a/mknod.c
+++ b/mknod.c
@@ -98,6 +98,6 @@
 
 	if (mknod(argv[0], mode, dev) != 0)
 		fatalError("%s: %s\n", argv[0], strerror(errno));
-	exit (TRUE);
+	return (TRUE);
 }
 
diff --git a/mkswap.c b/mkswap.c
index 7d76916..fc37368 100644
--- a/mkswap.c
+++ b/mkswap.c
@@ -469,5 +469,5 @@
 	 */
 	if (fsync(DEV))
 		die("fsync failed");
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/mktemp.c b/mktemp.c
index b30b9a0..87792cb 100644
--- a/mktemp.c
+++ b/mktemp.c
@@ -39,5 +39,5 @@
 	if(mkstemp(argv[argc-1]) < 0)
 			exit(FALSE);
 	(void) puts(argv[argc-1]);
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/modutils/lsmod.c b/modutils/lsmod.c
index 9b72275..d3b1bb7 100644
--- a/modutils/lsmod.c
+++ b/modutils/lsmod.c
@@ -36,5 +36,5 @@
 	char *cmd[] = { "cat", "/proc/modules", "\0" };
 #endif
 
-	exit(cat_main(3, cmd));
+	return(cat_main(3, cmd));
 }
diff --git a/modutils/rmmod.c b/modutils/rmmod.c
index 5ef4a60..a73d789 100644
--- a/modutils/rmmod.c
+++ b/modutils/rmmod.c
@@ -75,5 +75,5 @@
 		}
 		argv++;
 	}
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/more.c b/more.c
index 549a417..1310165 100644
--- a/more.c
+++ b/more.c
@@ -221,5 +221,5 @@
 #ifdef BB_FEATURE_USE_TERMIOS
 	gotsig(0);
 #endif
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/mt.c b/mt.c
index 44f2388..304d664 100644
--- a/mt.c
+++ b/mt.c
@@ -101,5 +101,5 @@
 		exit (FALSE);
 	}
 
-	exit (TRUE);
+	return (TRUE);
 }
diff --git a/networking/hostname.c b/networking/hostname.c
index 0df9fed..e909138 100644
--- a/networking/hostname.c
+++ b/networking/hostname.c
@@ -1,6 +1,6 @@
 /* vi: set sw=4 ts=4: */
 /*
- * $Id: hostname.c,v 1.9 2000/05/19 05:35:18 erik Exp $
+ * $Id: hostname.c,v 1.10 2000/06/19 17:25:39 andersen Exp $
  * Mini hostname implementation for busybox
  *
  * Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
@@ -143,5 +143,5 @@
 			printf("%s\n", buf);
 		}
 	}
-	exit(0);
+	return(0);
 }
diff --git a/networking/nslookup.c b/networking/nslookup.c
index 82bcf56..54f37c8 100644
--- a/networking/nslookup.c
+++ b/networking/nslookup.c
@@ -174,7 +174,7 @@
 		host = gethostbyname(argv[1]);
 	}
 	hostent_fprint(host, stdout);
-	exit( TRUE);
+	return( TRUE);
 }
 
-/* $Id: nslookup.c,v 1.9 2000/05/12 19:41:47 erik Exp $ */
+/* $Id: nslookup.c,v 1.10 2000/06/19 17:25:40 andersen Exp $ */
diff --git a/nslookup.c b/nslookup.c
index 82bcf56..54f37c8 100644
--- a/nslookup.c
+++ b/nslookup.c
@@ -174,7 +174,7 @@
 		host = gethostbyname(argv[1]);
 	}
 	hostent_fprint(host, stdout);
-	exit( TRUE);
+	return( TRUE);
 }
 
-/* $Id: nslookup.c,v 1.9 2000/05/12 19:41:47 erik Exp $ */
+/* $Id: nslookup.c,v 1.10 2000/06/19 17:25:40 andersen Exp $ */
diff --git a/poweroff.c b/poweroff.c
index bc8e677..126a0fb 100644
--- a/poweroff.c
+++ b/poweroff.c
@@ -28,8 +28,8 @@
 {
 #ifdef BB_FEATURE_LINUXRC
 	/* don't assume init's pid == 1 */
-	exit(kill(*(findPidByName("init")), SIGUSR2));
+	return(kill(*(findPidByName("init")), SIGUSR2));
 #else
-	exit(kill(1, SIGUSR2));
+	return(kill(1, SIGUSR2));
 #endif
 }
diff --git a/procps/free.c b/procps/free.c
index e6f130e..a81189b 100644
--- a/procps/free.c
+++ b/procps/free.c
@@ -59,5 +59,5 @@
 	printf("%6s%13ld%13ld%13ld\n", "Total:", info.totalram+info.totalswap,
 			(info.totalram-info.freeram)+(info.totalswap-info.freeswap),
 			info.freeram+info.freeswap);
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/procps/ps.c b/procps/ps.c
index 41b8465..13b6ce5 100644
--- a/procps/ps.c
+++ b/procps/ps.c
@@ -192,7 +192,7 @@
 		fprintf(stdout, "\n");
 	}
 	closedir(dir);
-	exit(TRUE);
+	return(TRUE);
 }
 
 
diff --git a/procps/uptime.c b/procps/uptime.c
index af54158..67ca34d 100644
--- a/procps/uptime.c
+++ b/procps/uptime.c
@@ -69,5 +69,5 @@
 			LOAD_INT(info.loads[1]), LOAD_FRAC(info.loads[1]), 
 			LOAD_INT(info.loads[2]), LOAD_FRAC(info.loads[2]));
 
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/ps.c b/ps.c
index 41b8465..13b6ce5 100644
--- a/ps.c
+++ b/ps.c
@@ -192,7 +192,7 @@
 		fprintf(stdout, "\n");
 	}
 	closedir(dir);
-	exit(TRUE);
+	return(TRUE);
 }
 
 
diff --git a/pwd.c b/pwd.c
index 146ef33..87553b3 100644
--- a/pwd.c
+++ b/pwd.c
@@ -34,5 +34,5 @@
 		fatalError("pwd: %s\n", strerror(errno));
 
 	printf("%s\n", buf);
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/reboot.c b/reboot.c
index 6e1f3d5..bde8dbd 100644
--- a/reboot.c
+++ b/reboot.c
@@ -28,9 +28,9 @@
 {
 #ifdef BB_FEATURE_LINUXRC
 	/* don't assume init's pid == 1 */
-	exit(kill(*(findPidByName("init")), SIGINT));
+	return(kill(*(findPidByName("init")), SIGINT));
 #else
-	exit(kill(1, SIGINT));
+	return(kill(1, SIGINT));
 #endif
 }
 
diff --git a/rm.c b/rm.c
index b1cda3a..2067d87 100644
--- a/rm.c
+++ b/rm.c
@@ -112,5 +112,5 @@
 			}
 		}
 	}
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/rmdir.c b/rmdir.c
index 61d7f2a..0751808 100644
--- a/rmdir.c
+++ b/rmdir.c
@@ -44,5 +44,5 @@
 			exit(FALSE);
 		}
 	}
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/rmmod.c b/rmmod.c
index 5ef4a60..a73d789 100644
--- a/rmmod.c
+++ b/rmmod.c
@@ -75,5 +75,5 @@
 		}
 		argv++;
 	}
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/sed.c b/sed.c
index 955858f..d4b721e 100644
--- a/sed.c
+++ b/sed.c
@@ -352,7 +352,7 @@
 			fclose(fp);
 		}
 	}
-	exit(TRUE);
+	return(TRUE);
 }
 
 
diff --git a/setkeycodes.c b/setkeycodes.c
index e933e14..9062caf 100644
--- a/setkeycodes.c
+++ b/setkeycodes.c
@@ -72,5 +72,5 @@
 	argc -= 2;
 	argv += 2;
     }
-    exit( TRUE);
+    return( TRUE);
 }
diff --git a/sh.c b/sh.c
index 8ea5e30..56d9425 100644
--- a/sh.c
+++ b/sh.c
@@ -188,8 +188,7 @@
 	if (!cmd->progs[0].argv[1] == 1)
 		exit TRUE;
 
-	else
-		exit(atoi(cmd->progs[0].argv[1]));
+	return(atoi(cmd->progs[0].argv[1]));
 }
 
 /* built-in 'fg' and 'bg' handler */
diff --git a/shell/lash.c b/shell/lash.c
index 8ea5e30..56d9425 100644
--- a/shell/lash.c
+++ b/shell/lash.c
@@ -188,8 +188,7 @@
 	if (!cmd->progs[0].argv[1] == 1)
 		exit TRUE;
 
-	else
-		exit(atoi(cmd->progs[0].argv[1]));
+	return(atoi(cmd->progs[0].argv[1]));
 }
 
 /* built-in 'fg' and 'bg' handler */
diff --git a/sleep.c b/sleep.c
index 13f07c0..c7ab32d 100644
--- a/sleep.c
+++ b/sleep.c
@@ -39,6 +39,6 @@
 	if (sleep(atoi(*(++argv))) != 0) {
 		perror("sleep");
 		exit(FALSE);
-	} else
-		exit(TRUE);
+	}
+	return(TRUE);
 }
diff --git a/sort.c b/sort.c
index 1edc7d1..93062fa 100644
--- a/sort.c
+++ b/sort.c
@@ -301,7 +301,7 @@
 		list_release(&list);
 	}
 
-	exit(0);
+	return(0);
 }
 
-/* $Id: sort.c,v 1.16 2000/05/12 19:41:47 erik Exp $ */
+/* $Id: sort.c,v 1.17 2000/06/19 17:25:40 andersen Exp $ */
diff --git a/sync.c b/sync.c
index 33c7922..db35d72 100644
--- a/sync.c
+++ b/sync.c
@@ -33,5 +33,5 @@
 #endif
 				);
 	}
-	exit(sync());
+	return(sync());
 }
diff --git a/sysklogd/logger.c b/sysklogd/logger.c
index 118a5de..d32ccaa 100644
--- a/sysklogd/logger.c
+++ b/sysklogd/logger.c
@@ -118,7 +118,7 @@
 	int option = 0;
 	int fromStdinFlag = FALSE;
 	int stopLookingAtMeLikeThat = FALSE;
-	char *message, buf[1024], name[128];
+	char *message=NULL, buf[1024], name[128];
 
 	/* Fill out the name string early (may be overwritten later */
 	my_getpwuid(name, geteuid());
@@ -175,5 +175,5 @@
 	syslog(pri, message);
 	closelog();
 
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/tail.c b/tail.c
index 2027d92..3189d20 100644
--- a/tail.c
+++ b/tail.c
@@ -400,7 +400,7 @@
 			exit_status |= tail_file(argv[i], n_units);
 	}
 
-	exit(exit_status == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+	return(exit_status == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
 }
 
 
diff --git a/tee.c b/tee.c
index a78edc0..c9b5410 100644
--- a/tee.c
+++ b/tee.c
@@ -130,7 +130,7 @@
 	/* Don't bother to close files  Exit does that 
 	 * automagically, so we can save a few bytes */
 	/* free(FileList); */
-	exit(0);
+	return(0);
 }
 
-/* $Id: tee.c,v 1.10 2000/05/12 19:41:47 erik Exp $ */
+/* $Id: tee.c,v 1.11 2000/06/19 17:25:40 andersen Exp $ */
diff --git a/test.c b/test.c
index 0a16e93..36da4db 100644
--- a/test.c
+++ b/test.c
@@ -235,7 +235,7 @@
 	if (*t_wp != NULL && *++t_wp != NULL)
 		syntax(*t_wp, "unknown operand");
 
-	exit( res);
+	return( res);
 }
 
 static void
diff --git a/touch.c b/touch.c
index 1364bb7..f52bb02 100644
--- a/touch.c
+++ b/touch.c
@@ -81,5 +81,5 @@
 		argv++;
 	}
 
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/true_false.c b/true_false.c
index 5ae221b..c56f5e7 100644
--- a/true_false.c
+++ b/true_false.c
@@ -27,10 +27,10 @@
 
 extern int true_main(int argc, char **argv)
 {
-	exit(TRUE);
+	return(TRUE);
 }
 
 extern int false_main(int argc, char **argv)
 {
-	exit(FALSE);
+	return(FALSE);
 }
diff --git a/tty.c b/tty.c
index 3a318eb..f3c7fb7 100644
--- a/tty.c
+++ b/tty.c
@@ -46,5 +46,5 @@
 		else
 			puts("not a tty");
 	}
-	exit(isatty(0) ? TRUE : FALSE);
+	return(isatty(0) ? TRUE : FALSE);
 }
diff --git a/uname.c b/uname.c
index 981ac69..b7c88ec 100644
--- a/uname.c
+++ b/uname.c
@@ -156,7 +156,7 @@
 	print_element(PRINT_MACHINE, name.machine);
 	print_element(PRINT_PROCESSOR, processor);
 
-	exit(TRUE);
+	return(TRUE);
 }
 
 /* If the name element set in MASK is selected for printing in `toprint',
diff --git a/uniq.c b/uniq.c
index 0cccbd5..64acf04 100644
--- a/uniq.c
+++ b/uniq.c
@@ -184,7 +184,7 @@
 	subject_last(&s);
 	subject_study(&s);
 
-	exit(0);
+	return(0);
 }
 
-/* $Id: uniq.c,v 1.10 2000/05/12 19:41:47 erik Exp $ */
+/* $Id: uniq.c,v 1.11 2000/06/19 17:25:40 andersen Exp $ */
diff --git a/uptime.c b/uptime.c
index af54158..67ca34d 100644
--- a/uptime.c
+++ b/uptime.c
@@ -69,5 +69,5 @@
 			LOAD_INT(info.loads[1]), LOAD_FRAC(info.loads[1]), 
 			LOAD_INT(info.loads[2]), LOAD_FRAC(info.loads[2]));
 
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/usleep.c b/usleep.c
index 34008a6..da6cca9 100644
--- a/usleep.c
+++ b/usleep.c
@@ -38,5 +38,5 @@
 	}
 
 	usleep(atoi(*(++argv)));	/* return void */
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/util-linux/dmesg.c b/util-linux/dmesg.c
index c4f4fb4..20846f7 100644
--- a/util-linux/dmesg.c
+++ b/util-linux/dmesg.c
@@ -128,6 +128,5 @@
 	exit(FALSE);
   klogctl_error:
 	perror("klogctl");
-	exit(FALSE);
-
+	return(FALSE);
 }
diff --git a/util-linux/fbset.c b/util-linux/fbset.c
index de4c824..0a84dce 100644
--- a/util-linux/fbset.c
+++ b/util-linux/fbset.c
@@ -329,5 +329,5 @@
 	/* Don't close the file, as exiting will take care of that */
 	/* close(fh); */
 
-	exit (TRUE);
+	return (TRUE);
 }
diff --git a/util-linux/fdflush.c b/util-linux/fdflush.c
index 4ec0a88..81f0472 100644
--- a/util-linux/fdflush.c
+++ b/util-linux/fdflush.c
@@ -56,5 +56,5 @@
 		perror(*argv);
 		exit(FALSE);
 	}
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/util-linux/freeramdisk.c b/util-linux/freeramdisk.c
index cabe566..fdac5ea 100644
--- a/util-linux/freeramdisk.c
+++ b/util-linux/freeramdisk.c
@@ -58,7 +58,7 @@
 	/* Don't bother closing.  Exit does
 	 * that, so we can save a few bytes */
 	/* close(f); */
-	exit(TRUE);
+	return(TRUE);
 }
 
 /*
diff --git a/util-linux/mkswap.c b/util-linux/mkswap.c
index 7d76916..fc37368 100644
--- a/util-linux/mkswap.c
+++ b/util-linux/mkswap.c
@@ -469,5 +469,5 @@
 	 */
 	if (fsync(DEV))
 		die("fsync failed");
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/util-linux/more.c b/util-linux/more.c
index 549a417..1310165 100644
--- a/util-linux/more.c
+++ b/util-linux/more.c
@@ -221,5 +221,5 @@
 #ifdef BB_FEATURE_USE_TERMIOS
 	gotsig(0);
 #endif
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/uudecode.c b/uudecode.c
index 4216e33..752497c 100644
--- a/uudecode.c
+++ b/uudecode.c
@@ -346,5 +346,5 @@
     }
     while (optind < argc);
   }
-  exit(exit_status);
+  return(exit_status);
 }
diff --git a/uuencode.c b/uuencode.c
index 91136b3..97801aa 100644
--- a/uuencode.c
+++ b/uuencode.c
@@ -240,5 +240,5 @@
     errorMsg("Write error\n");
     exit FALSE;
   }
-  exit TRUE;
+  return( TRUE);
 }
diff --git a/wc.c b/wc.c
index 57bc713..bad03f7 100644
--- a/wc.c
+++ b/wc.c
@@ -166,5 +166,5 @@
 		print_counts(total_lines, total_words, total_chars,
 					 max_length, "total");
 	}
-	exit(TRUE);
+	return(TRUE);
 }
diff --git a/which.c b/which.c
index 7a11bf7..8d4422a 100644
--- a/which.c
+++ b/which.c
@@ -88,7 +88,7 @@
 			exit (FALSE);
 		}
 	}
-	exit(TRUE);
+	return(TRUE);
 }
 
 /*
diff --git a/whoami.c b/whoami.c
index da58479..950f52f 100644
--- a/whoami.c
+++ b/whoami.c
@@ -45,5 +45,5 @@
 	}
 	fprintf(stderr, "%s: cannot find username for UID %u\n", argv[0],
 			(unsigned) uid);
-	exit(FALSE);
+	return(FALSE);
 }