#
# 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
else
	bool 'ash'	    CONFIG_ASH
fi

if [ "$CONFIG_FEATURE_SH_IS_HUSH" = "y" ] ; then
	define_bool CONFIG_HUSH	y
else
	bool 'hush'	    CONFIG_HUSH
fi

if [ "$CONFIG_FEATURE_SH_IS_LASH" = "y" ] ; then
	define_bool CONFIG_LASH	y
else
	bool 'lash'	    CONFIG_LASH
fi

if [ "$CONFIG_FEATURE_SH_IS_MSH" = "y" ] ; then
	define_bool CONFIG_MSH	y
else
	bool 'msh'	    CONFIG_MSH
fi


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

