Blame AFSConfig

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