#!/bin/sh # # run vdr-sxfe . /etc/init.d/rc.functions rm -f /tmp/vdr-sxfe_stop /tmp/vdr-sxfe_run case "$1" in -k) touch /tmp/vdr-sxfe_stop killproc "/usr/bin/vdr-sxfe" 2 killproc "/usr/bin/runvdr-sxfe" 1 rm -f /tmp/vdr-sxfe_stop exit $? ;; -r) killproc "/usr/bin/vdr-sxfe" 2 exit $? ;; -f) force=1 ;; -s) shift echo "$@" > /tmp/vdr-sxfe_run killproc "/usr/bin/vdr-sxfe" 2 exit $? ;; -n) norestart=1 ;; -*) echo "Usage $0 [-k | -r | -f | -n | -s PROG]" echo " -k kill vdr-sxfe" echo " -r restart vdr-sxfe" echo " -f force vdr-sxfe (re)start" echo " -s switch to PROG until PROG exited" echo " -n no restart if an error occur" exit 1 ;; esac # accept only one instance ps=$(ps); echo "$ps" | grep "{${0##*/}}" | grep -q -v $$ && { if [ -z "$force" ]; then echo "${0##*/} is already running" exit 1 else $0 -k fi } while (true) do . /etc/rc.config ip=${VDR_SXFE_ARGS#*://} ip=${ip%% *} while ! { echo quit | nc $ip 37890 2>/dev/null; } do test -e /tmp/vdr-sxfe_stop && break; usleep 100000 "#waiting for xineliboutput"; done test -e /tmp/vdr-sxfe_stop && break # schnelle wiederholte Neustarts verzögern if [ 0$starttime -gt $(( `date +%s` - 15 )) ]; then sleep 10 "#delaying vdr-sxfe restart" fi starttime=`date +%s` update_config "audio.output.speaker_arrangement" "audio.output.speaker_arrangement:$XINELIBOUTPUT_SPEAKER" /root/.xine/config_xineliboutput if ps | grep -v "grep" | grep -q "lircd" && ! ps | grep -v "grep" | grep "vdr " | grep -q " --lirc"; then VDR_SXFE_ARGS="$VDR_SXFE_ARGS --lirc" else VDR_SXFE_ARGS="$(echo "$VDR_SXFE_ARGS" | sed "s/--hud//")" fi if [ -n "$APPLICATION_POS_VDRVDR" ]; then VDR_SXFE_ARGS="$(echo "$VDR_SXFE_ARGS" | sed "s/--fullscreen//")" fi # starte vdr-sxfe eval /usr/bin/vdr-sxfe $VDR_SXFE_ARGS ${VDR_SXFE_ASPECT:+--aspect=${VDR_SXFE_ASPECT}} >>/var/log/vdr-sxfe 2>&1 status=$? echo -n "vdr-sxfe exits at "; date if [ -e /tmp/vdr-sxfe_run ]; then run="$(cat /tmp/vdr-sxfe_run)" echo -n "switch to $run" eval $run -n rm /tmp/vdr-sxfe_run else test -e /tmp/vdr-sxfe_stop -o "$norestart" = "1" && break test $status = 1 && sleep 3 fi done rm -f /var/run/runvdr-sxfe.pid /tmp/vdr-sxfe_stop /tmp/vdr-sxfe_run