diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2002-12-01 18:00:00 +0100 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2002-12-01 18:00:00 +0100 |
commit | 96ebdbf4b1e495d44f8f837068af7c2d925bab62 (patch) | |
tree | 7d0283b6f2087626108a5b5a8aa9e4a32a5e47e2 /keys.c | |
parent | fe9499ba901f5c32dd0b3841a2b6e599fefc144f (diff) | |
download | vdr-patch-lnbsharing-96ebdbf4b1e495d44f8f837068af7c2d925bab62.tar.gz vdr-patch-lnbsharing-96ebdbf4b1e495d44f8f837068af7c2d925bab62.tar.bz2 |
Version 1.1.18vdr-1.1.18
- Fixed missing initialization of 'number' in cChannel (thanks to Martin Hammerschmid
for reporting this one).
- Fixed a misplaced ')' in the fix about the stale lock files (thanks again to
Oliver Endriss for pointing this out - it was my fault).
- Group delimiters in the 'channels.conf' file that have no text (like a simple ":"
or ":@201") no longer show up in the Channels menu (suggested by Guy Roussin).
- Added "Tele 5" to 'channels.conf' (thanks to Georg Hitsch).
- Changed the source directory name for plugins from 'SRC' to 'src' (suggested by
Clemens Kirchgatterer).
- Removed transponders 10788, 11739 and 12266 from 'channels.conf' (apparently they
are no longer active).
- Deactivated some templates in tools.h in case some plugin needs to use the STL
(suggested by Gerald Berwolf).
- Timers now accept channel IDs even if the 'source' is 0 (thanks to Stefan Huelswitt
for reporting this one).
- Now taking an active SVDRP connection into account when doing shutdown or
housekeeping (suggested by Emil Naepflein).
- Macros in 'keymacros.conf' can now use "@plugin" to directly access the main menu
function of a given plugin (see man vdr(5) for details).
- The new plugin 'sky' can be used to integrate a Sky Digibox into the VDR system,
using a Kfir MPEG2 encoder card (see PLUGINS/src/sky/README for details).
Diffstat (limited to 'keys.c')
-rw-r--r-- | keys.c | 42 |
1 files changed, 37 insertions, 5 deletions
@@ -4,10 +4,11 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: keys.c 1.3 2002/10/27 15:19:40 kls Exp $ + * $Id: keys.c 1.4 2002/11/30 16:01:37 kls Exp $ */ #include "keys.h" +#include "plugin.h" static tKey keyTable[] = { // "Up" and "Down" must be the first two keys! { kUp, "Up" }, @@ -182,6 +183,12 @@ cKeyMacro::cKeyMacro(void) { for (int i = 0; i < MAXKEYSINMACRO; i++) macro[i] = kNone; + plugin = NULL; +} + +cKeyMacro::~cKeyMacro() +{ + free(plugin); } bool cKeyMacro::Parse(char *s) @@ -190,10 +197,35 @@ bool cKeyMacro::Parse(char *s) char *p; while ((p = strtok(s, " \t")) != NULL) { if (n < MAXKEYSINMACRO) { - macro[n] = cKey::FromString(p); - if (macro[n] == kNone) { - esyslog("ERROR: unknown key '%s'", p); - return false; + if (*p == '@') { + if (plugin) { + esyslog("ERROR: only one @plugin allowed per macro"); + return false; + } + if (!n) { + esyslog("ERROR: @plugin can't be first in macro"); + return false; + } + macro[n++] = k_Plugin; + if (n < MAXKEYSINMACRO) { + macro[n] = kOk; + plugin = strdup(p + 1); + if (!cPluginManager::GetPlugin(plugin)) { + esyslog("ERROR: unknown plugin '%s'", plugin); + return false; + } + } + else { + esyslog("ERROR: key macro too long"); + return false; + } + } + else { + macro[n] = cKey::FromString(p); + if (macro[n] == kNone) { + esyslog("ERROR: unknown key '%s'", p); + return false; + } } n++; s = NULL; |