#!/bin/sh
# @(#)123_pegasus.sh	128.7 26 Apr 1994 12:30:14
#

#-------------------------------------------------------------------------------
# Special hack for dumb default shell on ULTRIX
#
[ '\'"$1" != '\'"NOEXEC" -a "`uname -s`" = "ULTRIX" ] && exec /bin/sh5 $0 NOEXEC $@
[ '\'"$1"  = '\'"NOEXEC" ] && shift

#-------------------------------------------------------------------------------
# Set variables
#
PATH=/usr/ucb:/bin:/usr/bin:/etc:/usr/etc:/usr/bin/X11:/usr/openwin/bin:$PATH
VERS_DIR=123.v12
EXEC_FILE_123=123_exe
EXEC_FILE_RUNTIME=123_motif	# default value, changed below for OpenLook
EXEC_FILE_GUI=123_motif.rat	# default value, changed below for OpenLook
CONST_FILE_SRC=l123_motif.iat	# default value, changed below for OpenLook

VERSION=12
LIC_SUB_DIR=123lic.v12
LIC_TEST=lic_test
MAX_SESSIONS=6
FEATURE=1-2-3
DEMO_FEATURE=1-2-3DE
[ -z "${LIC_HOLD_TIME}" ] && LIC_HOLD_TIME=180

#-------------------------------------------------------------------------------
# Define functions
#

# function 'dname' is used if the 'dirname' command doesn't exist
#
# within the expr the branches are for the following purposes:
#   1)  catches '/' and '/file'
#   2)  catches 'dir/file'
#   3)  catches '//'
#   4)  catches 'file' and ''

dname()
{
	expr ${1:-x}/ : '\(/\)[^/]*/$'                \
	  \| ${1:-x}/ : '\(.*[^/]\)//*[^/][^/]*//*$'  \
	  \| ${1:-x}/ : '\(/\)'                       \
	  \| .
}

#-------------------------------------------------------------------------------
#	function to map unix filenames to ISO 9660 filenames 
#-------------------------------------------------------------------------------
unix_to_iso()
{
	LEAF=$1
        NAME=`echo $LEAF | sed 's/^\.//
				s/\..*$//
		                s/-/_/g
				s/+//g
				s/Makefile/Make/
				s/fnt//
				s/sysV386/sysV/
				s/lmswitch/switch/
				s/vfont/vf/
				s/\(........\).*/\1/
				y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
# remove leading period
# throw away file extension
# swap hyphens for underscores
# substitute for Makefile fnt sysV386 lmswitch vfont as they are not unique
# take first 8 characters
# turn to uppercase

	EXT=`echo $LEAF | grep -v '^\.' | grep '\.' | \
			   sed 's/.*\(\..*\)/\1/
                                s/\(....\).*/\1/
	                        y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`

	NEW_LEAF=${NAME}${EXT}
	echo $NEW_LEAF
}

#-------------------------------------------------------------------------------
# Discover which platform this is
#
ARCH=`sh -c 'arch' 2>/dev/null`
case "${ARCH}" in
	sun4*)
		case "`uname -r`" in
			4*) ARCH=sun4sol1 ;;
			5*) ARCH=sun4sol2 ;;
		esac
		;;
	*88*|AViiON)
		ARCH="m88k_r3"
		;;
    "" | *)
	    case "`uname -m`" in
                *88*|AViiON)
			    ARCH="m88k_r3"
			;;

		*)
		        case "`uname -s`" in                    
		            ULTRIX)     ARCH=decs   ;;          
		            AIX)        ARCH=rs6000 ;;          
		            HP-UX)      ARCH=hp700  ;;          
		            SunOS)                              
		                        case "`uname -r`" in    
		                            4*) ARCH=sun4sol1 ;;
		                            5*) ARCH=sun4sol2 ;;
		                        esac                    
		                        ;;                      
		        esac
		;;
	    esac
	;;
esac

#-------------------------------------------------------------------------------
# if platform is rs6000 and running AIX 3.2 set MALLOCTYPE to use old-style
# (standard) memory allocation strategy SPR RBE-182
#-------------------------------------------------------------------------------
if [ "${ARCH}" = "rs6000" ] && [ `uname -r` = "2" ]
then
	MALLOCTYPE=3.1;
	export MALLOCTYPE;
fi
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Modify the  root of lotus runtime tree from this script's basname

case "${0}" in
    *qa123)	EXEC_FILE_RUNTIME=irat  # use the QA testbed run-time
		eval `qa_setenv`
		DIRNAME="`pwd`/${VERS_DIR}/${ARCH}/bin"
		STRINGS="${DIRNAME}/123_STRINGS"
		;;
    *peg123)	DIRNAME="./${ARCH}"	# special case, for development use
		STRINGS="./123_STRINGS" # use local error messages
		;;
    */*)        DIRNAME=`sh -c "dirname $0" 2>/dev/null`
		[ -z "$DIRNAME" ] && DIRNAME=`dname $0`
		STRINGS="${DIRNAME}/123_STRINGS"
		;;
    *)		DIRNAME="."
		STRINGS="${DIRNAME}/123_STRINGS"
		;;
esac

if [ "${L123_DEBUG}" = "1" -a -n "${TEST_DNAME}" ]
then
	DIRNAME=${TEST_DNAME}
	STRINGS="${DIRNAME}/123_STRINGS"
fi

#-------------------------------------------------------------------------------
# add support for the CD version

test -f $DIRNAME/`unix_to_iso $EXEC_FILE_123` && CD_VERSION=1

if [ -n "$CD_VERSION" ]
then
	export CD_VERSION
	VERS_DIR=`unix_to_iso $VERS_DIR`
	EXEC_FILE_123=`unix_to_iso $EXEC_FILE_123`
	EXEC_FILE_RUNTIME=`unix_to_iso $EXEC_FILE_RUNTIME`
	EXEC_FILE_GUI=`unix_to_iso $EXEC_FILE_GUI`
	CONST_FILE_SRC=`unix_to_iso $CONST_FILE_SRC`
	LIC_SUB_DIR=`unix_to_iso $LIC_SUB_DIR`
	ARCH=`unix_to_iso $ARCH`
	STRINGS="${DIRNAME}/`unix_to_iso 123_STRINGS`"
	HLP=`unix_to_iso hlp`
else
	HLP=hlp
fi

#-------------------------------------------------------------------------------
# Import error message strings for this script; export strings used
#  within programs
#
. ${STRINGS}
export SW_USAGE

#-------------------------------------------------------------------------------
# Allow "LOTUS" environment variable to override default runtime tree location
#

if [ -z "$LOTUS" ]
then
	if [ -f "$HOME/.l123set" ]
	then
		L123_SET="$HOME/.l123set"
	else
		# if the user has no L123_SET file and no LOTUS variable,
		# then we can't find the run-time tree. Give a message and exit.
		echo $NO_L123_SET_FILE
		exit 1
	fi
	BASEDIR=`awk -F'"' '/^1002/ {print $2}' $L123_SET`
else
	BASEDIR="$LOTUS"
	if [ -f "$HOME/.l123set" ]
	then
		L123_SET="$HOME/.l123set"
	else
		if [ -f "$BASEDIR/${VERS_DIR}/.l123set" ]
		then
			L123_SET="$BASEDIR/${VERS_DIR}/.l123set"
		else
			L123_SET=$BASEDIR/${VERS_DIR}/`unix_to_iso .l123set`

			if [ ! -f "$L123_SET" ]
			then
				echo $NO_L123_SET_FILE
				exit 1
			fi
		fi
	fi
fi

#-------------------------------------------------------------------------------
# Check user's display DRIVER, exec raw spreadsheet or continue with gui
# Note raw spreadsheet uses unaltered command-line arguments.
# Env. variable LOTUS_UI is used to override display driver setting in .l123set.
# If it contains an invalid value .l123set version is used.
if [ -n "${LOTUS_UI}" ]
then
	case ${LOTUS_UI} in
	MGUI) 
		GUI_SELECTOR=alexm
	;;
	OGUI) 
		GUI_SELECTOR=alexol
	;;
	X | TEK | REGIS | NONE )
		GUI_SELECTOR=
	;;
	* ) 
		GUI_SELECTOR="`grep '^1004' ${L123_SET} 2>/dev/null`"
		GUI_SELECTOR=`expr "xxx${GUI_SELECTOR}" : '.*\(alex..\).*'`
	;;
	esac
else
GUI_SELECTOR="`grep '^1004' ${L123_SET} 2>/dev/null`"
GUI_SELECTOR=`expr "xxx${GUI_SELECTOR}" : '.*\(alex..\).*'`
fi

if [ -n "$CD_VERSION" ]
then
		FONTS_SEARCH=`echo ${PATH} | sed -e 's/\:/ /g'`
	
		for i in ${FONTS_SEARCH}
		do
			if [  -z "${XSET}"  -a  -x ${i}/xset  ]
			then
				XSET="${i}/xset"
			fi
	
			if [ -n "${XSET}" ]
			then
				break;
			fi
		done
				
		if [ -n ${XSET} ]
		then
                        [ -d /usr/tmp/123_fonts ] || mkdir /usr/tmp/123_fonts

			case $ARCH in
			HP* )
				SRC=${DIRNAME}/../../FONTS/X11_HP
				DST=/usr/tmp/123_fonts/X11_HP
		
				[ -d ${DST} ] || { mkdir ${DST} ; chmod 777 ${DST} ; }
			
				[ -f ${DST}/Lvfnt192l19.bdf ]  || cp ${SRC}/LV192L19.BDF  ${DST}/Lvfnt192l19.bdf
				[ -f ${DST}/Lvfnt192l19.snf ]  || cp ${SRC}/LV192L19.SNF  ${DST}/Lvfnt192l19.snf
				[ -f ${DST}/Lvfnt192t19.bdf ]  || cp ${SRC}/LV192T19.BDF  ${DST}/Lvfnt192t19.bdf
				[ -f ${DST}/Lvfnt192t19.snf ]  || cp ${SRC}/LV192T19.SNF  ${DST}/Lvfnt192t19.snf
				[ -f ${DST}/Lvfnt19lr19.bdf ]  || cp ${SRC}/LV19LR19.BDF  ${DST}/Lvfnt19lr19.bdf
				[ -f ${DST}/Lvfnt19lr19.snf ]  || cp ${SRC}/LV19LR19.SNF  ${DST}/Lvfnt19lr19.snf
				[ -f ${DST}/Lvfnt19tl19.bdf ]  || cp ${SRC}/LV19TL19.BDF  ${DST}/Lvfnt19tl19.bdf
				[ -f ${DST}/Lvfnt19tl19.snf ]  || cp ${SRC}/LV19TL19.SNF  ${DST}/Lvfnt19tl19.snf
				[ -f ${DST}/fonts.alias ]      || cp ${SRC}/FONTS.ALI     ${DST}/fonts.alias
				[ -f ${DST}/fonts.dir ]        || cp ${SRC}/FONTS.DIR     ${DST}/fonts.dir
			;;
			SUN4* )
				SRC=${DIRNAME}/../../FONTS/X11_NEWS
				DST=/usr/tmp/123_fonts/X11_NeWS
		
				[ -d ${DST} ] || { mkdir ${DST} ; chmod 777 ${DST} ; }
			
				[ -f ${DST}/Families.list  ]  || cp ${SRC}/FAMILIES.LIS  ${DST}/Families.list 	 
				[ -f ${DST}/Lvfnt192l19.fb ]  || cp ${SRC}/LV192L19.FB   ${DST}/Lvfnt192l19.fb  
				[ -f ${DST}/Lvfnt192t19.fb ]  || cp ${SRC}/LV192LRF.FF   ${DST}/Lvfnt192lrf.ff  
				[ -f ${DST}/Lvfnt192t19.fb ]  || cp ${SRC}/LV192T19.FB   ${DST}/Lvfnt192t19.fb  
				[ -f ${DST}/Lvfnt192tlf.ff ]  || cp ${SRC}/LV192TLF.FF   ${DST}/Lvfnt192tlf.ff  
				[ -f ${DST}/Lvfnt19lr19.fb ]  || cp ${SRC}/LV19LR19.FB   ${DST}/Lvfnt19lr19.fb  
				[ -f ${DST}/Lvfnt19tl19.fb ]  || cp ${SRC}/LV19TL19.FB   ${DST}/Lvfnt19tl19.fb  
				[ -f ${DST}/Lvfnt19tlrf.ff ]  || cp ${SRC}/LV19TLRF.FF   ${DST}/Lvfnt19tlrf.ff  
				[ -f ${DST}/Lvfont19lrf.ff ]  || cp ${SRC}/LVF19LRF.FF   ${DST}/Lvfont19lrf.ff  
				[ -f ${DST}/Synonyms.list  ]  || cp ${SRC}/SYNONYMS.LIS  ${DST}/Synonyms.list 	 
			;;
			RS6000 )
				SRC=${DIRNAME}/../../FONTS/X11_IBM
				DST=/usr/tmp/123_fonts/X11_ibm
		
				[ -d ${DST} ] || { mkdir ${DST} ; chmod 777 ${DST} ; }
			
				[ -f ${DST}/8x19bp1.snf ]  || cp ${SRC}/8X19BP1.SNF  ${DST}/8x19bp1.snf
				[ -f ${DST}/8x19bp2.snf ]  || cp ${SRC}/8X19BP2.SNF  ${DST}/8x19bp2.snf
				[ -f ${DST}/8x19lp1.snf ]  || cp ${SRC}/8X19LP1.SNF  ${DST}/8x19lp1.snf
				[ -f ${DST}/8x19lp2.snf ]  || cp ${SRC}/8X19LP2.SNF  ${DST}/8x19lp2.snf
				[ -f ${DST}/fonts.alias ]  || cp ${SRC}/FONTS.ALI    ${DST}/fonts.alias
				[ -f ${DST}/fonts.dir   ]  || cp ${SRC}/FONTS.DIR    ${DST}/fonts.dir  
				chmod 444 ${DST}/*

			;;
			esac
	
			xset -d ${DISPLAY} q | grep ${DST} 2>&1 >/dev/null
	
			if [ $? -ne 0 ]
			then
				${XSET} -display ${DISPLAY} fp+ ${DST}/ 2>&1 >/dev/null \
		      		|  grep "^X Error of failed request" > /dev/null
			fi
		fi
fi

case "${GUI_SELECTOR}" in
    alexol)
	if [ "${ARCH}" = "sun4sol1" -o "${ARCH}" = "SUN4SOL1" -o "${ARCH}" = "sun4sol2"  -o "${ARCH}" = "SUN4SOL2" ]
	then
	    # OpenLook: First test to see if we are under Open Look now/here
	    if [ "$WINDOW_MGR" != "olwm" ]
	    then
		echo $OL_ONLY ; echo $OL_O_2; echo $OL_O_3;
		exec $EXEC_FILE_123 $@
	    else
		EXEC_FILE_RUNTIME=123_ol
		EXEC_FILE_GUI=123_ol.rat
		CONST_FILE_SRC=l123_ol.iat
	    fi
	fi
	;;
    alexm*)
	# use default values for EXEC_FILE_RUNTIME, etc.
	;;
    "alex ")
	# Must be a down-level version.  Select Open Look, or default to Motif.
	if [ "${ARCH}" = "sun4sol1" -o "${ARCH}" = "SUN4SOL1" -o "${ARCH}" = "sun4sol2"  -o "${ARCH}" = "SUN4SOL2" ]
	then
	    if [ "$WINDOW_MGR" = "olwm" ]
	    then
		EXEC_FILE_RUNTIME=123_ol
		EXEC_FILE_GUI=123_ol.rat
		CONST_FILE_SRC=l123_ol.iat
	    fi
	fi
	;;
    *)
	# Classic 123, or unknown graph driver type. Could be X or plain tty.
	[ "${L123_DEBUG}" = "1" ] && set -x

	if [ "$ARCH" = "sun4sol2" ]
	then
	    CUI_SELECTOR="TTY`grep '^1004.*x.*l_lrf.bun' ${L123_SET} 2>/dev/null`"

	    if [ "${CUI_SELECTOR}" = "TTY" ]
	    then
		if [ "$TERM" = "sun-cmd" ]
		then
		    echo  $SOL2_NO_SUN_CMD
		    exit
		fi
	    fi
	fi
	for args in $*
	do
	    if [ $args = "-n" ]
	    then
		LOTUS_GUI_MODE=0;   export LOTUS_GUI_MODE
	    fi
	done
	exec ${DIRNAME}/${EXEC_FILE_123} $@
	;;
esac

if [ `basename ${0}` = "qa123" ]
then
	EXEC_FILE_RUNTIME=irat
fi


#-------------------------------------------------------------------------------
# Set the language directory from the user's setup file
#
LANGDIR=`awk -F'"' '/^1006/ {print $4}' $L123_SET`
[ -n "$CD_VERSION" ] && LANGDIR=`unix_to_iso $LANGDIR`

#-------------------------------------------------------------------------------
# Build the names of the spreadsheet, gui interpreter, and gui application
#

if [ -z "$CD_VERSION" ]
then
    if [ -x "${DIRNAME}/${EXEC_FILE_123}" ]
    then
	EXEC_FILE_123=${DIRNAME}/${EXEC_FILE_123}
    fi

    if [ -x "${DIRNAME}/${EXEC_FILE_RUNTIME}" ]
    then
	EXEC_FILE_RUNTIME=${DIRNAME}/${EXEC_FILE_RUNTIME}
    fi

    if [ -f "${DIRNAME}/${EXEC_FILE_GUI}" ]
    then
	EXEC_FILE_GUI=${DIRNAME}/${EXEC_FILE_GUI}
    fi
else
    file1=${DIRNAME}/`unix_to_iso ${EXEC_FILE_123}`
    file2=${DIRNAME}/`unix_to_iso ${EXEC_FILE_RUNTIME}`
    file3=${DIRNAME}/`unix_to_iso ${EXEC_FILE_GUI}`
    file4=${DIRNAME}/`unix_to_iso ${CONST_FILE_SRC}`

    [ -x $file1 ] && EXEC_FILE_123=$file1
    [ -x $file2 ] && EXEC_FILE_RUNTIME=$file2
    [ -f $file3 ] && EXEC_FILE_GUI=$file3
    [ -f $file4 ] && CONST_FILE_GUI=$file4
fi

if [ "${CONST_FILE_GUI}" = "" ]
then
    if [ -f ${BASEDIR}/${VERS_DIR}/ri/${LANGDIR}/${CONST_FILE_SRC} ]
    then
    	CONST_FILE_GUI=${BASEDIR}/${VERS_DIR}/ri/${LANGDIR}/${CONST_FILE_SRC}
    else
	file1="${BASEDIR}/${VERS_DIR}/`unix_to_iso ri`/${LANGDIR}/`unix_to_iso ${CONST_FILE_SRC}`"
	[ -f $file1 ] && CONST_FILE_GUI=$file1
    fi
fi

#-------------------------------------------------------------------------------
# Find a user-specified display name, if any, and compose the argument list
#

while [ $# -gt 0 ]
do
	case "$1" in
	  -display|-d|-Wr)
		DISPLAY=$2
		shift 2
		;;
	  -debug*)
		DEBUG_ARGS="${DEBUG_ARGS} $1"
		shift
		;;
	  *)
		ARG_LIST="${ARG_LIST} $1"
		shift
		;;
	esac
done

if [ -z "$DISPLAY" ]
then
	DISPLAY="unix:0"
fi
export DISPLAY

#-------------------------------------------------------------------------------
# Verify /usr/bin/X11 in path, presumably the location of 'xset' command
#

[ -f /usr/bin/X11/xset ]     && XSET=/usr/bin/X11/xset
if [ ${OPENWINHOME} ] && [ -n ${OPENWINHOME} ]; then
	[ -f ${OPENWINHOME}/bin/xset ] && XSET=${OPENWINHOME}/bin/xset
else
	[ -f /usr/openwin/bin/xset ] && XSET=/usr/openwin/bin/xset
fi
[ -z "$XSET" ]               && XSET=${DIRNAME}/xset

#-------------------------------------------------------------------------------
# Validate the display connection, if we need X
#

grep '^1004.*x.*l_lrf.bun' ${L123_SET} >/dev/null
if [ $? -eq 0 ]
then
        ${XSET} -display ${DISPLAY} -q >/dev/null 2>&1
        if [ $? -ne 0 ]
        then
                echo $CANT_CONNECT ${DISPLAY} ; echo $MOTIF_O_2
                exit 1
        fi
fi

#-------------------------------------------------------------------------------
# Make sure we have Unix file name mode set in .l123set
#

grep '^1008.*"0"' ${L123_SET} >/dev/null
if [ $? -ne 0 ]
then
	echo "$WARN_NO_DOS_MODE_MOTIF"
fi

echo " ${ARG_LIST}" | egrep ' -f[ 	]+dos' >/dev/null
if [ $? -eq 0 ]
then
	echo "$WARN_NO_DOS_MODE_MOTIF"
fi

#-------------------------------------------------------------------------------
# Validate user arguments, revise argument list
#
if [ -n "$CD_VERSION" ] 
then
	file1="$DIRNAME/`unix_to_iso ismono`"
	[ -x $file1 ] && ARG_LIST="`$file1 -display ${DISPLAY} ${ARG_LIST}`"
else
	ARG_LIST="`$DIRNAME/ismono -display ${DISPLAY} ${ARG_LIST}`"
fi
MONOSTAT=$?

case "$MONOSTAT" in
    "0")
	IS_MONO_123="1"
	SV_MONO="1"
	export IS_MONO_123 SV_MONO
	MONO_ARGS=" -xrm *TextField.foreground:black \
		    -xrm 1-2-3*TextField*inputFocusColor:black \
		    -xrm *TextEdit.foreground:black \
		    -xrm 1-2-3*TextEdit*inputFocusColor:black "
	;;
    "1")
	IS_MONO_123="0"
	export IS_MONO_123
	MONO_ARGS=
	;;
    "2")
	# Run raw spreadsheet.  '$@' is no longer valid.
	LOTUS_GUI_MODE=0
	export LOTUS_GUI_MODE
	exec ${EXEC_FILE_123} -display ${DISPLAY} ${ARG_LIST}
	;;
    *)
	exit $MONOSTAT
	;;
esac

#-------------------------------------------------------------------------------
# Try to get 1-2-3 GUI license
#
if [ -z "$CD_VERSION" ]
then
	LIC_DIR=`awk -F'"' '/^1002/ {print $4}' ${L123_SET}`
	if [ -z "${LIC_DIR}" ]
	then
		LIC_DIR=${BASEDIR}/${VERS_DIR}/${ARCH}/${LIC_SUB_DIR}
	else
		LIC_DIR=${LIC_DIR}/${VERS_DIR}/${ARCH}/${LIC_SUB_DIR}
	fi
	LIC_TEST=${BASEDIR}/${VERS_DIR}/${ARCH}/${LIC_SUB_DIR}/${LIC_TEST}
	if [ -r "${LIC_DIR}/license.dat" -a -r "${LIC_TEST}" ]
	then
		grep ${DEMO_FEATURE} ${LIC_DIR}/license.dat >/dev/null 2>&1
		if [ "${?}" -ne 0 ]
		then
			${LIC_TEST} ${LIC_DIR} ${MAX_SESSIONS}${VERSION}${FEATURE} \
				${LIC_HOLD_TIME}
			if [ "${?}" -ne 0 ]
			then
				# Fallback to CUI spreadsheet.  '$@' is no longer valid.
				LOTUS_GUI_MODE=0;   export LOTUS_GUI_MODE
				L_FALLBACK_MODE=1;  export L_FALLBACK_MODE
				exec ${EXEC_FILE_123} -display ${DISPLAY} ${ARG_LIST}
			else
				LOTUS_GUI_MODE=1
				export LOTUS_GUI_MODE
			fi
		fi
	fi
fi

ARG_LIST="-display $DISPLAY $MONO_ARGS $ARG_LIST"

#-------------------------------------------------------------------------------
# Set TERMCAP or TERMINFO to its required value.  No user choice here!
#
case "${ARCH}" in
    decs|sun4sol1|SUN4SOL1)
	TERMCAP='ezterm:
	    :am:bs:ms:co#80:it#8:li#24:bl=^G:cl=\E!:cr=\r:LE=\Ec%3:
	    :le=\E3:DO=\Eb%3:do=\E2:RI=\Ed%3:nd=\E4:cm=\ES%r%+!%+!:UP=\Ea%3:
	    :up=\E1:DC=\Eg%3:dc=\E7:DL=\Eh%3:dl=\E8:cd=\E#\EQSB:ce=\E#:
	    :cb=\EQLS:ho=\E":IC=\Ee%3:ic=\E5:AL=\Ef%3:al=\E6:sf=\E9:sr=\E\::
	    :md=\EPBY:mb=\EPBY:mr=\EPRY:se=\EPRN:ue=\EPUN:
	    :me=\EPAN:so=\EPRY:us=\EPUY:k1=\E[01:k2=\E[02:k3=\E[03:
	    :k4=\E[04:k5=\E[05:k6=\E[06:k7=\E[07:k8=\E[08:k9=\E[09:
	    :k10=\E[10:k11=\E[11:k12=\E[12:k13=\E[13:k14=\E[14:k15=\E[15:
	    :k16=\E[16:k17=\E[17:k18=\E[18:k19=\E[19:k20=\E[020
	    :ku=\E[c1:kd=\E[c2:kl=\E[c3:kr=\E[c4 :Bb=\EBH:Bw=\EBO:
	    :Bn=\EBO:Bi=\EBN:Bh=\EBL:Bf=\EBI:Fa=\EB>:Fb=\EB?:Fc=\EB@:Fd=\EBA:
	    :Fe=\EBB:Ff=\EBC:Fg=\EBD:Fh=\EBE:'
	export TERMCAP
	;;
    sun4sol2|rs6000|hp700|m88k*)
	if [ -d ${BASEDIR}/${VERS_DIR}/${ARCH}/terminfo ]
	then
		TERMINFO=${BASEDIR}/${VERS_DIR}/${ARCH}/terminfo
	else
		file1=${BASEDIR}/${VERS_DIR}/${ARCH}/`unix_to_iso terminfo`
		[ -d $file1 ] && TERMINFO=$file1
	fi
	[ -n "$TERMINFO" ] && export TERMINFO
	;;
    SUN4SOL2|HP700|RS6000)
	if [ ! -f /usr/tmp/${VERS_DIR}/${ARCH}/terminfo/e/ezterm ]
	then
		EZTERM=${BASEDIR}/${VERS_DIR}/${ARCH}/TERMINFO/E/EZTERM

		[ -d /usr/tmp/${VERS_DIR} ] || \
		    mkdir /usr/tmp/${VERS_DIR}
		[ -d /usr/tmp/${VERS_DIR}/${ARCH} ] || \
		    mkdir /usr/tmp/${VERS_DIR}/${ARCH}
		[ -d /usr/tmp/${VERS_DIR}${ARCH}/terminfo ] || \
		    mkdir /usr/tmp/${VERS_DIR}/${ARCH}/terminfo
		[ -d /usr/tmp/${VERS_DIR}/${ARCH}/terminfo/e ] || \
		    mkdir /usr/tmp/${VERS_DIR}/${ARCH}/terminfo/e 
		    
		chmod 777 /usr/tmp/${VERS_DIR}/${ARCH}/terminfo/e

		ezterm=/usr/tmp/${VERS_DIR}/${ARCH}/terminfo/e/ezterm 

		# remove old link if present
		case "${ARCH}" in
		RS6000) 
		    [ -d $ezterm ] && rm -f $ezterm 
		;;
		*)
		    [ -h $ezterm ] && rm -f $ezterm 
		;;
		esac

		ln -s $EZTERM $ezterm
	fi
	TERMINFO=/usr/tmp/${VERS_DIR}/${ARCH}/terminfo
	export TERMINFO
	;;
    *)
	# Unknown ARCH.  123 will fail gracefully (I hope)
	;;
esac

#-------------------------------------------------------------------------------
# Build the font search path, verify that 1-2-3 fonts are in the path, or
#  add the location of 1-2-3 fonts to the end of the path

if [ -n "$CD_VERSION" ]
then

	BITMAPS=${BASEDIR}/${VERS_DIR}/${HLP}/${LANGDIR}/`unix_to_iso bitmaps`

	if [ ! -f /usr/tmp/${HLP}/${LANGDIR}/bitmaps/ACENTER.XBM ]
	then
		[ -d /usr/tmp/${HLP} ] || mkdir /usr/tmp/${HLP}
		[ -d /usr/tmp/${HLP}/${LANGDIR} ] || mkdir /usr/tmp/${HLP}/${LANGDIR}
		chmod 777 /usr/tmp/${HLP}/${LANGDIR}

		bitmaps=/usr/tmp/${HLP}/${LANGDIR}/bitmaps 

		# remove old link if present
		case "${ARCH}" in
		RS6000) 
		    [ -d $bitmaps ] && rm -f $bitmaps 
		;;
		*)
		    [ -h $bitmaps ] && rm -f $bitmaps 
		;;
		esac

		ln -s $BITMAPS $bitmaps
	fi

	XFILESEARCHPATH="./%N%S:/usr/tmp/${HLP}/%L/bitmaps/%N%S:${BASEDIR}/${VERS_DIR}/${ARCH}/BIN/%N%S:/usr/lib/X11/%L/%T/%N%S:/usr/lib/X11/%l/%T/%N%S:/usr/lib/X11/%T/%N%S"
else
	XFILESEARCHPATH="./%N%S:${BASEDIR}/${VERS_DIR}/hlp/%L/bitmaps/%N%S:${BASEDIR}/${VERS_DIR}/${ARCH}/bin/%N%S:/usr/lib/X11/%L/%T/%N%S:/usr/lib/X11/%l/%T/%N%S:/usr/lib/X11/%T/%N%S"
fi

export XFILESEARCHPATH

if [ -x ${DIRNAME}/Xven ]; then
	XVENDOR=`${DIRNAME}/Xven ${DISPLAY}`
else
	XVEN=${DIRNAME}/`unix_to_iso Xven`
	if [ -x $XVEN ]
	then
		XVENDOR=`$XVEN ${DISPLAY}`
	else
		XVENDOR=`Xven ${DISPLAY}`
	fi
fi

if [ ! $? = 0 ]; then
	case "${ARCH}" in
		decs*)		FONT_DIR="X11_decs" 	;;
		m88k*)		FONT_DIR="X11_ncd"	;;
		hp*)		FONT_DIR="X11_hp"   	;;
		rs6000|ibm*)	FONT_DIR="X11_ibm" 	;;
		sun*)
			if [ "$WINDOW_MGR" = "olwm" ]; then
				FONT_DIR="X11_NeWS"
			else
				FONT_DIR="X11_MIT_sun4"
			fi
			;;
		*)		echo $FP_ERR "${ARCH}"; exit 1;;
	esac
else
	echo ${XVENDOR} | grep "Network Computing Devices"\
		2>&1 > /dev/null
	if [ $? = 0 ]; then
		FONT_DIR="X11_ncd"
		XVENDOR_SUB="DECWINDOWS"
	else
		XVENDOR_SUB="`echo ${XVENDOR} | awk '{print substr($0,1,10)}'`"

		case ${XVENDOR_SUB} in
			"X11/NeWS -")	FONT_DIR="X11_NeWS"	;;
			"DECWINDOWS")	FONT_DIR="X11_decs"	;;
			"Hewlett-Pa")	FONT_DIR="X11_hp"	;;
			"INTERACTIV")	FONT_DIR="X11_ISC"	;;
			"MIT X Cons")	FONT_DIR="X11_MIT_sun4"	;;
			"Sun Micros")	FONT_DIR="X11_MIT_sun4"	;;
			"Internatio")	FONT_DIR="X11_ibm"	;;
			"Locus Comp")	FONT_DIR="X11_ODT"	;;
			*)		FONT_DIR="X11"		;;
		esac
	fi
fi

[ -n "$CD_VERSION" ] && FONT_DIR=`unix_to_iso $FONT_DIR` 
export XVENDOR FONT_DIR XVENDOR_SUB

#-------------------------------------------------------------------------------
# Process the pastel file if in peg123.  Set the app name in any case.
# Do not use vendor specific app name when running openlook 123.
#
case ${EXEC_FILE_RUNTIME} in
	*`unix_to_iso 123_ol`)	
		KYBD=`awk -F'"' '/^1010/ {print $2}' $L123_SET`
		case ${KYBD} in
		*Type5) APP_NAME="1-2-3-sun5"
			;;
		*101A)  APP_NAME="1-2-3-sun101"
			;;
		*)      APP_NAME="1-2-3-sun4"
			;;
		esac
		CLASS_NAME=1-2-3OL 
	;;
	*123_ol)	
		KYBD=`awk -F'"' '/^1010/ {print $2}' $L123_SET`
		case ${KYBD} in
		*Type5) APP_NAME="1-2-3-sun5"
			;;
		*101A)  APP_NAME="1-2-3-sun101"
			;;
		*)      APP_NAME="1-2-3-sun4"
			;;
		esac
		CLASS_NAME=1-2-3OL 
	;;
	*)	case ${XVENDOR_SUB} in
			"DECWINDOWS")   # REVISIT
				case "${ARCH}" in
					m88k*)	APP_NAME="1-2-3-m88kncd" ;;
					decs)	APP_NAME="1-2-3-dec"  ;;
					*)	APP_NAME="1-2-3-m88kncd" ;;
				esac
			;;
			"Hewlett-Pa")   APP_NAME="1-2-3-hp"
			;;
			"Internatio")   APP_NAME="1-2-3-ibm"
			;;
			"MIT X Cons")	
				KYBD=`awk -F'"' '/^1010/ {print $2}' $L123_SET`
				case ${KYBD} in
				*Type5) APP_NAME="1-2-3-sun5"
					;;
				*101A)  APP_NAME="1-2-3-sun101"
					;;
				*)      APP_NAME="1-2-3-sun4"
					;;
				esac
			;;
			*)              APP_NAME="1-2-3-sun4"
			;;
		esac
		CLASS_NAME=1-2-3M
	;;
esac

[ -n "$CD_VERSION" ] && CLASS_NAME=`unix_to_iso $CLASS_NAME`

export APP_NAME
case ${EXEC_FILE_RUNTIME} in
	*irat)		
		case ${WINDOW_MGR} in
			"olwm")	CLASS_NAME=1-2-3OL ;;
		esac
	;;
esac

case ${ARCH} in
	sun4sol2)      CPP="/usr/ccs/lib/cpp" ;;
	*)             CPP="/lib/cpp" ;;
esac

case "${0}" in
	*peg123)
		CONST_FILE_GUI=./${ARCH}/${CONST_FILE_SRC} # use local constants
		if [ -f ./PASTEL.M ]		# use local X resources
		then
			${CPP} ./PASTEL.M > 1-2-3M
		elif  [ -f ./PASTEL.OL ]	# use local X resources
		then
			${CPP} ./PASTEL.OL > 1-2-3OL
		fi
		;;
esac


FONTSUBPATH="${VERS_DIR}/fonts/"${FONT_DIR}

${XSET} -display ${DISPLAY} -q | grep "${FONTSUBPATH}" >/dev/null 2>&1
if [ $? != 0 ]
then
    # !NB: redirect stderr of xset into pipe

    if [ -z "$CD_VERSION" ]
    then
	${XSET} -display ${DISPLAY} fp+ ${BASEDIR}/${FONTSUBPATH} 2>&1 >/dev/null  \
	      |  grep "^X Error of failed request" > /dev/null
    	[ $? -eq 0 ] && echo $FP_ERR ${BASEDIR}/${FONTSUBPATH}
    fi
fi

#-------------------------------------------------------------------------------
# Construct a stderr argument if there is a tty device available
#

STDERR=`tty 2>/dev/null`
if [ $? -eq 0 ]
then
	ARG_LIST="-stderr ${STDERR} ${ARG_LIST}"
fi

#-------------------------------------------------------------------------------
# Let Motif know where to find bitmaps
#

XAPPLRESDIR=${BASEDIR}/${VERS_DIR}/hlp/${LANGDIR}
[ -n "$CD_VERSION" ] && XAPPLRESDIR=/usr/tmp/${HLP}

if [ "`uname -r`" -ge 5.0 ]
then
	if [ ! -d /usr/lib/locale/${LANGDIR} ]
	then
		LANG=C
	else
		LANG=${LANGDIR}
	fi
else
	LANG=${LANGDIR}
fi

export LANG LANGDIR XAPPLRESDIR

#-------------------------------------------------------------------------------
# Let the system find the bsd compatibility libs
#

if [ ${ARCH} = "sun4sol2" ]; then
	LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/ucblib
	export LD_LIBRARY_PATH
fi


#-------------------------------------------------------------------------------
# No stopping us now!
#

[ "${L123_DEBUG}" = "1" ] && set -x

${EXEC_FILE_RUNTIME} \
    -name      ${APP_NAME} \
    -class     ${CLASS_NAME} \
    -execfile  ${EXEC_FILE_123} \
    -file      ${EXEC_FILE_GUI} \
    -constfile ${CONST_FILE_GUI} \
    -helpdir   ${BASEDIR}/${VERS_DIR}/${HLP}/${LANGDIR} \
    ${DEBUG_ARGS} \
    ${ARG_LIST}

#-------------------------------------------------------------------------------
# That's all, folks!
#-------------------------------------------------------------------------------
