Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37556823
en ru br
ALT Linux repos
S:2.2.0-alt12
D:1.6.0-alt1
3.0: 1.3.15-alt1

Group :: Video
RPM: vdr

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

#!/bin/bash

# runvdr - VDR launcher
#
# runvdr [VDROPTION]...

shopt -s nocasematch nullglob

VDR=/usr/sbin/vdr
PLUGINDIR=/usr/lib/vdr
PLUGINVER=VDR_PLUGIN_VERSION
PLUGINSUF=${PLUGINVER:+.$PLUGINVER}

prog=$(basename $0)
log()
{
[ -x /usr/bin/logger ] && \
/usr/bin/logger -s -pdaemon.info -t"$prog" "$1" || echo "INFO: $1"
}

plugconf()
{
local plugin="$1" PLUGIN_OPTIONS= PLUGIN_ENABLED=
if [ -e "/etc/sysconfig/vdr-plugins.d/$plugin.conf" ] ; then
. "/etc/sysconfig/vdr-plugins.d/$plugin.conf"
case "$PLUGIN_ENABLED" in no|false|0) return ;; esac
fi
VDR_OPTIONS[${#VDR_OPTIONS[@]}]=-P
if [ -z "$PLUGIN_OPTIONS" ] ; then
VDR_OPTIONS[${#VDR_OPTIONS[@]}]="$plugin"
else
VDR_OPTIONS[${#VDR_OPTIONS[@]}]="$plugin $PLUGIN_OPTIONS"
fi
}

build_cmdline()
{
local file= plugin= p=
# Add "priority" plugins.
for plugin in $VDR_PLUGIN_ORDER ; do
if [ -e $PLUGINDIR/libvdr-${plugin}.so$PLUGINSUF ] ; then
plugconf $plugin
fi
done
# Add the rest available.
for file in $PLUGINDIR/libvdr-*.so$PLUGINSUF ; do
plugin=$(basename ${file##*/libvdr-} .so$PLUGINSUF)
for p in $VDR_PLUGIN_ORDER ; do
if [ "$plugin" = "$p" ] ; then
# Already added.
continue 2
fi
done
plugconf "$plugin"
done
}

reload_dvb()
{
log "Reloading DVB modules"
modules=$(/sbin/lsmod | grep ^dvb_core | awk '{ print $4 }' | tr , ' ')
/sbin/modprobe -r $modules dvb_core
for module in $modules ; do
/sbin/modprobe $module
done
}

rc=
while true ; do

VDR_OPTIONS=()
if [ -n "$VDR_INIT" ] ; then
[ -f /etc/sysconfig/vdr ] && . /etc/sysconfig/vdr
if [ -n "$DAEMON_COREFILE_LIMIT" ] ; then
ulimit -S -c $DAEMON_COREFILE_LIMIT >/dev/null 2>&1 && \
cd ${TMPDIR:-/tmp}
fi
export WAKEUP_BEFORE_RECORDING RELOAD_DVB
build_cmdline
fi

$VDR "$@" "${VDR_OPTIONS[@]}"
rc=$?

# 137: "kill -KILL" eg in killproc(), others: "man vdr"
case $rc in
0|2|137)
log "VDR exited with status $rc, exiting"
break
;;
*)
log "VDR exited with status $rc, attempting restart"
case $RELOAD_DVB in yes|true|1) reload_dvb ;; esac
;;
esac

done

exit $rc
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin