hush: make echo builtin optional
authorDenys Vlasenko <vda.linux@googlemail.com>
Mon, 9 Jan 2017 16:10:04 +0000 (17:10 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 9 Jan 2017 16:10:04 +0000 (17:10 +0100)
It's a bit overkill (who would want it off?) but ash already has it
configurable. Let's be symmetric.

Also tweak kbuild logic to use ASH_BUILTIN_ECHO to select echo.o,
not ASH.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
coreutils/Kbuild.src
shell/hush.c

index 9ac6b9e7814f49138518e427ade8361d8b573dc5..d0b3f629b98cd466ffa1d332390dc334dca0b65b 100644 (file)
@@ -14,15 +14,11 @@ lib-$(CONFIG_MORE)          += cat.o   # more uses it if stdout isn't a tty
 lib-$(CONFIG_LESS)          += cat.o   # less too
 lib-$(CONFIG_CRONTAB)       += cat.o   # crontab -l
 lib-$(CONFIG_ADDUSER)       += chown.o # used by adduser
-lib-$(CONFIG_ADDGROUP)      += chown.o # used by adduser
+lib-$(CONFIG_ADDGROUP)      += chown.o # used by addgroup
 lib-$(CONFIG_FTPD)          += ls.o    # used by ftpd
 
-lib-$(CONFIG_ASH)           += echo.o  # used by ash
-lib-$(CONFIG_SH_IS_ASH)     += echo.o  # used by ash
-lib-$(CONFIG_BASH_IS_ASH)   += echo.o  # used by ash
-lib-$(CONFIG_HUSH)          += echo.o  # used by hush
-lib-$(CONFIG_SH_IS_HUSH)    += echo.o  # used by hush
-lib-$(CONFIG_BASH_IS_HUSH)  += echo.o  # used by hush
+lib-$(CONFIG_ASH_BUILTIN_ECHO) += echo.o
+lib-$(CONFIG_HUSH_ECHO)     += echo.o
 
 lib-$(CONFIG_ASH_BUILTIN_PRINTF) += printf.o
-lib-$(CONFIG_HUSH_PRINTF) += printf.o
+lib-$(CONFIG_HUSH_PRINTF)   += printf.o
index 5c5715b3ff8eb712e1ea6d517891b024bb3f0a72..22d71cb0711f6678f35a0fd8c88805390d71d77b 100644 (file)
 //config:        This instructs hush to print commands before execution.
 //config:        Adds ~300 bytes.
 //config:
+//config:config HUSH_ECHO
+//config:      bool "echo builtin"
+//config:      default y
+//config:      depends on HUSH || SH_IS_HUSH || BASH_IS_HUSH
+//config:      help
+//config:        Enable echo builtin in hush.
+//config:
+//config:config HUSH_PRINTF
+//config:      bool "printf builtin"
+//config:      default y
+//config:      depends on HUSH || SH_IS_HUSH || BASH_IS_HUSH
+//config:      help
+//config:        Enable printf builtin in hush.
+//config:
 //config:config HUSH_EXPORT
 //config:      bool "export builtin"
 //config:      default y
 //config:      help
 //config:        Enable help builtin in hush. Code size + ~1 kbyte.
 //config:
-//config:config HUSH_PRINTF
-//config:      bool "printf builtin"
-//config:      default y
-//config:      depends on HUSH || SH_IS_HUSH || BASH_IS_HUSH
-//config:      help
-//config:        Enable printf builtin in hush.
-//config:
 //config:config HUSH_KILL
 //config:      bool "kill builtin (for kill %jobspec)"
 //config:      default y
@@ -934,7 +941,9 @@ struct globals {
 
 /* Function prototypes for builtins */
 static int builtin_cd(char **argv) FAST_FUNC;
+#if ENABLE_HUSH_ECHO
 static int builtin_echo(char **argv) FAST_FUNC;
+#endif
 static int builtin_eval(char **argv) FAST_FUNC;
 static int builtin_exec(char **argv) FAST_FUNC;
 static int builtin_exit(char **argv) FAST_FUNC;
@@ -1091,7 +1100,9 @@ static const struct built_in_command bltins1[] = {
  * Maybe make it configurable? */
 static const struct built_in_command bltins2[] = {
        BLTIN("["        , builtin_test    , NULL),
+#if ENABLE_HUSH_ECHO
        BLTIN("echo"     , builtin_echo    , NULL),
+#endif
 #if ENABLE_HUSH_PRINTF
        BLTIN("printf"   , builtin_printf  , NULL),
 #endif
@@ -8832,12 +8843,12 @@ static int FAST_FUNC builtin_test(char **argv)
 {
        return run_applet_main(argv, test_main);
 }
-
+#if ENABLE_HUSH_ECHO
 static int FAST_FUNC builtin_echo(char **argv)
 {
        return run_applet_main(argv, echo_main);
 }
-
+#endif
 #if ENABLE_HUSH_PRINTF
 static int FAST_FUNC builtin_printf(char **argv)
 {