#!/bin/ksh
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
# websm72Q src/sysmgt/cfgassist/bin/wjava.sh 1.3 
#  
# Licensed Materials - Property of IBM 
#  
# Restricted Materials of IBM 
#  
# COPYRIGHT International Business Machines Corp. 1998,2019 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 
# @(#)94	1.3  src/sysmgt/cfgassist/bin/wjava.sh, cfgassist, websm72Q, q2019_07A4 2/1/19 03:52:04
unset ENV

export WSMDATA=/tmp/wsmdata.$$/wsmdata
export VimDATA="$WSMDATA"


OS=`/bin/uname -s`

HOSTNAME=/usr/bin/hostname

#
# check if the person is remotely logged in, set DISPLAY if yes
#
LOG_PTS=`/usr/bin/tty | /usr/bin/sed 's@/dev/@@'`

LOG_HOST=`/usr/bin/who | /usr/bin/grep "$LOG_PTS " | /usr/bin/grep "(" | /usr/bin/cut -f2 -d '(' | /usr/bin/cut -f1 -d')' | /usr/bin/cut -f1 -d':'`
if [[ -n $LOG_HOST && -z $DISPLAY ]]; then
 export DISPLAY=$LOG_HOST:0
 export WSMDISPLAY=$LOG_HOST:0
fi


#
# Set DISPLAY if not already set (see 293786) 
#
# WSMDISPLAY is used to pass value to java for remote mode
WSMDISPLAY=$DISPLAY

if [[ -z $WSMDISPLAY ]]; then
 # if no value is set, use DISPLAY for regular mode, and do
 # not use hostname b/c its faster
 # set WSMDISPLAY so remote mode will work
 export DISPLAY=":0.0"
 export WSMDISPLAY=$(${HOSTNAME})":0.0"

else
  # In remote mode, the format ":0.0" will not work, need
  # the hostname b/c client does not know display value
  a=`echo $WSMDISPLAY | /usr/bin/cut -f1 -d:`
  if [[ -z $a ]]; then
        export WSMDISPLAY=$(${HOSTNAME})":0.0"
  fi

fi

#
# Are we running on the same machine as our display?
#
# Look for pattern: [[hostpath]:display_id]
#
hostpath=${DISPLAY%%:*}   # Everything before the first colon
localMachine=y
if [[ $hostpath != "" ]]
 then
   localAddr=`/usr/bin/host \`hostname\` | LANG=C /usr/bin/awk '{sub(",", "", $3); print $3}'`
   displayAddr=`/usr/bin/host $hostpath | LANG=C /usr/bin/awk '{sub(",", "", $3); print $3}'`
   if [[ $localAddr != $displayAddr ]]
    then
      localMachine=n  # May not be entirely true; machines can have multiple
                      # adapters.
   fi
fi

HOMEDIR=/usr/cfgassist
export ODMDIR=/etc/objrepos

MessageLang=$(/usr/bin/locale | /usr/bin/grep LC_MESSAGES | /usr/bin/sed 's/\"//g' | /usr/bin/cut -d'=' -f2)



# set the path where the supported java version should reside
JAVA_PATH=/usr/java8_64


if [ -d $JAVA_PATH ]
 then
   export PATH=${JAVA_PATH}/bin:${JAVA_PATH}/jre/bin:/bin:/usr/bin:/usr/sbin:${HOMEDIR}/bin:$PATH
 else
   echo "Java 7 is required"
   exit 1
fi



# Bold fonts in double byte languages do not display well.  Need to
# set a java variable to disable this.
if [ "$OS" = "AIX" ] ; then
 case $LANG in
      ja_JP ) JAVA2D_PURET2KRASTERIZER=1
            ;;
      Ja_JP ) JAVA2D_PURET2KRASTERIZER=1
            ;;
      JA_JP ) JAVA2D_PURET2KRASTERIZER=1
            ;;
      Zh_TW ) JAVA2D_PURET2KRASTERIZER=1
            ;;
      ZH_TW ) JAVA2D_PURET2KRASTERIZER=1
            ;;
      Zh_CN ) JAVA2D_PURET2KRASTERIZER=1
            ;;
      ZH_CN ) JAVA2D_PURET2KRASTERIZER=1
            ;;
      KO_KR ) JAVA2D_PURET2KRASTERIZER=1
            ;;
      ko_KR ) JAVA2D_PURET2KRASTERIZER=1
            ;;
 esac
 export JAVA2D_PURET2KRASTERIZER
fi

# Turn of AUIML logging.
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.config.file=/dev/null"


#
# Current directory will be $CODEBASE
#

CODEBASE="${HOMEDIR}/codebase"
StartDir="$CODEBASE"

if [[ ! -d $StartDir ]]; then
  echo "Cannot get to codebase directory:\n	$StartDir" >&2
  exit 1
fi 

cd $StartDir

# DO NOT change the order of the following three items.
CLASSPATH="${CLASSPATH}:.:cfgassist.jar"

CLASSPATH="${CLASSPATH}:jhall.jar"
CLASSPATH="${CLASSPATH}:bundles.jar"
CLASSPATH="${CLASSPATH}:auiml.jar"



for p in `/bin/ls pluginjars/*.jar 2>/dev/null`
 do
   CLASSPATH="${CLASSPATH}:$p"
done

#
# If sysmgtlib directory exists, add available jars
# to CLASSPATH
#
if [[ -d /opt/IBM/sysmgtlib ]]; then
  for p in `/bin/ls /opt/IBM/sysmgtlib/*.jar 2>/dev/null`
  do
    CLASSPATH="${CLASSPATH}:$p"
  done
fi

export CLASSPATH

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:"${HOMEDIR}/lib"
LIBPATH=${LD_LIBRARY_PATH}:${LIBPATH}
export LIBPATH
export LD_LIBRARY_PATH

ImageDir=${CODEBASE}/images

PATH=$PATH:${HOMEDIR}/bin

HEAP_MIN=16
HEAP_INC=4

W_HEAP_MIN_SIZE="${W_HEAP_MIN_SIZE:-$HEAP_MIN}"
W_HEAP_INC_SIZE="${W_HEAP_INC_SIZE:-$HEAP_INC}"
W_BIND_PROC="${W_BIND_PROC:-no}"

STACK_OPT=""
PHYS_MEM=`(LANG=C ; /usr/sbin/prtconf -m | /usr/bin/cut -d" " -f3) 2> /dev/null`

# On a multi processor environment, limit the execution to only one processor
if [ "$W_BIND_PROC" = "yes" ]
then
   if [ -x /usr/sbin/bindprocessor ] # Bind to processor 0 which can
    then                              # never be deallocated during 
       /usr/sbin/bindprocessor $$ 0  # LPAR reconfig.
   fi
fi

MAX_HEAP_MAX=512
if [ ! -z "$PHYS_MEM" -a  "$PHYS_MEM" != "0" ]
then
    (( HEAP_MAX = $PHYS_MEM / 2 ))
    if [ $HEAP_MAX -lt $HEAP_MIN ]
    then
        HEAP_MAX=$HEAP_MIN
    fi
    if [ $HEAP_MAX -gt $MAX_HEAP_MAX ]
    then
        HEAP_MAX=$MAX_HEAP_MAX
    fi
else
    HEAP_MAX=$MAX_HEAP_MAX
fi
W_HEAP_MAX_SIZE="${W_HEAP_MAX_SIZE:-$HEAP_MAX}"

JAVA_OPTS="$JAVA_OPTS $STACK_OPT \
          -Xquickstart \
          -Xmx${W_HEAP_MAX_SIZE}m \
          -Xms${W_HEAP_MIN_SIZE}m \
          -Xmine${W_HEAP_INC_SIZE}m \
          -DMessageLang=${MessageLang} \
          -Ddisplay=$WSMDISPLAY \
          -DWINDOWID=$WINDOWID"

if [[ $localMachine = "n" ]]
 then
   # Slow down the rate at which the progress bar is updated. 21,000 = update
   # every 1 second.

   JAVA_OPTS="$JAVA_OPTS -DProgBarLoop=21000"
fi

export FORCEDEFVIS=1  # Force X to use 8-bit color instead of 32. Helps for
                      # remote-X

if [[ $# -gt 0 && $1 = "-n" ]] ; then
#Don't put the command in the background
 shift
fi

# set WEBSM_ALL_PERMISSIONS_FOR_SECURE to workaround security in remote SSL mode
JAVA_OPTS="$JAVA_OPTS -DWEBSM_ALL_PERMISSIONS_FOR_SECURE=true"

if [[ $WEBSM_JAVA_DEBUG != "" ]]
 then
   webSMInstances=0
   if [[ -f /tmp/websmJavaDebugPorts ]]
    then
      webSMInstances=$(/usr/bin/wc /tmp/websmJavaDebugPorts | /usr/bin/awk '{print $1}')
   fi
   
   (( port=$webSMInstances+8000 ))
   echo port: $port `date` >> /tmp/websmJavaDebugPorts
   echo "Debug Port/Socket is: " + $port
   JAVA_OPTS="$JAVA_OPTS -Xdebug -Xnoagent -Djava.compiler=NONE \
             -Xrunjdwp:transport=dt_socket,server=y,address=$port,suspend=n"
fi


if [[ ! -d $HOME/.java/.userPrefs ]]
then
 mkdir -p $HOME/.java/.userPrefs
fi


if [[ ! -d $JAVA_PATH/jre/.systemPrefs ]]
then
 mkdir -p $JAVA_PATH/jre/.systemPrefs
fi


exec ${JAVA_PATH}/jre/bin/java $JAVA_OPTS "$@"
