X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/e8b81c92e78dc781a9569d7d51bd4f98d89237f8..682a6e85dd7ad579be5a2ad21dab8e53071612e3:/package/busybox/config/shell/Config.in?ds=sidebyside

diff --git a/package/busybox/config/shell/Config.in b/package/busybox/config/shell/Config.in
index d2b105661..5d492e239 100644
--- a/package/busybox/config/shell/Config.in
+++ b/package/busybox/config/shell/Config.in
@@ -15,18 +15,19 @@ choice
 config BUSYBOX_CONFIG_FEATURE_SH_IS_ASH
 	select BUSYBOX_CONFIG_ASH
 	bool "ash"
+	depends on !BUSYBOX_CONFIG_NOMMU
 
 config BUSYBOX_CONFIG_FEATURE_SH_IS_HUSH
 	select BUSYBOX_CONFIG_HUSH
 	bool "hush"
 
-config BUSYBOX_CONFIG_FEATURE_SH_IS_LASH
-	select BUSYBOX_CONFIG_LASH
-	bool "lash"
+####config FEATURE_SH_IS_LASH
+####	select LASH
+####	bool "lash"
 
-config BUSYBOX_CONFIG_FEATURE_SH_IS_MSH
-	select BUSYBOX_CONFIG_MSH
-	bool "msh"
+####config FEATURE_SH_IS_MSH
+####	select MSH
+####	bool "msh"
 
 config BUSYBOX_CONFIG_FEATURE_SH_IS_NONE
 	bool "none"
@@ -36,16 +37,20 @@ endchoice
 config BUSYBOX_CONFIG_ASH
 	bool "ash"
 	default y
-	select BUSYBOX_CONFIG_TEST
+	depends on !BUSYBOX_CONFIG_NOMMU
 	help
 	  Tha 'ash' shell adds about 60k in the default configuration and is
 	  the most complete and most pedantically correct shell included with
-	  busybox.  This shell is actually a derivative of the Debian 'dash'
+	  busybox. This shell is actually a derivative of the Debian 'dash'
 	  shell (by Herbert Xu), which was created by porting the 'ash' shell
 	  (written by Kenneth Almquist) from NetBSD.
 
-comment "Ash Shell Options"
+config BUSYBOX_CONFIG_ASH_BASH_COMPAT
+	bool "bash-compatible extensions"
+	default y
 	depends on BUSYBOX_CONFIG_ASH
+	help
+	  Enable bash-compatible extensions.
 
 config BUSYBOX_CONFIG_ASH_JOB_CONTROL
 	bool "Job control"
@@ -54,23 +59,6 @@ config BUSYBOX_CONFIG_ASH_JOB_CONTROL
 	help
 	  Enable job control in the ash shell.
 
-config BUSYBOX_CONFIG_ASH_READ_NCHARS
-	bool "'read -n N' and 'read -s' support"
-	default n
-	depends on BUSYBOX_CONFIG_ASH
-	help
-	  'read -n N' will return a value after N characters have been read.
-	  'read -s' will read without echoing the user's input.
-
-config BUSYBOX_CONFIG_ASH_READ_TIMEOUT
-	bool "'read -t S' support."
-	default y
-	depends on BUSYBOX_CONFIG_ASH
-	help
-	  'read -t S' will return a value after S seconds have passed.
-	  This implementation will allow fractional seconds, expressed
-	  as a decimal fraction, e.g. 'read -t 2.5 foo'.
-
 config BUSYBOX_CONFIG_ASH_ALIAS
 	bool "alias support"
 	default y
@@ -78,22 +66,6 @@ config BUSYBOX_CONFIG_ASH_ALIAS
 	help
 	  Enable alias support in the ash shell.
 
-config BUSYBOX_CONFIG_ASH_MATH_SUPPORT
-	bool "Posix math support"
-	default y
-	depends on BUSYBOX_CONFIG_ASH
-	help
-	  Enable math support in the ash shell.
-
-config BUSYBOX_CONFIG_ASH_MATH_SUPPORT_64
-	bool "Extend Posix math support to 64 bit"
-	default y
-	depends on BUSYBOX_CONFIG_ASH_MATH_SUPPORT
-	help
-	  Enable 64-bit math support in the ash shell.  This will make
-	  the shell slightly larger, but will allow computation with very
-	  large numbers.
-
 config BUSYBOX_CONFIG_ASH_GETOPTS
 	bool "Builtin getopt to parse positional parameters"
 	default y
@@ -104,15 +76,20 @@ config BUSYBOX_CONFIG_ASH_GETOPTS
 config BUSYBOX_CONFIG_ASH_BUILTIN_ECHO
 	bool "Builtin version of 'echo'"
 	default y
-	select BUSYBOX_CONFIG_ECHO
 	depends on BUSYBOX_CONFIG_ASH
 	help
 	  Enable support for echo, builtin to ash.
 
+config BUSYBOX_CONFIG_ASH_BUILTIN_PRINTF
+	bool "Builtin version of 'printf'"
+	default y
+	depends on BUSYBOX_CONFIG_ASH
+	help
+	  Enable support for printf, builtin to ash.
+
 config BUSYBOX_CONFIG_ASH_BUILTIN_TEST
 	bool "Builtin version of 'test'"
 	default y
-	select BUSYBOX_CONFIG_TEST
 	depends on BUSYBOX_CONFIG_ASH
 	help
 	  Enable support for test, builtin to ash.
@@ -141,14 +118,14 @@ config BUSYBOX_CONFIG_ASH_OPTIMIZE_FOR_SIZE
 	  Compile ash for reduced size at the price of speed.
 
 config BUSYBOX_CONFIG_ASH_RANDOM_SUPPORT
-	bool "Pseudorandom generator and variable $RANDOM"
+	bool "Pseudorandom generator and $RANDOM variable"
 	default n
 	depends on BUSYBOX_CONFIG_ASH
 	help
 	  Enable pseudorandom generator and dynamic variable "$RANDOM".
 	  Each read of "$RANDOM" will generate a new pseudorandom value.
 	  You can reset the generator by using a specified start value.
-	  After "unset RANDOM" then generator will switch off and this
+	  After "unset RANDOM" the generator will switch off and this
 	  variable will no longer have special treatment.
 
 config BUSYBOX_CONFIG_ASH_EXPAND_PRMT
@@ -156,46 +133,51 @@ config BUSYBOX_CONFIG_ASH_EXPAND_PRMT
 	default y
 	depends on BUSYBOX_CONFIG_ASH
 	help
-	  "PS#" may be contain volatile content, such as backquote commands.
+	  "PS#" may contain volatile content, such as backquote commands.
 	  This option recreates the prompt string from the environment
 	  variable each time it is displayed.
 
 config BUSYBOX_CONFIG_HUSH
 	bool "hush"
 	default n
-	select BUSYBOX_CONFIG_TRUE
-	select BUSYBOX_CONFIG_FALSE
-	select BUSYBOX_CONFIG_TEST
 	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
-	  options such as if/then/elif/else/fi, for/in/do/done, while loops,
-	  etc.
+	  hush is a small shell (22k). It handles the normal flow control
+	  constructs such as if/then/elif/else/fi, for/in/do/done, while loops,
+	  case/esac. Redirections, here documents, $((arithmetic))
+	  and functions are supported.
+
+	  It will compile and work on no-mmu systems.
+
+	  It does not handle select, aliases, brace expansion,
+	  tilde expansion, &>file and >&file redirection of stdout+stderr.
 
-	  It does not handle case/esac, select, function, here documents ( <<
-	  word ), arithmetic expansion, aliases, brace expansion, tilde
-	  expansion, &> and >& redirection of stdout+stderr, etc.
+config BUSYBOX_CONFIG_HUSH_BASH_COMPAT
+	bool "bash-compatible extensions"
+	default y
+	depends on BUSYBOX_CONFIG_HUSH
+	help
+	  Enable bash-compatible extensions.
 
 config BUSYBOX_CONFIG_HUSH_HELP
 	bool "help builtin"
-	default n
+	default y
 	depends on BUSYBOX_CONFIG_HUSH
 	help
 	  Enable help builtin in hush. Code size + ~1 kbyte.
 
 config BUSYBOX_CONFIG_HUSH_INTERACTIVE
 	bool "Interactive mode"
-	default n
+	default y
 	depends on BUSYBOX_CONFIG_HUSH
 	help
 	  Enable interactive mode (prompt and command editing).
 	  Without this, hush simply reads and executes commands
-	  from stdin just like a shell script from the file.
+	  from stdin just like a shell script from a file.
 	  No prompt, no PS1/PS2 magic shell variables.
 
 config BUSYBOX_CONFIG_HUSH_JOB
 	bool "Job control"
-	default n
+	default y
 	depends on BUSYBOX_CONFIG_HUSH_INTERACTIVE
 	help
 	  Enable job control: Ctrl-Z backgrounds, Ctrl-C interrupts current
@@ -206,56 +188,99 @@ config BUSYBOX_CONFIG_HUSH_JOB
 
 config BUSYBOX_CONFIG_HUSH_TICK
 	bool "Process substitution"
-	default n
+	default y
 	depends on BUSYBOX_CONFIG_HUSH
 	help
 	  Enable process substitution `command` and $(command) in hush.
 
 config BUSYBOX_CONFIG_HUSH_IF
 	bool "Support if/then/elif/else/fi"
-	default n
+	default y
 	depends on BUSYBOX_CONFIG_HUSH
 	help
 	  Enable if/then/elif/else/fi in hush.
 
 config BUSYBOX_CONFIG_HUSH_LOOPS
 	bool "Support for, while and until loops"
-	default n
+	default y
 	depends on BUSYBOX_CONFIG_HUSH
 	help
 	  Enable for, while and until loops in hush.
 
-config BUSYBOX_CONFIG_LASH
-	bool "lash"
+config BUSYBOX_CONFIG_HUSH_CASE
+	bool "Support case ... esac statement"
+	default y
+	depends on BUSYBOX_CONFIG_HUSH
+	help
+	  Enable case ... esac statement in hush. +400 bytes.
+
+config BUSYBOX_CONFIG_HUSH_FUNCTIONS
+	bool "Support funcname() { commands; } syntax"
+	default y
+	depends on BUSYBOX_CONFIG_HUSH
+	help
+	  Enable support for shell functions in hush. +800 bytes.
+
+config BUSYBOX_CONFIG_HUSH_LOCAL
+	bool "Support local builtin"
+	default y
+	depends on BUSYBOX_CONFIG_HUSH_FUNCTIONS
+	help
+	  Enable support for local variables in functions.
+
+config BUSYBOX_CONFIG_HUSH_EXPORT_N
+	bool "Support export '-n' option"
+	default y
+	depends on BUSYBOX_CONFIG_HUSH
+	help
+	  Enable support for export '-n' option in hush. It is a bash extension.
+
+config BUSYBOX_CONFIG_HUSH_RANDOM_SUPPORT
+	bool "Pseudorandom generator and $RANDOM variable"
 	default n
-	select BUSYBOX_CONFIG_TRUE
-	select BUSYBOX_CONFIG_FALSE
-	select BUSYBOX_CONFIG_TEST
+	depends on BUSYBOX_CONFIG_HUSH
 	help
-	  lash is the very smallest shell (adds just 10k) and it is quite
-	  usable as a command prompt, but it is not suitable for any but the
-	  most trivial scripting (such as an initrd that calls insmod a few
-	  times) since it does not understand any Bourne shell grammar.  It
-	  does handle pipes, redirects, and job control though.  Adding in
-	  command editing makes it a very nice lightweight command prompt.
+	  Enable pseudorandom generator and dynamic variable "$RANDOM".
+	  Each read of "$RANDOM" will generate a new pseudorandom value.
 
+config BUSYBOX_CONFIG_LASH
+	bool "lash (deprecated: aliased to hush)"
+	default n
+	select BUSYBOX_CONFIG_HUSH
+	help
+	  lash is deprecated and will be removed, please migrate to hush.
 
 config BUSYBOX_CONFIG_MSH
-	bool "msh"
+	bool "msh (deprecated: please use hush)"
 	default n
-	select BUSYBOX_CONFIG_TRUE
-	select BUSYBOX_CONFIG_FALSE
-	select BUSYBOX_CONFIG_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
-	  shell to do.  It is not always pedantically correct about Bourne
-	  shell grammar (try running the shell testscript "tests/sh.testcases"
-	  on it and compare vs bash) but for most things it works quite well.
-	  It also uses only vfork, so it can be used on uClinux systems.
-
-comment "Bourne Shell Options"
-	depends on BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH
+	select BUSYBOX_CONFIG_HUSH
+	help
+	  msh is deprecated and will be removed, please migrate to hush.
+	  If there is a feature msh has but hush does not, please let us know.
+
+#	  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
+#	  shell to do. It is not always pedantically correct about Bourne
+#	  shell grammar (try running the shell testscript "tests/sh.testcases"
+#	  on it and compare vs bash) but for most things it works quite well.
+#	  It uses only vfork, so it can be used on uClinux systems.
+
+
+config BUSYBOX_CONFIG_SH_MATH_SUPPORT
+	bool "POSIX math support"
+	default y
+	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_HUSH
+	help
+	  Enable math support in the shell via $((...)) syntax.
+
+config BUSYBOX_CONFIG_SH_MATH_SUPPORT_64
+	bool "Extend POSIX math support to 64 bit"
+	default y
+	depends on BUSYBOX_CONFIG_SH_MATH_SUPPORT
+	help
+	  Enable 64-bit math support in the shell. This will make the shell
+	  slightly larger, but will allow computation with very large numbers.
+	  This is not in POSIX, so do not rely on this in portable code.
 
 config BUSYBOX_CONFIG_FEATURE_SH_EXTRA_QUIET
 	bool "Hide message on interactive shell startup"
@@ -270,11 +295,11 @@ config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE
 	depends on (BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
 	help
 	  This option causes busybox shells to use busybox applets
-	  in preference to executables in the PATH whenever possible.  For
+	  in preference to executables in the PATH whenever possible. For
 	  example, entering the command 'ifconfig' into the shell would cause
-	  busybox to use the ifconfig busybox applet.  Specifying the fully
+	  busybox to use the ifconfig busybox applet. Specifying the fully
 	  qualified executable name, such as '/sbin/ifconfig' will still
-	  execute the /sbin/ifconfig executable on the filesystem.  This option
+	  execute the /sbin/ifconfig executable on the filesystem. This option
 	  is generally used when creating a statically linked version of busybox
 	  for use as a rescue shell, in the event that you screw up your system.
 
@@ -288,15 +313,32 @@ config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE
 	  started this way).
 # untrue?
 #	  Note that this will *also* cause applets to take precedence
-#	  over shell builtins of the same name.  So turning this on will
+#	  over shell builtins of the same name. So turning this on will
 #	  eliminate any performance gained by turning on the builtin "echo"
 #	  and "test" commands in ash.
 # untrue?
 #	  Note that when using this option, the shell will attempt to directly
-#	  run '/bin/busybox'.  If you do not have the busybox binary sitting in
+#	  run '/bin/busybox'. If you do not have the busybox binary sitting in
 #	  that exact location with that exact name, this option will not work at
 #	  all.
 
+config BUSYBOX_CONFIG_FEATURE_SH_NOFORK
+	bool "Run 'nofork' applets directly"
+	default n
+	depends on (BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
+	help
+	  This option causes busybox shells [currently only ash]
+	  to not execute typical fork/exec/wait sequence, but call <applet>_main
+	  directly, if possible. (Sometimes it is not possible: for example,
+	  this is not possible in pipes).
+
+	  This will be done only for some applets (those which are marked
+	  NOFORK in include/applets.h).
+
+	  This may significantly speed up some shell scripts.
+
+	  This feature is relatively new. Use with care.
+
 config BUSYBOX_CONFIG_CTTYHACK
 	bool "cttyhack"
 	default n