#!/bin/sh
# artsdsp - wrapper script to allow *some* binary only programs to use artsd
# based on the esddsp script

# keep this in sync with artsversion.h
version="1.0.4"

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

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

    case "$1" in

	-h|--help)
	    echo "artsdsp - attempt to reroute audio device to artsd"
	    echo " "
	    echo "artsdsp [options] application arguments"
	    echo " "
	    echo "options:"
	    echo "-h, --help                show brief help"
	    echo "-n, --name=NAME           use name to identify player to artsd"
	    echo "-m, --mmap                emulate memory mapping (i.e. for quake)"
        echo "-s, --single-threaded     use the single-threaded version"
	    echo "-v, --verbose             show parameters"
	    echo "-V, --version             show version"
	    exit 0
	    ;;

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

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

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

	-V|--version)
	    echo "artsdsp $version"
	    exit
	    ;;

	-m|--mmap)
	    export ARTSDSP_MMAP=1
	    shift
	    ;;

    -s|--single-threaded)
        single_thread=1
        shift
        ;;

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

# echo options if verbose specified
if test "$verbose" = 1; then
    ARTSDSP_VERBOSE=1
    export ARTSDSP_VERBOSE
    echo "artsdsp:       $version"
    echo "name:          $ARTSDSP_NAME"
    echo "command line:  $@"
    if test "$single_thread" = 1; then
        echo "threaded:      no"
    else
        echo "threaded:      yes"
    fi
fi

# setup artsdsp preload to hijack calls made to /dev/dsp
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib

if test "$single_thread" = 1; then
  LD_PRELOAD=${libdir}/libartsdsp_st.so.0
else
  LD_PRELOAD=${libdir}/libartsdsp.so.0:${libdir}/libartsc.so.0
fi
if test -f /lib/libdl.so.2; then
  LD_PRELOAD=$LD_PRELOAD:/lib/libdl.so.2
fi
export LD_PRELOAD

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