In my first patch I rather stupidly asked gettext for a translation of "%s". Updated patch below does not have this mistake.
-- Jordan Uggla (Jordan_U on irc.freenode.net) === modified file 'util/grub-mkconfig.in' --- util/grub-mkconfig.in 2012-02-26 17:37:54 +0000 +++ util/grub-mkconfig.in 2012-02-27 08:22:48 +0000 @@ -206,7 +206,8 @@ GRUB_INIT_TUNE \ GRUB_SAVEDEFAULT \ GRUB_ENABLE_CRYPTODISK \ - GRUB_BADRAM + GRUB_BADRAM \ + GRUB_ENABLE_SUBMENUS if test "x${grub_cfg}" != "x"; then rm -f "${grub_cfg}.new" === modified file 'util/grub.d/10_linux.in' --- util/grub.d/10_linux.in 2012-02-26 16:28:05 +0000 +++ util/grub.d/10_linux.in 2012-02-29 03:03:01 +0000 @@ -63,15 +63,25 @@ { os="$1" version="$2" - recovery="$3" + type="$3" args="$4" - if ${recovery} ; then - title="$(gettext_quoted "%s, with Linux %s (recovery mode)")" + + case $type in + simple) + title="%s" ;; + recovery) + title="$(gettext_quoted "%s, with Linux %s (recovery mode)")" ;; + *) + title="$(gettext_quoted "%s, with Linux %s")" ;; + esac + + if [ "x$type" = "xsimple" ]; then + printf "menuentry '${title}' ${CLASS} {\n" "${os}" else - title="$(gettext_quoted "%s, with Linux %s")" + printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}" fi - printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}" - if ! ${recovery} ; then + + if [ x$type != xrecovery ] ; then save_default_entry | sed -e "s/^/\t/" fi @@ -145,6 +155,11 @@ prepare_boot_cache= prepare_root_cache= +# Extra indentation to add to menu entries in a submenu. We're not in a submenu +# yet, so it's empty. In a submenu it will be equal to '\t' (one tab). +submenu_indentation="" + +is_first_entry=true while [ "x$list" != "x" ] ; do linux=`version_find_latest $list` gettext_printf "Found linux image: %s\n" "$linux" >&2 @@ -189,12 +204,32 @@ linux_root_device_thisversion=${GRUB_DEVICE} fi - linux_entry "${OS}" "${version}" false \ - "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" + if [ "x$GRUB_ENABLE_SUBMENUS" = xtrue -a "x$is_first_entry" = xtrue ]; then + linux_entry "${OS}" "${version}" simple \ + "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" + + submenu_indentation="\t" + + cat << EOF +submenu '$(gettext_quoted "Advanced options for ${OS}")' { +EOF + fi + + linux_entry "${OS}" "${version}" advanced \ + "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" \ + | sed "s/^/$submenu_indentation/" if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then - linux_entry "${OS}" "${version}" true \ - "single ${GRUB_CMDLINE_LINUX}" + linux_entry "${OS}" "${version}" recovery \ + "single ${GRUB_CMDLINE_LINUX}" \ + | sed "s/^/$submenu_indentation/" fi list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '` + is_first_entry=false done + +# If submenus are enabled, and at least one kernel was found, then we need to +# add a closing '}' for the submenu command. +if [ x"$GRUB_ENABLE_SUBMENUS" = xtrue -a x"$is_first_entry" != xtrue ]; then + echo '}' +fi _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel