# HG changeset patch
# User Augie Fackler <augie@google.com>
# Date 2018-02-26 05:51:41
# Node ID 1ca4e86c7265f6fb9396ac9a95cf5585596c0ed1
# Parent  ec43960b03e8c8c8c72cc2c73b2b3ca00d6743d5

util: handle fileno() on Python 3 throwing io.UnsupportedOperation

Fortunately, the exception exists on Python 2 so we don't have to do
something weirder than this.

Differential Revision: https://phab.mercurial-scm.org/D2450

diff --git a/mercurial/util.py b/mercurial/util.py
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -26,6 +26,7 @@ import errno
 import gc
 import hashlib
 import imp
+import io
 import itertools
 import mmap
 import os
@@ -1178,7 +1179,10 @@ def _sethgexecutable(path):
 
 def _isstdout(f):
     fileno = getattr(f, 'fileno', None)
-    return fileno and fileno() == sys.__stdout__.fileno()
+    try:
+        return fileno and fileno() == sys.__stdout__.fileno()
+    except io.UnsupportedOperation:
+        return False # fileno() raised UnsupportedOperation
 
 def shellenviron(environ=None):
     """return environ with optional override, useful for shelling out"""