egrep has been deprecated in favor of grep -E for a long time, and the
next grep release (3.8 or 4.0) will print a warning of egrep is used.
Stop using egrep so we won't see the warning.

Some non-POSIX grep implementations does not support -E option, so for
test_summary and warn_summary we prefer grep -E, but fallback to egrep
if grep -E does not work.  For check_GNU_style.sh, I think it is only
used by developers so hard coding grep -E is OK.

contrib/ChangeLog:

        * check_GNU_style.sh: Use grep -E instead of egrep.
        * test_summary: Use grep -E instead of egrep if it works.
        * warn_summary: Likewise.
---
 contrib/check_GNU_style.sh | 10 +++++-----
 contrib/test_summary       | 13 ++++++++++++-
 contrib/warn_summary       | 13 ++++++++++++-
 3 files changed, 29 insertions(+), 7 deletions(-)

diff --git a/contrib/check_GNU_style.sh b/contrib/check_GNU_style.sh
index fb7494661ee..535be65f063 100755
--- a/contrib/check_GNU_style.sh
+++ b/contrib/check_GNU_style.sh
@@ -113,7 +113,7 @@ g (){
 
     local found=false
     cat $inp \
-       | egrep $color -- "$arg" \
+       | grep -E $color -- "$arg" \
        > "$tmp" && found=true
 
     if $found; then
@@ -130,8 +130,8 @@ ag (){
 
     local found=false
     cat $inp \
-       | egrep $color -- "$arg1" \
-       | egrep $color -- "$arg2" \
+       | grep -E $color -- "$arg1" \
+       | grep -E $color -- "$arg2" \
        > "$tmp" && found=true
 
     if $found; then
@@ -148,8 +148,8 @@ vg (){
 
     local found=false
     cat $inp \
-       | egrep -v -- "$varg" \
-       | egrep $color -- "$arg" \
+       | grep -E -v -- "$varg" \
+       | grep -E $color -- "$arg" \
        > "$tmp" && found=true
 
     if $found; then
diff --git a/contrib/test_summary b/contrib/test_summary
index 5760b053ec2..f17bf54f8ec 100755
--- a/contrib/test_summary
+++ b/contrib/test_summary
@@ -54,6 +54,17 @@ if test -z "$AWK" ; then
   done
 fi
 
+# Prefer "grep -E" which should work with POSIX-conform grep, but fallback
+# to "egrep" (which is deprecated for a long time) if grep does not support
+# -E.
+if test -z "$EGREP" ; then
+  if echo a | grep -E '(a|b)' > /dev/null 2> /dev/null; then
+    EGREP="grep -E"
+  else
+    EGREP="egrep"
+  fi
+fi
+
 : ${filesuffix=}; export filesuffix
 : ${move=true}; export move
 : ${forcemail=false}; export forcemail
@@ -77,7 +88,7 @@ for file in $files; do
     { $anychange ||
       anychange=`diff $file.sent $file 2>/dev/null |
        if test ! -f $file.sent ||
-          egrep '^[<>] (XPASS|FAIL)' >/dev/null; then
+          $EGREP '^[<>] (XPASS|FAIL)' >/dev/null; then
            echo true
        else
            echo false
diff --git a/contrib/warn_summary b/contrib/warn_summary
index d4c8b6cdb19..afa11802ee1 100755
--- a/contrib/warn_summary
+++ b/contrib/warn_summary
@@ -57,7 +57,7 @@ subdirectoryFilter()
   else
     if test "$filter" = nosub ; then
       # Omit all subdirectories.
-      egrep -v '/gcc/(ch|cp|f|fortran|ada|intl|fixinc)/'
+      $EGREP -v '/gcc/(ch|cp|f|fortran|ada|intl|fixinc)/'
     else
       # Pass through only subdir $filter.
       grep "/gcc/$filter/"
@@ -155,6 +155,17 @@ if test -z "$AWK" ; then
   done
 fi
 
+# Prefer "grep -E" which should work with POSIX-conform grep, but fallback
+# to "egrep" (which is deprecated for a long time) if grep does not support
+# -E.
+if test -z "$EGREP" ; then
+  if echo a | grep -E '(a|b)' > /dev/null 2> /dev/null; then
+    EGREP="grep -E"
+  else
+    EGREP="egrep"
+  fi
+fi
+
 # Parse command line arguments.
 while test -n "$1" ; do
  case "$1" in
-- 
2.36.1


Reply via email to