diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2008-01-13 18:00:00 +0100 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2008-01-13 18:00:00 +0100 |
commit | fc4c8740a72e6c7cea5a001e19fdacb63c3cc538 (patch) | |
tree | 6ab0ae16b8d588e34d86f8a1a69c101ce8ba2809 /svdrp.c | |
parent | 29b2d48bb53df75f1cb978e72bc709a6658d6e5c (diff) | |
download | vdr-patch-lnbsharing-fc4c8740a72e6c7cea5a001e19fdacb63c3cc538.tar.gz vdr-patch-lnbsharing-fc4c8740a72e6c7cea5a001e19fdacb63c3cc538.tar.bz2 |
Version 1.5.13vdr-1.5.13
- Fixed the declaration of cSubtitleObject::Decode8BppCodeString() (thanks to
Gregoire Favre).
- The new setup option "Miscellaneous/Emergency exit" can be used to turn off
the automatic restart of VDR in case a recording fails for some reason.
- The kInfo key is now propagated to any open menu, so that it can react to it
in a context sensitive manner (suggested by Andreas Brugger). If there is
no menu open it will show the info of the current broadcast or replay.
- cTimeMs now uses the monotonic clock, if available (thanks to Petri Hintukainen).
- Fixed cVector::Clear() and cStringList::Clear().
- Added cString::Truncate().
- Fixed the "i18n:" target in the "newplugin" script, so that it can create the
initial *.pot file.
- Fixed handling the '-l' option.
- Fixed error handling in cCuttingThread::Action() (thanks to Udo Richter).
- Fixed a loss of the date display in the "classic" skin's main menu (reported by
Andreas Brugger).
- Added a missing setting of lastFreeMB in cMenuMain::Update() (reported by
Andreas Brugger).
- Added '-Wno-parentheses' to the compiler options in order to avoid silly compiler
warnings for expressions like 'a || b && c', where GCC 4.3 wants to force the
programmer to write 'a || (b && c)', while everybody knows that '&&' links
stronger than '||' (reported by Tobias Grimm).
- Updated the Hungarian language texts (thanks to István Füley).
- Fixed displaying weekday names in the Schedule menu if the system uses UTF-8
(reported by Jiri Dobry).
- The new plugin "pictures" implements a simple picture viewer.
See PLUGINS/src/pictures/README for details.
- The automatic shutdown is now suppressed if the remote control is currently
disabled (suggested by Helmut Auer, implemented by Udo Richter).
- Added a section about "Logging" to PLUGINS.html (suggested by Torsten Kunkel).
- Enhanced the SVDRP command CLRE to allow clearing the EPG data of a particular
channel (thanks to Benjamin Hess).
Diffstat (limited to 'svdrp.c')
-rw-r--r-- | svdrp.c | 60 |
1 files changed, 55 insertions, 5 deletions
@@ -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.104 2007/10/13 10:17:48 kls Exp $ + * $Id: svdrp.c 1.105 2008/01/13 15:06:25 kls Exp $ */ #include "svdrp.h" @@ -185,8 +185,9 @@ const char *HelpPages[] = { " Switch channel up, down or to the given channel number, name or id.\n" " Without option (or after successfully switching to the channel)\n" " it returns the current channel number and name.", - "CLRE\n" - " Clear the entire EPG list.", + "CLRE [ <number> | <name> | <id> ]\n" + " Clear the EPG list of the given channel number, name or id.\n" + " Without option it clears the entire EPG list.", "DELC <number>\n" " Delete channel.", "DELR <number>\n" @@ -538,8 +539,57 @@ void cSVDRP::CmdCHAN(const char *Option) void cSVDRP::CmdCLRE(const char *Option) { - cSchedules::ClearAll(); - Reply(250, "EPG data cleared"); + if (*Option) { + tChannelID ChannelID = tChannelID::InvalidID; + if (isnumber(Option)) { + int o = strtol(Option, NULL, 10); + if (o >= 1 && o <= Channels.MaxNumber()) + ChannelID = Channels.GetByNumber(o)->GetChannelID(); + } + else { + ChannelID = tChannelID::FromString(Option); + if (ChannelID == tChannelID::InvalidID) { + for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) { + if (!Channel->GroupSep()) { + if (strcasecmp(Channel->Name(), Option) == 0) { + ChannelID = Channel->GetChannelID(); + break; + } + } + } + } + } + if (!(ChannelID == tChannelID::InvalidID)) { + cSchedulesLock SchedulesLock(true, 1000); + cSchedules *s = (cSchedules *)cSchedules::Schedules(SchedulesLock); + if (s) { + cSchedule *Schedule = NULL; + ChannelID.ClrRid(); + for (cSchedule *p = s->First(); p; p = s->Next(p)) { + if (p->ChannelID() == ChannelID) { + Schedule = p; + break; + } + } + if (Schedule) { + Schedule->Cleanup(INT_MAX); + Reply(250, "EPG data of channel \"%s\" cleared", Option); + } + else { + Reply(550, "No EPG data found for channel \"%s\"", Option); + return; + } + } + else + Reply(451, "Can't get EPG data"); + } + else + Reply(501, "Undefined channel \"%s\"", Option); + } + else { + cSchedules::ClearAll(); + Reply(250, "EPG data cleared"); + } } void cSVDRP::CmdDELC(const char *Option) |