special-case {true,false,test} --help
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 21 Apr 2015 14:00:41 +0000 (16:00 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 21 Apr 2015 14:00:41 +0000 (16:00 +0200)
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@googlemail.com>
coreutils/false.c
coreutils/test.c
coreutils/true.c
libbb/appletlib.c

index 59c2f321ae3a44695d22d2fb10b791379acfc5e3..0591a6cdcd00a576cf7bea45ce92f200807d193f 100644 (file)
 /* 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"
index 88cc550506e3306513176c3902e6b572b773ea3c..7b8b10cd9736eb58ee676c5647835df805c18e82 100644 (file)
 //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"
index 382e476a8f1003d97d113cb244c9ff106b05a18c..89f892961f0525a543a2354f97f0e6590699c25d 100644 (file)
 /* 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"
index e0b843d30306e99744d37739d50a33f8b6bd8044..ba3d6e7a01354a23de505cad013313f4fc997832 100644 (file)
@@ -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();
                }
        }