From: guenther Date: Tue, 14 Jan 2014 02:44:57 +0000 (+0000) Subject: getnstr() returns KEY_RESIZE if there was a pending resize event, so loop X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=6def4870fc000b3f92457ea7b2ce64a839cfae17;p=openbsd 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@ --- 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);