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