diff options
Diffstat (limited to 'contrib/bmake/mk/meta2deps.sh')
-rwxr-xr-x | contrib/bmake/mk/meta2deps.sh | 28 |
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 |