#
# For a description of the syntax of this configuration file,
# see scripts/kbuild/config-language.txt.
#

mainmenu_option next_comment
comment 'Bourne Shell'

choice 'Choose your default shell' \
    "ash                                    CONFIG_FEATURE_SH_IS_ASH  \
    hush                                    CONFIG_FEATURE_SH_IS_HUSH \
    lash                                    CONFIG_FEATURE_SH_IS_LASH \
    msh                                     CONFIG_FEATURE_SH_IS_MSH  \
    none                                    CONFIG_FEATURE_SH_IS_NONE" \
    ash

if [ "$CONFIG_FEATURE_SH_IS_ASH" = "y" ] ; then
	define_bool CONFIG_ASH	y
fi
	
if [ "$CONFIG_FEATURE_SH_IS_HUSH" = "y" ] ; then
	define_bool CONFIG_HUSH	y
fi

if [ "$CONFIG_FEATURE_SH_IS_LASH" = "y" ] ; then
	define_bool CONFIG_LASH	y
fi

if [ "$CONFIG_FEATURE_SH_IS_MSH" = "y" ] ; then
	define_bool CONFIG_MSH	y
fi

bool 'ash'	    CONFIG_ASH
if [ "$CONFIG_ASH" = "y" ] ; then
	comment 'Ash Shell Options'
	bool 'Enable Job control'		CONFIG_ASH_JOB_CONTROL
	bool 'Enable alias support'		CONFIG_ASH_ALIAS
	bool 'Enable Posix math support'	CONFIG_ASH_MATH_SUPPORT
	bool 'Enable getopt builtin to parse positional parameters'		CONFIG_ASH_GETOPTS
	bool 'Enable cmdcmd to override shell builtins'		CONFIG_ASH_CMDCMD
	bool 'Check for new mail on interactive shells'		CONFIG_ASH_MAIL
	bool 'Optimize for size instead of speed'	CONFIG_ASH_OPTIMIZE_FOR_SIZE
	comment ''
fi

bool 'hush'	    CONFIG_HUSH
bool 'lash'	    CONFIG_LASH
bool 'msh'	    CONFIG_MSH

	
comment 'Bourne Shell Options'
bool 'command line editing'		CONFIG_FEATURE_COMMAND_EDITING
bool 'tab completion'			CONFIG_FEATURE_COMMAND_TAB_COMPLETION
bool 'username completion'		CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION
bool 'Standalone shell'			CONFIG_FEATURE_SH_STANDALONE_SHELL
bool 'Standalone shell -- applets always win'	CONFIG_FEATURE_SH_APPLETS_ALWAYS_WIN
bool 'Fancy shell prompts'	CONFIG_FEATURE_SH_FANCY_PROMPT
bool 'Hide message on interactive shell startup'	CONFIG_FEATURE_SH_EXTRA_QUIET

endmenu

