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

