#!/bin/ksh
#
#ident	"@(#)cdrom.stf	1.12	05/06/07 SMI"
#
# Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
# This is the CDROM test module.
#
#########################################################################
# NOTES ON OPERATION AND ERROR HANDLING:
# This script is called by staf.eng, which is the main test harness.
# Standard output gets recorded in the test module log file by staf.eng.
#
# Variable maxwarn is checked by staf.eng in the "chk_err()" monitoring process,# by grep'ing the log file of this test module.
# If maxwarn is exceeded, the staf.eng script will kill this test module.
# There are two formats for the error echos to the log files;
#
# 1.   echo "!ERROR: blah blah foo bar";
#      which will terminate the test.  If the test harness detects
#      a string match with "!ERROR", then all testing terminates.
#
# 2.   echo "!WARNING: blah blah foo bar";
#       The above format "!WARNING:" will make the log file entry,
#       but all testing will continue, no termination of tests,
#       UNLESS maxwarnings variable is exceeded.
#
# DANGER!!:  Even if you do not intend to use WARNING messages, variable
# maxwarn *MUST* be defined and the "maxwarnings=" line *MUST* be
# echo'ed to the logfile.  This syntax is mandatory.
#########################################################################


# variables
prgdir=../../prgs	# program directory
sdir=$1			# source directory
maxwarn=2		# max number of nonfatal warnings to tolerate.
checkcdrom=/tmp/probe_cd_flp


# functions

clean_up()
{
	echo "CD-ROM Test Ending!"
}


if [ -f $checkcdrom ]
then
	if [ -z `grep cdrom $checkcdrom` ]
	then
		echo "!NOTE: CD-ROM device not found. Ignoring CD-ROM test."
		echo "CD-ROM test ending..."
		exit 1
	fi
fi

# check for volume manager
if [ -z "`ps -e | grep vold`" ]
then
	cdtrg=`cat /etc/mnttab | grep "/cdrom/" | awk '{print $2}' | sort +1n | sed -n '1p'`
else
	volcheck
	cdtrg=`df -kl | grep "/cdrom/" | awk '{print $6}' | sort +1n | sed -n '1p'`
fi

dls=$cdtrg

### MAIN ###

if [ -z "$sdir" ]
then
	sdir=$dls
	if [ -z "$sdir" ] 
	then
		echo "!ERROR: No CD-ROM found. Check whether a CD disk was inserted into the CD-ROM drive."
		exit 2
	fi
fi



# set trap
trap 'clean_up; exit' 17

# SET LOGFILE FLAG FOR MAX WARNING COUNT
# This is checked by staf.eng, and if exceeded, staf.eng will kill this module.
# ( This only makes sense if this script echos warning messages, but
#   inclusion of this variable in the log file is *MANDATORY* in all cases. )
echo "maxwarnings=${maxwarn}"


echo "Starting cdrom test..."
# volume check
volcheck

cd cdrom/bin
./cdrom.sh $sdir 
