#!/sbin/sh
#
# ident	"%Z%%M%	%I%	%E% SMI"
#
# Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#

# This script is used install deferred updates at a same run
# level on the machine

BACKOUT_DIR=`/usr/sbin/smpatch get patchpro.backout.directory`
if [ ! -d "$BACKOUT_DIR" -o -z "$BACKOUT_DIR" ]
then
	BACKOUT_PARM=
else
	BACKOUT_PARM="-B $BACKOUT_DIR"
fi
DEFERRED_DIR=`/usr/sbin/smpatch get patchpro.download.directory`
if [ ! -d "$DEFERRED_DIR" ]
then
	DEFERRED_DIR=/var/sadm/spool
fi
DEFERRED_UPDATES_LIST="$DEFERRED_DIR/disallowed_patch_list"
DEFERRED_UPDATES_REPORT="$DEFERRED_DIR/disallowed_patch_list_report"
DEFERRED_LOCK_FILE="$DEFERRED_DIR/critical_shutdown_update_lock"
PATCHADD=/usr/sbin/patchadd
UNZIP=/usr/bin/unzip
CHMOD=/usr/bin/chmod
export DEFERRED_DIR DEFERRED_UPDATES_LIST DEFERRED_UPDATES_REPORT 
export BACKOUT_DIR BACKOUT_PARM

trap 'exit 0' 1 2 3 15

case "$1" in

'lock')
	if [ ! -f "$DEFERRED_LOCK_FILE" ]
	then
		touch $DEFERRED_LOCK_FILE
		chmod 700 $DEFERRED_LOCK_FILE
	fi

	;;
'stop')
	if [ -f "$DEFERRED_LOCK_FILE" ]
	then
		rm -f $DEFERRED_LOCK_FILE
		exit
	fi

	if [ ! -f "$DEFERRED_UPDATES_LIST" ]
	then
		exit
	fi
	
	if [ -f "$DEFERRED_UPDATES_REPORT" ]
	then
		rm -f "$DEFERRED_UPDATES_REPORT"
	fi
	
	cat "$DEFERRED_UPDATES_LIST" | while read PATCHID
	do
		echo "STATUS INSTALL BEGIN $PATCHID" >> "$DEFERRED_UPDATES_REPORT"
		if [ -f "$DEFERRED_DIR/$PATCHID.jar" ]
		then
			mkdir $DEFERRED_DIR/$PATCHID.jar.dir
			$UNZIP -d $DEFERRED_DIR/$PATCHID.jar.dir  $DEFERRED_DIR/$PATCHID.jar >/dev/null 2>> "$DEFERRED_UPDATES_REPORT"
		fi
		$PATCHADD -t $BACKOUT_PARM $DEFERRED_DIR/$PATCHID.jar.dir/$PATCHID >/dev/null 2>> "$DEFERRED_UPDATES_REPORT"
		RET=$?
		
		if [ $RET -eq 0 ]
		then
			rm $DEFERRED_DIR/$PATCHID.jar >/dev/null 2>&1
		fi	

		rm -rf $DEFERRED_DIR/$PATCHID.jar.dir >/dev/null 2>&1

		echo "STATUS INSTALL END $PATCHID INSTALL.$RET" >> "$DEFERRED_UPDATES_REPORT"
	
	done 

	rm -f "$DEFERRED_UPDATES_LIST"

	;;
*)
	;;
esac
