=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/top/display.c,v retrieving revision 1.16 retrieving revision 1.17 diff -c -r1.16 -r1.17 *** src/usr.bin/top/display.c 2003/06/19 22:40:45 1.16 --- src/usr.bin/top/display.c 2003/11/01 20:20:57 1.17 *************** *** 1,4 **** ! /* $OpenBSD: display.c,v 1.16 2003/06/19 22:40:45 millert Exp $ */ /* * Top users/processes display for Unix --- 1,4 ---- ! /* $OpenBSD: display.c,v 1.17 2003/11/01 20:20:57 deraadt Exp $ */ /* * Top users/processes display for Unix *************** *** 50,55 **** --- 50,56 ---- #include #include #include + #include #include #include #include *************** *** 756,767 **** readline(char *buffer, int size, int numeric) { char *ptr = buffer, ch, cnt = 0, maxcnt = 0; /* allow room for null terminator */ size -= 1; /* read loop */ ! while ((fflush(stdout), read(0, ptr, 1) > 0)) { /* newline means we are done */ if ((ch = *ptr) == '\n') break; --- 757,776 ---- readline(char *buffer, int size, int numeric) { char *ptr = buffer, ch, cnt = 0, maxcnt = 0; + extern volatile sig_atomic_t leaveflag; + ssize_t len; /* allow room for null terminator */ size -= 1; /* read loop */ ! while ((fflush(stdout), (len = read(0, ptr, 1)) > 0)) { ! ! if (len == 0 || leaveflag) { ! end_screen(); ! exit(0); ! } ! /* newline means we are done */ if ((ch = *ptr) == '\n') break;