#!/bin/sh
#
# LightZone startscript
#
echo Starting LightZone version 4.1.7 ...
echo with options : ${@}
java -version

arch=`getconf LONG_BIT`
PLATFORM=`uname`
if [ "${PLATFORM}" = "Linux" ]; then
  totalmem=`cat /proc/meminfo | grep 'MemTotal: ' | sed -r 's/.* ([0-9]+) .*/\1/'`
  usrdir=/usr
elif [ "${PLATFORM}" = "SunOS" ]; then
  totalmem=`prtconf | grep 'Memory size:' | sed -r 's/.* ([0-9]+) .*/\1/'`
  totalmem=`expr $totalmem \* 1024`
  usrdir=/usr
elif [ "${PLATFORM}" = "FreeBSD" ]; then
  totalmem=`sysctl -n hw.physmem`
  totalmem=`expr $totalmem / 1024`
  usrdir=%%LOCALBASE%%
fi

if [ -d ${usrdir}/share/java/lightzone ]; then
  pkgjavadir=${usrdir}/share/java/lightzone
else
  # Gentoo
  pkgjavadir=${usrdir}/share/lightzone/lib
fi

if [ -d ${usrdir}/libexec/lightzone ]; then
  pkglibexecdir=${usrdir}/libexec/lightzone
elif [ -d ${usrdir}/lib64/lightzone ]; then
  pkglibexecdir=${usrdir}/lib64/lightzone
else
  pkglibexecdir=${usrdir}/lib/lightzone
fi

if   [ -f ${usrdir}/share/java/jh.jar ]; then        # Debian, Ubuntu
   jhpath=${usrdir}/share/java/jh.jar
elif [ -f ${usrdir}/share/java/javahelp2.jar ]; then # Fedora, OpenSUSE, PCLinuxOS
   jhpath=${usrdir}/share/java/javahelp2.jar
elif [ -f ${usrdir}/share/java/javahelp/jh.jar ]; then      # Arch
   jhpath=${usrdir}/share/java/javahelp/jh.jar
elif [ -f ${usrdir}/share/java/javahelp/lib/jh.jar ]; then  # Gentoo
   jhpath=${usrdir}/share/java/javahelp/lib/jh.jar
elif [ -f ${usrdir}/share/java/classes/jh.jar ]; then # FreeBSD
   jhpath=${usrdir}/share/java/classes/jh.jar
elif [ -f ${usrdir}/j2se/opt/javahelp/lib/jhall.jar ]; then # OpenIndiana
   jhpath=${usrdir}/j2se/opt/javahelp/lib/jhall.jar
else
  echo "jh.jar was not found."
fi

if [ $totalmem -ge 1048576 ]; then
  maxmem=$(( $totalmem / 2 ))
  # on 32-bit architectures there is ~2GB limit for maximum Java heap size
  if [ $arch = "32" -a $totalmem -ge 4194304 ]; then
    maxmem=2097152
  fi
else
    maxmem=524288
fi

# IFS should be \n to handle filenames that include space.
IFS="
"
file=""
for i in "$@"; do
  if [ -f $i ] ; then
    file=$(cd $(dirname $i) && pwd)/$(basename $i)
    break
  fi
done

(cd $pkgjavadir && LD_LIBRARY_PATH=$pkglibexecdir exec java -Xmx${maxmem}k -Djava.library.path=$pkglibexecdir -Dfile.encoding=UTF8 -classpath ".:${pkgjavadir}/*:${jhpath}" com.lightcrafts.platform.linux.LinuxLauncher ${file} ${@} )
