[git commit] special-case {true,false,test} --help

Denys Vlasenko vda.linux at googlemail.com
Tue Apr 21 14:00:41 UTC 2015


commit: http://git.busybox.net/busybox/commit/?id=de5edadee2dca2896492f97ab3a56e389305e74d
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

This also removes their help texts.

function                                             old     new   delta
run_applet_no_and_exit                               442     452     +10
packed_usage                                       30713   30625     -88

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 coreutils/false.c |    8 +++-----
 coreutils/test.c  |   11 +++--------
 coreutils/true.c  |    8 +++-----
 libbb/appletlib.c |   22 ++++++++++++----------
 4 files changed, 21 insertions(+), 28 deletions(-)

diff --git a/coreutils/false.c b/coreutils/false.c
index 59c2f32..0591a6c 100644
--- a/coreutils/false.c
+++ b/coreutils/false.c
@@ -10,11 +10,9 @@
 /* BB_AUDIT SUSv3 compliant */
 /* http://www.opengroup.org/onlinepubs/000095399/utilities/false.html */
 
-//usage:#define false_trivial_usage
-//usage:       ""
-//usage:#define false_full_usage "\n\n"
-//usage:       "Return an exit code of FALSE (1)"
-//usage:
+/* "false --help" is special-cased to ignore --help */
+//usage:#define false_trivial_usage NOUSAGE_STR
+//usage:#define false_full_usage ""
 //usage:#define false_example_usage
 //usage:       "$ false\n"
 //usage:       "$ echo $?\n"
diff --git a/coreutils/test.c b/coreutils/test.c
index 88cc550..7b8b10c 100644
--- a/coreutils/test.c
+++ b/coreutils/test.c
@@ -39,14 +39,9 @@
 //config:	help
 //config:	  Enable 64-bit support in test.
 
-/* "test --help" does not print help (POSIX compat), only "[ --help" does.
- * We display "<applet> EXPRESSION ]" here (not "<applet> EXPRESSION")
- * Unfortunately, it screws up generated BusyBox.html. TODO. */
-//usage:#define test_trivial_usage
-//usage:       "EXPRESSION ]"
-//usage:#define test_full_usage "\n\n"
-//usage:       "Check file types, compare values etc. Return a 0/1 exit code\n"
-//usage:       "depending on logical value of EXPRESSION"
+/* "test --help" is special-cased to ignore --help */
+//usage:#define test_trivial_usage NOUSAGE_STR
+//usage:#define test_full_usage ""
 //usage:
 //usage:#define test_example_usage
 //usage:       "$ test 1 -eq 2\n"
diff --git a/coreutils/true.c b/coreutils/true.c
index 382e476..89f8929 100644
--- a/coreutils/true.c
+++ b/coreutils/true.c
@@ -10,11 +10,9 @@
 /* BB_AUDIT SUSv3 compliant */
 /* http://www.opengroup.org/onlinepubs/007904975/utilities/true.html */
 
-//usage:#define true_trivial_usage
-//usage:       ""
-//usage:#define true_full_usage "\n\n"
-//usage:       "Return an exit code of TRUE (0)"
-//usage:
+/* "true --help" is special-cased to ignore --help */
+//usage:#define true_trivial_usage NOUSAGE_STR
+//usage:#define true_full_usage ""
 //usage:#define true_example_usage
 //usage:       "$ true\n"
 //usage:       "$ echo $?\n"
diff --git a/libbb/appletlib.c b/libbb/appletlib.c
index e0b843d..ba3d6e7 100644
--- a/libbb/appletlib.c
+++ b/libbb/appletlib.c
@@ -748,23 +748,25 @@ void FAST_FUNC run_applet_no_and_exit(int applet_no, char **argv)
 	xfunc_error_retval = EXIT_FAILURE;
 	applet_name = APPLET_NAME(applet_no);
 
-#if defined APPLET_NO_test
 	/* Special case. POSIX says "test --help"
 	 * should be no different from e.g. "test --foo".
 	 * Thus for "test", we skip --help check.
+	 * "true" and "false" are also special.
 	 */
-	if (applet_no != APPLET_NO_test)
+	if (1
+#if defined APPLET_NO_test
+	 && applet_no != APPLET_NO_test
+#endif
+#if defined APPLET_NO_true
+	 && applet_no != APPLET_NO_true
 #endif
-	{
-		if (argc == 2 && strcmp(argv[1], "--help") == 0) {
 #if defined APPLET_NO_false
-			/* Someone insisted that "false --help" must exit 1. Sigh */
-			if (applet_no != APPLET_NO_false)
+	 && applet_no != APPLET_NO_false
 #endif
-			{
-				/* Make "foo --help" exit with 0: */
-				xfunc_error_retval = 0;
-			}
+	) {
+		if (argc == 2 && strcmp(argv[1], "--help") == 0) {
+			/* Make "foo --help" exit with 0: */
+			xfunc_error_retval = 0;
 			bb_show_usage();
 		}
 	}


More information about the busybox-cvs mailing list