diff --git a/20_memtest86+ b/20_memtest86+ index 5d0e53e..185d837 100644 --- a/20_memtest86+ +++ b/20_memtest86+ @@ -44,7 +44,7 @@ if grub_file_is_not_garbage "$memtest" ; then printf "menuentry '%s' %s \$menuentry_id_option '%s' {\n" "${OS}" "${CLASS}" "memtest-$boot_device_id" prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")" printf '%s\n' "${prepare_boot_cache}" - message="$(gettext_printf "Loading memtest ...\n")" + message="$(gettext_printf "Loading memtest ...\n" | grub_quote)" cat << EOF echo '$message' linux16 ${rel_dirname}/${basename} diff --git a/grub2-quote-messages-in-grub.cfg.patch b/grub2-quote-messages-in-grub.cfg.patch new file mode 100644 index 0000000..15fd0b5 --- /dev/null +++ b/grub2-quote-messages-in-grub.cfg.patch @@ -0,0 +1,107 @@ +From: Andrey Borzenkov +Date: Mon Nov 19 16:40:25 UTC 2012 +Subject: properly quote translated strings in grub.cfg + +References: bnc#790195 +Patch-Mainline: no + +Not all translated strings in grub.cfg were properly quoted. This +resulted in parser errors for languages that contained literal single +quote in translations. + +Additionally fix grub_quote function; it had too many levels of quoting +(fixed upstream). + +Index: grub-2.00/util/grub.d/10_hurd.in +=================================================================== +--- grub-2.00.orig/util/grub.d/10_hurd.in ++++ grub-2.00/util/grub.d/10_hurd.in +@@ -109,7 +109,7 @@ EOF + fi + + prepare_grub_to_access_device "${GRUB_DEVICE_BOOT}" | sed -e "s/^/\t/"|sed "s/^/$submenu_indentation/" +- message="$(gettext_printf "Loading GNU Mach ...")" ++ message="$(gettext_printf "Loading GNU Mach ..." | grub_quote)" + + if [ x$type = xrecovery ] ; then + opts="-s" +@@ -125,7 +125,7 @@ EOF + save_default_entry | sed -e "s/^/\t/"| sed "s/^/$submenu_indentation/" + fi + prepare_grub_to_access_device "${GRUB_DEVICE}" | sed -e "s/^/\t/"| sed "s/^/$submenu_indentation/" +- message="$(gettext_printf "Loading the Hurd ...")" ++ message="$(gettext_printf "Loading the Hurd ..." | grub_quote)" + if [ x$type = xrecovery ] ; then + opts= + else +Index: grub-2.00/util/grub.d/10_kfreebsd.in +=================================================================== +--- grub-2.00.orig/util/grub.d/10_kfreebsd.in ++++ grub-2.00/util/grub.d/10_kfreebsd.in +@@ -98,7 +98,7 @@ kfreebsd_entry () + fi + + printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/" +- message="$(gettext_printf "Loading kernel of FreeBSD %s ..." ${version})" ++ message="$(gettext_printf "Loading kernel of FreeBSD %s ..." ${version} | grub_quote)" + sed "s/^/$submenu_indentation/" << EOF + echo '$message' + kfreebsd ${rel_dirname}/${basename} ${args} +Index: grub-2.00/util/grub.d/10_linux.in +=================================================================== +--- grub-2.00.orig/util/grub.d/10_linux.in ++++ grub-2.00/util/grub.d/10_linux.in +@@ -132,14 +132,14 @@ linux_entry () + fi + printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/" + fi +- message="$(gettext_printf "Loading Linux %s ..." ${version})" ++ message="$(gettext_printf "Loading Linux %s ..." ${version} | grub_quote)" + sed "s/^/$submenu_indentation/" << EOF + echo '$message' + linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ${args} + EOF + if test -n "${initrd}" ; then + # TRANSLATORS: ramdisk isn't identifier. Should be translated. +- message="$(gettext_printf "Loading initial ramdisk ...")" ++ message="$(gettext_printf "Loading initial ramdisk ..." | grub_quote)" + sed "s/^/$submenu_indentation/" << EOF + echo '$message' + initrd ${rel_dirname}/${initrd} +Index: grub-2.00/util/grub.d/20_linux_xen.in +=================================================================== +--- grub-2.00.orig/util/grub.d/20_linux_xen.in ++++ grub-2.00/util/grub.d/20_linux_xen.in +@@ -117,8 +117,8 @@ linux_entry () + prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")" + fi + printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/" +- xmessage="$(gettext_printf "Loading Xen %s ..." ${xen_version})" +- lmessage="$(gettext_printf "Loading Linux %s ..." ${version})" ++ xmessage="$(gettext_printf "Loading Xen %s ..." ${xen_version} | grub_quote)" ++ lmessage="$(gettext_printf "Loading Linux %s ..." ${version} | grub_quote)" + sed "s/^/$submenu_indentation/" << EOF + echo '$xmessage' + multiboot ${rel_xen_dirname}/${xen_basename} placeholder ${xen_args} +@@ -127,7 +127,7 @@ linux_entry () + EOF + if test -n "${initrd}" ; then + # TRANSLATORS: ramdisk isn't identifier. Should be translated. +- message="$(gettext_printf "Loading initial ramdisk ...")" ++ message="$(gettext_printf "Loading initial ramdisk ..." | grub_quote)" + sed "s/^/$submenu_indentation/" << EOF + echo '$message' + module ${rel_dirname}/${initrd} +Index: grub-2.00/util/grub-mkconfig_lib.in +=================================================================== +--- grub-2.00.orig/util/grub-mkconfig_lib.in ++++ grub-2.00/util/grub-mkconfig_lib.in +@@ -265,7 +265,7 @@ version_find_latest () + # this function in a printf format string. + + grub_quote () { +- sed "s/'/'\\\\\\\\''/g" ++ sed "s/'/'\\\\''/g" + } + + gettext_quoted () { diff --git a/grub2.changes b/grub2.changes index dfe5f96..89940e9 100644 --- a/grub2.changes +++ b/grub2.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Mon Nov 19 16:40:25 UTC 2012 - arvidjaar@gmail.com + +- quote localized "Loading ..." messages in grub.cfg (bnc#790195) + ------------------------------------------------------------------- Mon Nov 5 08:17:26 UTC 2012 - aj@suse.de diff --git a/grub2.spec b/grub2.spec index ea43cef..83c2d6c 100644 --- a/grub2.spec +++ b/grub2.spec @@ -105,6 +105,7 @@ Patch16: grub2-fix-Grub2-with-SUSE-Xen-package-install.patch Patch17: grub2-pass-corret-root-for-nfsroot.patch Patch18: grub2-fix-locale-en.mo.gz-not-found-error-message.patch Patch19: grub2-fix-build-error-on-flex-2.5.37.patch +Patch20: grub2-quote-messages-in-grub.cfg.patch PreReq: perl-Bootloader Requires: gettext-runtime %if 0%{?suse_version} >= 1140 @@ -180,6 +181,7 @@ mv docs/grub.texi docs/grub2.texi %patch17 -p1 %patch18 -p1 %patch19 -p1 +%patch20 -p1 cd .. # README.openSUSE