summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUdo Richter <udo_richter@gmx.de>2013-10-09 23:02:35 +0200
committerUdo Richter <udo_richter@gmx.de>2013-10-09 23:02:35 +0200
commitc3d5d46a73a7884878082d3504083eee51bf8615 (patch)
tree2096d431c5499ed70d839a88b5784f24ac419950
parent0057cbc61992106aa8294555c3f0d73da02bdf50 (diff)
parent457073b5d37fb8520c746ebbcf9827a0e6c4c1e2 (diff)
downloadrunvdr-extreme-c3d5d46a73a7884878082d3504083eee51bf8615.tar.gz
runvdr-extreme-c3d5d46a73a7884878082d3504083eee51bf8615.tar.bz2
Merge branch 'master' into urig-dev
Conflicts: HISTORY
-rw-r--r--COPYING10
-rw-r--r--HISTORY24
-rw-r--r--README39
-rw-r--r--README.de43
-rwxr-xr-xinit.d.runvdr.Debian2
-rwxr-xr-xrunvdr80
-rwxr-xr-xrunvdr-conf.d98
-rw-r--r--runvdr.conf.example53
-rw-r--r--runvdr.conf.pod369
9 files changed, 560 insertions, 158 deletions
diff --git a/COPYING b/COPYING
index 5b6e7c6..dcfa4c2 100644
--- a/COPYING
+++ b/COPYING
@@ -55,7 +55,7 @@ patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
-
+
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
-
+
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
-
+
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
@@ -225,7 +225,7 @@ impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
-
+
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
@@ -278,7 +278,7 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
-
+
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
diff --git a/HISTORY b/HISTORY
index 534850f..43fbc5c 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,16 +1,24 @@
runvdr extreme Revision History
-------------------------------
-xxxx-xx-xx:
+201x-xx-xx: Version 0.5.0
+- New: If VDRPRG is not given, runvdr-extreme defaults to "vdr" in $PATH
+- New: Support for --dirnames, --cachedir and --resdir
+- New: Documentation for runvdr.conf in POD format. See the first lines of
+ runvdr.conf.pod for instructions on how to create man-page from it.
+- New: If runvdr is invoked as XYZ, check for ~/.XYZ.conf and /etc/XYZ.conf
- Fix: Debian init script: Pull default locale
- Fix: Fail to load if AddPlugin is last in runvdr.conf
- Fix: Error message if runvdr.conf fails
-- New: If runvdr is invoked as XYZ, check for ~/.XYZ.conf and /etc/XYZ.conf
+- Fix: VDR_CHARSET_OVERRIDE now is correctly exported to the VDR process
+- Fix: Fixed problem with closed STDOUT with newer versions of "ps"
+- Fix: runvdr-conf.d fixed for OSDServer 0.1.3. Thanks to iNOB.
2009-06-28: Version 0.4.2
- New: Support -i and --instance of VDR-1.7.4+
- New: Command line option to set VDR_CHARSET_OVERRIDE of VDR 1.5.18+
-- New: Function-style callbacks for DVB load/unload commands (backwards compatible)
+- New: Function-style callbacks for DVB load/unload commands (backwards
+ compatible)
- New: Option to always unload DVB drivers on exit
- New: Callbacks for X-Server startup and shutdown to run additional programs
- Fix: --lirc not working. Thx to caps!
@@ -23,7 +31,8 @@ xxxx-xx-xx:
2008-09-14: Version 0.4.0
- New: Start own X server for VDR to run in
-- New: Experimental support to read sysconfig file from setup-plugin, thx to dad401
+- New: Experimental support to read sysconfig file from setup-plugin,
+ thx to dad401
- New: Parameters to control automatic restart behavior
- Fix: Made the init.d script LSB compliant, thx to Antonio for the hint.
- Fix: Online help for runvdr-conf.d
@@ -31,7 +40,7 @@ xxxx-xx-xx:
2008-03-02: Version 0.3.0
- New: Support for the new VDR parameters --localedir and --userdump
(LOCALEDIR="..." and USERDUMP="1")
-- New: Wildcard loading with INCLUDE, allows for example to INCLUDE
+- New: Wildcard loading with INCLUDE, allows for example to INCLUDE
/etc/runvdr/conf.d/* to load several one-file-per-plugin config files.
- New: runvdr-conf.d, a plugin enable/disable service
- New: osdserver frontend for runvdr-conf.d
@@ -41,10 +50,10 @@ xxxx-xx-xx:
2007-02-18: Version 0.2.0
-- New: Pass DVBLOAD and DVBUNLOAD to eval, allows to execute more than one
+- New: Pass DVBLOAD and DVBUNLOAD to eval, allows to execute more than one
command, thanks to Thomas Büschgens
- New: Load ~/.runvdr.conf as default, load /etc/runvdr.conf as fallback
-- New: INCLUDE directive to load other config file
+- New: INCLUDE directive to load other config file
- New: -P "-plugin" drops plugin from plugin load list. Same for -D.
- Change: LANGUAGE now sets LC_ALL, not LANG.
@@ -57,4 +66,3 @@ xxxx-xx-xx:
2006-10-08: Version 0.1
- Initial revision.
-
diff --git a/README b/README
index 5862f76..a714171 100644
--- a/README
+++ b/README
@@ -1,9 +1,9 @@
-
+
runvdr extreme
-Written by: Udo Richter <udo_richter(a)gmx.de>
-Project's homepage: http://www.udo-richter.de/vdr/scripts.en.html#runvdr
+Written by: Udo Richter <udo_richter(a)gmx.de>
+Project's homepage: http://projects.vdr-developer.org/projects/runvdr-extreme
See the file COPYING for license information.
@@ -47,11 +47,11 @@ Additional features of runvdr-conf.d:
Quick-start
--------------------------------------------------------------------------
- Copy runvdr to /usr/local/bin/ or whereever you like
-- Copy runvdr.conf.example to /etc/runvdr.conf if you want to run VDR as
+- Copy runvdr.conf.example to /etc/runvdr.conf if you want to run VDR as
server, or ~/.runvdr.conf if you want to run it as user.
- Edit the runvdr.conf to match your needs
-The runvdr.conf is pretty much self-explaining. All runvdr.conf options are
+The runvdr.conf is pretty much self-explaining. All runvdr.conf options are
also available on command line, see --help.
For the init-script (Debian):
@@ -85,20 +85,20 @@ load /etc/runvdr.conf from within ~/.runvdr.conf to just override some of
the settings for the current user.
The INCLUDE directive also supports multiple files per line. By that, you can
-use INCLUDE /etc/runvdr/conf.d/* to load a whole directory full of config
-files at once. For example, you can put files (or symlinks) for each plugin
+use INCLUDE /etc/runvdr/conf.d/* to load a whole directory full of config
+files at once. For example, you can put files (or symlinks) for each plugin
to load into that directory, containing a single line "AddPlugin xxx".
Plugins added by the AddPlugin directive in the conf file and the --plugin
-and -P command line option can be removed again from the list of plugins
-by specifying "AddPlugin -name", --plugin="-name" or -P-name.
-The name part acts as a pattern to the beginning of the plugin name, all
+and -P command line option can be removed again from the list of plugins
+by specifying "AddPlugin -name", --plugin="-name" or -P-name.
+The name part acts as a pattern to the beginning of the plugin name, all
plugins matching "name*" will be dropped. Especially "AddPlugin -" and -P- will
drop all plugins from the list. The same mechanism works for the -D device
parameter.
To pass parameters to VDR without parsing by runvdr, use -- as paramenter.
-All parameters after -- will be directly passed to VDR. For erxample,
+All parameters after -- will be directly passed to VDR. For erxample,
"runvdr -- --help" will show the command line help of VDR instead of runvdr.
@@ -113,14 +113,14 @@ in alphabetical order.
In case of runvdr-conf.d, one file similar to the skeleton.example file
is placed in /etc/runvdr/ for each plugin that is available. Only plugins
that have a symbolic link in /etc/runvdr/conf.d/ to their config file will
-be loaded. For this, the corresponding INCLUDE line must be enabled in
+be loaded. For this, the corresponding INCLUDE line must be enabled in
runvdr.conf.
The following commands are available to manage the plugins:
runvdr-conf.d show [name]
Shows all plugins (resp. only the 'name' plugin), including the full name
- and the load priority. 'name' is the file name in the /etc/runvdr/
+ and the load priority. 'name' is the file name in the /etc/runvdr/
directory.
runvdr-conf.d enable name [--prio XX]
@@ -134,10 +134,10 @@ runvdr-conf.d disable name
runvdr-conf.d osdserver [--debug]
Connects to the osdserver plugin and allows interactive plugin configuration
- using the VDR OSD. From there, plugins can be activated and deactivated,
+ using the VDR OSD. From there, plugins can be activated and deactivated,
and the load priority can be changed.
- Without --debug, runvdr-conf.d returns immediately, disconnection standard
- input/output, so it can be started from commands.conf. With --debug, the
+ Without --debug, runvdr-conf.d returns immediately, disconnection standard
+ input/output, so it can be started from commands.conf. With --debug, the
osdserver communication will be shown.
@@ -149,12 +149,10 @@ Unix commands, that runvdr uses:
Command Debian packet
pgrep procps
ps procps
- kill procps
sleep coreutils
date coreutils
chvt console-tools
getopt util-linux
- setterm util-linux
@@ -208,12 +206,11 @@ Load all plugins, but not the hello-plugin:
Do a dry-run of runvdr:
runvdr --wrapper=echo
-
+
Do a debugging session:
runvdr --wrapper="gdb --args"
-
+
Start with a completely different setup:
runvdr --runvdr-conf="/etc/runvdr-debugging.conf"
-
diff --git a/README.de b/README.de
index 09389cb..2921787 100644
--- a/README.de
+++ b/README.de
@@ -1,9 +1,9 @@
-
+
runvdr extreme
-Geschrieben von: Udo Richter <udo_richter(a)gmx.de>
-Projekt Homepage: http://www.udo-richter.de/vdr/scripts.html#runvdr
+Geschrieben von: Udo Richter <udo_richter(a)gmx.de>
+Projekt Homepage: http://projects.vdr-developer.org/projects/runvdr-extreme
Siehe Datei COPYING für Lizenz-Informationen
@@ -26,7 +26,7 @@ Einige der Features von runvdr extreme:
- Vermeidet endlose Schleifen, wenn VDR sofort stirbt
- Setzt Terminal zurück nachdem VDR beendet wurde
- Starten von Wrapper-Programmen zum Debuggen
-- Wartet bis der VDR-Prozess beendet wurde,
+- Wartet bis der VDR-Prozess beendet wurde,
hartes Beenden nach Timeout
- Kommandozeilenhilfe
- Kann Konsole umschalten
@@ -36,7 +36,7 @@ Einige der Features von runvdr extreme:
Dazu kommt runvdr-conf.d:
-- Lädt Konfigurationsdateien alphabetisch aus einem Verzeichnis,
+- Lädt Konfigurationsdateien alphabetisch aus einem Verzeichnis,
vergleichbar mit init.d-Verzeichnissen.
- Kommandozeilentool zum Aktivieren/Deaktivieren von Plugins
- Festlegen der Ladereihenfolge
@@ -47,7 +47,7 @@ Dazu kommt runvdr-conf.d:
Schnellstart
--------------------------------------------------------------------------
- Kopiere runvdr nach /usr/local/bin/ oder wo-auch-immer-du-magst
-- Kopiere runvdr.conf.example nach /etc/runvdr.conf, wenn runvdr als
+- Kopiere runvdr.conf.example nach /etc/runvdr.conf, wenn runvdr als
Server laufen soll, oder nach ~/.runvdr.conf, wenn runvdr durch
einen Benutzer gestartet werden soll.
- Bearbeite /etc/runvdr.conf nach deinem Bedarf
@@ -77,20 +77,20 @@ Die Optionen werden in dieser Reihenfolge ausgewertet:
1. Kommandozeilenoptionen haben höchste Priorität.
2. runvdr.conf auf Kommandozeile mit -C oder --runvdr-conf angegeben
3. Wenn kein -C und kein --runvdr-conf angegeben, benutze ~/.runvdr.conf
-4. Wenn kein -C und kein --runvdr-conf und kein ~/.runvdr.conf, benutze
+4. Wenn kein -C und kein --runvdr-conf und kein ~/.runvdr.conf, benutze
/etc/runvdr.conf
5. Wenn keine der obigen Dateien existiert, benutze runvdr-Defaults
Nur eine runvdr.conf wird normalerweise geladen, und nur eine -C Option
wird ausgewertet. Man kann aber den Inhalt einer runvdr.conf in einer anderen
-runvdr.conf laden, wenn man die INCLUDE-Direktive verwendet. Man kann zum
-Beispiel /etc/runvdr.conf aus der Datei ~/.runvdr.conf heraus laden, um
+runvdr.conf laden, wenn man die INCLUDE-Direktive verwendet. Man kann zum
+Beispiel /etc/runvdr.conf aus der Datei ~/.runvdr.conf heraus laden, um
für den aktuellen Benutzer einige Einstellungen zu überschreiben.
Die INCLUDE-Direktive kann auch mehrere Konfigurationsdateien laden. So kann
man z.B. mit INCLUDE /etc/runvdr/conf.d/* ein ganzes Verzeichnis von
Konfigurationsdateien laden. Beispielsweise könnten in so einem Verzeichnis
-für jedes zu ladende Plugin eine Datei (oder Symlink) mit dem Einzeiler
+für jedes zu ladende Plugin eine Datei (oder Symlink) mit dem Einzeiler
"AddPlugin xxx" liegen.
Plugins, die durch die AddPlugin-Direktive in der conf-Datei oder die
@@ -98,12 +98,12 @@ Plugins, die durch die AddPlugin-Direktive in der conf-Datei oder die
entfernt werden, wenn man "AddPlugin -name", --plugin="-name" oder -P-name
verwendet. Der name-Teil wird dabei als Muster für den Anfangsteil des Plugin-
Namens verwendet, alle Plugins, die auf "name*" passen, werden entfernt.
-Insbesondere hebt "AddPlugin -" und -P- die gesamte bisherige Plugin-Liste
+Insbesondere hebt "AddPlugin -" und -P- die gesamte bisherige Plugin-Liste
auf. Der selbe Mechanismus funktioniert auch beim -D Device-Parameter.
-Um Parameter an VDR direkt weiter zu geben, ohne dass runvdr sie
-interpretiert, kann -- als Parameter angegeben werden. Alle Parameter nach
--- werden unverändert an VDR weiter gegeben. So gibt "runvdr -- --help"
+Um Parameter an VDR direkt weiter zu geben, ohne dass runvdr sie
+interpretiert, kann -- als Parameter angegeben werden. Alle Parameter nach
+-- werden unverändert an VDR weiter gegeben. So gibt "runvdr -- --help"
die Hilfestellung von VDR aus, und nicht die Hilfestellung von runvdr.
@@ -111,7 +111,7 @@ die Hilfestellung von VDR aus, und nicht die Hilfestellung von runvdr.
runvdr-conf.d
--------------------------------------------------------------------------
-Mit runvdr-conf.d steht ein (optionales) Tool zur Verfügung, das das
+Mit runvdr-conf.d steht ein (optionales) Tool zur Verfügung, das das
Verwalten der Plugins erleichtern soll. Es funktioniert nach dem init.d
Prinzip, bei dem in einem Verzeichnis mehrere symbolische Links auf Dateien
abgelegt werden, die in alphabetischer Reihenfolge abgearbeitet werden.
@@ -119,13 +119,13 @@ abgelegt werden, die in alphabetischer Reihenfolge abgearbeitet werden.
Im Falle von runvdr-conf.d legt man pro zu ladendem Plugin eine eigene
Konfigurationsdatei nach Vorbild der skeleton.example in /etc/runvdr/ ab.
Geladen werden Plugins, deren symbolischer Link unter /etc/runvdr/conf.d
-liegt. Dazu muss in der runvdr.conf die passende INCLUDE-Zeile aktiviert
+liegt. Dazu muss in der runvdr.conf die passende INCLUDE-Zeile aktiviert
werden.
Folgende Befehle stehen zur Verfügung, um die aktiven Plugins zu verwalten:
runvdr-conf.d show [name]
- Zeigt alle Plugins bzw. ein Plugin an, inklusive Name und Ladepriorität.
+ Zeigt alle Plugins bzw. ein Plugin an, inklusive Name und Ladepriorität.
'name' ist der Dateiname im Verzeichnis /etc/runvdr/.
runvdr-conf.d enable name [--prio XX]
@@ -141,7 +141,7 @@ runvdr-conf.d osdserver [--debug]
Verbindet mit OSD-Server Plugin und erlaubt das Konfigurieren der Plugins
per VDR OSD. Von dort können Plugins aktiviert und deaktivert werden, und
die Ladepriorität gesetzt werden.
- Ohne --debug kehrt runvdr-conf.d sofort zurück und trennt sich von der
+ Ohne --debug kehrt runvdr-conf.d sofort zurück und trennt sich von der
Standard-Ein/Ausgabe, kann also von der commands.conf direkt aufgerufen
werden. Mit --debug wird die OSD-Server Kommunikation ausgegeben.
@@ -154,12 +154,10 @@ Unix-Kommandos, die runvdr benutzt:
Kommando Debian-Paket
pgrep procps
ps procps
- kill procps
sleep coreutils
date coreutils
chvt console-tools
getopt util-linux
- setterm util-linux
@@ -213,12 +211,11 @@ Lade alle Plugins, aber nicht das hello-Plugin:
Starte einen Testlauf von runvdr, um zu sehen was passiert:
runvdr --wrapper=echo
-
+
Starte eine Debugging-Session:
runvdr --wrapper="gdb --args"
-
+
Starte mit einer komplett abweichenden Konfiguration:
runvdr --runvdr-conf="/etc/runvdr-debugging.conf"
-
diff --git a/init.d.runvdr.Debian b/init.d.runvdr.Debian
index 4cf5972..d03b605 100755
--- a/init.d.runvdr.Debian
+++ b/init.d.runvdr.Debian
@@ -37,7 +37,7 @@ export LANG
#
d_start() {
start-stop-daemon --start --background --quiet --pidfile $PIDFILE \
- --exec $DAEMON --
+ --exec $DAEMON --
}
#
diff --git a/runvdr b/runvdr
index e0cce12..4959ae7 100755
--- a/runvdr
+++ b/runvdr
@@ -2,7 +2,8 @@
#
# runvdr extreme - configurable vdr launcher script
#
-# Copyright (C) 2006-2009 by Udo Richter
+# Copyright (C) 2006-2009 Udo Richter
+# 2013 Manuel Reimer
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -19,9 +20,11 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
-# The author can be reached at <udo_richter(a)gmx.de>
+# The authors can be reached at <udo_richter(a)gmx.de>
+# <manuel.reimer@gmx.de>
#
-# The project's page is at http://www.udo-richter.de/vdr/scripts.html#runvdr
+# The project's page is at
+# http://projects.vdr-developer.org/projects/runvdr-extreme
RUNVDR="${0##*/}"
@@ -33,11 +36,9 @@ RUNVDRCONF=""
PGREP="pgrep"
PS="ps"
GETOPT="getopt"
-KILL="kill"
SLEEP="sleep"
CHVT="chvt"
DATE="date"
-SETTERM="setterm"
# Options summary and conf file entries of runvdr:
#
@@ -72,9 +73,11 @@ SETTERM="setterm"
# Supported options of VDR
#
# -a # --audio # AUDIO send Dolby Digital audio to stdin of command #
+# --cachedir=# CACHEDIR save cache files in DIR
# -c # --config # CONFIGDIR read config files from DIR
# -d --daemon DAEMON run in daemon mode
# -D # --device # DVBDEVICE use only the given DVB device (NUM = 0, 1, 2...)
+# --dirnames=# DIRNAMES Changes recording directory name format
# -E # --epgfile # EPGFILE write the EPG data into the given FILE. - to disable.
# -g # --grab # GRAB write images from the SVDRP command GRAB into the given DIR;
# -L # --lib # LIBDIR search for plugins in DIR (default is %s)
@@ -88,6 +91,7 @@ SETTERM="setterm"
# -p # --port # SVDRPPORT use PORT for SVDRP
# --rcu #? RCU use a remote control device, attached to PATH
# -r # --record # RECORDCMD call CMD before and after a recording
+# --resdir=# RESDIR read resource files from DIR
# -s # --shutdown # SHUTDOWN call CMD to shutdown the computer
# -t # --terminal # TERMINAL controlling tty
# -u # --user # USER run as user USER; only applicable if started as root
@@ -100,11 +104,9 @@ SETTERM="setterm"
which $PGREP >/dev/null || { echo missing $PGREP... >&2 ; exit 1 ; }
which $PS >/dev/null || { echo missing $PS... >&2 ; exit 1 ; }
which $GETOPT >/dev/null || { echo missing $GETOPT... >&2 ; exit 1 ; }
-which $KILL >/dev/null || { echo missing $KILL... >&2 ; exit 1 ; }
which $SLEEP >/dev/null || { echo missing $SLEEP... >&2 ; exit 1 ; }
which $CHVT >/dev/null || { echo missing $CHVT... >&2 ; exit 1 ; }
which $DATE >/dev/null || { echo missing $DATE... >&2 ; exit 1 ; }
-which $SETTERM >/dev/null || { echo missing $SETTERM... >&2 ; exit 1 ; }
@@ -119,8 +121,8 @@ function ParseCommandLine_Step1() {
runvdr-pid:,dvb-load:,dvb-unload:,dvb-unload-on-exit,x-startup:,\
x-shutdown:,language:,charset-override:,wrapper:,\
term-timeout:,kill-timeout:,terminate::,restart::,dvb-restart::,\
- wait::,audio:,config:,daemon,device:,epgfile:,grab:,help,lib:,lirc::,\
- instance:,log:,localedir:,mute,no-kbd,plugin:,port:,rcu::,record:,shutdown:,\
+ wait::,audio:,cachedir:,config:,daemon,device:,dirnames:,epgfile:,grab:,help,lib:,lirc::,\
+ instance:,log:,localedir:,mute,no-kbd,plugin:,port:,rcu::,record:,resdir:,shutdown:,\
terminal:,user:,userdump,version,vfat,video:,watchdog:"
# prepare all optios for later processing
@@ -158,9 +160,11 @@ function ParseCommandLine_Step1() {
-V|--version) shift ;;
-a|--audio) shift 2;;
+ --cachedir) shift 2;;
-c|--config) shift 2;;
-d|--daemon) shift ;;
-D|--device) shift 2;;
+ --dirnames) shift 2;;
-E|--epgfile) shift 2;;
-g|--grab) shift ;;
-i|--instance) shift 2;;
@@ -174,6 +178,7 @@ function ParseCommandLine_Step1() {
-P|--plugin) shift 2;;
--rcu) shift 2;;
-r|--record) shift 2;;
+ --resdir) shift 2;;
-s|--shutdown) shift 2;;
-t|--terminal) shift 2;;
-u|--user) shift 2;;
@@ -199,7 +204,7 @@ function Clean() {
ADDPARAMS=()
PLUGINSETUPCONF=
SETUPPLUGINCONF=
- VDRPRG=
+ VDRPRG=vdr
SWITCHTERMINAL=
XSERVER=
RUNVDRPID=
@@ -209,7 +214,7 @@ function Clean() {
XSTARTUP=
XSHUTDOWN=
LANGUAGE=
- VDR_CHARSET_OVERRIDE=
+ export VDR_CHARSET_OVERRIDE=
WRAPPER=
TERMTIMEOUT=
KILLTIMEOUT=
@@ -223,9 +228,11 @@ function Clean() {
VERSION=
AUDIO=
+ CACHEDIR=
CONFIGDIR=
DAEMON=
DVBDEVICE=()
+ DIRNAMES=
EPGFILE=
GRAB=
INSTANCE=
@@ -238,6 +245,7 @@ function Clean() {
PLUGINS=()
SVDRPPORT=
RECORDCMD=
+ RESDIR=
RCU=
SHUTDOWN=
TERMINAL=
@@ -313,7 +321,7 @@ function AddParams() {
for i ; do
ADDPARAMS[${#ADDPARAMS[*]}]="$i"
done
-}
+}
function INCLUDE() {
# include different conf file(s)
@@ -368,7 +376,7 @@ function LoadConfFile() {
[ -z "$DVBRESTART" ] && DVBRESTART=0
[ -z "$MAXRESTARTS" ] && MAXRESTARTS=5
[ -z "$RESTARTTIME" ] && RESTARTTIME=10
-
+
# Compatibility: Map old ADDPARAM to new AddParams
[ -n "$ADDPARAM" ] && eval "AddParams $ADDPARAM"
@@ -413,9 +421,11 @@ function ParseCommandLine_Step2() {
-a|--audio) AUDIO="$2"; shift 2;;
+ --cachedir) CACHEDIR="$2"; shift 2;;
-c|--config) CONFIGDIR="$2"; shift 2;;
-d|--daemon) DAEMON=1; shift ;;
-D|--device) AddDevice "$2"; shift 2;;
+ --dirnames) DIRNAMES="$2"; shift 2;;
-E|--epgfile) EPGFILE="$2"; shift 2;;
-g|--grab) GRAB="1"; shift ;;
-i|--instance) INSTANCE="$2"; shift 2;;
@@ -429,6 +439,7 @@ function ParseCommandLine_Step2() {
-P|--plugin) AddPluginString "$2"; shift 2;;
--rcu) RCU="$2"; shift 2;;
-r|--record) RECORDCMD="$2"; shift 2;;
+ --resdir) RESDIR="$2"; shift 2;;
-s|--shutdown) SHUTDOWN="$2"; shift 2;;
-t|--terminal) TERMINAL="$2"; shift 2;;
-u|--user) USER="$2"; shift 2;;
@@ -491,11 +502,19 @@ runvdr Options:
Parsed VDR options:
-a # --audio=# send Dolby Digital audio to stdin of command CMD
+ --cachedir=# save cache files in DIR
-c # --config=# read config files from DIR
-d --daemon run in daemon mode
-D # --device=# use only the given DVB device (NUM = 0, 1, 2...)
Use '-' to override devices from config file
Use '-x' to ignore device x from config file
+ --dirnames=PATH[,NAME[,ENC]]
+ set the maximum directory path length to PATH; if NAME is
+ also given, it defines the maximum directory name length;
+ the optional ENC can be 0 or 1, and controls whether
+ special characters in directory names are encoded as
+ hex values (default: 0); if PATH or NAME are left empty
+ (as in ",,1" to only set ENC), the defaults apply
-E # --epgfile=# write the EPG data into the given FILE. - to disable.
-g # --grab=# write images from the SVDRP command GRAB into the given DIR
-i # --instance=# use ID as the id of this VDR instance
@@ -511,11 +530,12 @@ Parsed VDR options:
-p # --port=# use PORT for SVDRP
--rcu[=#] use a remote control device, attached to PATH
-r # --record=# call CMD before and after a recording
+ --resdir=# read resource files from DIR
-s # --shutdown=# call CMD to shutdown the computer
-t # --terminal=# controlling tty
-u # --user=# run as user USER; only applicable if started as root
--userdump allow coredumps if -u is given (debugging)
- --vfat encode special characters in recording names
+ --vfat for backwards compatibility (same as --dirnames=250,40,1)
-v # --video=# use DIR as video directory
-w # --watchdog=# activate the watchdog timer with a timeout of SEC
@@ -553,6 +573,7 @@ function BuildCommand() {
[ "${#ADDPARAMS[*]}" -gt 0 ] && AddCommandLine "${ADDPARAMS[@]}"
[ -n "$AUDIO" ] && AddCommandLine -a "$AUDIO"
+ [ -n "$CACHEDIR" ] && AddCommandLine --cachedir="$CACHEDIR"
[ -n "$CONFIGDIR" ] && AddCommandLine -c "$CONFIGDIR"
[ -n "$DAEMON" ] && AddCommandLine -d
@@ -560,6 +581,7 @@ function BuildCommand() {
[ -n "$i" ] && AddCommandLine -D "$i"
done
+ [ -n "$DIRNAMES" ] && AddCommandLine --dirnames="$DIRNAMES"
[ -n "$EPGFILE" ] && AddCommandLine -E "$EPGFILE"
[ -n "$GRAB" ] && AddCommandLine -g "$GRAB"
[ -n "$INSTANCE" ] && AddCommandLine -i "$INSTANCE"
@@ -598,6 +620,7 @@ function BuildCommand() {
*) AddCommandLine --rcu="$RCU";;
esac
+ [ -n "$RESDIR" ] && AddCommandLine --resdir="$RESDIR"
[ -n "$SHUTDOWN" ] && AddCommandLine -s "$SHUTDOWN"
[ -n "$TERMINAL" ] && AddCommandLine -t "$TERMINAL"
[ -n "$USER" ] && AddCommandLine -u "$USER"
@@ -637,10 +660,10 @@ function WaitKill() {
GetChilds "$1" "$2"
echo -n "Sending ${#childlist[*]} processes the TERM signal."
- $KILL -TERM ${childlist[*]} >&- 2>&-
+ kill -TERM ${childlist[*]} 2>/dev/null
for ((i=0;i<$3;i++)) ; do
- $PS ${childlist[*]} >&- 2>&- || { echo terminated. ; return ; }
+ $PS ${childlist[*]} >/dev/null || { echo terminated. ; return ; }
echo -n .
$SLEEP 1
@@ -648,10 +671,10 @@ function WaitKill() {
echo
echo -n "Sending ${#childlist[*]} processes the KILL signal."
- $KILL -KILL ${childlist[*]} >&- 2>&-
+ kill -KILL ${childlist[*]} 2>/dev/null
for ((i=0;i<$4;i++)) ; do
- $PS ${childlist[*]} >&- 2>&- || { echo terminated. ; return ; }
+ $PS ${childlist[*]} >/dev/null || { echo terminated. ; return ; }
echo -n .
$SLEEP 1
done
@@ -752,9 +775,9 @@ fi
if [ "$TERMINATE" != "0" ] ; then
if [ -n "$TERMINATE" ] ; then
echo -n "Terminating runvdr (PID=$TERMINATE)"
- $KILL -TERM $TERMINATE
+ kill -TERM $TERMINATE
while [ -z "$WAIT" ] || [ "$WAIT" -gt 0 ] ; do
- $PS $TERMINATE >&- || { echo done ; break ; }
+ $PS $TERMINATE >/dev/null || { echo done ; break ; }
echo -n "."
$SLEEP 1
[ -n "$WAIT" ] && let WAIT=WAIT-1
@@ -770,7 +793,7 @@ fi
if [ "$RESTART" != "0" ] ; then
if [ -n "$RESTART" ] ; then
echo -n "Restarting runvdr (PID=$RESTART)..."
- $KILL -USR1 $RESTART
+ kill -USR1 $RESTART
echo ""
else
echo "No runvdr process to restart."
@@ -781,7 +804,7 @@ fi
if [ "$DVBRESTART" != "0" ] ; then
if [ -n "$DVBRESTART" ] ; then
echo -n "DVB-restarting runvdr (PID=$DVBRESTART)..."
- $KILL -USR2 $DVBRESTART
+ kill -USR2 $DVBRESTART
echo ""
else
echo "No runvdr process to dvb-restart."
@@ -862,14 +885,14 @@ while (true) do
# Run X server that runs VDR
PROXYFILE="/tmp/runvdr-$$"
[ -f "$PROXYFILE" ] && rm "$PROXYFILE"
-
+
# Pack command array into single env string:
export VDRCOMMANDPROXY=`printf '%q ' "${VDRCOMMAND[@]}"`
export XSTARTUP
export XSHUTDOWN
[ "`type -t XSTARTUP`" = "function" ] && export -f XSTARTUP
[ "`type -t XSHUTDOWN`" = "function" ] && export -f XSHUTDOWN
-
+
# Fire up X server that calls back runvdr, and run into XSERVERPROXY there
eval "xinit \""$0"\" --xserver-proxy=\""$PROXYFILE"\" -- $XSERVER &"
@@ -906,9 +929,6 @@ while (true) do
SHORTRUNTIMES=0
fi
- # Reset terminal status
- [ -n "$TERMINAL" ] && $SETTERM -initialize
-
case "$SIG" in
HUP | INT | QUIT | TERM)
echo -n "Terminating by request at " ; $DATE
@@ -1011,9 +1031,7 @@ while (true) do
done
# Clean up PID file
-[ -n "$RUNVDRPID" ] && rm $RUNVDRPID >&- 2>&-
+[ -n "$RUNVDRPID" ] && rm $RUNVDRPID 2>/dev/null
# Clean up proxy file, if used
-[ -n "$PROXYFILE" ] && rm $PROXYFILE >&- 2>&-
-
-
+[ -n "$PROXYFILE" ] && rm $PROXYFILE 2>/dev/null
diff --git a/runvdr-conf.d b/runvdr-conf.d
index ba76787..d183c49 100755
--- a/runvdr-conf.d
+++ b/runvdr-conf.d
@@ -32,17 +32,17 @@ function ConnectServer() {
exec 3<> /tmp/pipe-in$$
exec 4<> /tmp/pipe-out$$
rm /tmp/pipe-in$$ /tmp/pipe-out$$
-
+
# Connect to server using the fifo
- {
+ {
netcat $1 $2
-
+
# In case of connection loss:
echo 499 disconnected
echo 202 Good Bye.
} <&3 >&4 &
pid=$!
-
+
# Sending to the server: use >&3
# Receive from the server: use <&4
}
@@ -60,7 +60,7 @@ function ReadReply() {
while read -r code line <&4 ; do
if [ "$OSDSERVER_DEBUG" ] ; then echo "< $code $line" ; fi
# screen echo
-
+
case $code in
2*) IFS=$' \t\n\r' reply2xx=($code "$line")
;;
@@ -106,19 +106,19 @@ function IsEvent() {
function QuoteString() {
# Quote arbitrary string for use in '' and ""
local str="${!1}"
-
+
str="${str//'\'/\\\\}"
str="${str//'\\'/\\\\}"
# work around bash bug: double quoted '\'
-
+
str="${str//\'/$'\\\''}"
# This is bogus, anyone knows something better to replace ' by \' ?
-
+
str="${str//\"/\\\"}"
str="${str//$'\r'/\\r}"
str="${str//$'\n'/\\n}"
str="${str//$'\t'/\\t}"
-
+
eval "$1=\$str"
}
@@ -145,7 +145,7 @@ function GetConfInfo() {
defaultprio=50
loaded=""
local tmp
-
+
if [ ! -f "$ALLSCRIPTS/$1" ] ; then
return 1
fi
@@ -168,14 +168,14 @@ function GetConfInfo() {
if [ -z "$name" ] ; then
return 1
fi
-
+
tmp=("$ACTIVESCRIPTS"/[0-9][0-9]"$1")
tmp="${tmp[0]}"
if [ -f "$tmp" ] ; then
tmp="${tmp:${#ACTIVESCRIPTS}+1}"
loaded="${tmp:0:2}"
fi
-
+
return 0
}
@@ -203,10 +203,10 @@ function GetAllConfInfo() {
function Command_Show() {
GetAllConfInfo "$1"
-
+
local i;
for ((i=0;i<confs;i++)) ; do
- if [ $i -ne 0 ] ; then
+ if [ $i -ne 0 ] ; then
echo
fi
echo "Plugin short name: ${confs_short[i]}"
@@ -227,7 +227,7 @@ function Command_Enable() {
if [ -z "$newloaded" ] ; then
newloaded="$defaultprio"
fi
-
+
if [ "$2" == "--prio" ] ; then
newloaded="$3"
while [ "${newloaded# }" != "$newloaded" ] ; do newloaded="${newloaded# }" ; done
@@ -275,28 +275,28 @@ function Osdserver_edit() {
enable="No"
loaded="$defaultprio"
fi
-
+
SendCmd "enterlocal" || return $false
# Preserve global variable space, so we can re-use 'menu'
-
+
SendCmd "menu=New Menu 'Edit $name'" || return $false
SendCmd "menu.SetColumns 15" || return $false
SendCmd "menu.EnableEvent keyOk close" || return $false
-
+
SendCmd "menu.AddNew OsdItem -unselectable 'Short name:\\t$short'" || return $false
-
+
SendCmd "menu.AddNew OsdItem -unselectable 'Long name:\\t$name'" || return $false
-
+
SendCmd "menu.AddNew OsdItem -unselectable 'Default priority:\\t$defaultprio'" || return $false
-
+
SendCmd "enable=menu.AddNew EditListItem Enabled No Yes -SelectName '$enable'" || return $false
SendCmd "enable.SetCurrent" || return $false
-
+
SendCmd "prio=menu.AddNew EditIntItem -min 0 -max 99 'Current priority:' '$loaded'" || return $false
-
+
SendCmd "_focus.addsubmenu menu" || return $false
SendCmd "menu.show" || return $false
-
+
while true; do
SendCmd "menu.SleepEvent" || return $false
@@ -304,11 +304,11 @@ function Osdserver_edit() {
SendCmd "enable.GetValue -name" || return $false
[ "${reply6xx[0]}" != 600 ] && return $false
enable="${reply6xx[1]}"
-
+
SendCmd "prio.GetValue" || return $false
- [ "${reply6xx[0]}" != 600 ] && return $false
- prio="${reply6xx[1]}"
-
+ [ "${reply5xx[0]}" != 500 ] && return $false
+ prio="${reply5xx[1]}"
+
if [ "$enable" == "Yes" ] ; then
Command_Enable "$short" --prio "$prio"
confs_loaded[$1]="$prio"
@@ -316,26 +316,26 @@ function Osdserver_edit() {
Command_Disable "$short"
confs_loaded[$1]=""
fi
-
+
SendCmd "menu.SendState osBack" || return $false
- SendCmd "delete menu" || return $false
- SendCmd "leavelocal" || return $false
-
+ SendCmd "delete menu" || return $false
+ SendCmd "leavelocal" || return $false
+
return $true
fi
if IsEvent menu close ; then
- SendCmd "delete menu" || return $false
- SendCmd "leavelocal" || return $false
+ SendCmd "delete menu" || return $false
+ SendCmd "leavelocal" || return $false
return $true
fi
- done
+ done
}
function Osdserver_main() {
SendCmd "menu=New Menu 'Runvdr config'" || return $false
SendCmd "menu.SetColumns 5" || return $false
SendCmd "menu.EnableEvent close" || return $false
-
+
local i;
local min=0
local prio
@@ -344,7 +344,7 @@ function Osdserver_main() {
for ((i=0;i<confs;i++)) ; do
prio="${confs_defaultprio[i]}"
if [ -n "${confs_loaded[i]}" ] ; then prio=${confs_loaded[i]} ; fi
-
+
if [ "$prio" -eq "$min" ] ; then
SendCmd "conf$i=menu.AddNew OsdItem '${confs_loaded[i]:---}\t${confs_name[i]}'" || return $false
SendCmd "conf$i.EnableEvent keyOk" || return $false
@@ -355,16 +355,16 @@ function Osdserver_main() {
done
min="$nextmin"
done
-
+
SendCmd "menu.Show" || return $false
-
+
while true ; do
SendCmd "menu.SleepEvent" || return $false
-
- if IsEvent menu close ; then
+
+ if IsEvent menu close ; then
return $true
fi
-
+
if [ "${reply3xx[1]:0:4}" == "conf" -a "${reply3xx[2]}" == "keyOk" ] ; then
i="${reply3xx[1]:4}"
Osdserver_edit "$i" || return $false
@@ -376,22 +376,22 @@ function Osdserver_main() {
function Osdserver_connect() {
GetAllConfInfo
-
+
ConnectServer localhost 2010
# Connect to the server process
-
+
ReadReply || error
# Read server welcome
-
+
SendCmd "Version 0.1" || error
# Identify to server with protocol version
-
+
Osdserver_main || error
# Main menu
-
+
SendCmd Quit
# ... and good bye
-
+
exec 3>&-
exec 4>&-
# close FIFOs
@@ -433,7 +433,5 @@ runvdr-conf.d help
This help
ENDOFTEXT
else
-
echo "Unknown command: $1" >&2
fi
-
diff --git a/runvdr.conf.example b/runvdr.conf.example
index 251eb09..ae29f4e 100644
--- a/runvdr.conf.example
+++ b/runvdr.conf.example
@@ -3,7 +3,7 @@
# Sample configuration file for the runvdr vdr-launcher script.
#
# by Udo Richter <udo_richter(a)gmx.de>
-# http://www.udo-richter.de/vdr/scripts.html#runvdr
+# http://projects.vdr-developer.org/projects/runvdr-extreme
#
#
@@ -51,9 +51,15 @@ CONFIGDIR="/video"
# Location of locale files for VDR 1.5.14 and newer. Default is to use
# the builtin "./locale" or whatever was compiled as LOCDIR into VDR.
-#
+#
# LOCALEDIR="/usr/src/vdr/locale"
+# Location where VDR and plugins save cache files
+CACHEDIR=
+
+# Location from where plugins read resource files
+RESDIR=
+
##### -----------
##### Plugins
##### -----------
@@ -66,7 +72,7 @@ CONFIGDIR="/video"
#
# AddPlugin hello -b -a "A B C"
#
-# which would load a plugin named "hello", giving it the three
+# which would load a plugin named "hello", giving it the three
# command line options "-b", "-a" and "A B C"
#
# Note: Using the command line option --plugin and -P requires additional
@@ -75,7 +81,7 @@ CONFIGDIR="/video"
# runvdr --plugin "hello -b -a \"A B C\""
#
# Add as many plugins as you want here:
-AddPlugin
+AddPlugin
AddPlugin
AddPlugin
AddPlugin
@@ -94,14 +100,14 @@ LIBDIR=""
##### More config options
##### -----------------------
-# Run as user VDRUSER in case vdr was started as user 'root'. Starting vdr as
-# 'root' is necessary if the system time shall be set from the transponder
+# Run as user VDRUSER in case vdr was started as user 'root'. Starting vdr as
+# 'root' is necessary if the system time shall be set from the transponder
# data, but for security reasons vdr can switch to a lesser privileged user
# id during normal operation.
USER=""
-# Write the EPG data into EPGFILE. Default is /video/epg.data.
-# Use EPGFILE=- to disable this. If EPGFILE is a directory, the file
+# Write the EPG data into EPGFILE. Default is /video/epg.data.
+# Use EPGFILE=- to disable this. If EPGFILE is a directory, the file
# epg.data will be created in that directory.
EPGFILE=""
@@ -129,7 +135,7 @@ LOGLEVEL=3
MUTE=
# Use SVDRPPORT port for SVDRP. A value of 0 turns off SVDRP. The default
-# SVDRP port is 2001. You need to edit the file svdrphosts.conf
+# SVDRP port is 6419. You need to edit the file svdrphosts.conf
# in order to enable access to the SVDRP port.
SVDRPPORT=
@@ -141,13 +147,13 @@ WATCHDOG=90
# Set to anything to activate:
DAEMON=
-# Write images from the SVDRP command GRAB into the given directory.
-# GRAB must be the full path name of an existing directory, without
-# any "..", double '/' or symlinks. By default, or if GRAB=- is given,
+# Write images from the SVDRP command GRAB into the given directory.
+# GRAB must be the full path name of an existing directory, without
+# any "..", double '/' or symlinks. By default, or if GRAB=- is given,
# grabbing images to disk is disabled.
GRAB=
-# Use a LIRC remote control device. If set to 1, vdr uses /dev/lircd.
+# Use a LIRC remote control device. If set to 1, vdr uses /var/run/lirc/lircd.
# If not set, or set to 0, don't use LIRC.
LIRC=
@@ -158,10 +164,19 @@ NOKBD=
# If not set, or set to 0, don't use rcu.
RCU=
-# encode special characters in recording names to avoid problems
+# encode special characters in recording names to avoid problems
# with VFAT file systems
+# for backwards compatibility (same as DIRNAMES=250,40,1)
VFAT=
+# DIRNAMES=PATH[,NAME[,ENC]]
+# set the maximum directory path length to PATH;
+# if NAME is also given, it defines the maximum directory name length;
+# the optional ENC can be 0 or 1, and controls whether special characters in
+# directory names are encoded as hex values (default: 0); if PATH or NAME are
+# left empty (as in ",,1" to only set ENC), the defaults apply
+DIRNAMES=
+
# Allow coredumps if USER= is given (debugging)
# USERDUMP="1"
@@ -186,7 +201,7 @@ RUNVDRPID=/var/run/runvdr.pid
# Set the controlling terminal. For example, /dev/tty8
TERMINAL="/dev/tty8"
-# Switch console to some terminal? Needs terminal number.
+# Switch console to some terminal? Needs terminal number.
# For example, SWITCHTERMINAL=8
SWITCHTERMINAL=8
@@ -194,11 +209,11 @@ SWITCHTERMINAL=8
# This affects sort options in recordings.
# LANGUAGE="de_DE@euro"
-# Set character set that VDR shoud use
+# Set character set that VDR should use
# VDR_CHARSET_OVERRIDE="ISO-8859-15"
-# If VDR restarts automatically, only do this number of restarts before giving up
-# Setting this to 0 will cancel any restart attempt of VDR
+# If VDR restarts automatically, only do this number of restarts before giving
+# up. Setting this to 0 will cancel any restart attempt of VDR
MAXRESTARTS=5
# Only count restart attempts where VDR did not run longer than # seconds
@@ -211,7 +226,7 @@ DVBUNLOADONEXIT=
# Additional parameters to pass to VDR directly, without parsing:
# Add them without extra quoting, like AddParams -a -b -c "Some Parameter"
-AddParams
+AddParams
# Command wrapper. Will be placed in front of the VDR command.
# Example:
diff --git a/runvdr.conf.pod b/runvdr.conf.pod
new file mode 100644
index 0000000..9ad0243
--- /dev/null
+++ b/runvdr.conf.pod
@@ -0,0 +1,369 @@
+=for comment
+Compile me with:
+pod2man -s 5 -c runvdr -r runvdr runvdr.conf.pod | gzip > runvdr.conf.5.gz
+
+=head1 NAME
+
+runvdr.conf - Configuration file for runvdr-extreme
+
+=head1 SYNOPSIS
+
+ /etc/runvdr.conf
+
+=head1 DESCRIPTION
+
+The file B<runvdr.conf> configures the runvdr-extreme VDR startup script.
+
+=head1 OPTIONS
+
+ VDRPRG=
+
+=over 5
+
+The VDR binary to run
+
+=back
+
+ VIDEODIR=
+
+=over 5
+
+Use VIDEODIR as video directory.
+
+=back
+
+ CONFIGDIR=
+
+=over 5
+
+Read config files from directory CONFIGDIR
+
+=back
+
+ LOCALEDIR=
+
+=over 5
+
+Location of locale files for VDR.
+
+=back
+
+ LIBDIR=
+
+=over 5
+
+Search for plugins in directory LIBDIR.
+
+=back
+
+ CACHEDIR=
+
+=over 5
+
+Location where VDR and plugins save cache files
+
+=back
+
+ RESDIR=
+
+=over 5
+
+Location from where plugins read resource files
+
+=back
+
+ USER=
+
+=over 5
+
+Run as user VDRUSER in case vdr was started as user 'root'. Starting vdr as 'root' is necessary if the system time shall be set from the transponder data, but for security reasons vdr can switch to a lesser privileged user id during normal operation.
+
+=back
+
+ EPGFILE=
+
+=over 5
+
+Write the EPG data into EPGFILE. Use EPGFILE=- to disable this. If EPGFILE is a directory, the file epg.data will be created in that directory.
+
+=back
+
+ RECORDCMD=
+
+=over 5
+
+Call RECORDCMD before and after a recording.
+
+=back
+
+ SHUTDOWN=
+
+=over 5
+
+Call SHUTDOWN to shutdown the computer.
+
+=back
+
+ AUDIO=
+
+=over 5
+
+Send Dolby Digital audio to stdin of the command AUDIO
+
+=back
+
+ DVBDEVICE=()
+
+=over 5
+
+Use only the given DVB device. Set one or more DVB device numbers like this: (0 1 2). Defaults to all devices.
+
+=back
+
+ LOGLEVEL=
+
+=over 5
+
+Set logging to level. 0 = no logging, 1 = errors only, 2 = errors and info, 3 = errors, info and debug. The default logging level is 3. If logging should be done to LOG_LOCALn instead of LOG_USER, add '.n' to LEVEL, as in 3.7 (n=0..7).
+
+=back
+
+ MUTE=
+
+=over 5
+
+Mute audio of the primary DVB device at startup. Set to anything to mute, keep clear for not.
+
+=back
+
+ SVDRPPORT=
+
+=over 5
+
+Use SVDRPPORT port for SVDRP. A value of 0 turns off SVDRP. The default SVDRP port is 6419. You need to edit the file svdrphosts.conf in order to enable access to the SVDRP port.
+
+=back
+
+ WATCHDOG=
+
+=over 5
+
+Activate the watchdog timer with a timeout of sec seconds. A value of 0 (default) disables the watchdog.
+
+=back
+
+ DAEMON=
+
+=over 5
+
+Run in daemon mode (implies NOKBD=1). Set to anything to activate.
+
+=back
+
+ GRAB=
+
+=over 5
+
+Write images from the SVDRP command GRAB into the given directory. GRAB must be the full path name of an existing directory, without any "..", double '/' or symlinks. By default, or if GRAB=- is given, grabbing images to disk is disabled.
+
+=back
+
+ LIRC=
+
+=over 5
+
+Use a LIRC remote control device. If set to 1, vdr uses /var/run/lirc/lircd. If not set, or set to 0, don't use LIRC.
+
+=back
+
+ NOKBD=
+
+=over 5
+
+Don't use the keyboard as an input device. Set to anything.
+
+=back
+
+ VFAT=
+
+=over 5
+
+encode special characters in recording names to avoid problems with VFAT file systems
+for backwards compatibility (same as DIRNAMES=250,40,1)
+
+=back
+
+ DIRNAMES=PATH[,NAME[,ENC]]
+
+=over 5
+
+Set the maximum directory path length to PATH; if NAME is also given, it defines the maximum directory name length; the optional ENC can be 0 or 1, and controls whether special characters in directory names are encoded as hex values (default: 0); if PATH or NAME are left empty (as in ",,1" to only set ENC), the defaults apply
+
+=back
+
+ USERDUMP="1"
+
+=over 5
+
+Allow coredumps if USER= is given (debugging)
+
+=back
+
+ RUNVDRPID=/var/run/runvdr.pid
+
+=over 5
+
+Store PID of runvdr into a file?
+
+=back
+
+ TERMINAL=
+
+=over 5
+
+Set the controlling terminal. For example, /dev/tty8
+
+=back
+
+ SWITCHTERMINAL=
+
+=over 5
+
+Switch console to some terminal? Needs terminal number. For example, SWITCHTERMINAL=8
+
+=back
+
+ LANGUAGE="de_DE@euro"
+
+=over 5
+
+Set language for locale to run VDR on. This affects sort options in recordings.
+
+=back
+
+ VDR_CHARSET_OVERRIDE="ISO-8859-15"
+
+=over 5
+
+Set character set that VDR should use
+
+=back
+
+ MAXRESTARTS=
+
+=over 5
+
+If VDR restarts automatically, only do this number of restarts before giving up. Setting this to 0 will cancel any restart attempt of VDR. Default is 5.
+
+=back
+
+ RESTARTTIME=
+
+=over 5
+
+Only count restart attempts where VDR did not run longer than # seconds Setting this to 0 will never count restarts, and VDR can restart forever. Default is 10.
+
+=back
+
+ DVBUNLOADONEXIT=
+
+=over 5
+
+Should we unload the DVB driver when finally exiting runvdr? If not set, or set to 0, exit without unloading drivers
+
+=back
+
+ WRAPPER=
+
+=over 5
+
+Command wrapper. Will be placed in front of the VDR command.
+Example:
+ WRAPPER="gdb --args"
+ WRAPPER="valgrind"
+
+=back
+
+ TERMTIMEOUT=
+ KILLTIMEOUT=
+
+=over 5
+
+Timeouts for SIGTERM and SIGKILL when stopping VDR. TERMTIMEOUT defaults to 20 secods, KILLTIMEOUT to 5 seconds.
+
+=back
+
+=head1 PLUGIN LOADING
+
+ AddPlugin hello -b -a "A B C"
+
+=over 5
+
+The command "AddPlugin" is used to load a plugin, defined by the given options. The first word in options must be the name of an existing vdr plugin, optionally followed by a blank separated list of command line options for that plugin. If options contains any blanks, you need to enclose it in quotes, like for example
+
+=back
+
+=head1 X SERVER HANDLING
+
+ XSERVER="/usr/bin/X -nolisten tcp -config /etc/X11/xorg-runvdr.conf :0"
+
+=over 5
+
+Fire up own X server as output device
+
+=back
+
+ function XSTARTUP() {
+ while true ; do sleep 5; vdr-sxfe; done &
+ SXFEPID=$!
+ }
+
+=over 5
+
+X startup commands, called within the X server. Please not, that commands, entered here, are called with root privileges! Be sure to use "su $USER -c" where applicable.
+
+=back
+
+ function XSHUTDOWN() {
+ kill $SXFEPID
+ }
+
+=over 5
+
+X shutdown commands, called within the X server. Again, as with XSTARTUP, commands are executed with root privileges!
+
+=back
+
+=head1 DVB DRIVER LOADING/RELOADING
+
+ function DVBLOAD() {
+ modprobe ....
+ }
+
+=over 5
+
+Command to load the DVB drivers.
+DVBLOAD will be launched before VDR starts and whenever the drivers need to be reloaded.
+
+=back
+
+ function DVBUNLOAD() {
+ rmmod ....
+ }
+
+=over 5
+
+Command to unload the DVB drivers.
+DVBUNLOAD will be launched whenever the drivers need to be reloaded.
+
+=back
+
+=head1 ADDITIONAL PARAMETERS
+
+ AddParams --whatever --you --need
+
+=over 5
+
+Additional parameters to pass to VDR directly, without parsing: Add them without extra quoting, like AddParams -a -b -c "Some Parameter"
+
+=back