diff -Naur grub-1.99/util/grub.d/10_kfreebsd.in grub-1.99-alx/util/grub.d/10_kfreebsd.in --- grub-1.99/util/grub.d/10_kfreebsd.in 2011-03-29 02:56:38.000000000 +0200 +++ grub-1.99-alx/util/grub.d/10_kfreebsd.in 2011-07-01 22:57:43.000000000 +0200 @@ -188,5 +188,5 @@ kfreebsd_entry "${OS}" "${version}" true "-s" fi - list=`echo $list | tr ' ' '\n' | grep -vx $kfreebsd | tr '\n' ' '` + list=`echo $list | tr ' ' '\n' | grepvx $kfreebsd | tr '\n' ' '` done diff -Naur grub-1.99/util/grub.d/10_linux.in grub-1.99-alx/util/grub.d/10_linux.in --- grub-1.99/util/grub.d/10_linux.in 2011-05-14 22:36:49.000000000 +0200 +++ grub-1.99-alx/util/grub.d/10_linux.in 2011-07-01 22:57:35.000000000 +0200 @@ -81,8 +81,8 @@ cat << EOF load_video EOF - if grep -qx "CONFIG_FB_EFI=y" "${config}" 2> /dev/null \ - && grep -qx "CONFIG_VT_HW_CONSOLE_BINDING=y" "${config}" 2> /dev/null; then + if grepqx "CONFIG_FB_EFI=y" "${config}" 2> /dev/null \ + && grepqx "CONFIG_VT_HW_CONSOLE_BINDING=y" "${config}" 2> /dev/null; then cat << EOF set gfxpayload=keep EOF @@ -195,5 +195,5 @@ "single ${GRUB_CMDLINE_LINUX}" fi - list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '` + list=`echo $list | tr ' ' '\n' | grepvx $linux | tr '\n' ' '` done diff -Naur grub-1.99/util/grub.d/20_linux_xen.in grub-1.99-alx/util/grub.d/20_linux_xen.in --- grub-1.99/util/grub.d/20_linux_xen.in 2011-04-13 21:20:29.000000000 +0200 +++ grub-1.99-alx/util/grub.d/20_linux_xen.in 2011-07-01 22:57:25.000000000 +0200 @@ -113,7 +113,7 @@ break fi done - if (grep -qx "CONFIG_XEN_DOM0=y" "${config}" 2> /dev/null || grep -qx "CONFIG_XEN_PRIVILEGED_GUEST=y" "${config}" 2> /dev/null); then echo -n "$i " ; fi + if (grepqx "CONFIG_XEN_DOM0=y" "${config}" 2> /dev/null || grepqx "CONFIG_XEN_PRIVILEGED_GUEST=y" "${config}" 2> /dev/null); then echo -n "$i " ; fi fi done` if [ "x${linux_list}" = "x" ] ; then @@ -167,8 +167,8 @@ "single ${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_XEN}" fi - list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '` + list=`echo $list | tr ' ' '\n' | grepvx $linux | tr '\n' ' '` done echo "}" - xen_list=`echo $xen_list | tr ' ' '\n' | grep -vx $current_xen | tr '\n' ' '` + xen_list=`echo $xen_list | tr ' ' '\n' | grepvx $current_xen | tr '\n' ' '` done diff -Naur grub-1.99/util/grub-install.in grub-1.99-alx/util/grub-install.in --- grub-1.99/util/grub-install.in 2011-04-03 15:36:21.000000000 +0200 +++ grub-1.99-alx/util/grub-install.in 2011-07-01 22:37:55.000000000 +0200 @@ -59,6 +59,22 @@ removable=no efi_quiet= +grepqx() +{ + local line="$1" + local file="$2" + local ret + + ret=$(sed -n "/^${line}$/p" ${file}) + if [[ -z ${ret} ]] + then + return 1 + else + return 0 + fi +} + + # Get GRUB_DISTRIBUTOR. if test -f "${sysconfdir}/default/grub" ; then . "${sysconfdir}/default/grub" @@ -510,7 +526,7 @@ if [ "x${devabstraction_module}" = "x" ] ; then if [ x"${install_device}" != x ]; then - if echo "${install_device}" | grep -qx "(.*)" ; then + if echo "${install_device}" | grepqx "(.*)" ; then install_drive="${install_device}" else install_drive="`"$grub_probe" --device-map="${device_map}" --target=drive --device "${install_device}"`" || exit 1 diff -Naur grub-1.99/util/grub-mkconfig_lib.in grub-1.99-alx/util/grub-mkconfig_lib.in --- grub-1.99/util/grub-mkconfig_lib.in 2011-04-10 15:29:35.000000000 +0200 +++ grub-1.99-alx/util/grub-mkconfig_lib.in 2011-07-02 16:03:20.000000000 +0200 @@ -163,7 +163,7 @@ a="$b" b="$c" fi - if (echo "$a" ; echo "$b") | sort -n | head -n 1 | grep -qx "$b" ; then + if (echo "$a" ; echo "$b") | sort -n | head -n 1 | grepqx "$b" ; then return 0 else return 1 @@ -225,3 +225,36 @@ done return 1 } +grepqx() +{ + local line="$1" + local file="$2" + local ret + + ret=$(sed -n "/^${line}$/p" ${file}) + if [[ -z ${ret} ]] + then + return 1 + else + return 0 + fi +} + +grepvx() +{ + local line="$1" + local file="$2" + local ret + + # fix / + line="$(echo ${line} | sed 's:/:\\/:g')" + + ret=$(sed "/^${line}$/d" ${file}) + if [[ -z ${ret} ]] + then + return 1 + else + echo "${ret}" + return 0 + fi +}