diff options
author | Isaac Huang <[email protected]> | 2014-10-28 21:35:10 -0600 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2014-11-14 15:32:30 -0800 |
commit | a82db4e15fcd882898595a40bba0d3b08548cd95 (patch) | |
tree | 52724f1bb30cdf5b43bb0340158abddde6b4a391 /cmd | |
parent | 1c49ac575d26a072b53c93fcdf6bd0655343ef22 (diff) |
Print header properly when terminal resizes
Added a handler for SIGWINCH, so that one header
is printed per screen even when the terminal resizes.
Signed-off-by: Isaac Huang <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #2847
Diffstat (limited to 'cmd')
-rwxr-xr-x | cmd/arcstat/arcstat.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/cmd/arcstat/arcstat.py b/cmd/arcstat/arcstat.py index a5e0653b3..b516cf285 100755 --- a/cmd/arcstat/arcstat.py +++ b/cmd/arcstat/arcstat.py @@ -51,7 +51,7 @@ import re import copy from decimal import Decimal -from signal import signal, SIGINT, SIG_DFL +from signal import signal, SIGINT, SIGWINCH, SIG_DFL cols = { # HDR: [Size, Scale, Description] @@ -239,11 +239,21 @@ def get_terminal_lines(): except: pass +def update_hdr_intr(): + global hdr_intr + + lines = get_terminal_lines() + if lines and lines > 3: + hdr_intr = lines - 3 + +def resize_handler(signum, frame): + update_hdr_intr() + + def init(): global sint global count global hdr - global hdr_intr global xhdr global opfile global sep @@ -313,9 +323,7 @@ def init(): if xflag: hdr = xhdr - lines = get_terminal_lines() - if lines: - hdr_intr = lines - 3 + update_hdr_intr() # check if L2ARC exists snap_stats() @@ -426,6 +434,7 @@ def main(): count_flag = 1 signal(SIGINT, SIG_DFL) + signal(SIGWINCH, resize_handler) while True: if i == 0: print_header() @@ -439,7 +448,7 @@ def main(): break count -= 1 - i = 0 if i == hdr_intr else i + 1 + i = 0 if i >= hdr_intr else i + 1 time.sleep(sint) if out: |