Mercurial > hg
diff mercurial/ui.py @ 5337:8c5ef3b87cb1
Don't try to determine interactivity if ui() called with interactive=False.
WSGI applications are not supposed to refer to sys.stdin. In ed6df6b1c29a,
hgweb and hgwebdir were fixed to pass interactive=False to their ui()'s, but
sys.stdin.isatty() was still called by the ui objects. This change makes sure
only the ui.fixconfig() method will call ui.isatty() (by making the
ui._readline() method, which is currently only called from ui.prompt(),
private). ui.fixconfig() is changed to let config files override the initial
interactivity setting, but not check isatty() if interactive=False was
specified in the creation of the ui.
author | Dirkjan Ochtman <dirkjan@ochtman.nl> |
---|---|
date | Tue, 25 Sep 2007 19:05:34 +0200 |
parents | 67afecb8d6cc |
children | 2e76e5a23c2b b5605d88dc27 |
line wrap: on
line diff
--- a/mercurial/ui.py Mon Sep 24 19:14:18 2007 -0300 +++ b/mercurial/ui.py Tue Sep 25 19:05:34 2007 +0200 @@ -211,9 +211,11 @@ if name is None or name in ('quiet', 'verbose', 'debug'): self.verbosity_constraints() if name is None or name == 'interactive': - self.interactive = self.configbool("ui", "interactive", None) - if self.interactive is None: + interactive = self.configbool("ui", "interactive", None) + if interactive is None and self.interactive: self.interactive = self.isatty() + else: + self.interactive = interactive if name is None or name == 'report_untrusted': self.report_untrusted = ( self.configbool("ui", "report_untrusted", True)) @@ -391,7 +393,7 @@ try: sys.stderr.flush() except: pass - def readline(self, prompt=''): + def _readline(self, prompt=''): if self.isatty(): try: # magically add command line editing support, where @@ -406,7 +408,7 @@ def prompt(self, msg, pat=None, default="y", matchflags=0): if not self.interactive: return default try: - r = self.readline(msg + ' ') + r = self._readline(msg + ' ') if not pat or re.match(pat, r, matchflags): return r else: