summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarren Tucker <dtucker@dtucker.net>2021-09-24 08:04:14 +1000
committerDarren Tucker <dtucker@dtucker.net>2021-09-24 08:06:48 +1000
commitf7039541570d4b66d76e6f574544db176d8d5c02 (patch)
tree416f9d064ac1041cd64f74d8db2365215e2ef118
parentf6a660e5bf28a01962af87568e118a2d2e79eaa0 (diff)
Replacement function for buggy fgrep.
GNU (f)grep <=2.18, as shipped by FreeBSD<=12 and NetBSD<=9 will occasionally fail to find ssh host keys in the hostkey-rotate test. If we have those versions, use awk instead.
-rw-r--r--regress/test-exec.sh19
1 files changed, 19 insertions, 0 deletions
diff --git a/regress/test-exec.sh b/regress/test-exec.sh
index 415422ef..5fcc3fcf 100644
--- a/regress/test-exec.sh
+++ b/regress/test-exec.sh
@@ -79,6 +79,25 @@ if test "x${EGREP}" != "x"; then
}
fi
+#
+# GNU (f)grep <=2.18, as shipped by FreeBSD<=12 and NetBSD<=9 will occasionally
+# fail to find ssh host keys in the hostkey-rotate test. If we have those
+# versions, use awk instead.
+# See # https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=258616
+#
+case `grep --version 2>&1 | awk '/GNU grep/{print $4}'` in
+2.19) fgrep=good ;;
+1.*|2.?|2.?.?|2.1?) fgrep=bad ;; # stock GNU grep
+2.5.1*) fgrep=bad ;; # FreeBSD and NetBSD
+*) fgrep=good ;;
+esac
+if test "x$fgrep" = "xbad"; then
+ fgrep()
+{
+ awk 'BEGIN{e=1} {if (index($0,"'$1'")>0){e=0;print}} END{exit e}' $2
+}
+fi
+
SRC=`dirname ${SCRIPT}`
# defaults