| #!/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 |