diff options
-rw-r--r-- | MgaRepo/util.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/MgaRepo/util.py b/MgaRepo/util.py index ff71ce7..9008a59 100644 --- a/MgaRepo/util.py +++ b/MgaRepo/util.py @@ -71,11 +71,17 @@ def execcmd(*cmd, **kwargs): sys.stdout.write(data) output = error.getvalue() else: - proc.wait() - if proc.stdout is not None: - output = proc.stdout.read().decode('utf8') - if kwargs.get("strip", True): - output = output.rstrip() + # Make sure to avoid buffer getting full. + # Otherwise if ie. using proc.wait() both python + # and the process will just hang + while proc.poll() is None: + if proc.stdout is not None: + output += proc.stdout.read(8192).decode('utf8') + # Make sure that we've emptied the buffer entirely + output += proc.stdout.read().decode('utf8') + + if kwargs.get("strip", True): + output = output.rstrip() if (not kwargs.get("noerror")) and proc.returncode != 0: if kwargs.get("cleanerr"): |