Find file
Fetching contributors…
Cannot retrieve contributors at this time
executable file 347 lines (317 sloc) 7.07 KB
#!/bin/sh
#
# $Id: AFSConfig,v 1.2 99/05/09 14:49:54 abe Exp $
#
# AFSConfig: configure for AFS
AFSD=/usr/vice/etc/afsd
AH=AFSHeaders
AV=AFSVersion
STD=/usr/afsws/include
# Establish trap and stty handling.
ISIG=":"
trap 'rm -f $AH $AV; $ISIG; exit 1' 1 2 3 15
stty -a 2>&1 | grep isig > /dev/null
if test $? -eq 0
then
stty -a 2>&1 | egrep -e -isig > /dev/null
if test $? -eq 0
then
ISIG="stty -isig"
stty isig
fi
fi
# Decide how to use echo.
ECHO=`echo -n ""`
if test "X$ECHO" = "X-n "
then
EC="\c"
EO=""
else
EC=""
EO="-n"
fi
# Decide (perhaps for a second time) that AFS is installed.
CELL=""
if test -r /usr/vice/etc/ThisCell
then
cell=`awk '{print $1}' /usr/vice/etc/ThisCell`
if test -d /afs/$cell
then
CELL=$cell
else
CELL=`echo $cell | sed 's/\([^.]*\)\..*/\1/'`
if test "X$CELL" != "X"
then
if test ! -d /afs/$CELL
then
CELL=""
fi
fi
fi
fi
if test "X$CELL" = "X"
then
echo ""
echo "This system does not appear to have AFS installed."
exit 1
fi
# See if AFS configuration is wanted.
cat << .CAT_MARK
AFS appears to be installed on this system; cell name "$CELL".
Lsof needs to be configured for AFS by identifying: 1) the directory
that includes the AFS header files needed to compile AFS support into
lsof; and 2) the version of AFS that is installed.
.CAT_MARK
END=0
while test $END = 0
do
echo ""
echo $EO "Do you want to configure lsof for AFS (y|n) [y]? $EC"
read ANS EXCESS
if test "X$ANS" = "Xn" -o "X$ANS" = "XN"
then
exit 1
fi
if test "X$ANS" = "Xy" -o "X$ANS" = "XY" -o "X$ANS" = "X"
then
END=1
else
echo ""
echo "Please answer y or n."
fi
done
# See if $AH exists and points to a likely place.
AHOK=""
echo ""
echo "====================================================================="
echo ""
if test -r $AH
then
AHP=`cat $AH`
if test -r $AHP
then
if test -r $AHP/afs/afs.h
then
cat << .CAT_MARK
The location of the AFS header files required by lsof has been
previously identified as "$AHP".
Since <afs/afs.h> can be found there, that's probably correct.
.CAT_MARK
END=0
while test $END = 0
do
echo ""
echo $EO "Do you want to use $AHP again (y|n) [y]? $EC"
read ANS EXCESS
if test "X$ANS" = "Xy" -o "X$ANS" = "XY" -o "X$ANS" = "X"
then
AHOK="ok"
END=1
else
if test "X$ANS" = "Xn" -o "X$ANS" = "XN"
then
rm -f $AH
AHP=""
END=1
else
echo ""
echo "Please answer y or n."
fi
fi
done
else
echo "\"$AHP\" has been previously specified as the location of the"
echo "AFS header files, but it lacks an afs/afs.h header file."
rm -f $AH
AHP=""
fi
else
echo "The file ./$AH exists, but has no AFS header file path in it."
rm -f $AH
AHP=""
fi
else
echo "No previous header location has been specified."
rm -f $AH
AHP=""
fi
# See if the header files are in the "standard" place.
if test "X$AHOK" != "Xok"
then
if test -r $STD
then
echo ""
echo "====================================================================="
echo ""
echo "The AFS header files appear to be in the \"standard\" location --"
echo "i.e.: \"$STD\"."
END=0
while test $END = 0
do
echo ""
echo $EO "Do you want to let lsof use them (y|n) [y]? $EC"
read ANS EXCESS
if test "X$ANS" = "Xy" -o "X$ANS" = "XY" -o "X$ANS" = "X"
then
echo $STD > $AH
AHOK="ok"
END=1
else
if test "X$ANS" = "Xn" -o "X$ANS" = "XN"
then
END=1
else
echo ""
echo "Please answer y or n."
fi
fi
done
fi
fi
# Ask for the AFS header file location.
if test "X$AHOK" != "Xok"
then
echo ""
echo "====================================================================="
echo ""
echo "Please specify the full path where lsof can find the AFS header"
echo "files. A possible location is: \"/afs/$CELL/<sysname>/include\"."
cat << .CAT_MARK
The <sysname> component of the path is the AFS system name that
was used to configure and build AFS on this system. It is usually
constructed from a manufacturer or Unix operating system designation,
followed by a version number -- e.g., hp800_ux90, sun4m_54, vax_ul43,
etc. You may have to consult your AFS documentation to determine
what <sysname> applies to your configuration.
.CAT_MARK
END=0
while test $END = 0
do
echo ""
echo $EO "Do you want to see the contents of /afs/$CELL (y|n) [y]? $EC"
read ANS EXCESS
if test "X$ANS" = "Xn" -o "X$ANS" = "XN"
then
END=1
else
if test "X$ANS" = "Xy" -o "X$ANS" = "XY" -o "X$ANS" = "X"
then
echo ""
ls -C /afs/$CELL
END=1
else
echo ""
echo "Please answer y or n."
fi
fi
done
END=0
while test $END = 0
do
echo ""
echo $EO "AFS header file path: $EC"
read ANS EXCESS
fc=`expr "${ANS}X" : '\(.\).*'`
if test "X$fc" = "X/"
then
if test -r $ANS/afs/afs.h
then
echo $ANS > $AH
AHOK="ok"
END=1
else
echo ""
echo "$ANS/afs/afs.h doesn't exist."
echo "Please enter a path whose afs subdirectory contains afs.h"
fi
else
echo ""
echo "Please enter an absolute path name."
fi
done
fi
if test "X$AHOK" != "Xok"
then
echo "AFSConfig: unknown error"
exit 1
fi
# Determine AFS version.
if test -r $AV
then
echo ""
echo "====================================================================="
echo ""
AVN=`cat $AV`
cat << .CAT_MARK
The AFS version was previously specified as: $AVN
.CAT_MARK
END=0
while test $END = 0
do
echo ""
echo $EO "Is this the correct version number (y|n) [y]? $EC"
read ANS EXCESS
if test "X$ANS" = "Xy" -o "X$ANS" = "XY" -o "X$ANS" = "X"
then
exit 0
fi
if test "X$ANS" = "Xn" -o "X$ANS" = "XN"
then
rm -f $AV
END=1
else
echo "Please answer y or n."
fi
done
fi
# See if the version number can be determined.
if test -r $AFSD
then
ANS=`strings $AFSD | grep "Base configuration afs" | sed 's/^.*ion afs\([^ ]*\) .*/\1/'`
TV=`echo $ANS | sed 's/^\([0-9]*\)\.\([0-9]*\)\(.*\)/\1 \2 \3/' | awk '{printf "%d.%d%s\n",$1,$2,$3}'`
if test "X$ANS" = "X$TV"
then
echo ""
echo "====================================================================="
echo ""
cat << .CAT_MARK
Examining $AFSD the AFS version number appears to be: $TV
.CAT_MARK
END=0
while test $END = 0
do
echo ""
echo $EO "Do you want to use this version number (y/n) [y]? $EC"
read ANS EXCESS
if test "X$ANS" = "Xn" -o "X$ANS" = "XN"
then
END=1
else
if test "X$ANS" = "Xy" -o "X$ANS" = "XY" -o "X$ANS" = "X"
then
echo $TV > $AV
exit 0
else
echo ""
echo "Please answer y or n."
fi
fi
done
fi
fi
# Ask for the version number.
echo ""
echo "====================================================================="
END=0
while test $END = 0
do
echo ""
echo $EO "Please enter the AFS version number: $EC"
read ANS EXCESS
TV=`echo $ANS | sed 's/^\([0-9]*\)\.\([0-9]*\)\(.*\)/\1 \2 \3/' | awk '{printf "%d.%d%s\n",$1,$2,$3}'`
if test "X$ANS" = "X$TV"
then
echo $TV > $AV
exit 0
fi
done