Index: third_party/pexpect/tests/sigwinch_report.py |
diff --git a/third_party/pexpect/tests/sigwinch_report.py b/third_party/pexpect/tests/sigwinch_report.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f10956ab1c9629fda50ebd7832c544bdefb2da8c |
--- /dev/null |
+++ b/third_party/pexpect/tests/sigwinch_report.py |
@@ -0,0 +1,50 @@ |
+''' |
+PEXPECT LICENSE |
+ |
+ This license is approved by the OSI and FSF as GPL-compatible. |
+ http://opensource.org/licenses/isc-license.txt |
+ |
+ Copyright (c) 2012, Noah Spurrier <noah@noah.org> |
+ PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY |
+ PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE |
+ COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. |
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
+ |
+''' |
+from __future__ import print_function |
+ |
+import signal, time, struct, fcntl, termios, sys |
+ |
+def getwinsize(): |
+ '''This returns the window size of the child tty. |
+ The return value is a tuple of (rows, cols). |
+ ''' |
+ if 'TIOCGWINSZ' in dir(termios): |
+ TIOCGWINSZ = termios.TIOCGWINSZ |
+ else: |
+ TIOCGWINSZ = 1074295912 # Assume |
+ s = struct.pack('HHHH', 0, 0, 0, 0) |
+ x = fcntl.ioctl(sys.stdout.fileno(), TIOCGWINSZ, s) |
+ return struct.unpack('HHHH', x)[0:2] |
+ |
+def handler(signum, frame): |
+ print('signal') |
+ sys.stdout.flush() |
+ print('SIGWINCH:', getwinsize ()) |
+ sys.stdout.flush() |
+ |
+print("Initial Size:", getwinsize()) |
+print("setting handler for SIGWINCH") |
+signal.signal(signal.SIGWINCH, handler) |
+print("READY") |
+ |
+while 1: |
+ sys.stdout.flush() |
+ time.sleep(1) |
+ |