diff options
| author | Klaus Schmidinger <vdr@tvdr.de> | 2007-01-26 13:38:32 +0100 | 
|---|---|---|
| committer | Klaus Schmidinger <vdr@tvdr.de> | 2007-01-26 13:38:32 +0100 | 
| commit | cb252863948b430e3ac28dc7aaa9cf19930af8b3 (patch) | |
| tree | 60f7a6048b3c2971baec8f6f53ef346a857524e1 | |
| parent | d1d58251360547e434f363cdfcd35537b235f602 (diff) | |
| download | vdr-cb252863948b430e3ac28dc7aaa9cf19930af8b3.tar.gz vdr-cb252863948b430e3ac28dc7aaa9cf19930af8b3.tar.bz2 | |
Now using cPipe instead of popen() in cCommand::Execute()
| -rw-r--r-- | CONTRIBUTORS | 2 | ||||
| -rw-r--r-- | HISTORY | 3 | ||||
| -rw-r--r-- | config.c | 8 | 
3 files changed, 9 insertions, 4 deletions
| diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 50d8ee87..2e913afe 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1114,6 +1114,8 @@ Reinhard Nissl <rnissl@gmx.de>   for changing the behaviour when hitting the end of a recording in fast forward mode   for suggesting to give the cRemote::CallPlugin() function a boolean return value   for fixing a possible crash in remux.c on 64-bit machines + for making cCommand::Execute() use cPipe instead of popen() to avoid problems + with open file handles when starting background commands  Richard Robson <richard_robson@beeb.net>   for reporting freezing replay if a timer starts while in Transfer Mode from the @@ -5085,6 +5085,9 @@ Video Disk Recorder Revision History  2007-01-26: Version 1.4.5-1  - Fixed i18n characters for the Hungarian texts (thanks to Thomas Günther). +- Now using cPipe instead of popen() in cCommand::Execute() to avoid problems +  with open file handles when starting background commands (thanks to Reinhard +  Nissl).  2007-01-26: Version 1.5.1 @@ -4,7 +4,7 @@   * See the main source file 'vdr.c' for copyright information and   * how to reach the author.   * - * $Id: config.c 1.146 2006/07/22 11:57:51 kls Exp $ + * $Id: config.c 1.147 2007/01/26 13:32:19 kls Exp $   */  #include "config.h" @@ -67,8 +67,8 @@ const char *cCommand::Execute(const char *Parameters)       asprintf(&cmdbuf, "%s %s", command, Parameters);    const char *cmd = cmdbuf ? cmdbuf : command;    dsyslog("executing command '%s'", cmd); -  FILE *p = popen(cmd, "r"); -  if (p) { +  cPipe p; +  if (p.Open(cmd, "r")) {       int l = 0;       int c;       while ((c = fgetc(p)) != EOF) { @@ -78,7 +78,7 @@ const char *cCommand::Execute(const char *Parameters)             }       if (result)          result[l] = 0; -     pclose(p); +     p.Close();       }    else       esyslog("ERROR: can't open pipe for command '%s'", cmd); | 
