Isn't this something we used to get right?
djc@miles crew $ hg id -nib
1139fcfeaeda+ 10195+ default
djc@miles crew $ hg diff
diff --git a/mercurial/ui.py b/mercurial/ui.py
--- a/mercurial/ui.py
+++ b/mercurial/ui.py
@@ -234,7 +234,8 @@
def write_err(self, *args):
try:
- if not sys.stdout.closed: sys.stdout.flush()
+ if not hasattr(sys.stdout, 'closed') or not sys.stdout.closed:
+ sys.stdout.flush()
for a in args:
sys.stderr.write(str(a))
# stderr may be buffered under win32 when redirected to files,
djc@miles crew $ hg up stable
merging mercurial/ui.py
251 files updated, 1 files merged, 148 files removed, 0 files unresolved
djc@miles crew $ hg id -nib
a275c3997e03+ 10194+ stable
djc@miles crew $ hg diff
diff --git a/mercurial/ui.py b/mercurial/ui.py
--- a/mercurial/ui.py
+++ b/mercurial/ui.py
@@ -29,8 +29,11 @@
self._ocfg = src._ocfg.copy()
self._trustusers = src._trustusers.copy()
self._trustgroups = src._trustgroups.copy()
+ self.environ = src.environ
self.fixconfig()
else:
+ # shared read-only environment
+ self.environ = os.environ
# we always trust global config files
for f in util.rcpath():
self.readconfig(f, trust=True)
@@ -231,7 +234,8 @@
def write_err(self, *args):
try:
- if not sys.stdout.closed: sys.stdout.flush()
+ if not hasattr(sys.stdout, 'closed') or not sys.stdout.closed:
+ sys.stdout.flush()
for a in args:
sys.stderr.write(str(a))
# stderr may be buffered under win32 when redirected to files,
@@ -250,7 +254,13 @@
def interactive(self):
i = self.configbool("ui", "interactive", None)
if i is None:
- return sys.stdin.isatty()
+ try:
+ return sys.stdin.isatty()
+ except AttributeError:
+ # some environments replace stdin without implementing isatty
+ # usually those are non-interactive
+ return False
+
return i
def _readline(self, prompt=''):
|