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-w32-6ab037872fa294d20d1f84403d1ac4dd4b8cbd86.tar.gz
busybox-w32-6ab037872fa294d20d1f84403d1ac4dd4b8cbd86.tar.bz2
busybox-w32-6ab037872fa294d20d1f84403d1ac4dd4b8cbd86.zip
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 **);
1225#ifdef CONFIG_ASH_BUILTIN_ECHO 1225#ifdef CONFIG_ASH_BUILTIN_ECHO
1226static int echocmd(int, char **); 1226static int echocmd(int, char **);
1227#endif 1227#endif
1228#ifdef CONFIG_ASH_BUILTIN_TEST
1229static int testcmd(int, char **);
1230#endif
1228static int execcmd(int, char **); 1231static int execcmd(int, char **);
1229static int exitcmd(int, char **); 1232static int exitcmd(int, char **);
1230static int exportcmd(int, char **); 1233static int exportcmd(int, char **);
@@ -1286,10 +1289,15 @@ struct builtincmd {
1286 1289
1287 1290
1288#define COMMANDCMD (builtincmd + 5 + \ 1291#define COMMANDCMD (builtincmd + 5 + \
1289 ENABLE_ASH_ALIAS + ENABLE_ASH_JOB_CONTROL) 1292 2 * ENABLE_ASH_BUILTIN_TEST + \
1293 ENABLE_ASH_ALIAS + \
1294 ENABLE_ASH_JOB_CONTROL)
1290#define EXECCMD (builtincmd + 7 + \ 1295#define EXECCMD (builtincmd + 7 + \
1291 ENABLE_ASH_CMDCMD + ENABLE_ASH_ALIAS + \ 1296 2 * ENABLE_ASH_BUILTIN_TEST + \
1292 ENABLE_ASH_BUILTIN_ECHO + ENABLE_ASH_JOB_CONTROL) 1297 ENABLE_ASH_ALIAS + \
1298 ENABLE_ASH_JOB_CONTROL + \
1299 ENABLE_ASH_CMDCMD + \
1300 ENABLE_ASH_BUILTIN_ECHO)
1293 1301
1294#define BUILTIN_NOSPEC "0" 1302#define BUILTIN_NOSPEC "0"
1295#define BUILTIN_SPECIAL "1" 1303#define BUILTIN_SPECIAL "1"
@@ -1307,6 +1315,10 @@ struct builtincmd {
1307static const struct builtincmd builtincmd[] = { 1315static const struct builtincmd builtincmd[] = {
1308 { BUILTIN_SPEC_REG ".", dotcmd }, 1316 { BUILTIN_SPEC_REG ".", dotcmd },
1309 { BUILTIN_SPEC_REG ":", truecmd }, 1317 { BUILTIN_SPEC_REG ":", truecmd },
1318#ifdef CONFIG_ASH_BUILTIN_TEST
1319 { BUILTIN_REGULAR "[", testcmd },
1320 { BUILTIN_REGULAR "[[", testcmd },
1321#endif
1310#ifdef CONFIG_ASH_ALIAS 1322#ifdef CONFIG_ASH_ALIAS
1311 { BUILTIN_REG_ASSG "alias", aliascmd }, 1323 { BUILTIN_REG_ASSG "alias", aliascmd },
1312#endif 1324#endif
@@ -1353,6 +1365,9 @@ static const struct builtincmd builtincmd[] = {
1353 { BUILTIN_SPEC_REG "set", setcmd }, 1365 { BUILTIN_SPEC_REG "set", setcmd },
1354 { BUILTIN_SPEC_REG "source", dotcmd }, 1366 { BUILTIN_SPEC_REG "source", dotcmd },
1355 { BUILTIN_SPEC_REG "shift", shiftcmd }, 1367 { BUILTIN_SPEC_REG "shift", shiftcmd },
1368#ifdef CONFIG_ASH_BUILTIN_TEST
1369 { BUILTIN_REGULAR "test", testcmd },
1370#endif
1356 { BUILTIN_SPEC_REG "times", timescmd }, 1371 { BUILTIN_SPEC_REG "times", timescmd },
1357 { BUILTIN_SPEC_REG "trap", trapcmd }, 1372 { BUILTIN_SPEC_REG "trap", trapcmd },
1358 { BUILTIN_REGULAR "true", truecmd }, 1373 { BUILTIN_REGULAR "true", truecmd },
@@ -8143,6 +8158,15 @@ echocmd(int argc, char **argv)
8143 return bb_echo(argc, argv); 8158 return bb_echo(argc, argv);
8144} 8159}
8145#endif 8160#endif
8161
8162#ifdef CONFIG_ASH_BUILTIN_TEST
8163static int
8164testcmd(int argc, char **argv)
8165{
8166 return bb_test(argc, argv);
8167}
8168#endif
8169
8146/* memalloc.c */ 8170/* memalloc.c */
8147 8171
8148/* 8172/*