blob: beca5c2785a9a67e9706966c7fd5c11674a56ff0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# $NetBSD: check-portability.sh,v 1.8 2008/11/18 21:58:22 rillig Exp $
#
# This program checks all files in the current directory and any
# subdirectories for portability issues that are likely to result in
# false assumptions by the package.
#
# The most prominent example is the "==" operator of test(1), which is
# only implemented by bash and some versions of the ksh.
#
# usage: check-portability.sh
#
set -eu
checkdir=`dirname "$0"`
. "$checkdir/check-subr.sh"
cs_setprogname "$0"
: ${SKIP_FILTER:=""}
# usage: check_shell <fname>
check_shell() {
env \
CK_FNAME="$1" \
CK_PROGNAME="check-portability.awk" \
awk -f "$checkdir/check-subr.awk" \
-f "$checkdir/check-portability.awk" \
< "$1" 1>&2 \
|| cs_exitcode=1
}
find * -type f -print 2>/dev/null \
| {
opsys=`uname -s`-`uname -r`
while read fname; do
skip=no
eval "case \"\$fname\" in $SKIP_FILTER *.orig) skip=yes;; esac"
[ $skip = no ] || continue
case "$opsys" in
SunOS-5.9)
# See also (if you can):
# http://sunsolve.sun.com/search/document.do?assetkey=1-1-4250902-1
firstline=`sed 1q < "$fname"`
;;
*) read firstline < "$fname" || continue
;;
esac
case "$firstline" in
"#!"*"/bin/sh")
check_shell "$fname"
case "$opsys" in
SunOS-*)
echo "WARNING: [check-portability.sh] $fname has /bin/sh as interpreter, which is horribly broken on Solaris." 1>&2
;;
esac
;;
esac
done
cs_exit
}
|