From 468aea2d8800cc0496383616d82d7c957ae8bc50 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Tue, 1 Apr 2008 14:47:57 +0000 Subject: shells: do not frocibly enable test, echo and kill _applets_, just build relevant source and use xxx_main functions. build system: add a special case when we have exactly one applet enabled (makes "true", "false", "basename" REALLY tiny). getopt32: do not use stdio. function old new delta getopt32 1385 1412 +27 make_device 1187 1200 +13 basename_main 120 127 +7 tcpudpsvd_main 1922 1926 +4 testcmd 5 - -5 echocmd 5 - -5 fuser_main 1243 1231 -12 ------------------------------------------------------------------------------ (add/remove: 0/2 grow/shrink: 4/1 up/down: 51/-22) Total: 29 bytes --- shell/Config.in | 11 ----------- shell/ash.c | 25 +++---------------------- 2 files changed, 3 insertions(+), 33 deletions(-) (limited to 'shell') diff --git a/shell/Config.in b/shell/Config.in index 5ea071c36..40e0217f4 100644 --- a/shell/Config.in +++ b/shell/Config.in @@ -36,7 +36,6 @@ endchoice config ASH bool "ash" default n - select TEST help Tha 'ash' shell adds about 60k in the default configuration and is the most complete and most pedantically correct shell included with @@ -111,7 +110,6 @@ config ASH_GETOPTS config ASH_BUILTIN_ECHO bool "Builtin version of 'echo'" default y - select ECHO depends on ASH help Enable support for echo, builtin to ash. @@ -119,7 +117,6 @@ config ASH_BUILTIN_ECHO config ASH_BUILTIN_TEST bool "Builtin version of 'test'" default y - select TEST depends on ASH help Enable support for test, builtin to ash. @@ -170,10 +167,6 @@ config ASH_EXPAND_PRMT config HUSH bool "hush" default n - select TRUE - select FALSE - select TEST - select ECHO help hush is a very small shell (just 18k) and it has fairly complete Bourne shell grammar. It even handles all the normal flow control @@ -240,13 +233,9 @@ config LASH help lash is deprecated and will be removed, please migrate to hush. - config MSH bool "msh" default n - select TRUE - select FALSE - select TEST help The minix shell (adds just 30k) is quite complete and handles things like for/do/done, case/esac and all the things you expect a Bourne diff --git a/shell/ash.c b/shell/ash.c index 3651929c2..360d39b4c 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -8417,12 +8417,6 @@ returncmd(int argc ATTRIBUTE_UNUSED, char **argv) static int breakcmd(int, char **); static int dotcmd(int, char **); static int evalcmd(int, char **); -#if ENABLE_ASH_BUILTIN_ECHO -static int echocmd(int, char **); -#endif -#if ENABLE_ASH_BUILTIN_TEST -static int testcmd(int, char **); -#endif static int exitcmd(int, char **); static int exportcmd(int, char **); #if ENABLE_ASH_GETOPTS @@ -8464,6 +8458,9 @@ static int ulimitcmd(int, char **); * Apart from the above, [[ expr ]] should work as [ expr ] */ +#define testcmd test_main +#define echocmd echo_main + /* Keep these in proper order since it is searched via bsearch() */ static const struct builtincmd builtintab[] = { { BUILTIN_SPEC_REG ".", dotcmd }, @@ -11506,22 +11503,6 @@ exitcmd(int argc ATTRIBUTE_UNUSED, char **argv) /* NOTREACHED */ } -#if ENABLE_ASH_BUILTIN_ECHO -static int -echocmd(int argc, char **argv) -{ - return echo_main(argc, argv); -} -#endif - -#if ENABLE_ASH_BUILTIN_TEST -static int -testcmd(int argc, char **argv) -{ - return test_main(argc, argv); -} -#endif - /* * Read a file containing shell functions. */ -- cgit v1.2.3