#!/bin/sh
#
# SCCSID=@(#)genboots	7.1 (ULTRIX) 7/22/92";
#
# usage: sh genboots [-v] 
#
# Description: generate the stand alone media for
#		tu58, rx01, rl02, rx50, tk50.
#
# 001 - December, 1987 - Jon Wallace - Added call to ZEERO.
#
# 000 - July , 1986 - Tung-Ning Cherng created.
#

KITCAP=/etc/kitcap
CLEAN_FLAG=0
PROG=$0
USAGE="usage: $PROG [-v]"
LL="
"
veronly=0 
case $1 in
-v* )
	echo "Verification only !!! "
	veronly=1
	shift
	;;
esac

tkflag=0

while : true
do
	echo -n "
Making V2.0 S.A.S kit. 

	RX01: /dev/floppy
	TU58: /dev/tu?
	RX50: /dev/rra?a
	RL02: /dev/rrl?c
	TK50: /dev/nrmt?h

Enter the device name [no default]?  "
	read DEVICE 
	case $DEVICE in
	/dev/nrmt* )
		echo "Rewinding ..."
		mt -f $DEVICE rew
		case $? in
		0 )	;;
		* )
			echo "$DEVICE can not access."
			DEVICE="xxx"
			continue
			;;
		esac
		;;
	/dev/*rl* )
		dd if=$DEVICE bs=1b count=1 > /dev/null 2>&1	
		case $? in
		0 )	;;
		* )
			echo "Can not access $DEVICE."
			DEVICE="xxx"
			continue
			;;
		esac
		echo -n "
Do you want to clean the disk first? (y/n) [n]: "
		read CLEAN_IT
		case $CLEAN_IT in
		Y* | y* ) echo -n "Please confirm intent to clean
$DEVICE (y/n) [n]: "
			read CONFIRM
			case $CONFIRM in
			Y* | y* ) CLEAN_FLAG=1 
				;;
			* ) echo "Non-affirmative response...$DEVICE will not be cleaned"
				;;
			esac
			;;
		* )     ;;
		esac
		;;
	/dev/floppy | /dev/*ra* | /dev/tu* )
		dd if=$DEVICE bs=1b count=1 > /dev/null 2>&1	
		case $? in
		0 )	;;
		* )
			echo "Can not access $DEVICE."
			DEVICE="xxx"
			continue
			;;
		esac
		;;
	* )
		echo "Invalid name. Please enter again"
		DEVICE="xxx"
		continue
		;;
	esac
	break
done

echo -n "
Enter the kit code <ULT>? "
read KC
case $KC in
"" )	echo "please find out the kit code from /etc/kitcap"
	exit 1
	;;
esac
DFS="$IFS"
IFS=:
KL=`egrep "^$KC" $KITCAP` ||
{
	echo "Cannot find $KC in $KITCAP"
	exit 1
}

set xxx $KL
SOURCEDIR=$3/bootdir
PWD=`pwd`
cd $SOURCEDIR || exit 1
cd $PWD
echo "
The boot media is located in $SOURCEDIR"
IFS=$DFS	

block=20b
device=`expr $DEVICE : '.*/\(.*\)'`
case $device in
floppy )	
	sasfile=`(cd $SOURCEDIR; echo RX01*)`
	sasfile="$sasfile 780cons"
	;;
tu* ) 
	sasfile=`(cd $SOURCEDIR; echo TU58*)`
	sasfile="$sasfile 730cons"
	;;	
nrmt* )
	mt -f $DEVICE rew
	sasfile=`(cd $SOURCEDIR;echo TK50*)`
	block=1b
	tkflag=1
	;;
 rrl* ) # use raw device, 
	sasfile=RL02.1
	block=20b
	
	;;
ra* | rra* )
	sasfile=`(cd $SOURCEDIR; echo RX50*)`
	;;
* )
	echo "No such bootmedia device. "
	exit 1
	;;
esac

echo "starting... `date`
"
N=0
for k in $sasfile
do
	case $tkflag in
	1 ) 	ans=y	
		;;
	0 )
		echo -n "Do you want to do $k <y/n>?  "
		read ans
		;;
	esac
	case $ans in
	y* )
		case $veronly in
		0 )
			case $CLEAN_FLAG in
			1) zeero -f $DEVICE
			   ;;
			*) 
			   ;;
			esac
			echo "copying $k ..."
			dd if=$SOURCEDIR/$k of=${DEVICE} bs=$block conv=sync
			;;
		esac
		echo "verifying $k ..."
		case $tkflag in
		1 )
			mt -f ${DEVICE} rew
			case $N in
			0 )
				N=1 ;;
			1 )
				mt -f ${DEVICE} fsf 
				;;
			esac
			;;
		esac
			
		case $device in
		floppy )
			dd if=${DEVICE} of=/tmp/$k bs=256 conv=sync > /dev/null
			cmp $SOURCEDIR/$k /tmp/$k > /tmp/cmp$k.$$ 2>&1
			;;
		* )
			cmp $SOURCEDIR/$k ${DEVICE} > /tmp/cmp$k.$$ 2>&1
			;;
		esac
		egrep "diff|dev" /tmp/cmp$k.$$
		case $? in
		0 )	
			echo "$k is different !!!"
			;;
		* )
			rm /tmp/cmp$k.$$ /tmp/$k > /dev/null
			echo "done."
			;;
		esac
		;;
	* )
		echo "Skipping $k"
		continue
		;;
	esac
done

case $tkflag in
1 )
	mt -f $DEVICE rew ;;
esac

echo "Done `date`"
