diff -Naur grub-2.00/util/grub.d/10_kfreebsd.in grub-2.00-magellan/util/grub.d/10_kfreebsd.in --- grub-2.00/util/grub.d/10_kfreebsd.in 2012-03-04 22:02:30.000000000 +0100 +++ grub-2.00-magellan/util/grub.d/10_kfreebsd.in 2012-07-17 16:49:58.248982642 +0200 @@ -227,7 +227,7 @@ kfreebsd_entry "${OS}" "${version}" recovery "-s" fi - list=`echo $list | tr ' ' '\n' | grep -vx $kfreebsd | tr '\n' ' '` + list=`echo $list | tr ' ' '\n' | grepvx $kfreebsd | tr '\n' ' '` is_first_entry=false done diff -Naur grub-2.00/util/grub.d/10_linux.in grub-2.00-magellan/util/grub.d/10_linux.in --- grub-2.00/util/grub.d/10_linux.in 2012-07-17 16:48:47.471980599 +0200 +++ grub-2.00-magellan/util/grub.d/10_linux.in 2012-07-17 16:51:02.465983665 +0200 @@ -108,8 +108,8 @@ # FIXME: We need an interface to select vesafb in case efifb can't be used. if [ "x$GRUB_GFXPAYLOAD_LINUX" = x ]; then echo " load_video" | sed "s/^/$submenu_indentation/" - 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 echo " set gfxpayload=keep" | sed "s/^/$submenu_indentation/" fi else @@ -246,7 +246,7 @@ "single ${GRUB_CMDLINE_LINUX}" fi - list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '` + list=`echo $list | tr ' ' '\n' | grepvx $linux | tr '\n' ' '` is_first_entry=false done diff -Naur grub-2.00/util/grub.d/20_linux_xen.in grub-2.00-magellan/util/grub.d/20_linux_xen.in --- grub-2.00/util/grub.d/20_linux_xen.in 2012-07-17 16:48:47.472980664 +0200 +++ grub-2.00-magellan/util/grub.d/20_linux_xen.in 2012-07-17 16:51:51.722982822 +0200 @@ -150,7 +150,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 @@ -254,12 +254,12 @@ "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 if [ x"$is_first_entry" != xtrue ]; then echo ' }' fi - 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 # If at least one kernel was found, then we need to diff -Naur grub-2.00/util/grub-install.in grub-2.00-magellan/util/grub-install.in --- grub-2.00/util/grub-install.in 2012-07-17 16:43:22.095982796 +0200 +++ grub-2.00-magellan/util/grub-install.in 2012-07-17 16:53:32.643985646 +0200 @@ -64,6 +64,21 @@ 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}/conf.d/grub" ; then . "${sysconfdir}/conf.d/grub" @@ -629,7 +644,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-2.00/util/grub-mkconfig_lib.in grub-2.00-magellan/util/grub-mkconfig_lib.in --- grub-2.00/util/grub-mkconfig_lib.in 2012-06-27 17:27:53.000000000 +0200 +++ grub-2.00-magellan/util/grub-mkconfig_lib.in 2012-07-17 16:54:47.022978540 +0200 @@ -220,7 +220,7 @@ version_test_numeric_a="$version_test_numeric_b" version_test_numeric_b="$version_test_numeric_c" fi - if (echo "$version_test_numeric_a" ; echo "$version_test_numeric_b") | version_sort | head -n 1 | grep -qx "$version_test_numeric_b" ; then + if (echo "$version_test_numeric_a" ; echo "$version_test_numeric_b") | version_sort | head -n 1 | grepqx "$version_test_numeric_b" ; then return 0 else return 1 @@ -349,3 +349,38 @@ cat fi } + +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 +} +