Make execWithRedirect() append to the files. (#702024)
Otherwise stdout output is lost if we pass the same filename for stdout
and stderr.
---
iutil.py | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/iutil.py b/iutil.py
index c482b18..9a53b16 100644
--- a/iutil.py
+++ b/iutil.py
@@ -36,15 +36,24 @@ def execWithRedirect(command, argv, stdin = 0, stdout = 1, stderr = 2,
if not searchPath and not os.access (command, os.X_OK):
raise RuntimeError, command + " can not be run"
+ def try_truncate(f):
+ try:
+ f.truncate(0)
+ except IOError, e:
+ # will fail for e.g. for /dev/tty5
+ pass
+
if type(stdin) == type("string"):
if os.access(stdin, os.R_OK):
stdin = open(stdin)
else:
stdin = 0
if type(stdout) == type("string"):
- stdout = open(stdout, "w")
+ stdout = open(stdout, "a")
+ try_truncate(stdout)
if type(stderr) == type("string"):
- stderr = open(stderr, "w")
+ stderr = open(stderr, "a")
+ try_truncate(stderr)