hgext/pager.py
changeset 26453 1a2578418689
parent 26452 499d5c98e98b
child 26454 62c5e937f477
equal deleted inserted replaced
26452:499d5c98e98b 26453:1a2578418689
    68 def _runpager(ui, p):
    68 def _runpager(ui, p):
    69     pager = subprocess.Popen(p, shell=True, bufsize=-1,
    69     pager = subprocess.Popen(p, shell=True, bufsize=-1,
    70                              close_fds=util.closefds, stdin=subprocess.PIPE,
    70                              close_fds=util.closefds, stdin=subprocess.PIPE,
    71                              stdout=sys.stdout, stderr=sys.stderr)
    71                              stdout=sys.stdout, stderr=sys.stderr)
    72 
    72 
    73     stdout = os.dup(sys.stdout.fileno())
    73     stdoutfd = os.dup(sys.stdout.fileno())
    74     stderr = os.dup(sys.stderr.fileno())
    74     stderrfd = os.dup(sys.stderr.fileno())
    75     os.dup2(pager.stdin.fileno(), sys.stdout.fileno())
    75     os.dup2(pager.stdin.fileno(), sys.stdout.fileno())
    76     if ui._isatty(sys.stderr):
    76     if ui._isatty(sys.stderr):
    77         os.dup2(pager.stdin.fileno(), sys.stderr.fileno())
    77         os.dup2(pager.stdin.fileno(), sys.stderr.fileno())
    78 
    78 
    79     @atexit.register
    79     @atexit.register
    80     def killpager():
    80     def killpager():
    81         if util.safehasattr(signal, "SIGINT"):
    81         if util.safehasattr(signal, "SIGINT"):
    82             signal.signal(signal.SIGINT, signal.SIG_IGN)
    82             signal.signal(signal.SIGINT, signal.SIG_IGN)
    83         pager.stdin.close()
    83         pager.stdin.close()
    84         os.dup2(stdout, sys.stdout.fileno())
    84         os.dup2(stdoutfd, sys.stdout.fileno())
    85         os.dup2(stderr, sys.stderr.fileno())
    85         os.dup2(stderrfd, sys.stderr.fileno())
    86         pager.wait()
    86         pager.wait()
    87 
    87 
    88 def uisetup(ui):
    88 def uisetup(ui):
    89     if '--debugger' in sys.argv or not ui.formatted():
    89     if '--debugger' in sys.argv or not ui.formatted():
    90         return
    90         return