mercurial/utils/procutil.py
changeset 45093 63196198dbf0
parent 45082 b6afe1c52964
child 45094 b4c35e439ea5
equal deleted inserted replaced
45091:6a5dcd754842 45093:63196198dbf0
    79         return stream
    79         return stream
    80     return LineBufferedWrapper(stream)
    80     return LineBufferedWrapper(stream)
    81 
    81 
    82 
    82 
    83 if pycompat.ispy3:
    83 if pycompat.ispy3:
       
    84     # Python 3 implements its own I/O streams.
    84     # TODO: .buffer might not exist if std streams were replaced; we'll need
    85     # TODO: .buffer might not exist if std streams were replaced; we'll need
    85     # a silly wrapper to make a bytes stream backed by a unicode one.
    86     # a silly wrapper to make a bytes stream backed by a unicode one.
    86     stdin = sys.stdin.buffer
    87     stdin = sys.stdin.buffer
    87     stdout = sys.stdout.buffer
    88     stdout = sys.stdout.buffer
    88     stderr = sys.stderr.buffer
    89     stderr = sys.stderr.buffer
       
    90     if isatty(stdout):
       
    91         # The standard library doesn't offer line-buffered binary streams.
       
    92         stdout = make_line_buffered(stdout)
    89 else:
    93 else:
       
    94     # Python 2 uses the I/O streams provided by the C library.
    90     stdin = sys.stdin
    95     stdin = sys.stdin
    91     stdout = sys.stdout
    96     stdout = sys.stdout
    92     stderr = sys.stderr
    97     stderr = sys.stderr
    93 
    98     if isatty(stdout):
    94 if isatty(stdout):
    99         if pycompat.iswindows:
    95     if pycompat.ispy3:
   100             # Work around size limit when writing to console.
    96         # Python 3 implements its own I/O streams.
   101             stdout = platform.winstdout(stdout)
    97         # The standard library doesn't offer line-buffered binary streams.
   102             # The Windows C runtime library doesn't support line buffering.
    98         stdout = make_line_buffered(stdout)
   103             stdout = make_line_buffered(stdout)
    99     elif pycompat.iswindows:
   104         else:
   100         # Work around size limit when writing to console.
   105             # glibc determines buffering on first write to stdout - if we
   101         stdout = platform.winstdout(stdout)
   106             # replace a TTY destined stdout with a pipe destined stdout (e.g.
   102         # Python 2 uses the I/O streams provided by the C library.
   107             # pager), we want line buffering.
   103         # The Windows C runtime library doesn't support line buffering.
   108             stdout = os.fdopen(stdout.fileno(), 'wb', 1)
   104         stdout = make_line_buffered(stdout)
       
   105     else:
       
   106         # glibc determines buffering on first write to stdout - if we
       
   107         # replace a TTY destined stdout with a pipe destined stdout (e.g.
       
   108         # pager), we want line buffering.
       
   109         stdout = os.fdopen(stdout.fileno(), 'wb', 1)
       
   110 
   109 
   111 
   110 
   112 findexe = platform.findexe
   111 findexe = platform.findexe
   113 _gethgcmd = platform.gethgcmd
   112 _gethgcmd = platform.gethgcmd
   114 getuser = platform.getuser
   113 getuser = platform.getuser