diff options
| -rw-r--r-- | CONTRIBUTORS | 2 | ||||
| -rw-r--r-- | HISTORY | 2 | ||||
| -rw-r--r-- | menu.c | 4 | ||||
| -rw-r--r-- | recording.c | 4 | ||||
| -rw-r--r-- | shutdown.c | 4 | 
5 files changed, 10 insertions, 6 deletions
| diff --git a/CONTRIBUTORS b/CONTRIBUTORS index cab05b4e..85902fd9 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1062,6 +1062,8 @@ Peter Bieringer <pb@bieringer.de>   for adding more error messages and line numbers when reading EPG data and info.vdr   for fixing handling "more than 3 byte" key sequences in cKbdRemote::ReadKeySequence()   for suggesting to ignore lines tagged with '#' in the 'info.vdr' file of a recording + for reporting a problem with the backslash ('\') in parameters when executing + external commands  Alexander Damhuis <ad@phonedation.de>   for reporting problems when deleting a timer that is currently recording @@ -5668,3 +5668,5 @@ Video Disk Recorder Revision History    case a CAM menu is open).  - Increased the valid range of the "Subtitle offset" setup option to -100...100    (thanks to Rolf Ahrenberg). +- Added the backslash ('\') to the list of characters that need to be escaped +  when executing external commands (thanks to Peter Bieringer for reporting this one). @@ -4,7 +4,7 @@   * See the main source file 'vdr.c' for copyright information and   * how to reach the author.   * - * $Id: menu.c 1.479 2008/02/24 10:08:42 kls Exp $ + * $Id: menu.c 1.480 2008/02/24 10:28:46 kls Exp $   */  #include "menu.h" @@ -2127,7 +2127,7 @@ eOSState cMenuRecordings::Commands(eKeys Key)       cRecording *recording = GetRecording(ri);       if (recording) {          cMenuCommands *menu; -        eOSState state = AddSubMenu(menu = new cMenuCommands(tr("Recording commands"), &RecordingCommands, cString::sprintf("\"%s\"", *strescape(recording->FileName(), "\"$")))); +        eOSState state = AddSubMenu(menu = new cMenuCommands(tr("Recording commands"), &RecordingCommands, cString::sprintf("\"%s\"", *strescape(recording->FileName(), "\\\"$"))));          if (Key != kNone)             state = menu->ProcessKey(Key);          return state; diff --git a/recording.c b/recording.c index 4ecf4a96..1535b46b 100644 --- a/recording.c +++ b/recording.c @@ -4,7 +4,7 @@   * See the main source file 'vdr.c' for copyright information and   * how to reach the author.   * - * $Id: recording.c 1.161 2008/02/16 13:31:39 kls Exp $ + * $Id: recording.c 1.162 2008/02/24 10:28:53 kls Exp $   */  #include "recording.h" @@ -1161,7 +1161,7 @@ const char *cRecordingUserCommand::command = NULL;  void cRecordingUserCommand::InvokeCommand(const char *State, const char *RecordingFileName)  {    if (command) { -     cString cmd = cString::sprintf("%s %s \"%s\"", command, State, *strescape(RecordingFileName, "\"$")); +     cString cmd = cString::sprintf("%s %s \"%s\"", command, State, *strescape(RecordingFileName, "\\\"$"));       isyslog("executing '%s'", *cmd);       SystemExec(cmd);       } @@ -6,7 +6,7 @@   *   * Original version written by Udo Richter <udo_richter@gmx.de>.   * - * $Id: shutdown.c 1.4 2008/01/13 14:27:29 kls Exp $ + * $Id: shutdown.c 1.5 2008/02/24 10:29:00 kls Exp $   */  #include "shutdown.h" @@ -130,7 +130,7 @@ void cShutdownHandler::SetShutdownCommand(const char *ShutdownCommand)  void cShutdownHandler::CallShutdownCommand(time_t WakeupTime, int Channel, const char *File, bool UserShutdown)  {    time_t Delta = WakeupTime ? WakeupTime - time(NULL) : 0; -  cString cmd = cString::sprintf("%s %ld %ld %d \"%s\" %d", shutdownCommand, WakeupTime, Delta, Channel, *strescape(File, "\"$"), UserShutdown); +  cString cmd = cString::sprintf("%s %ld %ld %d \"%s\" %d", shutdownCommand, WakeupTime, Delta, Channel, *strescape(File, "\\\"$"), UserShutdown);    isyslog("executing '%s'", *cmd);    int Status = SystemExec(cmd, true);    if (!WIFEXITED(Status) || WEXITSTATUS(Status)) | 
