#!/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 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//include\"." cat << .CAT_MARK The 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 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