shells: make hush test optional, rename ASH_BUILTIN_foo -> ASH_foo
This makes hash and ash more symmetrical wrt config menu and config
options.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/configs/TEST_nommu_defconfig b/configs/TEST_nommu_defconfig
index 08351a2..d9ec41c 100644
--- a/configs/TEST_nommu_defconfig
+++ b/configs/TEST_nommu_defconfig
@@ -879,9 +879,9 @@
# CONFIG_ASH_JOB_CONTROL is not set
# CONFIG_ASH_ALIAS is not set
# CONFIG_ASH_GETOPTS is not set
-# CONFIG_ASH_BUILTIN_ECHO is not set
-# CONFIG_ASH_BUILTIN_PRINTF is not set
-# CONFIG_ASH_BUILTIN_TEST is not set
+# CONFIG_ASH_ECHO is not set
+# CONFIG_ASH_PRINTF is not set
+# CONFIG_ASH_TEST is not set
# CONFIG_ASH_CMDCMD is not set
# CONFIG_ASH_MAIL is not set
# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
diff --git a/configs/TEST_noprintf_defconfig b/configs/TEST_noprintf_defconfig
index 70dacec..c7330ed 100644
--- a/configs/TEST_noprintf_defconfig
+++ b/configs/TEST_noprintf_defconfig
@@ -873,9 +873,9 @@
# CONFIG_ASH_JOB_CONTROL is not set
# CONFIG_ASH_ALIAS is not set
# CONFIG_ASH_GETOPTS is not set
-# CONFIG_ASH_BUILTIN_ECHO is not set
-# CONFIG_ASH_BUILTIN_PRINTF is not set
-# CONFIG_ASH_BUILTIN_TEST is not set
+# CONFIG_ASH_ECHO is not set
+# CONFIG_ASH_PRINTF is not set
+# CONFIG_ASH_TEST is not set
# CONFIG_ASH_CMDCMD is not set
# CONFIG_ASH_MAIL is not set
# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
diff --git a/configs/TEST_rh9_defconfig b/configs/TEST_rh9_defconfig
index 4a5fad3..86e13cd 100644
--- a/configs/TEST_rh9_defconfig
+++ b/configs/TEST_rh9_defconfig
@@ -893,9 +893,9 @@
CONFIG_ASH_JOB_CONTROL=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_GETOPTS=y
-CONFIG_ASH_BUILTIN_ECHO=y
-CONFIG_ASH_BUILTIN_PRINTF=y
-CONFIG_ASH_BUILTIN_TEST=y
+CONFIG_ASH_ECHO=y
+CONFIG_ASH_PRINTF=y
+CONFIG_ASH_TEST=y
CONFIG_ASH_CMDCMD=y
# CONFIG_ASH_MAIL is not set
CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
diff --git a/configs/android2_defconfig b/configs/android2_defconfig
index 754f612..9338f66 100644
--- a/configs/android2_defconfig
+++ b/configs/android2_defconfig
@@ -936,9 +936,9 @@
# CONFIG_ASH_JOB_CONTROL is not set
# CONFIG_ASH_ALIAS is not set
# CONFIG_ASH_GETOPTS is not set
-# CONFIG_ASH_BUILTIN_ECHO is not set
-# CONFIG_ASH_BUILTIN_PRINTF is not set
-# CONFIG_ASH_BUILTIN_TEST is not set
+# CONFIG_ASH_ECHO is not set
+# CONFIG_ASH_PRINTF is not set
+# CONFIG_ASH_TEST is not set
# CONFIG_ASH_CMDCMD is not set
# CONFIG_ASH_MAIL is not set
# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
diff --git a/configs/android_502_defconfig b/configs/android_502_defconfig
index 8ea6c29..3160634 100644
--- a/configs/android_502_defconfig
+++ b/configs/android_502_defconfig
@@ -1081,9 +1081,9 @@
CONFIG_ASH_JOB_CONTROL=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_GETOPTS=y
-CONFIG_ASH_BUILTIN_ECHO=y
-CONFIG_ASH_BUILTIN_PRINTF=y
-CONFIG_ASH_BUILTIN_TEST=y
+CONFIG_ASH_ECHO=y
+CONFIG_ASH_PRINTF=y
+CONFIG_ASH_TEST=y
CONFIG_ASH_HELP=y
CONFIG_ASH_CMDCMD=y
# CONFIG_ASH_MAIL is not set
diff --git a/configs/android_defconfig b/configs/android_defconfig
index 30e888a..cd3490c 100644
--- a/configs/android_defconfig
+++ b/configs/android_defconfig
@@ -968,9 +968,9 @@
# CONFIG_ASH_JOB_CONTROL is not set
# CONFIG_ASH_ALIAS is not set
# CONFIG_ASH_GETOPTS is not set
-# CONFIG_ASH_BUILTIN_ECHO is not set
-# CONFIG_ASH_BUILTIN_PRINTF is not set
-# CONFIG_ASH_BUILTIN_TEST is not set
+# CONFIG_ASH_ECHO is not set
+# CONFIG_ASH_PRINTF is not set
+# CONFIG_ASH_TEST is not set
# CONFIG_ASH_CMDCMD is not set
# CONFIG_ASH_MAIL is not set
# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
diff --git a/configs/android_ndk_defconfig b/configs/android_ndk_defconfig
index 716ec9a..f2773be 100644
--- a/configs/android_ndk_defconfig
+++ b/configs/android_ndk_defconfig
@@ -996,9 +996,9 @@
# CONFIG_ASH_JOB_CONTROL is not set
# CONFIG_ASH_ALIAS is not set
# CONFIG_ASH_GETOPTS is not set
-# CONFIG_ASH_BUILTIN_ECHO is not set
-# CONFIG_ASH_BUILTIN_PRINTF is not set
-# CONFIG_ASH_BUILTIN_TEST is not set
+# CONFIG_ASH_ECHO is not set
+# CONFIG_ASH_PRINTF is not set
+# CONFIG_ASH_TEST is not set
# CONFIG_ASH_HELP is not set
# CONFIG_ASH_CMDCMD is not set
# CONFIG_ASH_MAIL is not set
diff --git a/configs/cygwin_defconfig b/configs/cygwin_defconfig
index b856482..816f76e 100644
--- a/configs/cygwin_defconfig
+++ b/configs/cygwin_defconfig
@@ -936,9 +936,9 @@
CONFIG_ASH_JOB_CONTROL=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_GETOPTS=y
-CONFIG_ASH_BUILTIN_ECHO=y
-CONFIG_ASH_BUILTIN_PRINTF=y
-CONFIG_ASH_BUILTIN_TEST=y
+CONFIG_ASH_ECHO=y
+CONFIG_ASH_PRINTF=y
+CONFIG_ASH_TEST=y
CONFIG_ASH_CMDCMD=y
# CONFIG_ASH_MAIL is not set
CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
diff --git a/configs/freebsd_defconfig b/configs/freebsd_defconfig
index 4f14d3b..d223b72 100644
--- a/configs/freebsd_defconfig
+++ b/configs/freebsd_defconfig
@@ -912,9 +912,9 @@
# CONFIG_ASH_JOB_CONTROL is not set
# CONFIG_ASH_ALIAS is not set
# CONFIG_ASH_GETOPTS is not set
-# CONFIG_ASH_BUILTIN_ECHO is not set
-# CONFIG_ASH_BUILTIN_PRINTF is not set
-# CONFIG_ASH_BUILTIN_TEST is not set
+# CONFIG_ASH_ECHO is not set
+# CONFIG_ASH_PRINTF is not set
+# CONFIG_ASH_TEST is not set
# CONFIG_ASH_CMDCMD is not set
# CONFIG_ASH_MAIL is not set
# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
diff --git a/coreutils/Kbuild.src b/coreutils/Kbuild.src
index d0b3f62..a805b64 100644
--- a/coreutils/Kbuild.src
+++ b/coreutils/Kbuild.src
@@ -16,9 +16,3 @@
lib-$(CONFIG_ADDUSER) += chown.o # used by adduser
lib-$(CONFIG_ADDGROUP) += chown.o # used by addgroup
lib-$(CONFIG_FTPD) += ls.o # used by ftpd
-
-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
diff --git a/coreutils/echo.c b/coreutils/echo.c
index d0dba65..a7e4ca9 100644
--- a/coreutils/echo.c
+++ b/coreutils/echo.c
@@ -28,12 +28,15 @@
//config:config FEATURE_FANCY_ECHO
//config: bool "Enable -n and -e options"
//config: default y
-//config: depends on ECHO || ASH_BUILTIN_ECHO || HUSH_ECHO
+//config: depends on ECHO || ASH_ECHO || HUSH_ECHO
//applet:IF_ECHO(APPLET_NOFORK(echo, echo, BB_DIR_BIN, BB_SUID_DROP, echo))
//kbuild:lib-$(CONFIG_ECHO) += echo.o
+//kbuild:lib-$(CONFIG_ASH_ECHO) += echo.o
+//kbuild:lib-$(CONFIG_HUSH_ECHO) += echo.o
+
/* BB_AUDIT SUSv3 compliant -- unless configured as fancy echo. */
/* http://www.opengroup.org/onlinepubs/007904975/utilities/echo.html */
diff --git a/coreutils/printf.c b/coreutils/printf.c
index 6c8e115..bc22e0e 100644
--- a/coreutils/printf.c
+++ b/coreutils/printf.c
@@ -49,6 +49,9 @@
//kbuild:lib-$(CONFIG_PRINTF) += printf.o
+//kbuild:lib-$(CONFIG_ASH_PRINTF) += printf.o
+//kbuild:lib-$(CONFIG_HUSH_PRINTF) += printf.o
+
//usage:#define printf_trivial_usage
//usage: "FORMAT [ARG]..."
//usage:#define printf_full_usage "\n\n"
@@ -417,7 +420,7 @@
if (argv[1] && argv[1][0] == '-' && argv[1][1] == '-' && !argv[1][2])
argv++;
if (!argv[1]) {
- if (ENABLE_ASH_BUILTIN_PRINTF
+ if (ENABLE_ASH_PRINTF
&& applet_name[0] != 'p'
) {
bb_error_msg("usage: printf FORMAT [ARGUMENT...]");
diff --git a/coreutils/test.c b/coreutils/test.c
index 288f665..edc625f 100644
--- a/coreutils/test.c
+++ b/coreutils/test.c
@@ -42,21 +42,20 @@
//config:config FEATURE_TEST_64
//config: bool "Extend test to 64 bit"
//config: default y
-//config: depends on TEST || TEST1 || TEST2 || ASH_BUILTIN_TEST || HUSH
+//config: depends on TEST || TEST1 || TEST2 || ASH_TEST || HUSH_TEST
//config: help
//config: Enable 64-bit support in test.
//applet:IF_TEST(APPLET_NOFORK(test, test, BB_DIR_USR_BIN, BB_SUID_DROP, test))
-//applet:IF_TEST1(APPLET_NOFORK([, test, BB_DIR_USR_BIN, BB_SUID_DROP, test))
-//applet:IF_TEST2(APPLET_NOFORK([[, test, BB_DIR_USR_BIN, BB_SUID_DROP, test))
+//applet:IF_TEST1(APPLET_NOFORK([, test, BB_DIR_USR_BIN, BB_SUID_DROP, test))
+//applet:IF_TEST2(APPLET_NOFORK([[, test, BB_DIR_USR_BIN, BB_SUID_DROP, test))
-//kbuild:lib-$(CONFIG_TEST) += test.o test_ptr_hack.o
+//kbuild:lib-$(CONFIG_TEST) += test.o test_ptr_hack.o
//kbuild:lib-$(CONFIG_TEST1) += test.o test_ptr_hack.o
//kbuild:lib-$(CONFIG_TEST2) += test.o test_ptr_hack.o
-//kbuild:lib-$(CONFIG_ASH_BUILTIN_TEST) += test.o test_ptr_hack.o
-//kbuild:lib-$(CONFIG_HUSH) += test.o test_ptr_hack.o
-//kbuild:lib-$(CONFIG_SH_IS_HUSH) += test.o test_ptr_hack.o
-//kbuild:lib-$(CONFIG_BASH_IS_HUSH) += test.o test_ptr_hack.o
+
+//kbuild:lib-$(CONFIG_ASH_TEST) += test.o test_ptr_hack.o
+//kbuild:lib-$(CONFIG_HUSH_TEST) += test.o test_ptr_hack.o
/* "test --help" is special-cased to ignore --help */
//usage:#define test_trivial_usage NOUSAGE_STR
@@ -843,7 +842,7 @@
const char *arg0;
arg0 = bb_basename(argv[0]);
- if ((ENABLE_TEST1 || ENABLE_TEST2 || ENABLE_ASH_BUILTIN_TEST || ENABLE_HUSH)
+ if ((ENABLE_TEST1 || ENABLE_TEST2 || ENABLE_ASH_TEST || ENABLE_HUSH_TEST)
&& (arg0[0] == '[')
) {
--argc;
diff --git a/shell/ash.c b/shell/ash.c
index 20ed965..7c1204a 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -99,17 +99,17 @@
//config: are checked for mtime changes, and "you have mail"
//config: message is printed if change is detected.
//config:
-//config:config ASH_BUILTIN_ECHO
+//config:config ASH_ECHO
//config: bool "echo builtin"
//config: default y
//config: depends on ASH || SH_IS_ASH || BASH_IS_ASH
//config:
-//config:config ASH_BUILTIN_PRINTF
+//config:config ASH_PRINTF
//config: bool "printf builtin"
//config: default y
//config: depends on ASH || SH_IS_ASH || BASH_IS_ASH
//config:
-//config:config ASH_BUILTIN_TEST
+//config:config ASH_TEST
//config: bool "test builtin"
//config: default y
//config: depends on ASH || SH_IS_ASH || BASH_IS_ASH
@@ -9292,13 +9292,13 @@
#define BUILTIN_SPEC_REG_ASSG "7"
/* Stubs for calling non-FAST_FUNC's */
-#if ENABLE_ASH_BUILTIN_ECHO
+#if ENABLE_ASH_ECHO
static int FAST_FUNC echocmd(int argc, char **argv) { return echo_main(argc, argv); }
#endif
-#if ENABLE_ASH_BUILTIN_PRINTF
+#if ENABLE_ASH_PRINTF
static int FAST_FUNC printfcmd(int argc, char **argv) { return printf_main(argc, argv); }
#endif
-#if ENABLE_ASH_BUILTIN_TEST
+#if ENABLE_ASH_TEST
static int FAST_FUNC testcmd(int argc, char **argv) { return test_main(argc, argv); }
#endif
@@ -9306,7 +9306,7 @@
static const struct builtincmd builtintab[] = {
{ BUILTIN_SPEC_REG "." , dotcmd },
{ BUILTIN_SPEC_REG ":" , truecmd },
-#if ENABLE_ASH_BUILTIN_TEST
+#if ENABLE_ASH_TEST
{ BUILTIN_REGULAR "[" , testcmd },
# if ENABLE_ASH_BASH_COMPAT
{ BUILTIN_REGULAR "[[" , testcmd },
@@ -9325,7 +9325,7 @@
{ BUILTIN_REGULAR "command" , commandcmd },
#endif
{ BUILTIN_SPEC_REG "continue", breakcmd },
-#if ENABLE_ASH_BUILTIN_ECHO
+#if ENABLE_ASH_ECHO
{ BUILTIN_REGULAR "echo" , echocmd },
#endif
{ BUILTIN_SPEC_REG "eval" , NULL }, /*evalcmd() has a differing prototype*/
@@ -9354,7 +9354,7 @@
{ BUILTIN_NOSPEC "let" , letcmd },
#endif
{ BUILTIN_ASSIGN "local" , localcmd },
-#if ENABLE_ASH_BUILTIN_PRINTF
+#if ENABLE_ASH_PRINTF
{ BUILTIN_REGULAR "printf" , printfcmd },
#endif
{ BUILTIN_NOSPEC "pwd" , pwdcmd },
@@ -9366,7 +9366,7 @@
#if ENABLE_ASH_BASH_COMPAT
{ BUILTIN_SPEC_REG "source" , dotcmd },
#endif
-#if ENABLE_ASH_BUILTIN_TEST
+#if ENABLE_ASH_TEST
{ BUILTIN_REGULAR "test" , testcmd },
#endif
{ BUILTIN_SPEC_REG "times" , timescmd },
@@ -9385,15 +9385,15 @@
/* Should match the above table! */
#define COMMANDCMD (builtintab + \
/* . : */ 2 + \
- /* [ */ 1 * ENABLE_ASH_BUILTIN_TEST + \
- /* [[ */ 1 * ENABLE_ASH_BUILTIN_TEST * ENABLE_ASH_BASH_COMPAT + \
+ /* [ */ 1 * ENABLE_ASH_TEST + \
+ /* [[ */ 1 * ENABLE_ASH_TEST * ENABLE_ASH_BASH_COMPAT + \
/* alias */ 1 * ENABLE_ASH_ALIAS + \
/* bg */ 1 * ENABLE_ASH_JOB_CONTROL + \
/* break cd cddir */ 3)
#define EVALCMD (COMMANDCMD + \
/* command */ 1 * ENABLE_ASH_CMDCMD + \
/* continue */ 1 + \
- /* echo */ 1 * ENABLE_ASH_BUILTIN_ECHO + \
+ /* echo */ 1 * ENABLE_ASH_ECHO + \
0)
#define EXECCMD (EVALCMD + \
/* eval */ 1)
diff --git a/shell/hush.c b/shell/hush.c
index 9e508fc..c0325cf 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -197,6 +197,11 @@
//config: default y
//config: depends on HUSH || SH_IS_HUSH || BASH_IS_HUSH
//config:
+//config:config HUSH_TEST
+//config: bool "test builtin"
+//config: default y
+//config: depends on HUSH || SH_IS_HUSH || BASH_IS_HUSH
+//config:
//config:config HUSH_HELP
//config: bool "help builtin"
//config: default y
@@ -942,7 +947,9 @@
#endif
static int builtin_shift(char **argv) FAST_FUNC;
static int builtin_source(char **argv) FAST_FUNC;
+#if ENABLE_HUSH_TEST
static int builtin_test(char **argv) FAST_FUNC;
+#endif
#if ENABLE_HUSH_TRAP
static int builtin_trap(char **argv) FAST_FUNC;
#endif
@@ -1061,7 +1068,9 @@
#endif
};
static const struct built_in_command bltins2[] = {
+#if ENABLE_HUSH_TEST
BLTIN("[" , builtin_test , NULL),
+#endif
#if ENABLE_HUSH_ECHO
BLTIN("echo" , builtin_echo , NULL),
#endif
@@ -1069,7 +1078,9 @@
BLTIN("printf" , builtin_printf , NULL),
#endif
BLTIN("pwd" , builtin_pwd , NULL),
+#if ENABLE_HUSH_TEST
BLTIN("test" , builtin_test , NULL),
+#endif
};
@@ -8791,6 +8802,7 @@
return 0;
}
+#if ENABLE_HUSH_TEST || ENABLE_HUSH_ECHO || ENABLE_HUSH_PRINTF || ENABLE_HUSH_KILL
static int run_applet_main(char **argv, int (*applet_main_func)(int argc, char **argv))
{
int argc = 0;
@@ -8800,11 +8812,13 @@
}
return applet_main_func(argc, argv - argc);
}
-
+#endif
+#if ENABLE_HUSH_TEST
static int FAST_FUNC builtin_test(char **argv)
{
return run_applet_main(argv, test_main);
}
+#endif
#if ENABLE_HUSH_ECHO
static int FAST_FUNC builtin_echo(char **argv)
{
diff --git a/testsuite/mdev.tests b/testsuite/mdev.tests
index 5987301..8515aff 100755
--- a/testsuite/mdev.tests
+++ b/testsuite/mdev.tests
@@ -168,7 +168,7 @@
# continuing to use directory structure from prev test
rm -rf mdev.testdir/dev/*
echo "sda 0:0 644 @echo @echo TEST" >mdev.testdir/etc/mdev.conf
-optional STATIC FEATURE_MDEV_CONF FEATURE_MDEV_EXEC FEATURE_LS_RECURSIVE FEATURE_LS_TIMESTAMPS FEATURE_LS_USERNAME FEATURE_SH_IS_ASH ASH_BUILTIN_ECHO
+optional STATIC FEATURE_MDEV_CONF FEATURE_MDEV_EXEC FEATURE_LS_RECURSIVE FEATURE_LS_TIMESTAMPS FEATURE_LS_USERNAME FEATURE_SH_IS_ASH ASH_ECHO
testing "mdev command" \
"env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1;
ls -lnR mdev.testdir/dev | $FILTER_LS" \