summaryrefslogtreecommitdiff
path: root/keys.c
diff options
context:
space:
mode:
authorKlaus Schmidinger <kls (at) cadsoft (dot) de>2002-12-01 18:00:00 +0100
committerKlaus Schmidinger <kls (at) cadsoft (dot) de>2002-12-01 18:00:00 +0100
commit96ebdbf4b1e495d44f8f837068af7c2d925bab62 (patch)
tree7d0283b6f2087626108a5b5a8aa9e4a32a5e47e2 /keys.c
parentfe9499ba901f5c32dd0b3841a2b6e599fefc144f (diff)
downloadvdr-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.c42
1 files changed, 37 insertions, 5 deletions
diff --git a/keys.c b/keys.c
index 4647f3a..381b318 100644
--- a/keys.c
+++ b/keys.c
@@ -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;