diff --git a/CONTRIBUTORS b/CONTRIBUTORS index d524a303..4e02e9e6 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -71,6 +71,8 @@ Matthias Schniedermeyer and had their start time changed into the future for suggesting to give the timer status a bit that is set when that timer is currently recording + for suggesting to make the SVDRP command LSTT optionally list the channels + of the timers with their unique channel ids instead of their numbers Miha Setina for translating OSD texts to the Slovenian language diff --git a/HISTORY b/HISTORY index 49201ddc..2dd7c739 100644 --- a/HISTORY +++ b/HISTORY @@ -4134,3 +4134,9 @@ Video Disk Recorder Revision History - Added a SleepMs() in cRecorder::Action() to avoid a busy loop (thanks to Ingo Schneider). - Cleaned up some trailing white space. + +2006-01-08: Version 1.3.39 + +- The SVDRP command LSTT now accepts the new option 'id' to have the channels + of the timers listed with their unique channel ids instead of their numbers + (suggested by Matthias Schniedermeyer). diff --git a/config.h b/config.h index 73c3d7d6..7df755ff 100644 --- a/config.h +++ b/config.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: config.h 1.238 2006/01/07 12:57:42 kls Exp $ + * $Id: config.h 1.239 2006/01/08 13:08:42 kls Exp $ */ #ifndef __CONFIG_H @@ -19,8 +19,8 @@ #include "i18n.h" #include "tools.h" -#define VDRVERSION "1.3.38" -#define VDRVERSNUM 10338 // Version * 10000 + Major * 100 + Minor +#define VDRVERSION "1.3.39" +#define VDRVERSNUM 10339 // Version * 10000 + Major * 100 + Minor #define MAXPRIORITY 99 #define MAXLIFETIME 99 diff --git a/svdrp.c b/svdrp.c index 086b01cb..db07a1fd 100644 --- a/svdrp.c +++ b/svdrp.c @@ -10,7 +10,7 @@ * and interact with the Video Disk Recorder - or write a full featured * graphical interface that sits on top of an SVDRP connection. * - * $Id: svdrp.c 1.89 2005/12/30 15:42:29 kls Exp $ + * $Id: svdrp.c 1.90 2006/01/08 13:31:00 kls Exp $ */ #include "svdrp.h" @@ -229,9 +229,11 @@ const char *HelpPages[] = { "LSTR [ ]\n" " List recordings. Without option, all recordings are listed. Otherwise\n" " the information for the given recording is listed.", - "LSTT [ ]\n" + "LSTT [ ] [ id ]\n" " List timers. Without option, all timers are listed. Otherwise\n" - " only the given timer is listed.", + " only the given timer is listed. If the keyword 'id' is given, the\n" + " channels will be listed with their unique channel ids instead of\n" + " their numbers.", "MESG \n" " Displays the given message on the OSD. The message will be queued\n" " and displayed whenever this is suitable.\n", @@ -1009,22 +1011,38 @@ void cSVDRP::CmdLSTR(const char *Option) void cSVDRP::CmdLSTT(const char *Option) { + int Number = 0; + bool Id = false; if (*Option) { - if (isnumber(Option)) { - cTimer *timer = Timers.Get(strtol(Option, NULL, 10) - 1); - if (timer) - Reply(250, "%d %s", timer->Index() + 1, *timer->ToText()); - else - Reply(501, "Timer \"%s\" not defined", Option); - } + char buf[strlen(Option) + 1]; + strcpy(buf, Option); + const char *delim = " \t"; + char *strtok_next; + char *p = strtok_r(buf, delim, &strtok_next); + while (p) { + if (isnumber(p)) + Number = strtol(p, NULL, 10); + else if (strcasecmp(p, "ID") == 0) + Id = true; + else { + Reply(501, "Unknown option: \"%s\"", p); + return; + } + p = strtok_r(NULL, delim, &strtok_next); + } + } + if (Number) { + cTimer *timer = Timers.Get(Number - 1); + if (timer) + Reply(250, "%d %s", timer->Index() + 1, *timer->ToText(Id)); else - Reply(501, "Error in timer number \"%s\"", Option); + Reply(501, "Timer \"%s\" not defined", Option); } else if (Timers.Count()) { for (int i = 0; i < Timers.Count(); i++) { cTimer *timer = Timers.Get(i); if (timer) - Reply(i < Timers.Count() - 1 ? -250 : 250, "%d %s", timer->Index() + 1, *timer->ToText()); + Reply(i < Timers.Count() - 1 ? -250 : 250, "%d %s", timer->Index() + 1, *timer->ToText(Id)); else Reply(501, "Timer \"%d\" not found", i + 1); }