summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2008-02-24 10:30:49 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2008-02-24 10:30:49 +0100
commitce7b0c94f76a9a8fa6a43b70428c0c38240d81b2 (patch)
tree4d7f33b89cbc0865afd730e800daccf5afe01ebb
parent088c325e8f6f6bb70a2588a9eb6278c0795245af (diff)
downloadvdr-ce7b0c94f76a9a8fa6a43b70428c0c38240d81b2.tar.gz
vdr-ce7b0c94f76a9a8fa6a43b70428c0c38240d81b2.tar.bz2
Added the backslash ('\') to the list of characters that need to be escaped when executing external commands1.5.16
-rw-r--r--CONTRIBUTORS2
-rw-r--r--HISTORY2
-rw-r--r--menu.c4
-rw-r--r--recording.c4
-rw-r--r--shutdown.c4
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
diff --git a/HISTORY b/HISTORY
index 0665c86b..56ff6fa4 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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).
diff --git a/menu.c b/menu.c
index 0fb36cbe..37da3ddc 100644
--- a/menu.c
+++ b/menu.c
@@ -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);
}
diff --git a/shutdown.c b/shutdown.c
index ea137edf..d71a3a13 100644
--- a/shutdown.c
+++ b/shutdown.c
@@ -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))