py3: keep stdout as defined by pycompat in procutil
According to https://docs.python.org/3/library/functions.html#open, it's
not possible to use 1 as buffering argument value in binary mode. This
is probably why line buffering does not work well in python3.
On the other hand, sys.stdout.buffer appears to be line-buffered already
on python3. So by not replacing it, there should be no behavior change.
This fixes buffering issue in "hg email" (confirmation prompt shown
before information to be confirmed).
--- a/mercurial/utils/procutil.py Mon Oct 07 21:21:16 2019 -0400
+++ b/mercurial/utils/procutil.py Thu Oct 10 16:00:02 2019 +0200
@@ -53,7 +53,9 @@
if pycompat.iswindows:
# Windows doesn't support line buffering
stdout = os.fdopen(stdout.fileno(), r'wb', 0)
- else:
+ elif not pycompat.ispy3:
+ # on Python 3, stdout (sys.stdout.buffer) is already line buffered and
+ # buffering=1 is not handled in binary mode
stdout = os.fdopen(stdout.fileno(), r'wb', 1)
if pycompat.iswindows: