blob: c0d98809727e211e36c6c07fcae5ceabcf12ffa7 [file] [log] [blame]
#!/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