#!/bin/sh
# 
# Launch squeakvm from the command line or a menu script, with a good
# plugin path, text encodings and pulseaudio kludge
# 
# Last edited: 2010-04-10 20:04:32 by piumarta on ubuntu

PATH=/usr/bin:/bin

realpath () {
    path="$1"
    while test -L "${path}"; do
	dir=`dirname "${path}"`
	dir=`cd "${dir}" && pwd -P`
	path=`basename "${path}"`
	path=`ls -l "${dir}/${path}" | sed 's,.* -> ,,'`
	path="${dir}/${path}"
    done
    if test -d "${path}"; then
	(cd "${path}" && pwd -P)
    else
	(cd `dirname "${path}"` && echo "`pwd -P`/`basename "${path}"`")
    fi
}

bindir=`realpath "${0}"`
bindir=`dirname  "${bindir}"`
prefix=`dirname  "${bindir}"`
libdir="${prefix}/lib/squeak"
plgdir="${libdir}/4.0.3-2202"
useoss="true"
vm="squeakvm"
plugins=""
wrapper=""

for opt in $*; do
    case ${opt} in
	-vm-sound*)     useoss="false";;
	-vm)            case "$2" in sound*) useoss="false"; esac;;
    esac
done

# find the vm and set the plugin path

if test -x "${plgdir}/${vm}"; then	# bin/squeak -> lib/squeak/x.y-z/squeakvm
    vm="${plgdir}/${vm}"
    plugins="${plgdir}"
elif test -x "${bindir}/${vm}"; then	# bld/squeak -> bld/squeakvm
    vm="${bindir}/${vm}"
    plugins="${bindir}/%n"
elif test -x `which ${vm}`; then
    vm=`which ${vm}`
    plugins=""
else    
    echo "cannot find ${vm}" >&2
    exit 1
fi

# command-line overrides environment, so communicate anything we decide here via the environment

if test -z "${SQUEAK_PATHENC}";  then SQUEAK_PATHENC="UTF-8";  export SQUEAK_PATHENC;  fi
if test -z "${SQUEAK_ENCODING}"; then SQUEAK_ENCODING="UTF-8"; export SQUEAK_ENCODING; fi

if test -z "${SQUEAK_PLUGINS}"; then
    if test -n "${plugins}"; then
	SQUEAK_PLUGINS="${plugins}"
	export SQUEAK_PLUGINS
    fi
fi

# deal with pulseaudio if it is running

if test -z "${SQUEAK_VM}"; then
    if ${useoss}; then
	if pulseaudio --check 2>/dev/null; then
	    if padsp true 2>/dev/null; then
		wrapper="padsp"
		SQUEAK_VM="sound-OSS"
		export SQUEAK_VM
	    fi
	fi
    fi
fi

# fix broken locales

if test -z "$LC_ALL"; then
    LC_ALL="$LANG"
    export LC_ALL
fi

# run the vm

set | fgrep SQUEAK_
set -x
exec ${wrapper} "${vm}" "$@"
