Commit e7f5e147 authored by R David Murray's avatar R David Murray

#23792: also catch interrupt around pipe.write.

The previous patch only dealt with KeyboardInterrupt when all of the
data had been consumed by the pager.  This deals with the interrupt
when some data is still pending.
parent 9aa1331c
...@@ -1453,7 +1453,12 @@ def pipepager(text, cmd): ...@@ -1453,7 +1453,12 @@ def pipepager(text, cmd):
proc = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE) proc = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE)
try: try:
with io.TextIOWrapper(proc.stdin, errors='backslashreplace') as pipe: with io.TextIOWrapper(proc.stdin, errors='backslashreplace') as pipe:
try:
pipe.write(text) pipe.write(text)
except KeyboardInterrupt:
# We've hereby abandoned whatever text hasn't been written,
# but the pager is still in control of the terminal.
pass
except OSError: except OSError:
pass # Ignore broken pipes caused by quitting the pager program. pass # Ignore broken pipes caused by quitting the pager program.
while True: while True:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment