#
# 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"

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

