#!/bin/sh

#								RogerBrobst
#    inv_tapes [-v] infile
#
#	Display tapes required for packages listed in <infile>
#
#	if -v flag is given, display tapes required for EACH package
#
#	
#
#############################################################################
#
#	Copyright (C) Cadence Design Systems, Inc. All rights
#	reserved.  Unpublished -- rights reserved under the
#	copyright laws of the United States of America.
#
#			RESTRICTED RIGHTS LEGEND
#	Use, duplication, or disclosure by the Government is subject
#	to restrictions as set forth in subparagraph (c)(l)(ii) of 
#	the Rights in Technical Data and Computer Software clause 
#	at DFARS 52.227-7013.
#
#			Cadence Design Systems, Inc.
#			555 River Oaks Parkway
#			San Jose, CA 95134	USA
#
#############################################################################
BOURNE=/bin/sh
XTERMPATH=/usr/bin/X11
XTERMBIN=xterm
XTERMOPTS="-T 'SoftLoad 6.0 Console' -fn 9x15  -sl 200 -g 80x40+0+0 -bg \#e0e0e0 -fg \#800000 -sb -e ${BOURNE} softload_GUI"
sysPATH=/bin:/usr/bin:/usr/ucb:$XTERMPATH

jsr=''

Clear() {
    clear		2>/dev/null	#beware of bad termcap entry
}

Page() {
    MORE=""  more
}

EchoN() {
    echo -n "$*"
}

Beep() {
    tput bel		2>/dev/null
}



#####################################################################
# display ranges (ie. 3-7) of tape numbers, based upon expanded list
#####################################################################
Pr_tapenums() {
    if [ "$1" = 0 ]; then
	shift
	tapenums=$*
	$jsr EchoN "Installation "
    else
	tapenums=$*
    fi
    if [ "$tapenums" != "" ]; then
	rangeBeg=-1; rangeEnd=-1
	for tnum in $tapenums ; do
	    if [ $rangeBeg -eq -1 ]; then
		rangeBeg=$tnum
	    elif [ $rangeEnd -eq -1 ]; then
		if [ $tnum -eq `expr $rangeBeg + 1` ]; then
		    rangeEnd=$tnum
		else
		    $jsr EchoN "$rangeBeg "
		    rangeBeg=$tnum
		fi
	    elif [ $tnum -eq `expr $rangeEnd + 1` ]; then
		rangeEnd=$tnum
	    else
		if [ $rangeEnd -eq `expr $rangeBeg + 1` ]; then
		    $jsr EchoN "$rangeBeg $rangeEnd "
		else
		    $jsr EchoN "$rangeBeg-$rangeEnd "
		fi
		rangeEnd=-1
		rangeBeg=$tnum
	    fi
	done
	#finish up this tapeset
	if [ $rangeEnd -ne -1 ]; then
	    if [ $rangeEnd -eq `expr $rangeBeg + 1` ]; then
		$jsr EchoN $rangeBeg $rangeEnd
	    else
		$jsr EchoN $rangeBeg-$rangeEnd
	    fi
	else
	    $jsr EchoN $rangeBeg
	fi
    fi
    echo ""				#finish off line
}


if [ -z "$Proot" ]; then  
    echo "$0 environment not initialized" 				1>&2
    exit 1 
fi
export Proot


if [ "X$1" = "X-v" ]; then
    verbose=true; shift
fi

infile=$1; shift

NL="
"

$BOURNE pkg_fltr $infile $*  |
while read pkgdesc pkgname pkgsize tapeset tapelocs; do
    # now to extract the tape numbers, and print (one to a line)
    echo "$tapelocs" | awk 'BEGIN{ FS="	" } 
			   {for( i=1; i<=NF; i++ ) print $i }' |
	while read tapenum remainder; do
	    echo $pkgdesc $pkgname $pkgsize $tapeset $tapenum
	done
done | sort -u > /tmp/tinv$$	#lines: pkgdesc pkgname pkgsize tapeset tapenum




if [ "$verbose" = true ]; then
    {
	echo "Package Description${NL}tape(s)"
	echo "-------------------${NL}-----------------------"

	sort -u +1 -2 /tmp/tinv$$ | 
	while read pkgdesc pkgname pkgsize tapeset tapenum; do
	    echo $pkgdesc
	    $jsr EchoN "$tapeset:"
	    $jsr Pr_tapenums `awk '$2 == "'$pkgname'" {print $5}' /tmp/tinv$$ | sort -u -n`
	done | tr '~' ' '				#tilde->space
    } | ./columnize 6 30 256
fi


#####################################################################
# Go through tapenums required for each tapeset and display all referenced
#####################################################################

echo "${NL}The following tape(s) are referenced:"
for tset in `awk '{print $4}' /tmp/tinv$$ | sort -u`; do
    $jsr EchoN "	$tset:"
    $jsr Pr_tapenums `awk '$4 == "'$tset'" {print $5}' /tmp/tinv$$ | sort -u -n`
done

rm -f /tmp/tinv$$
