#!/sbin/sh

########
# Product:  GraphicsPEX5RT
# Fileset:  PEX5-RUN
# postinstall
#
# $Source: /source2/PEX5/release/SD/GraphicsPEX5v2/PEX5-RUN/postinstall,v $
# $Revision: 550.1.100.4 $
# $Date: 96/05/21 09:57:21 $
#
########
#
# (c) Copyright Hewlett-Packard Company 1994
#
########

	set -a       					# export all vars
	exitval=0					# anticipate success

	UTILS="/usr/lbin/sw/control_utils"
	if [[ ! -f $UTILS ]]
	then
		echo "ERROR:    Cannot find UTILS"
		exit 1
	fi
	. $UTILS

################################################################################
#set -x # For debugging purposes.  _Never_ ship uncommented!!

	##
	##  Set up local environment variables
	##

	SW_INSTALL_DIR="/"

	##
	## Test to see if either SW_ROOT_DIRECTORY or SW_LOCATION is
	## set to something other than /.  If so, set up SW_INSTALL_DIR
	## so it will not have spurious /'s in the path name.
	##
	
	if [ $SW_ROOT_DIRECTORY != / -o $SW_LOCATION != / ]
	then
		if [ $SW_ROOT_DIRECTORY != / ]
		then
			if [ $SW_LOCATION != / ]
			then
				SW_INSTALL_DIR="${SW_ROOT_DIRECTORY}${SW_LOCATION}"
			else
				SW_INSTALL_DIR="${SW_ROOT_DIRECTORY}"
			fi
		else
			if [ $SW_LOCATION != / ]
			then
				SW_INSTALL_DIR="${SW_LOCATION}"
			fi
		fi
	fi

	PEX_DIR="$SW_INSTALL_DIR"
	PEX_LIB_DIR="${PEX_DIR}lib"
	PEX_FONT_DIR="${PEX_DIR}fonts"
	
	COMMON_DIR="/opt/graphics/common"
	COMMON_LIB_DIR="$COMMON_DIR/lib"
	COMMON_STROKE_DIR="$COMMON_DIR/stroke"

	##
	##  Handy dandy function to create a symbolic link and add the name
	##  to the IPD for this Product/Fileset.
	##
	link_and_add_IPD ()
	{
		LINK_TARGET=$1
		LINK_NAME=$2
		if [ -h $LINK_NAME ]
		then
			rm -f $LINK_NAME > /dev/null 2>&1
		fi
		ln -s $LINK_TARGET $LINK_NAME > /dev/null 2>&1

		##
		## Do not try to add the sym_link to the IPD unless
		## the target exists.
		##

		if [ -f $LINK_TARGET ]
		then
			IPD_addfile $LINK_NAME
		fi
	}

	##
	## Create the link to the PEX macro file for the utility man
	## pages
	##
	MACRO_LINK_NAME="${SW_ROOT_DIRECTORY}usr/share/lib/macros/ormac"
	MACRO_LINK_TARGET="${SW_LOCATION}lib/macros/ormac"

	if [ -h $MACRO_LINK_NAME -o -f $MACRO_LINK_NAME ]
	then
		rm -f $MACRO_LINK_NAME > /dev/null 2>&1
	fi
	link_and_add_IPD $MACRO_LINK_TARGET $MACRO_LINK_NAME

	EXT_PATH="usr/lib/X11/extensions"
	EXT_DIR="/${EXT_PATH}"

	LIBXHPPEX_NAME="libXhpPEX.1"
	LIBXHPPEX="$EXT_DIR/$LIBXHPPEX_NAME"
	LIBXHPPEX_STUBS="$EXT_DIR/libXhpPEX.stubs"
	LIBXHPPEX_SYMLINK="$EXT_DIR/libXhpPEX.sl"
	LIBXHPPEX_RENAME="$EXT_DIR/#libXhpPEX.1"

	PEX_NEWCONFIG_DIR="${PEX_DIR}newconfig/${EXT_PATH}"
	LIBXHPPEX_NEWCONFIG="${PEX_NEWCONFIG_DIR}/${LIBXHPPEX_NAME}"

	PEX_FONT_PATH="${EXT_DIR}/fp.PEX"
	##PEX_RELNOTES="${SW_LOCATION}10.0_Rel_Notes"

	##
	##  Place the PEX font path file into place using the utility function.
	##
	newconfig_cp ${PEX_FONT_PATH}
	STATUS="$?"
	newconfig_msgs $STATUS

	##
	##  Place the PEX Release Notes file into place.
	##
	##newconfig_cp ${PEX_RELNOTES}
	##STATUS="$?"
	##newconfig_msgs $STATUS

	##
	## Remove the existing libXhpPEX.1 library.
	##
	rm -f ${LIBXHPPEX} > /dev/null 2>&1

	##
	##  Did the "rm" of libXhpPEX.1 succeed?  The file may be busy
	##  and the system will not allow the file to be removed.
	##
	if [ "$?" != "0" ]
	then
		##
		## File must be busy, move aside with a rename and add it
		## to the SD cleanup file.
		##
		mv -f ${LIBXHPPEX} ${LIBXHPPEX_RENAME} > /dev/null 2>&1
		echo ${LIBXHPPEX_RENAME} >> ${SW_ROOT_DIRECTORY}var/adm/sw/cleanupfile
	fi

	##
	##  Move libXhpPEX.1 into place.
	##
	cp -f ${LIBXHPPEX_NEWCONFIG} ${LIBXHPPEX} > /dev/null 2>&1

	##
	## Remove the libXhpPEX.1 and libXhpPEX.sl library and symbolic
	## link from the "old" delivered location if they are present
	## as well as libXhpPEX.sl symbolic link and libXhpPEX.stubs
	## from the /usr/lib/X11/extensions directory.
	##
	rm -f ${PEX_LIB_DIR}/libXhpPEX.* > /dev/null 2>&1
	rm -f ${LIBXHPPEX_SYMLINK}       > /dev/null 2>&1
	rm -f ${LIBXHPPEX_STUBS}         > /dev/null 2>&1

	##
	## Create the required symbolic links to font files and device drivers
	##

	PEX_STROKE_DIR="$PEX_FONT_DIR/font_info/stroke"
	if [ -d $PEX_STROKE_DIR ]
	then
		##
		## Create the symbolic links if they do not already exist.  See
		## the add_sym_link function above
		##
		link_and_add_IPD $COMMON_STROKE_DIR/font_info/4  $PEX_STROKE_DIR/-2
		link_and_add_IPD $COMMON_STROKE_DIR/font_info/6  $PEX_STROKE_DIR/-4
		link_and_add_IPD $COMMON_STROKE_DIR/font_info/8  $PEX_STROKE_DIR/-6
		link_and_add_IPD $COMMON_STROKE_DIR/font_info/58 $PEX_STROKE_DIR/-8
		link_and_add_IPD $COMMON_STROKE_DIR/font_info/1  $PEX_STROKE_DIR/1
		link_and_add_IPD $COMMON_STROKE_DIR/font_info/2  $PEX_STROKE_DIR/2
	fi
	
	PEX_STROKE_DIR="$PEX_FONT_DIR/hp_japanese/stroke"
	if [ -d $PEX_STROKE_DIR ]
	then
		##
		## Create the symbolic links if they do not already exist.  See
		## the add_sym_link function above
		##
		link_and_add_IPD $COMMON_STROKE_DIR/jisascii/4 $PEX_STROKE_DIR/jisasc.-2.pht
		link_and_add_IPD $COMMON_STROKE_DIR/jisascii/6 $PEX_STROKE_DIR/jisasc.-4.pht
		link_and_add_IPD $COMMON_STROKE_DIR/jisascii/8 $PEX_STROKE_DIR/jisasc.-6.pht
		link_and_add_IPD $COMMON_STROKE_DIR/jisascii/1 $PEX_STROKE_DIR/jisasc.1.pht
		link_and_add_IPD $COMMON_STROKE_DIR/jisascii/2 $PEX_STROKE_DIR/jisasc.2.pht
	
		link_and_add_IPD $COMMON_STROKE_DIR/kanji/4    $PEX_STROKE_DIR/kanjeuc.-2.pht
		link_and_add_IPD $COMMON_STROKE_DIR/kanji/6    $PEX_STROKE_DIR/kanjeuc.-4.pht
		link_and_add_IPD $COMMON_STROKE_DIR/kanji/8    $PEX_STROKE_DIR/kanjeuc.-6.pht
		link_and_add_IPD $COMMON_STROKE_DIR/kanji/2    $PEX_STROKE_DIR/kanjeuc.2.pht
	
		link_and_add_IPD $COMMON_STROKE_DIR/katakana/4 $PEX_STROKE_DIR/katakana.-2.pht
		link_and_add_IPD $COMMON_STROKE_DIR/katakana/6 $PEX_STROKE_DIR/katakana.-4.pht
		link_and_add_IPD $COMMON_STROKE_DIR/katakana/8 $PEX_STROKE_DIR/katakana.-6.pht
		link_and_add_IPD $COMMON_STROKE_DIR/katakana/1 $PEX_STROKE_DIR/katakana.1.pht
		link_and_add_IPD $COMMON_STROKE_DIR/katakana/2 $PEX_STROKE_DIR/katakana.2.pht
	fi
	
	PEX_STROKE_DIR="$PEX_FONT_DIR/usascii/stroke"
	if [ -d $PEX_STROKE_DIR ]
	then
		##
		## Create the symbolic links if they do not already exist.  See
		## the add_sym_link function above
		##
		link_and_add_IPD $COMMON_STROKE_DIR/hproman/4  $PEX_STROKE_DIR/hproman.-2.pht
		link_and_add_IPD $COMMON_STROKE_DIR/hproman/6  $PEX_STROKE_DIR/hproman.-4.pht
		link_and_add_IPD $COMMON_STROKE_DIR/hproman/8  $PEX_STROKE_DIR/hproman.-6.pht
		link_and_add_IPD $COMMON_STROKE_DIR/hproman/58 $PEX_STROKE_DIR/hproman.-8.pht
		link_and_add_IPD $COMMON_STROKE_DIR/hproman/1  $PEX_STROKE_DIR/hproman.1.pht
		link_and_add_IPD $COMMON_STROKE_DIR/hproman/2  $PEX_STROKE_DIR/hproman.2.pht
	
		link_and_add_IPD $COMMON_STROKE_DIR/usascii/4  $PEX_STROKE_DIR/usascii.-2.pht
		link_and_add_IPD $COMMON_STROKE_DIR/usascii/6  $PEX_STROKE_DIR/usascii.-4.pht
		link_and_add_IPD $COMMON_STROKE_DIR/usascii/8  $PEX_STROKE_DIR/usascii.-6.pht
		link_and_add_IPD $COMMON_STROKE_DIR/usascii/58 $PEX_STROKE_DIR/usascii.-8.pht
		link_and_add_IPD $COMMON_STROKE_DIR/usascii/1  $PEX_STROKE_DIR/usascii.1.pht
		link_and_add_IPD $COMMON_STROKE_DIR/usascii/2  $PEX_STROKE_DIR/usascii.2.pht
	fi
	
	if [ -d $PEX_LIB_DIR ]
	then
		##
		## Create the symbolic links if they do not already exist.  See
		## the add_sym_link function above
		##
		link_and_add_IPD $COMMON_LIB_DIR/libdddl.sl     $PEX_LIB_DIR/libdddl.sl
		link_and_add_IPD $COMMON_LIB_DIR/libddhcrx.sl   $PEX_LIB_DIR/libddhcrx.sl
		link_and_add_IPD $COMMON_LIB_DIR/libddhcrx48.sl $PEX_LIB_DIR/libddhcrx48.sl
		link_and_add_IPD $COMMON_LIB_DIR/libddvmx.sl    $PEX_LIB_DIR/libddvmx.sl
		link_and_add_IPD $COMMON_LIB_DIR/libhpgfx.sl    $PEX_LIB_DIR/libpex.sl
		link_and_add_IPD $COMMON_LIB_DIR/libdl.sl       $PEX_LIB_DIR/libpexdl.sl
		link_and_add_IPD $COMMON_LIB_DIR/libddvisx.sl   $PEX_LIB_DIR/libddvisx.sl
		link_and_add_IPD $COMMON_LIB_DIR/libddrw.sl     $PEX_LIB_DIR/libddrw.sl
		link_and_add_IPD $COMMON_LIB_DIR/libddfxe.sl    $PEX_LIB_DIR/libddfxe.sl
	fi

        ##
        ## Make a compatibility link for libPEXUt.sl since it moved
        ## from one directory to another.
        ##
        
        # If utilities/cge  do not exist create them.

        if [ ! -d ${PEX_DIR}utilities/cge ]
        then
            mkdir -p ${PEX_DIR}utilities/cge > /dev/null 2>&1
            chmod -R 555 ${PEX_DIR}utilities > /dev/null 2>&1
            chgrp -R bin ${PEX_DIR}utilities > /dev/null 2>&1
            chown -R bin ${PEX_DIR}utilities > /dev/null 2>&1
        fi

        PEXUT_NAME="libPEXUt"
        A_PEX_CGE_DIR="${PEX_DIR}utilities/cge"
        PEX_CGE_DIR="${SW_LOCATION}utilities/cge"
        PEXUTSL_LINK_NAME="${A_PEX_CGE_DIR}/${PEXUT_NAME}.sl"
        PEXUT1_LINK_NAME="${A_PEX_CGE_DIR}/${PEXUT_NAME}.1"
        PEXUT1_LINK_TARGET2="${PEX_CGE_DIR}/${PEXUT_NAME}.1"
        PEXUT1_LINK_TARGET="${SW_LOCATION}lib/${PEXUT_NAME}.1"

        link_and_add_IPD $PEXUT1_LINK_TARGET2  $PEXUTSL_LINK_NAME
        link_and_add_IPD $PEXUT1_LINK_TARGET $PEXUT1_LINK_NAME

	##
	## This may be an update from a 10.01 system and/or the 10.10 system
	## may have some IPD pollution.  Either way, search for and get rid
	## of GraphicsPEX5v2RT and associated definitions.
	##

	##
	## Find out if GraphicsPEX5v2RT exists in the IPD.  We need to
	## discriminate between standalone and NFSD in doing this.
	##

	OUT_FILE="/var/tmp/out$$"
	ERR_FILE="/var/tmp/err$$"

	OBS_PROD_NAME="GraphicsPEX5v2RT"

	if [ "$SW_ROOT_DIRECTORY" != "/" ]
	then
		swlist -r -l product $OBS_PROD_NAME @ "$SW_ROOT_DIRECTORY" > $OUT_FILE 2> $ERR_FILE

		if [ ! -s $ERR_FILE ]
		then
			##
			## It exists, so delete it from the IPD
			##
			swmodify -r -v -u ${OBS_PROD_NAME}.\* ${OBS_PROD_NAME} @ $SW_ROOT_DIRECTORY > /dev/null 2>&1
		fi

	else
		swlist -l product $OBS_PROD_NAME > $OUT_FILE 2> $ERR_FILE

		if [ ! -s $ERR_FILE ]
		then
			##
			## It exists, so delete it from the IPD
			##
			swmodify -v -u ${OBS_PROD_NAME}.\* ${OBS_PROD_NAME} > /dev/null 2>&1
		fi
	fi

	rm -f $OUT_FILE $ERR_FILE > /dev/null 2>&1

	exit $exitval
################################################################################
