hush: make echo builtin optional

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>
This commit is contained in:
Denys Vlasenko 2017-01-09 17:10:04 +01:00
parent 53487a8d22
commit 1cc6804f69
2 changed files with 24 additions and 17 deletions

View 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_LESS) += cat.o # less too
lib-$(CONFIG_CRONTAB) += cat.o # crontab -l lib-$(CONFIG_CRONTAB) += cat.o # crontab -l
lib-$(CONFIG_ADDUSER) += chown.o # used by adduser 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_FTPD) += ls.o # used by ftpd
lib-$(CONFIG_ASH) += echo.o # used by ash lib-$(CONFIG_ASH_BUILTIN_ECHO) += echo.o
lib-$(CONFIG_SH_IS_ASH) += echo.o # used by ash lib-$(CONFIG_HUSH_ECHO) += echo.o
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_PRINTF) += printf.o lib-$(CONFIG_ASH_BUILTIN_PRINTF) += printf.o
lib-$(CONFIG_HUSH_PRINTF) += printf.o lib-$(CONFIG_HUSH_PRINTF) += printf.o

View File

@ -195,6 +195,20 @@
//config: This instructs hush to print commands before execution. //config: This instructs hush to print commands before execution.
//config: Adds ~300 bytes. //config: Adds ~300 bytes.
//config: //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:config HUSH_EXPORT
//config: bool "export builtin" //config: bool "export builtin"
//config: default y //config: default y
@ -216,13 +230,6 @@
//config: help //config: help
//config: Enable help builtin in hush. Code size + ~1 kbyte. //config: Enable help builtin in hush. Code size + ~1 kbyte.
//config: //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:config HUSH_KILL
//config: bool "kill builtin (for kill %jobspec)" //config: bool "kill builtin (for kill %jobspec)"
//config: default y //config: default y
@ -934,7 +941,9 @@ struct globals {
/* Function prototypes for builtins */ /* Function prototypes for builtins */
static int builtin_cd(char **argv) FAST_FUNC; static int builtin_cd(char **argv) FAST_FUNC;
#if ENABLE_HUSH_ECHO
static int builtin_echo(char **argv) FAST_FUNC; static int builtin_echo(char **argv) FAST_FUNC;
#endif
static int builtin_eval(char **argv) FAST_FUNC; static int builtin_eval(char **argv) FAST_FUNC;
static int builtin_exec(char **argv) FAST_FUNC; static int builtin_exec(char **argv) FAST_FUNC;
static int builtin_exit(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? */ * Maybe make it configurable? */
static const struct built_in_command bltins2[] = { static const struct built_in_command bltins2[] = {
BLTIN("[" , builtin_test , NULL), BLTIN("[" , builtin_test , NULL),
#if ENABLE_HUSH_ECHO
BLTIN("echo" , builtin_echo , NULL), BLTIN("echo" , builtin_echo , NULL),
#endif
#if ENABLE_HUSH_PRINTF #if ENABLE_HUSH_PRINTF
BLTIN("printf" , builtin_printf , NULL), BLTIN("printf" , builtin_printf , NULL),
#endif #endif
@ -8832,12 +8843,12 @@ static int FAST_FUNC builtin_test(char **argv)
{ {
return run_applet_main(argv, test_main); return run_applet_main(argv, test_main);
} }
#if ENABLE_HUSH_ECHO
static int FAST_FUNC builtin_echo(char **argv) static int FAST_FUNC builtin_echo(char **argv)
{ {
return run_applet_main(argv, echo_main); return run_applet_main(argv, echo_main);
} }
#endif
#if ENABLE_HUSH_PRINTF #if ENABLE_HUSH_PRINTF
static int FAST_FUNC builtin_printf(char **argv) static int FAST_FUNC builtin_printf(char **argv)
{ {