openvms: fix the pager spawning and cleanup
authorJean-Francois Pieronne <jf.pieronne@laposte.net>
Thu, 03 Aug 2023 02:33:22 +0200
changeset 50998 ce9cb12ca8c9
parent 50997 def6f1a4604b
child 50999 d0b8bbf603d7
openvms: fix the pager spawning and cleanup Unsurprisingly, pager handling needs some adjustment.
mercurial/ui.py
--- a/mercurial/ui.py	Thu Aug 03 02:32:28 2023 +0200
+++ b/mercurial/ui.py	Thu Aug 03 02:33:22 2023 +0200
@@ -1537,8 +1537,9 @@
             raise
 
         # back up original file descriptors
-        stdoutfd = os.dup(procutil.stdout.fileno())
-        stderrfd = os.dup(procutil.stderr.fileno())
+        if pycompat.sysplatform != b'OpenVMS':
+            stdoutfd = os.dup(procutil.stdout.fileno())
+            stderrfd = os.dup(procutil.stderr.fileno())
 
         os.dup2(pager.stdin.fileno(), procutil.stdout.fileno())
         if self._isatty(procutil.stderr):
@@ -1549,6 +1550,8 @@
             if hasattr(signal, "SIGINT"):
                 signal.signal(signal.SIGINT, signal.SIG_IGN)
             # restore original fds, closing pager.stdin copies in the process
+            if pycompat.sysplatform == b'OpenVMS':
+                pager.kill()
             os.dup2(stdoutfd, procutil.stdout.fileno())
             os.dup2(stderrfd, procutil.stderr.fileno())
             pager.stdin.close()