diff --git a/applets/applets.c b/applets/applets.c
index ce9ecbb..21b0c3d 100644
--- a/applets/applets.c
+++ b/applets/applets.c
@@ -90,8 +90,7 @@
 
 
 
-extern void
-bb_show_usage (void)
+extern void bb_show_usage (void)
 {
   const char *format_string;
   const char *usage_string = usage_messages;
@@ -112,8 +111,7 @@
   exit (EXIT_FAILURE);
 }
 
-static int
-applet_name_compare (const void *x, const void *y)
+static int applet_name_compare (const void *x, const void *y)
 {
   const char *name = x;
   const struct BB_applet *applet = y;
@@ -123,47 +121,25 @@
 
 extern const size_t NUM_APPLETS;
 
-struct BB_applet *
-find_applet_by_name (const char *name)
+struct BB_applet *find_applet_by_name (const char *name)
 {
   return bsearch (name, applets, NUM_APPLETS, sizeof (struct BB_applet),
 				  applet_name_compare);
 }
 
-void
-run_applet_by_name (const char *name, int argc, char **argv)
+void run_applet_by_name (const char *name, int argc, char **argv)
 {
-  static int recurse_level = 0;
-  extern int been_there_done_that;      /* From busybox.c */
+	if(ENABLE_FEATURE_SUID_CONFIG) parse_config_file ();
 
-#ifdef CONFIG_FEATURE_SUID_CONFIG
-  if (recurse_level == 0)
-	parse_config_file ();
-#endif
-
-  recurse_level++;
-  /* Do a binary search to find the applet entry given the name. */
-  if ((applet_using = find_applet_by_name (name)) != NULL) {
-	bb_applet_name = applet_using->name;
-	if (argv[1] && strcmp (argv[1], "--help") == 0) {
-	  if (strcmp (applet_using->name, "busybox") == 0) {
-		if (argv[2])
-		  applet_using = find_applet_by_name (argv[2]);
-		else
-		  applet_using = NULL;
-	  }
-	  if (applet_using)
-		bb_show_usage ();
-	  been_there_done_that = 1;
-	  busybox_main (0, NULL);
+	if(!strncmp(name, "busybox", 7)) busybox_main(argc, argv);
+	/* Do a binary search to find the applet entry given the name. */
+	applet_using = find_applet_by_name(name);
+	if(applet_using) {
+		bb_applet_name = applet_using->name;
+		if(argc==2 && !strcmp(argv[1], "--help")) bb_show_usage ();
+		if(ENABLE_FEATURE_SUID) check_suid (applet_using);
+		exit ((*(applet_using->main)) (argc, argv));
 	}
-#ifdef CONFIG_FEATURE_SUID
-	check_suid (applet_using);
-#endif
-
-	exit ((*(applet_using->main)) (argc, argv));
-  }
-  recurse_level--;
 }
 
 
diff --git a/applets/busybox.c b/applets/busybox.c
index ee74b4c..420c9c0 100644
--- a/applets/busybox.c
+++ b/applets/busybox.c
@@ -9,7 +9,6 @@
 #include <locale.h>
 #endif
 
-int been_there_done_that = 0; /* Also used in applets.c */
 const char *bb_applet_name;
 
 #ifdef CONFIG_FEATURE_INSTALLER
@@ -32,17 +31,6 @@
 /* abstract link() */
 typedef int (*__link_f)(const char *, const char *);
 
-/*
- * Where in the filesystem is this busybox?
- * [return]
- *		malloc'd string w/ full pathname of busybox's location
- *		NULL on failure
- */
-static inline char *busybox_fullpath(void)
-{
-	return xreadlink("/proc/self/exe");
-}
-
 /* create (sym)links for each applet */
 static void install_links(const char *busybox, int use_symbolic_links)
 {
@@ -72,41 +60,27 @@
 {
 	const char *s;
 
-	bb_applet_name = argv[0];
+	bb_applet_name=argv[0];
+	if (*bb_applet_name == '-') bb_applet_name++;
+	for (s = bb_applet_name; *s ;)
+		if (*(s++) == '/') bb_applet_name = s;
 
-	if (bb_applet_name[0] == '-')
-		bb_applet_name++;
-
-	for (s = bb_applet_name; *s != '\0';) {
-		if (*s++ == '/')
-			bb_applet_name = s;
-	}
-
-#ifdef CONFIG_LOCALE_SUPPORT
-#ifdef CONFIG_INIT
-	if(getpid()!=1)	/* Do not set locale for `init' */
-#endif
-	{
+	/* Set locale for everybody except `init' */
+	if(ENABLE_LOCALE_SUPPORT && (!ENABLE_INIT || getpid()==1))
 		setlocale(LC_ALL, "");
-	}
-#endif
 
 	run_applet_by_name(bb_applet_name, argc, argv);
 	bb_error_msg_and_die("applet not found");
 }
 
-
 int busybox_main(int argc, char **argv)
 {
-	int col = 0, len, i;
-
-#ifdef CONFIG_FEATURE_INSTALLER
 	/*
 	 * This style of argument parsing doesn't scale well
 	 * in the event that busybox starts wanting more --options.
 	 * If someone has a cleaner approach, by all means implement it.
 	 */
-	if (argc > 1 && (strcmp(argv[1], "--install") == 0)) {
+	if (ENABLE_FEATURE_INSTALLER && argc > 1 && !strcmp(argv[1], "--install")) {
 		int use_symbolic_links = 0;
 		int rc = 0;
 		char *busybox;
@@ -119,7 +93,7 @@
 		}
 
 		/* link */
-		busybox = busybox_fullpath();
+		busybox = xreadlink("/proc/self/exe");
 		if (busybox) {
 			install_links(busybox, use_symbolic_links);
 			free(busybox);
@@ -128,60 +102,45 @@
 		}
 		return rc;
 	}
-#endif /* CONFIG_FEATURE_INSTALLER */
 
-	argc--;
+	/* Deal with --help.  (Also print help when called with no arguments) */
+	
+	if (argc==1 || !strcmp(argv[1],"--help") ) {
+		if (argc>2) run_applet_by_name(bb_applet_name=argv[2], argc, argv);
+		else {
+			const struct BB_applet *a;
+			int col, output_width;
 
-	/* If we've already been here once, exit now */
-	if (been_there_done_that == 1 || argc < 1) {
-		const struct BB_applet *a = applets;
-		int output_width = 60;
+			if (ENABLE_FEATURE_AUTOWIDTH) {
+				/* Obtain the terminal width.  */
+				get_terminal_width_height(0, &output_width, NULL);
+				/* leading tab and room to wrap */
+				output_width -= 20;
+			} else output_width = 60;
 
-#ifdef CONFIG_FEATURE_AUTOWIDTH
-		/* Obtain the terminal width.  */
-		get_terminal_width_height(0, &output_width, NULL);
-		/* leading tab and room to wrap */
-		output_width -= 20;
-#endif
+			printf("%s\n\n"
+			       "Usage: busybox [function] [arguments]...\n"
+			       "   or: [function] [arguments]...\n\n"
+			       "\tBusyBox is a multi-call binary that combines many common Unix\n"
+			       "\tutilities into a single executable.  Most people will create a\n"
+			       "\tlink to busybox for each function they wish to use and BusyBox\n"
+			       "\twill act like whatever it was invoked as!\n"
+			       "\nCurrently defined functions:\n", bb_msg_full_version);
 
-		printf("%s\n\n"
-		       "Usage: busybox [function] [arguments]...\n"
-		       "   or: [function] [arguments]...\n\n"
-		       "\tBusyBox is a multi-call binary that combines many common Unix\n"
-		       "\tutilities into a single executable.  Most people will create a\n"
-		       "\tlink to busybox for each function they wish to use and BusyBox\n"
-		       "\twill act like whatever it was invoked as!\n"
-		       "\nCurrently defined functions:\n", bb_msg_full_version);
-
-		while (a->name != 0) {
-			col +=
-				printf("%s%s", ((col == 0) ? "\t" : ", "),
-				       (a++)->name);
-			if (col > output_width && a->name != 0) {
-				printf(",\n");
-				col = 0;
+			col=0;
+			for(a = applets; a->name;) {
+				col += printf("%s%s", (col ? ", " : "\t"), (a++)->name);
+				if (col > output_width && a->name) {
+					printf(",\n");
+					col = 0;
+				}
 			}
+			printf("\n\n");
+			exit(0);
 		}
-		printf("\n\n");
-		exit(0);
-	}
-
-	/* Flag that we've been here already */
-	been_there_done_that = 1;
-
-	/* Move the command line down a notch */
-	/* Preserve pointers so setproctitle() works consistently */
-	len = argv[argc] + strlen(argv[argc]) - argv[1];
-	memmove(argv[0], argv[1], len);
-	memset(argv[0] + len, 0, argv[1] - argv[0]);
-
-	/* Fix up the argv pointers */
-	len = argv[1] - argv[0];
-	memmove(argv, argv + 1, sizeof(char *) * (argc + 1));
-	for (i = 0; i < argc; i++)
-		argv[i] -= len;
-
-	return (main(argc, argv));
+	} else run_applet_by_name(bb_applet_name=argv[1], argc-1, argv+1);
+	
+	bb_error_msg_and_die("applet not found");
 }
 
 /*
diff --git a/testsuite/busybox.tests b/testsuite/busybox.tests
new file mode 100755
index 0000000..f26f01b
--- /dev/null
+++ b/testsuite/busybox.tests
@@ -0,0 +1,123 @@
+#!/bin/sh
+
+# Tests for busybox applet itself.
+# Copyright 2005 by Rob Landley <rob@landley.net>
+# Licensed under GPL v2, see file LICENSE for details.
+
+if [ ${#COMMAND} -eq 0 ]; then COMMAND=busybox; fi
+. testing.sh
+
+# We'll assume "cat" is built in, because we need some other command to test.
+
+HELPDUMP=`$COMMAND`
+
+# The gratuitous "\n"s are due to a shell idiosyncrasy: environment variables
+# seem to strip trailing whitespace, which makes cmp and diff unhappy.
+
+ln -s `which "$COMMAND"` busybox-suffix
+ln -s `which "$COMMAND"` unknown
+
+for i in busybox busybox-suffix
+do
+	# The gratuitous "\n"s are due to a shell idiosyncrasy:
+	# environment variables seem to strip trailing whitespace.
+
+	testing "$i" "" "$HELPDUMP\n\n" "" ""
+
+	testing "$i cat" "cat" "moo" "" "moo"
+
+	testing "$i unknown" "unknown 2>&1" \
+		"unknown: applet not found\n" "" ""
+
+	testing "$i --help" "--help 2>&1" "$HELPDUMP\n\n" "" ""
+
+	testing "$i --help cat" "--help cat 2>&1 | grep prints" \
+		"Concatenates FILE(s) and prints them to stdout.\n" "" ""
+
+	testing "$i --help unknown" "--help unknown 2>&1" \
+		"unknown: applet not found\n" "" ""
+
+	COMMAND=./busybox-suffix
+done
+
+COMMAND="./unknown"
+testing "busybox as unknown name" "2>&1" "unknown: applet not found\n" "" ""
+
+rm -f busybox-suffix unknown
+
+exit
+
+General cleanup of command line parsing to allow "busybox" to work as a prefix.
+(I.E. any argv[0] that starts with "busybox" winds up in busybox_main().)
+
+Tests:
+./busybox
+./busybox-walrus
+./busybox ls
+./busybox-walrus ls
+./busybox --help
+./busybox-walrus --help
+./busybox --help ls
+./busybox-walrus --help ls
+./busybox --help walrus
+./busybox-walrus --help walrus
+
+
+
+
+
+
+
+
+
+# These tests require the full option set.
+
+# Longish chunk of data re-used by the next few tests
+
+data="42	1	3	woot
+42	1	010	zoology
+egg	1	2	papyrus
+7	3	42	soup
+999	3	0	algebra
+"
+
+# Sorting with keys
+
+testing "sort one key" "-k4,4 input" \
+"999	3	0	algebra
+egg	1	2	papyrus
+7	3	42	soup
+42	1	3	woot
+42	1	010	zoology
+" "$data" ""
+
+testing "sort key range with numeric option" "-k2,3n input" \
+"42	1	010	zoology
+42	1	3	woot
+egg	1	2	papyrus
+7	3	42	soup
+999	3	0	algebra
+" "$data" ""
+
+# Busybox is definitely doing this one wrong just now...
+
+testing "sort key range with numeric option and global reverse" \
+"-k2,3n -r input" \
+"egg	1	2	papyrus
+42	1	3	woot
+42	1	010	zoology
+999	3	0	algebra
+7	3	42	soup
+" "$data" ""
+
+# 
+
+testing "sort key range with multiple options" "-k2,3rn input" \
+"7	3	42	soup
+999	3	0	algebra
+42	1	010	zoology
+42	1	3	woot
+egg	1	2	papyrus
+" "$data" ""
+
+exit $FAILCOUNT
diff --git a/testsuite/runtest b/testsuite/runtest
index 91b7943..6a0dc9d 100755
--- a/testsuite/runtest
+++ b/testsuite/runtest
@@ -97,8 +97,8 @@
 			status=1
 		fi
 	fi
-
-	if [ -f "$applet".tests ]
+	applet=`echo "$applet" | sed -n 's/\.tests$//p'`
+	if [ ${#applet} != 0 ]
 	then
 		rm -f links/"$applet"
 		ln -s ../../busybox links/"$applet"
diff --git a/testsuite/testing.sh b/testsuite/testing.sh
index d516f72..0925d09 100755
--- a/testsuite/testing.sh
+++ b/testsuite/testing.sh
@@ -48,13 +48,13 @@
   if [ $? -ne 0 ]
   then
 	FAILCOUNT=$[$FAILCOUNT+1]
-	echo FAIL:"$1"
+	echo "FAIL: $1"
 	if [ $verbose ]
 	then
 		diff -u expected actual
 	fi
   else
-	echo PASS:"$1"
+	echo "PASS: $1"
   fi
   rm -f input expected actual
 
