#!/bin/sh
# esddsp - wrapper script to allow *some* binary only programs to use esd

# default values for script variables
verbose=0
set_name=0

# check for esddsp options
while test $# -gt 0; do

    case "$1" in

	-h|--help)
		echo "esddsp - attempt to reroute audio device to esd"
		echo " "
		echo "esddsp [options] player arguments"
		echo " "
		echo "options:"
		echo "-h, --help                show brief help"
		echo "-s, --server=HOST:PORT    contact esd server on host at port"
		echo "-m, --mixer               enable mixer support"
		echo "-n, --name=NAME           use name to identify player to esd"
		echo "-v, --verbose             show parameters"
		echo "--mmap                    use memory mapping emulation"
		echo "                          (useful for games like quake)"

		exit 0
		;;

	-s)
		shift
		if test $# -gt 0; then
			ESPEAKER=$1
			export ESPEAKER
		else
			echo "no server specified"
			exit 1
		fi
		shift
		;;

	--server*)
		ESPEAKER=`echo $1 | sed -e 's/^[^=]*=//g'`
		export ESPEAKER
		shift
		;;

	-m|--mixer)
		ESDDSP_MIXER=1
		export ESDDSP_MIXER
		shift
		;;

	-n)
		shift
		if test $# -gt 0; then
			ESDDSP_NAME=$1
			export ESDDSP_NAME
		else
			echo "no player name specified"
			exit 1
		fi
		shift
		set_name=1
		;;

	--name*)
		ESDDSP_NAME=`echo $1 | sed -e 's/^[^=]*=//g'`
		export ESDDSP_NAME
		set_name=1
		shift
		;;

	-v|--verbose)
		verbose=1
		shift
		;;

	--mmap)
	    ESDDSP_MMAP=1
	    export ESDDSP_MMAP
	    shift
	    ;;

	*)
		# no more esddsp options, get on with life
		break
		;;
    esac
done

# default name to player if not specified
if test "$set_name" = 0; then
	ESDDSP_NAME=$1
	export ESDDSP_NAME
fi

# echo options if verbose specified
if test "$verbose" = 1; then
	echo "server:		$ESPEAKER"
	echo "name:		$ESDDSP_NAME"
	echo "command line:	$@"
fi

# setup esd to hijack calls made to /dev/dsp
prefix=/usr
exec_prefix=${prefix}

LD_PRELOAD="libesddsp.so.0 libesd.so.0 $LD_PRELOAD"
export LD_PRELOAD

# invoke the program with the args given
exec "$@"
