mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	Added the backslash ('\') to the list of characters that need to be escaped when executing external commands
This commit is contained in:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								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).
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								menu.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								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;
 | 
			
		||||
 
 | 
			
		||||
@@ -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))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user