Promote help to global config option, teach error_exit() to output usage message when called
from get_optflags().
diff --git a/Config.in b/Config.in
index 4218bcb..62c2ec0 100644
--- a/Config.in
+++ b/Config.in
@@ -2,6 +2,22 @@
 
 menu "Global settings"
 
+config HELP
+	bool "help"
+	default y
+	help
+	  usage: help [command]
+
+	  Show usage information for toybox commands.
+
+config HELP_LONG
+	bool "Verbose help text"
+	default y
+	depends on HELP
+	help
+	  Show more than one line of help information per command.
+
+
 config TOYBOX_FREE
 	bool "Free memory unnecessarily"
 	default n
diff --git a/lib/args.c b/lib/args.c
index 95643c3..542b8cf 100644
--- a/lib/args.c
+++ b/lib/args.c
@@ -133,6 +133,7 @@
 	long *nextarg = (long *)&toy;
 	char *options = toys.which->options;
 
+	if (CFG_HELP) toys.exithelp++;
 	// Allocate memory for optargs
 	maxargs = 0;
 	while (toys.argv[maxargs++]);
@@ -300,6 +301,7 @@
 		error_exit("Need %d argument%s", minargs, minargs ? "s" : "");
 	if (optarg>maxargs)
 		error_exit("Max %d argument%s", maxargs, maxargs ? "s" : "");
+	if (CFG_HELP) toys.exithelp = 0;
 }
 
 // Loop through files listed on the command line
diff --git a/lib/lib.c b/lib/lib.c
index 7cb29f8..fe85c5f 100644
--- a/lib/lib.c
+++ b/lib/lib.c
@@ -55,6 +55,12 @@
 {
 	va_list va;
 
+	if (CFG_HELP && toys.exithelp) {
+		*toys.optargs=*toys.argv;
+		help_main();
+		fprintf(stderr,"\n");
+	}
+
 	va_start(va, msg);
 	verror_msg(msg, 0, va);
 	va_end(va);
@@ -75,12 +81,6 @@
 	exit(toys.exitval);
 }
 
-// Stub until the online help system goes in.
-void usage_exit(void)
-{
-	exit(1);
-}
-
 // Die unless we can allocate memory.
 void *xmalloc(size_t size)
 {
diff --git a/lib/lib.h b/lib/lib.h
index 4cc2dac..6fce34c 100644
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -45,7 +45,6 @@
 void perror_msg(char *msg, ...);
 void error_exit(char *msg, ...);
 void perror_exit(char *msg, ...);
-void usage_exit(void);
 void *xmalloc(size_t size);
 void *xzalloc(size_t size);
 void *xrealloc(void *ptr, size_t size);
diff --git a/toys/Config.in b/toys/Config.in
index 8c3017c..e045422 100644
--- a/toys/Config.in
+++ b/toys/Config.in
@@ -101,22 +101,6 @@
 	help
 	  A hello world program.  You don't need this.
 
-config HELP
-	bool "help"
-	default y
-	help
-	  usage: help [command]
-
-	  Show usage information for toybox commands.
-
-config HELP_LONG
-	bool "Verbose help text"
-	default y
-	depends on HELP
-	help
-	  Show more than one line of help information per command.
-
-
 config MDEV
 	bool "mdev"
 	default n
diff --git a/toys/help.c b/toys/help.c
index 6af743f..4687d0e 100644
--- a/toys/help.c
+++ b/toys/help.c
@@ -28,6 +28,6 @@
 		s = help_data;
 	}
 
-	printf("%s", s);
+	fprintf(toys.exithelp ? stderr : stdout, "%s", s);
 	return 0;
 }