mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Version 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).
This commit is contained in:
60
svdrp.c
60
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.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)
|
||||
|
||||
Reference in New Issue
Block a user