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 () {