summaryrefslogtreecommitdiff
path: root/usr.bin/top
diff options
context:
space:
mode:
authorPhilip Guenther <guenther@cvs.openbsd.org>2014-01-14 02:44:58 +0000
committerPhilip Guenther <guenther@cvs.openbsd.org>2014-01-14 02:44:58 +0000
commit4cd4acb8dea5f413b117b44314459def1f578412 (patch)
treea945ec923700986e3ac595268b815c233547872b /usr.bin/top
parent4287a5ed4f2bfe2e42b97548adca04173e1ad5d3 (diff)
getnstr() returns KEY_RESIZE if there was a pending resize event, so loop
until it stops returning that, resetting the cursor position each time. hint from Gregor Best (gbe (at) ring0.de) problem noted by and ok sthen@
Diffstat (limited to 'usr.bin/top')
-rw-r--r--usr.bin/top/display.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/usr.bin/top/display.c b/usr.bin/top/display.c
index d91dc266077..05e62ed55c3 100644
--- a/usr.bin/top/display.c
+++ b/usr.bin/top/display.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: display.c,v 1.46 2013/11/28 18:24:55 deraadt Exp $ */
+/* $OpenBSD: display.c,v 1.47 2014/01/14 02:44:57 guenther Exp $ */
/*
* Top users/processes display for Unix
@@ -641,9 +641,12 @@ readline(char *buffer, int size)
/* allow room for null terminator */
size -= 1;
- if (smart_terminal)
- getnstr(buffer, size);
- else
+ if (smart_terminal) {
+ int y, x;
+ getyx(stdscr, y, x);
+ while (getnstr(buffer, size) == KEY_RESIZE)
+ move(y, x);
+ } else
return readlinedumb(buffer, size);
cnt = strlen(buffer);