summaryrefslogtreecommitdiff
path: root/archivers/rar/files/check-ksyms.sh
diff options
context:
space:
mode:
Diffstat (limited to 'archivers/rar/files/check-ksyms.sh')
-rw-r--r--archivers/rar/files/check-ksyms.sh96
1 files changed, 96 insertions, 0 deletions
diff --git a/archivers/rar/files/check-ksyms.sh b/archivers/rar/files/check-ksyms.sh
new file mode 100644
index 00000000000..8e1fb3b569d
--- /dev/null
+++ b/archivers/rar/files/check-ksyms.sh
@@ -0,0 +1,96 @@
+#!/bin/sh
+#
+# $NetBSD: check-ksyms.sh,v 1.1 2007/08/22 16:43:36 jlam Exp $
+#
+# check-ksyms.sh verifies that the given symbols are found in the booted
+# kernel file.
+#
+
+: ${ECHO=echo}
+: ${GREP=grep}
+: ${GZIP_CMD=gzip}
+: ${NM=nm}
+: ${RM=rm}
+: ${TMPDIR=/tmp}
+
+self="check-ksyms"
+
+verbose=
+while [ $# -gt 0 ]; do
+ case $1 in
+ -v) verbose=yes; shift ;;
+ --) shift; break ;;
+ -*) ${ECHO} 1>&2 "$self [-v] symbol ..."; exit 2 ;;
+ *) break ;;
+ esac
+done
+
+# Locate kernel.
+PATH=/sbin:/usr/sbin:${PATH}; export PATH
+
+booted_kernel=
+kernlist="/netbsd /netbsd.gz /onetbsd /onetbsd.gz"
+kern=`sysctl -n machdep.booted_kernel 2>/dev/null`
+if [ -z "$kern" ]; then
+ kernlist="$kern $kernlist"
+fi
+for k in $kernlist; do
+ if [ -f "$k" ]; then
+ booted_kernel="$k"
+ break
+ fi
+done
+
+if [ -z "$booted_kernel" ]; then
+ ${ECHO} 1>&2 "$self: could not determine the booted kernel."
+ exit 2
+fi
+
+pattern=
+for symbol # in command-line arguments
+do
+ if [ -z "$pattern" ]; then
+ pattern="$symbol"
+ else
+ pattern="$pattern\|$symbol"
+ fi
+done
+
+# If there are no symbols to check, then exit with success.
+[ -n "$pattern" ] || exit 0
+
+if [ ! -d "${TMPDIR}" ]; then
+ ${ECHO} 1>&2 "$self: ${TMPDIR} does not exist."
+ exit 2
+fi
+
+ksymsfile="${TMPDIR}/ksyms.$self.$$"
+
+# Clean up when we receive the following signals: INT QUIT ABRT KILL TERM.
+trap "${RM} -f \"$ksymsfile\"" 2 3 6 9 15
+
+case $booted_kernel in
+*.gz) ${GZIP_CMD} -d < "$booted_kernel" | ${NM} > "$ksymsfile" ;;
+*) ${NM} "$booted_kernel" > "$ksymsfile" ;;
+esac
+
+# Loop through the symbols and check that each of them are in $ksymsfile.
+exitcode=0
+while [ $# -gt 0 ]; do
+ symbol="$1"; shift
+ if [ x"$verbose" = xyes ]; then
+ cmd="${GREP} \"$symbol\" \"$ksymsfile\" 2>/dev/null"
+ else
+ cmd="${GREP} \"$symbol\" \"$ksymsfile\" >/dev/null 2>&1"
+ fi
+ if eval $cmd; then
+ :
+ else
+ ${ECHO} 1>&2 "$self: symbol $symbol not found in $booted_kernel"
+ exitcode=1
+ break
+ fi
+done
+
+${RM} -f "$ksymsfile"
+exit $exitcode