#!/bin/sh
#
#	$Id: startapp,v 1.73 2001/06/11 17:54:01 beth Exp $
#
# This script determines the operating system and hardware combination
# and overlays itself with the correct binary for the desired program.
# The program is determined from the name by which the script is invoked.

APPLICATION=`basename $0`
APP_ARGS=
IDL_VERSION=5.5
ENVI_VERSION=3.5
VIP_VERSION=1.5
RT_VERSION=2.5
ION_VERSION=1.5

LICENSE_NAME=license.dat

INSTALL_DIR=/opt/rsi

IDLDIRECTORY_VERS=idl_${IDL_VERSION}
IDLDIRECTORY=idl

# Some applications can be invoked with or without a version suffix.
# Recognise the versioned ones and remove the version.
case $APPLICATION in
"idl_$IDL_VERSION") APPLICATION=idl;;
"idlde_$IDL_VERSION") APPLICATION=idlde;;
"idldeclient_$IDL_VERSION") APPLICATION=idldeclient;;
"idlrpc_$IDL_VERSION") APPLICATION=idlrpc;;
"idlhelp_$IDL_VERSION") APPLICATION=idlhelp;;
"idldemo_$IDL_VERSION") APPLICATION=idldemo;;
"rsilicense_$IDL_VERSION") APPLICATION=rsilicense;;
"envihelp_$ENVI_VERSION") APPLICATION=envihelp;;
"viphelp_$VIP_VERSION") APPLICATION=viphelp;;
"rivertoolshelp_$RT_VERSION") APPLICATION=rivertoolshelp;;
"ion-p_$ION_VERSION") APPLICATION=ion-p;;
"ion-i_$ION_VERSION") APPLICATION=ion-i;;
"iond_$ION_VERSION") APPLICATION=iond;;
"ionstat_$ION_VERSION") APPLICATION=ionstat;;
"iondown_$ION_VERSION") APPLICATION=iondown;;
"ion_httpd_$ION_VERSION") APPLICATION=ion_httpd;;
esac


# Find the main IDL directory
if [ "$IDL_DIR" = "" ]; then
    for DIR in $INSTALL_DIR/$IDLDIRECTORY_VERS /usr/local/rsi/$IDLDIRECTORY_VERS . ./idl_$IDL_VERSION /usr/local/lib/$IDLDIRECTORY /usr/local/$IDLDIRECTORY /usr/local/bin/$IDLDIRECTORY
	do
	if [ -d $DIR ]; then
	    if [ -f $DIR/resource/fonts/hersh1.chr ]; then
        	IDL_DIR=$DIR
		break
	    fi
        fi
    done
fi

if [ "$IDL_DIR" = "" ]; then
    echo "Unable to access $APPLICATION. You will have to
define the IDL_DIR environment variable to point at the main
IDL directory before it will work."
    exit 1
fi


# If LM_LICENSE_FILE is not defined and one of the following exists
#    $IDL_DIR/../license/license.dat     (license dir from base idl product)
# then define LM_LICENSE_FILE. If file is not found, leave it unset.
# If LM_LICENSE_FILE is already set, then respect that and leave it alone.  
if [ \( "$LM_LICENSE_FILE" = "" \) ] ; then
    if [ \( -f $IDL_DIR/../license/$LICENSE_NAME \) ] ; then
#      default location for standard IDL distribution
       LM_LICENSE_FILE=$IDL_DIR/../license/$LICENSE_NAME
       export LM_LICENSE_FILE
    fi
fi



# Look for a -32 argument. If seen, take note, but don't worry
# about removing it (idl accepts it and ignores it, allowing this
# script to be simpler). If a platform supports both 32 and 64-bit
# versions of our application, the default is to take the 64-bit version.
# However, -32 says to run the 32-bit version even on a 64-bit platform
PREFER_32=0
for arg
do
  if [ "$arg" = "-32" ]; then
    PREFER_32=1
  fi
done



# Determine the operating system, hardware architecture, and os release
# Make sure these agree with IDL's compiled in paths or online help
# won't be found.
OS=
ARCH=
OSVER=
case `uname` in

    "SunOS")				# Solaris
	OS="solaris"
	OSVER="2"
        BIN_ARCH=/usr/bin/arch
        if [ -x /usr/bin/arch ]; then
            BIN_ARCH=/usr/bin/arch
        elif [ -x /usr/ucb/arch ]; then
            BIN_ARCH=/usr/ucb/arch
        fi
        if [ `$BIN_ARCH` = i86pc ]; then
          ARCH=".x86"
	else
	  # If the system is running the 64-bit SunOS kernel, a 64-bit
	  # IDL is installed, and the user did not specify the -32
	  # command argument, then run the 64-bit version. Otherwise
	  # the 32-bit version will work on all supported platforms.
          ARCH=".sparc"
	  if [ \( $PREFER_32 = 0 \) -a \( -x /bin/isainfo \) \
               -a \( -f $IDL_DIR/bin/bin.$OS${OSVER}.sparc64/$APPLICATION \) ]; then
            if [ `/bin/isainfo -b` = 64 ]; then
	      ARCH=.sparc64
            fi
          fi
        fi
	;;

    "AIX") OS="ibm";;

    "HP-UX") OS="hp";;

    "IRIX") OS="sgi";;

    "IRIX6") OS="sgi";;

    "IRIX64") OS="sgi";;

    "OSF1") OS="alpha";;

    "Linux")
	OS="linux"
        ARCH=".x86"
        if [ -x /bin/arch ]; then
          if [ `/bin/arch` = alpha ]; then
            ARCH=.alpha
            if [ "$APPLICATION" = "rsilicense" ]; then
	       echo "$APPLICATION: is not supported on this system architecture. Please contact RSI Technical Support for a license."
               exit 1
            elif [ \( "$APPLICATION" = "idlde" \) -o \( "$APPLICATION" = "idl" \) -o \( "$APPLICATION" = "idldeclient" \) -o \( "$APPLICATION" = "idlrpc" \) ]; then
               APP_ARGS=-genver
            fi
          fi
        fi
	;;
		
    *)
	echo "$APPLICATION: Unable to recognize system architecture."
	exit 1
	;;

esac

# Add the bin directory to the library search path
case $OS in
    "ibm")
	if [ "$LIBPATH" = "" ]; then
	    LIBPATH="/lib:/usr/lib:$IDL_DIR/bin/bin.$OS$OSVER$ARCH:$IDL_DIR/bin/bin.$OS$OSVER$ARCH/dm/lib"
	else
	    LIBPATH="/lib:/usr/lib:$IDL_DIR/bin/bin.$OS$OSVER$ARCH:$IDL_DIR/bin/bin.$OS$OSVER$ARCH/dm/lib:$LIBPATH"
	fi
#  Append the lib directory of oracle on if ORACLE_HOME set for Dataminer
        if [ "$ORACLE_HOME" != "" ]; then 
             LIBPATH="$ORACLE_HOME/lib:$LIBPATH"
        fi
#  Append the lib directory of sybase on if Sybase set for Dataminer
        if [ "$SYBASE" != "" ]; then
             LIBPATH="$SYBASE/lib:$LIBPATH"
        fi
	export LIBPATH
	;;

    "hp")
	if [ "$SHLIB_PATH" = "" ]; then
	    SHLIB_PATH="/usr/lib/X11R6:/usr/lib/X11R5:/usr/lib/X11R4:/usr/lib/Motif1.2:$IDL_DIR/bin/bin.$OS$OSVER$ARCH:$IDL_DIR/bin/bin.$OS$OSVER$ARCH/dm/lib"
	  else
	    SHLIB_PATH="/usr/lib/X11R6:/usr/lib/X11R5:/usr/lib/X11R4:/usr/lib/Motif1.2:$IDL_DIR/bin/bin.$OS$OSVER$ARCH:$IDL_DIR/bin/bin.$OS$OSVER$ARCH/dm/lib:$SHLIB_PATH"
	fi

#  Append the lib directory of sybase on if Sybase set for Dataminer
        if [ "$SYBASE" != "" ]; then
             SHLIB_PATH="$SYBASE/lib:$SHLIB_PATH"
        fi

#  Append the lib directory of oracle on if ORACLE_HOME set for Dataminer
        if [ "$ORACLE_HOME" != "" ]; then 
             SHLIB_PATH="$ORACLE_HOME/lib:$SHLIB_PATH"
	fi
	export SHLIB_PATH
	;;

    "solaris")
	if [ "$LD_LIBRARY_PATH" = "" ]; then
	    LD_LIBRARY_PATH="$IDL_DIR/bin/bin.$OS$OSVER$ARCH:$IDL_DIR/bin/bin.$OS$OSVER$ARCH/dm/lib:/usr/openwin/lib:/usr/dt/lib"
	else
	    LD_LIBRARY_PATH="$IDL_DIR/bin/bin.$OS$OSVER$ARCH:$IDL_DIR/bin/bin.$OS$OSVER$ARCH/dm/lib:/usr/openwin/lib:/usr/dt/lib:$LD_LIBRARY_PATH"
	fi

#  Append the lib directory of sybase on if Sybase set for Dataminer
        if [ "$SYBASE" != "" ]; then
             LD_LIBRARY_PATH="$SYBASE/lib:$LD_LIBRARY_PATH"
        fi
	export LD_LIBRARY_PATH

#  Append the lib directory of oracle on if ORACLE_HOME set for Dataminer
        if [ "$ORACLE_HOME" != "" ]; then 
             LD_LIBRARY_PATH="$ORACLE_HOME/lib:$LD_LIBRARY_PATH"
	fi
	export LD_LIBRARY_PATH
	;;

    "sgi")
	if [ "$LD_LIBRARYN32_PATH" = "" ]; then
	    LD_LIBRARYN32_PATH="$IDL_DIR/bin/bin.$OS$OSVER$ARCH:$IDL_DIR/bin/bin.$OS$OSVER$ARCH/dm/lib"
	else
	    LD_LIBRARYN32_PATH="$IDL_DIR/bin/bin.$OS$OSVER$ARCH:$IDL_DIR/bin/bin.$OS$OSVER$ARCH/dm/lib:$LD_LIBRARYN32_PATH"
	fi

#  Append the lib directory of sybase on if Sybase set for Dataminer
        if [ "$SYBASE" != "" ]; then
             LD_LIBRARYN32_PATH="$SYBASE/lib:$LD_LIBRARYN32_PATH"
        fi


#  Append the lib directory of oracle on if ORACLE_HOME set for Dataminer
#  NOTE: The user must set Oracle N32 home.
        if [ "$ORACLE_N32_HOME" != "" ]; then
             LD_LIBRARYN32_PATH="$ORACLE_N32_HOME/lib32:$LD_LIBRARYN32_PATH"
	fi
	export LD_LIBRARYN32_PATH
	;;

    "linux")
	if [ "$LD_LIBRARY_PATH" = "" ]; then
	    LD_LIBRARY_PATH="$IDL_DIR/bin/bin.$OS$OSVER$ARCH:$IDL_DIR/bin/bin.$OS$OSVER$ARCH/dm/lib"
	else
	    LD_LIBRARY_PATH="$IDL_DIR/bin/bin.$OS$OSVER$ARCH:$IDL_DIR/bin/bin.$OS$OSVER$ARCH/dm/lib:$LD_LIBRARY_PATH"
	fi

#  Append the lib directory of sybase on if Sybase set for Dataminer
        if [ "$SYBASE" != "" ]; then
             LD_LIBRARY_PATH="$SYBASE/lib:$LD_LIBRARY_PATH"
        fi
	export LD_LIBRARY_PATH

#  Append the lib directory of oracle on if ORACLE_HOME set for Dataminer
        if [ "$ORACLE_HOME" != "" ]; then 
             LD_LIBRARY_PATH="$ORACLE_HOME/lib:$LD_LIBRARY_PATH"
	fi
	export LD_LIBRARY_PATH
	;;

    *)
	if [ "$LD_LIBRARY_PATH" = "" ]; then
	    LD_LIBRARY_PATH="$IDL_DIR/bin/bin.$OS$OSVER$ARCH"
	else
	    LD_LIBRARY_PATH="$IDL_DIR/bin/bin.$OS$OSVER$ARCH:$LD_LIBRARY_PATH"
	fi
	export LD_LIBRARY_PATH
	;;
esac


# Users Libraries
if [ "$IDL_PATH" = "" ]; then
	IDL_PATH="<IDL_DEFAULT>"
fi

# Add the IDL bin directory to the path so that idlde will always find idl
PATH=$IDL_DIR/bin:$PATH
export PATH IDL_DIR IDL_PATH

# HyperText help requires special setup
# Set up environment variables for HyperHelp.
HHHOME=$IDL_DIR/help
HHPATH=$IDL_DIR/bin/bin.$OS$OSVER$ARCH
XPPATH=$IDL_DIR/resource/xprinter
if [ "$XLIBI18N_PATH" = "" ]; then
  XLIBI18N_PATH=$IDL_DIR/resource/X11/lib
fi
if [ "$XFILESEARCHPATH" = "" ]; then
  XFILESEARCHPATH=$IDL_DIR/resource/X11/lib/app-defaults/%N%S:$IDL_DIR/resource/X11/lib/app-defaults/%T/%N%S
else
  XFILESEARCHPATH="$IDL_DIR/resource/X11/lib/app-defaults/%N%S:$IDL_DIR/resource/X11/lib/app-defaults/%T/%N%S:$XFILESEARCHPATH"
fi
export HHHOME HHPATH XPPATH XLIBI18N_PATH XFILESEARCHPATH

if [ "$APPLICATION" = "idlhelp" ]; then
  APP_ARGS=$IDL_DIR/help/idl.hlp
fi

if [ "$APPLICATION" = "envihelp" ]; then
  APPLICATION=idlhelp
  APP_ARGS=$IDL_DIR/products/envi_$ENVI_VERSION/help/envi.hlp
fi

if [ "$APPLICATION" = "viphelp" ]; then
  APPLICATION=idlhelp
  APP_ARGS=$IDL_DIR/products/vip_$VIP_VERSION/help/vip.hlp
fi


if [ "$APPLICATION" = "rivertoolshelp" ]; then
  APPLICATION=idlhelp
  APP_ARGS=$IDL_DIR/products/rivertools_$RT_VERSION/help/rivertools.hlp
fi


if [ "$APPLICATION" = "iond" -o "$APPLICATION" = "ionstat" -o "$APPLICATION" = "iondown" -o "$APPLICATION" = "ion_httpd" ]; then
    exec $IDL_DIR/products/ion_$ION_VERSION/ion_java/bin/bin.$OS$OSVER$ARCH/$APPLICATION $* $APP_ARGS

    # We shouldn't get here unless there was an error.
    echo "$APPLICATION is not available for this system ($OS/$ARCH)"
    exit 1
fi

if [ "$APPLICATION" = "ion-p" -o "$APPLICATION" = "ion-i" ]; then
    exec $IDL_DIR/products/ion_$ION_VERSION/ion_script/cgi-bin/bin.$OS$OSVER$ARCH/$APPLICATION $* $APP_ARGS

    # We shouldn't get here unless there was an error.
    echo "$APPLICATION is not available for this system ($OS/$ARCH)"
    exit 1
fi

exec $IDL_DIR/bin/bin.$OS$OSVER$ARCH/$APPLICATION $* $APP_ARGS

# We shouldn't get here unless there was an error.
echo "$APPLICATION is not available for this system ($OS$ARCH)"
exit 1
