aboutsummaryrefslogtreecommitdiff
path: root/shell/ash.c
diff options
context:
space:
mode:
authorPaul Fox <pgf@brightstareng.com>2006-06-08 21:37:26 +0000
committerPaul Fox <pgf@brightstareng.com>2006-06-08 21:37:26 +0000
commit6ab037872fa294d20d1f84403d1ac4dd4b8cbd86 (patch)
tree5f109ab555b2e3ca7df717cd7590058ab12d54c1 /shell/ash.c
parent176f2df69b70ad53d4e2f893d9d8fe1c254e405d (diff)
downloadbusybox-6ab037872fa294d20d1f84403d1ac4dd4b8cbd86.tar.gz
made "test" an ash built-in.
moved the contents of libbb/bb_echo.c back into coreutils/echo.c, which is a more reasonable place for them than libbb. this forces anyone who wants echo and test to be builtin to ash to also have them available as applets. their cost is very small, and the number of people who wouldn't want them as applets is also very small. added warning about shell builtins vs. CONFIG_FEATURE_SH_STANDALONE_SHELL, which conflicts with their use. thanks to nathanael copa for debugging help. some string size optimization in test.c may have been lost with this commit, but this is a good new baseline.
Diffstat (limited to 'shell/ash.c')
-rw-r--r--shell/ash.c30
1 files changed, 27 insertions, 3 deletions
diff --git a/shell/ash.c b/shell/ash.c
index 962813dbd..713898a9f 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -1225,6 +1225,9 @@ static int evalcmd(int, char **);
#ifdef CONFIG_ASH_BUILTIN_ECHO
static int echocmd(int, char **);
#endif
+#ifdef CONFIG_ASH_BUILTIN_TEST
+static int testcmd(int, char **);
+#endif
static int execcmd(int, char **);
static int exitcmd(int, char **);
static int exportcmd(int, char **);
@@ -1286,10 +1289,15 @@ struct builtincmd {
#define COMMANDCMD (builtincmd + 5 + \
- ENABLE_ASH_ALIAS + ENABLE_ASH_JOB_CONTROL)
+ 2 * ENABLE_ASH_BUILTIN_TEST + \
+ ENABLE_ASH_ALIAS + \
+ ENABLE_ASH_JOB_CONTROL)
#define EXECCMD (builtincmd + 7 + \
- ENABLE_ASH_CMDCMD + ENABLE_ASH_ALIAS + \
- ENABLE_ASH_BUILTIN_ECHO + ENABLE_ASH_JOB_CONTROL)
+ 2 * ENABLE_ASH_BUILTIN_TEST + \
+ ENABLE_ASH_ALIAS + \
+ ENABLE_ASH_JOB_CONTROL + \
+ ENABLE_ASH_CMDCMD + \
+ ENABLE_ASH_BUILTIN_ECHO)
#define BUILTIN_NOSPEC "0"
#define BUILTIN_SPECIAL "1"
@@ -1307,6 +1315,10 @@ struct builtincmd {
static const struct builtincmd builtincmd[] = {
{ BUILTIN_SPEC_REG ".", dotcmd },
{ BUILTIN_SPEC_REG ":", truecmd },
+#ifdef CONFIG_ASH_BUILTIN_TEST
+ { BUILTIN_REGULAR "[", testcmd },
+ { BUILTIN_REGULAR "[[", testcmd },
+#endif
#ifdef CONFIG_ASH_ALIAS
{ BUILTIN_REG_ASSG "alias", aliascmd },
#endif
@@ -1353,6 +1365,9 @@ static const struct builtincmd builtincmd[] = {
{ BUILTIN_SPEC_REG "set", setcmd },
{ BUILTIN_SPEC_REG "source", dotcmd },
{ BUILTIN_SPEC_REG "shift", shiftcmd },
+#ifdef CONFIG_ASH_BUILTIN_TEST
+ { BUILTIN_REGULAR "test", testcmd },
+#endif
{ BUILTIN_SPEC_REG "times", timescmd },
{ BUILTIN_SPEC_REG "trap", trapcmd },
{ BUILTIN_REGULAR "true", truecmd },
@@ -8143,6 +8158,15 @@ echocmd(int argc, char **argv)
return bb_echo(argc, argv);
}
#endif
+
+#ifdef CONFIG_ASH_BUILTIN_TEST
+static int
+testcmd(int argc, char **argv)
+{
+ return bb_test(argc, argv);
+}
+#endif
+
/* memalloc.c */
/*