comparison mercurial/ui.py @ 50995:ce9cb12ca8c9

openvms: fix the pager spawning and cleanup Unsurprisingly, pager handling needs some adjustment.
author Jean-Francois Pieronne <jf.pieronne@laposte.net>
date Thu, 03 Aug 2023 02:33:22 +0200
parents 18c8c18993f0
children 9d3721552b6c
comparison
equal deleted inserted replaced
50994:def6f1a4604b 50995:ce9cb12ca8c9
1535 ) 1535 )
1536 return False 1536 return False
1537 raise 1537 raise
1538 1538
1539 # back up original file descriptors 1539 # back up original file descriptors
1540 stdoutfd = os.dup(procutil.stdout.fileno()) 1540 if pycompat.sysplatform != b'OpenVMS':
1541 stderrfd = os.dup(procutil.stderr.fileno()) 1541 stdoutfd = os.dup(procutil.stdout.fileno())
1542 stderrfd = os.dup(procutil.stderr.fileno())
1542 1543
1543 os.dup2(pager.stdin.fileno(), procutil.stdout.fileno()) 1544 os.dup2(pager.stdin.fileno(), procutil.stdout.fileno())
1544 if self._isatty(procutil.stderr): 1545 if self._isatty(procutil.stderr):
1545 os.dup2(pager.stdin.fileno(), procutil.stderr.fileno()) 1546 os.dup2(pager.stdin.fileno(), procutil.stderr.fileno())
1546 1547
1547 @self.atexit 1548 @self.atexit
1548 def killpager(): 1549 def killpager():
1549 if hasattr(signal, "SIGINT"): 1550 if hasattr(signal, "SIGINT"):
1550 signal.signal(signal.SIGINT, signal.SIG_IGN) 1551 signal.signal(signal.SIGINT, signal.SIG_IGN)
1551 # restore original fds, closing pager.stdin copies in the process 1552 # restore original fds, closing pager.stdin copies in the process
1553 if pycompat.sysplatform == b'OpenVMS':
1554 pager.kill()
1552 os.dup2(stdoutfd, procutil.stdout.fileno()) 1555 os.dup2(stdoutfd, procutil.stdout.fileno())
1553 os.dup2(stderrfd, procutil.stderr.fileno()) 1556 os.dup2(stderrfd, procutil.stderr.fileno())
1554 pager.stdin.close() 1557 pager.stdin.close()
1555 pager.wait() 1558 pager.wait()
1556 1559