summaryrefslogtreecommitdiff
path: root/dialects/darwin/get-hdr-loc.sh
diff options
context:
space:
mode:
Diffstat (limited to 'dialects/darwin/get-hdr-loc.sh')
-rwxr-xr-xdialects/darwin/get-hdr-loc.sh119
1 files changed, 119 insertions, 0 deletions
diff --git a/dialects/darwin/get-hdr-loc.sh b/dialects/darwin/get-hdr-loc.sh
new file mode 100755
index 0000000..c0d9880
--- /dev/null
+++ b/dialects/darwin/get-hdr-loc.sh
@@ -0,0 +1,119 @@
+#!/bin/sh
+#
+# get-hdr-loc.sh -- get Darwin XNU kernel header file location
+#
+# Interactively requests the specification of the path to the host's Darwin
+# XNU kernel header files. Checks that path and returns it to the caller.
+#
+# Usage: file1 file2 ... fileN
+#
+# Where: file1 first header file needed
+# file2 second header file needed
+# ...
+# fileN last header file needed
+#
+# Exit:
+#
+# Exit code: 0 if path found; path returned on STDOUT
+#
+# 1 if path not found: error message returned
+# on STDOUT
+#
+#set -x # for DEBUGging
+
+# Check argument count. There must be at least one argument.
+
+if test $# -lt 1 # {
+then
+ echo "insufficient arguments: $#"
+ exit 1
+fi # }
+lst=$*
+
+# Request the path to the Darwin XNU kernel header files.
+
+trap 'stty echo; echo interrupted; exit 1' 1 2 3 15
+FOREVER=1
+while test $FOREVER -ge 1 # {
+do
+ if test $FOREVER -eq 1 # {
+ then
+ echo "---------------------------------------------------------------" 1>&2
+ echo "" 1>&2
+ echo "Lsof cannot find some Darwin XNU kernel header files it needs." 1>&2
+ echo "They should have already been downloaded from:" 1>&2
+ echo "" 1>&2
+ echo " http://www.opensource.apple.com/darwinsource/index.html" 1>&2
+ echo "" 1>&2
+ echo "and then installed. (See 00FAQ for download and installation" 1>&2
+ echo "instructions.)" 1>&2
+ echo "" 1>&2
+ echo "Please specify the path to the place where they were installed." 1>&2
+ echo "" 1>&2
+ echo "---------------------------------------------------------------" 1>&2
+ fi # }
+
+ END=0
+ while test $END = 0 # {
+ do
+ echo "" 1>&2
+ echo -n "What is the path? " 1>&2
+ read HP EXCESS
+ HP=`echo echo $HP | /bin/csh -fs`
+ if test $? -eq 0 # {
+ then
+ if test "X$HP" = "X" # {
+ then
+ echo "" 1>&2
+ echo "+================================+" 1>&2
+ echo "| Please enter a non-empty path. |" 1>&2
+ echo "+================================+" 1>&2
+ echo "" 1>&2
+ else
+ END=1
+ fi # }
+ else
+ echo "" 1>&2
+ echo "+============================+" 1>&2
+ echo "| Please enter a legal path. |" 1>&2
+ echo "+============================+" 1>&2
+ echo "" 1>&2
+ fi # }
+ done # }
+
+ # See if the header files are available in the specified path.
+
+ MH=""
+ for i in $lst # {
+ do
+ if test ! -f ${HP}/bsd/$i -a ! -f ${HP}/osfmk/$i # {
+ then
+ if test "X$MH" = "X" # {
+ then
+ MH=$i
+ else
+ MH="$MH $i"
+ fi # }
+ fi # }
+ done # }
+ if test "X$MH" = "X" # {
+ then
+
+ # All header files are available, so return the path and exit cleanly.
+
+ echo $HP
+ exit 0
+ else
+ echo "" 1>&2
+ echo "ERROR: not all header files are in:" 1>&2
+ echo "" 1>&2
+ echo " ${HP}" 1>&2
+ echo "" 1>&2
+ echo " These are missing:" 1>&2
+ echo "" 1>&2
+ echo " $MH" 1>&2
+ FOREVER=2
+ fi # }
+done # }
+echo "unknown error"
+exit 1