#!/bin/sh # # Inventory -- take an inventory of the lsof distribution's 00MANIFEST # Establish trap and stty handling. ISIG=":" trap '$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 # Establish echo type -- Berkeley or SYSV. j=`echo -n ""` if test "X$j" = "X-n " then EC="\c" EO="" else EC="" EO="-n" fi # Display the introduction and basic explanation. cat << .CAT_MARK This configuration step (the Inventory script) takes inventory of the lsof distribution. The script runs for a minute or two while it checks that all the subdirectories, information files, scripts, header files and source files that should be present really are. It's not absolutely necessary that you take inventory, but it's a good idea to do it right after the lsof distribution has been unpacked. Once the inventory has been taken, this script creates the file ./.ck00MAN as a signal that the inventory step has been done. You can call the Inventory script directly at any time to take inventory. You can inhibit the inventory step permanently by creating the file ./.neverInv, and you can tell the Configure script to skip the inventory and customization steps with the -n option. .CAT_MARK END=0 while test $END = 0 do echo "" echo $EO "Do you want to take inventory (y|n) [y]? $EC" read ANS EXCESS if test "X$ANS" = "Xn" -o "X$ANS" = "XN" then exit 0 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 # The current directory is assumed to be the lsof distribution home. D=`pwd` # If .ck00MAN exists, the manifest has already been checked. # See if the caller wants to check it again. CK=$D/.ck00MAN if test -r $CK then cat << .CAT_MARK ====================================================================== The lsof distribution inventory in 00MANIFEST has already been checked. .CAT_MARK END=0 while test $END = 0 do echo "" echo $EO "Do you want to check the inventory again (y|n) [n]? $EC" read ANS EXCESS if test "X$ANS" = "Xn" -o "X$ANS" = "XN" -o "X$ANS" = "X" then exit 0 else if test "X$ANS" = "Xy" -o "X$ANS" = "XY" then END=1 else echo "" echo "Please answer y or n." fi fi done fi echo "" # See if manifest exists. Exit if it does not. if test ! -r 00MANIFEST then echo "FATAL: 00MANIFEST file not found or not readable; Inventory exits." echo "" exit 1 fi # Start the inventory. S="" echo "Conducting an inventory of the lsof distribution; this will take a while." echo "" echo $EO "Examining ${D}:$EC" ERR=0 OK=1 for i in `cat 00MANIFEST | sed 's/\*$//'` do if test "X$i" != "X" then j=`expr $i : '\(.*\)/$'` if test "X$j" != "X" -a "X$j" != "X0" then # Check a subdirectory reference. if test ! -d ${D}/${S}/$j then if test $OK = 1 then echo "" fi echo " Subdirectory ${S}/$j is missing. ++++" ERR=1 OK=0 fi else s=`expr $i : '\(.*\):$'` if test "X$s" != "X" -a "X$s" != "X0" then # Process a subdirectory change. if test $OK -eq 1 then echo " OK" fi OK=1 S=$s echo $EO "Examining $S:$EC" if test ! -d ${D}/$S then echo " ERROR" echo " Subdirectory $S is missing. ++++" ERR=1 OK=0 fi else # Process a file reference. if test ! -r ${D}/${S}/$i then if test $OK -eq 1 then echo " ERROR" fi echo " File ${S}/$i is missing. ++++" ERR=1 OK=0 fi fi fi fi done if test $OK -eq 1 then echo " OK" fi echo "" if test $ERR -ne 0 then echo "+++++++++++++++++++++++++++++++++++++++++++++++" echo "+ +" echo "+ SOME FILES OR DIRECTORIES MAY BE MISSING! +" echo "+ +" echo "+++++++++++++++++++++++++++++++++++++++++++++++" else echo "This lsof distribution seems to be complete." fi echo "" echo "" >> $CK exit $ERR