Wrote killall.

Adjusted mount, ps, utility.c, etc to handle my nifty new kernel
patches the allow busybox to run perfectly without /proc.
 -Erik
diff --git a/procps/kill.c b/procps/kill.c
index 5166212..8a99e0f 100644
--- a/procps/kill.c
+++ b/procps/kill.c
@@ -24,6 +24,7 @@
 #include "internal.h"
 #include <stdio.h>
 #include <stdlib.h>
+#include <errno.h>
 #include <unistd.h>
 #include <signal.h>
 #include <ctype.h>
@@ -35,6 +36,14 @@
 	"Send a signal (default is SIGTERM) to the specified process(es).\n\n"
 	"Options:\n" "\t-l\tList all signal names and numbers.\n\n";
 
+static const char *killall_usage =
+	"killall [-signal] process-name [process-name ...]\n\n"
+	"Send a signal (default is SIGTERM) to the specified process(es).\n\n"
+	"Options:\n" "\t-l\tList all signal names and numbers.\n\n";
+
+
+#define KILL	0
+#define KILLALL	1
 
 struct signal_name {
 	const char *name;
@@ -120,13 +129,19 @@
 
 extern int kill_main(int argc, char **argv)
 {
-	int sig = SIGTERM;
+	int whichApp, sig = SIGTERM;
+	const char *appUsage;
+
+	/* Figure out what we are trying to do here */
+	whichApp = (strcmp(*argv, "killall") == 0)? 
+		KILLALL : KILL; 
+	appUsage = (whichApp == KILLALL)?  killall_usage : kill_usage;
 
 	argc--;
 	argv++;
 	/* Parse any options */
 	if (argc < 1)
-		usage(kill_usage);
+		usage(appUsage);
 
 	while (argc > 0 && **argv == '-') {
 		while (*++(*argv)) {
@@ -150,7 +165,7 @@
 				}
 				break;
 			case '-':
-				usage(kill_usage);
+				usage(appUsage);
 			default:
 				{
 					if (isdigit(**argv)) {
@@ -186,32 +201,34 @@
 
   do_it_now:
 
-	while (--argc >= 0) {
-		int pid;
-		struct stat statbuf;
-		char pidpath[20] = "/proc/";
+	if (whichApp == KILL) {
+		/* Looks like they want to do a kill. Do that */
+		while (--argc >= 0) {
+			int pid;
 
-		if (!isdigit(**argv)) {
-			fprintf(stderr, "bad PID: %s\n", *argv);
-			exit(FALSE);
+			if (!isdigit(**argv))
+				fatalError( "Bad PID: %s\n", strerror(errno));
+			pid = strtol(*argv, NULL, 0);
+			if (kill(pid, sig) != 0) 
+				fatalError( "Could not kill pid '%d': %s\n", pid, strerror(errno));
+			argv++;
 		}
-		pid = atoi(*argv);
-		snprintf(pidpath, 20, "/proc/%s/stat", *argv);
-		if (stat(pidpath, &statbuf) != 0) {
-			fprintf(stderr, "kill: (%d) - No such pid\n", pid);
-			exit(FALSE);
+	} else {
+		/* Looks like they want to do a killall.  Do that */
+		while (--argc >= 0) {
+			int pid;
+
+			while((pid = findPidByName( *argv))) {
+				if (kill(pid, sig) != 0) 
+					fatalError( "Could not kill pid '%d': %s\n", pid, strerror(errno));
+			}
+			argv++;
 		}
-		fprintf(stderr, "sig = %d\n", sig);
-		if (kill(pid, sig) != 0) {
-			perror(*argv);
-			exit(FALSE);
-		}
-		argv++;
 	}
+
 	exit(TRUE);
 
 
   end:
-	fprintf(stderr, "bad signal name: %s\n", *argv);
-	exit(TRUE);
+	fatalError( "bad signal name: %s\n", *argv);
 }