aboutsummaryrefslogtreecommitdiff
path: root/contrib/bmake/mk/meta2deps.sh
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/bmake/mk/meta2deps.sh')
-rwxr-xr-xcontrib/bmake/mk/meta2deps.sh28
1 files changed, 24 insertions, 4 deletions
diff --git a/contrib/bmake/mk/meta2deps.sh b/contrib/bmake/mk/meta2deps.sh
index 4b7f9588987a..4c1b674f7b63 100755
--- a/contrib/bmake/mk/meta2deps.sh
+++ b/contrib/bmake/mk/meta2deps.sh
@@ -75,8 +75,10 @@
# RCSid:
-# $Id: meta2deps.sh,v 1.18 2022/01/28 21:17:43 sjg Exp $
+# $Id: meta2deps.sh,v 1.21 2024/02/17 17:26:57 sjg Exp $
+# SPDX-License-Identifier: BSD-2-Clause
+#
# Copyright (c) 2010-2013, Juniper Networks, Inc.
# All rights reserved.
#
@@ -137,6 +139,13 @@ add_list() {
eval "$name=\"$list\""
}
+# some Linux systems have deprecated egrep in favor of grep -E
+# but not everyone supports that
+case "`echo bmake | egrep 'a|b' 2>&1`" in
+bmake) ;;
+*) egrep() { grep -E "$@"; }
+esac
+
_excludes_f() {
egrep -v "$EXCLUDES"
}
@@ -239,8 +248,8 @@ meta2deps() {
;;
*) cat /dev/null "$@";;
esac 2> /dev/null |
- sed -e 's,^CWD,C C,;/^[CREFLMVX] /!d' -e "s,',,g" |
- $_excludes | ( version=no epids= xpids=
+ sed -e 's,^CWD,C C,;/^[#CREFLMVX] /!d' -e "s,',,g" |
+ $_excludes | ( version=no epids= xpids= eof_token=no
while read op pid path junk
do
: op=$op pid=$pid path=$path
@@ -258,10 +267,15 @@ meta2deps() {
*) ;;
esac
version=0
+ case "$eof_token" in
+ no) ;; # ignore
+ 0) error "truncated filemon data";;
+ esac
+ eof_token=0
continue
;;
$pid,$pid) ;;
- *)
+ [1-9]*)
case "$lpid" in
"") ;;
*) eval ldir_$lpid=$ldir;;
@@ -289,6 +303,8 @@ meta2deps() {
eval cwd_$path=$cwd ldir_$path=$ldir
continue
;;
+ \#,bye) eof_token=1; continue;;
+ \#*) continue;;
*) dir=${path%/*}
case "$op" in
E) # setid apps get no tracing so we won't see eXit
@@ -392,6 +408,10 @@ meta2deps() {
case "$version" in
0) error "no filemon data";;
esac
+ : eof_token=$eof_token
+ case "$eof_token" in
+ 0) error "truncated filemon data";;
+ esac
for p in $epids
do
: p=$p