#!/bin/sh
#
#     @(#)hotjava.sh	1.36 97/03/08
# 
# Copyright 1996-1997 Sun Microsystems, Inc.
#

#
# Determine HOTJAVA_HOME
#

if [ -z "${HOTJAVA_HOME}" ] ; then
    HOTJAVA_HOME=`dirname $0`
    HOTJAVA_HOME=`cd ${HOTJAVA_HOME}/.. ; /bin/pwd`
    echo "HOTJAVA_HOME is set to ${HOTJAVA_HOME}"
fi

if [ ! -d "${HOTJAVA_HOME}" ] ; then
    echo "Invalid HOTJAVA_HOME: ${HOTJAVA_HOME}" 1>&2 
    exit 1
fi

if [ ! -r "${HOTJAVA_HOME}/lib/properties" ] ; then
    echo "Could not read properties file: ${HOTJAVA_HOME}/lib/properties" 1>&2 
    exit 1
fi

# Default THREADS_TYPE is "green_threads". 
# This introduces a dependency of this wrapper on the policy used to build
# java. e.g. the usage of the name "green_threads" here is dependent on the
# build scripts which use the same name. Since this is somewhat analogous to
# the wrapper already depending on the build scripts putting the libraries in
# a specific place ($HOTJAVA_HOME/lib/$ARCH/), the new dependency does not
# seem all that bad, while enabling threads specific runs of the browser.

THREADS_TYPE=green_threads
if [ "${THREADS_FLAG}" = native ];\
	then THREADS_TYPE=native_threads;\
fi
export THREADS_TYPE

rtclasses="/mit/javadev/share/java/classes.zip:/mit/javadev/share/java/classes"
rtbinhome="/mit/javadev/arch/${ATHENA_SYS}/libexec"
rtlibhome="/mit/javadev/arch/${ATHENA_SYS}/lib"
jhome=/mit/javadev


#
# Set Paths
#

hjclasses="${HOTJAVA_HOME}/classes:${HOTJAVA_HOME}/lib/classes.zip"
hjclasses="${hjclasses}:$HOTJAVA_HOME/lib/ssl.zip:${rtclasses}"

if [ -z "$CLASSPATH" ] ; then
    CLASSPATH="${hjclasses}"
else
    CLASSPATH="${hjclasses}:$CLASSPATH"
fi
export CLASSPATH


PATH="${HOTJAVA_HOME}/bin:${rtbinhome}/bin:$PATH"
export PATH

# BAD! SSL disabled for now.
# hjlibs="${HOTJAVA_HOME}/lib/${arch}/${THREADS_TYPE}"
# hjlibs="${hjlibs}:${HOTJAVA_HOME}/lib/${arch}/ssl"

LD_LIBRARY_PATH="${hjlibs}:${rtlibhome}:${LD_LIBRARY_PATH}"
export LD_LIBRARY_PATH

#
# Create .hotjava directory
#

if [ ! -d "${HOME}/.hotjava" ] ; then
    echo "Creating ${HOME}/.hotjava directory"
    mkdir -p ${HOME}/.hotjava
fi

#
# Parse arguments
#

prog=java
logfile="${HOTJAVA_LOG:-/dev/null}"

while [ $# != 0 ]; do
  case "$1" in 
    -debug) prog=jdb; logfile=/dev/tty  ;;
    -log) shift; logfile="$1" ;;
    -help|--help|-\?) cat <<EOF
Welcome to HotJava 1.0!

Optional Environment Variables:
    Set HOTJAVA_LOG environment variable to a file to log output to
    (/dev/tty ok).  For logging on a single run, use the -log switch.

Usage:

    hotjava [ -log log_file ] [ java_interpreter_options ] [ URL ]

To see the available "java_interpreter_options", type:

    ${rtbinhome}/${prog} -help

EOF
        exit ;;
    -trace) args="${args} $1" ;;
    -*) opts="${opts} $1" ;;
    *)  args="${args} $1" ;;
  esac
  shift
done

#
# Select a java interpreter
#
JAVA="${rtbinhome}/${prog}"
if [ ! -x "${JAVA}" ] ; then
    echo "Can't execute: ${JAVA}" 1>&2
    exit 1
fi

#
# Add WWW_HOME option
#
if [ ! -z "${WWW_HOME}" ] ; then
    opts="${opts} -Dwww.home=${WWW_HOME}"
fi

#
# Start HotJava
#
echo "THREADS_TYPE is ${THREADS_TYPE}" 1> "${logfile}" 2>&1

exec ${JAVA} -classpath ${CLASSPATH} -noasyncgc -ms4m -mx32m \
    -Dhotjava.home=${HOTJAVA_HOME} -Djava.home=${jhome} ${opts} \
    sun.hotjava.Main ${args} 1>> "${logfile}" 2>&1

