--- trunk/citrix-plugin-speechmike/speechmike-config.in 2013/03/22 09:57:39 2080 +++ trunk/citrix-plugin-speechmike/speechmike-config.in 2013/03/22 12:15:12 2090 @@ -4,7 +4,7 @@ check_prereqs() { - type -P @@BINDIR@@/nuainitool || die "missing nuainitool" + type -P @@BINDIR@@/nuainitool > /dev/null || die "missing nuainitool" if [ -e ${ICAROOT}/config/module.ini ] then @@ -17,16 +17,37 @@ fi } +value_set() +{ + local value="$1" + local i + local count="${#DRIVERS[*]}" + + for ((i=0; i < count; i++)) + do + if [[ ${DRIVERS[${i}]} = ${value} ]] + then + return 0 + fi + done + + return 1 +} + install_modules() { local virtualdrivers - - virtualdrivers=$(@@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "VirtualDriver") + local expanddrivers - # expand philips and nuance drivers - @@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "VirtualDriver=${virtualdrivers}, SbExt, PspMix, PSPDPM, SpeechMike, SpeechMikeAudio, SpeechMikeMixer" - # backup virtualdriver entry - @@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" ";** Original_VirtualDriver=${virtualdrivers}" + # parse and expand philips and nuance drivers to an array + virtualdrivers=$(@@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "VirtualDriver") + eval DRIVERS=( ${virtualdrivers//,} ) + for i in SbExt PspMix PSPDPM SpeechMikeAudio SpeechMikeMixer SpeechMike + do + # only add missing drivers + value_set ${i} || expanddrivers+=", ${i}" + done + @@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "VirtualDriver=${virtualdrivers}${expanddrivers}" # enable extensions @@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "SbExt=On" @@ -65,25 +86,49 @@ #PSPDPM driver settings @@BINDIR@@/nuainitool -f ${MODULEINI} -s "PSPDPM" "DriverName=VDPSPDPM.DLL" - @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMikeMixer" "LIB_DIR=@@SPEECHMIKELIBDIR@@" - @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMikeMixer" "LIB_NAME=libCtxHidMan.so" - @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMikeMixer" "DPM_DIR=@@DPMTEMPDIR@@" - @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMikeMixer" "DPM_DRIVE=@@DPMDRIVELETTER@@" + @@BINDIR@@/nuainitool -f ${MODULEINI} -s "PSPDPM" "LIB_DIR=@@SPEECHMIKELIBDIR@@" + @@BINDIR@@/nuainitool -f ${MODULEINI} -s "PSPDPM" "LIB_NAME=libCtxHidMan.so" + @@BINDIR@@/nuainitool -f ${MODULEINI} -s "PSPDPM" "DPM_DIR=@@DPMTEMPDIR@@" + @@BINDIR@@/nuainitool -f ${MODULEINI} -s "PSPDPM" 'DPM_DRIVE=@@DPMDRIVELETTER@@' } remove_modules() { local virtualdrivers + local driver + local finaldrivers local i + local count + # parse modules and remove from array virtualdrivers=$(@@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "VirtualDriver") - - # now remove all drivers - for i in SbExt PspMix PSPDPM SpeechMikeAudio SpeechMikeMixer SpeechMike + eval DRIVERS=( ${virtualdrivers//,} ) + # delete from array + count="${#DRIVERS[*]}" + for (( i=0; i < count; i++)) + do + for driver in SbExt PspMix PSPDPM SpeechMikeAudio SpeechMikeMixer SpeechMike + do + if [[ ${driver} = ${DRIVERS[${i}]} ]] + then + # reset + DRIVERS[${i}]="" + # no unneccessary parsing required anymore + continue + fi + done + done + # rebuild final driver list + for i in ${DRIVERS[*]} do - virtualdrivers="${virtualdrivers//, ${i}}" + if [[ -z ${finaldrivers} ]] + then + finaldrivers="${i}" + else + finaldrivers+=", ${i}" + fi done - @@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "VirtualDriver=${virtualdrivers}" + @@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "VirtualDriver=${finaldrivers}" # remove modules @@BINDIR@@/nuainitool -f ${MODULEINI} -D -s "ICA 3.0" "SbExt" @@ -113,13 +158,21 @@ } case $1 in - install) install_modules ;; - remove) remove_modules ;; + install) + check_prereqs + install_modules + ;; + remove) + check_prereqs + remove_modules + ;; *) echo "Usage: $(basename $0) [action]" + echo echo "Available actions are:" echo " install - installs speechmike modules in modules.ini" echo " remove - removes speechmike modules in modules.ini" + echo ;; esac