#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.
This commit is contained in:
parent
9aa1331c6f
commit
e7f5e147cd
|
@ -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:
|
||||||
pipe.write(text)
|
try:
|
||||||
|
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:
|
||||||
|
|
Loading…
Reference in New Issue