Apply this with ``patch < ssfe.diff'' before compiling ssfe. patch by Thomas Morgan *** ssfe.c.orig Tue Jun 17 10:35:57 1997 --- ssfe.c Mon Sep 1 19:28:31 1997 *************** *** 1053,1058 **** --- 1053,1059 ---- char *vr; int pfds0[2], pfds1[2], pfds2[2]; + struct timeval timeout; myname=(*argv); prompt=nullstring; *************** *** 1276,1286 **** FD_SET(readfd, &ready); FD_SET(errfd, &ready); while(1) { result=ready; ! if (select(64, &result, NULL, NULL, NULL)<=0) if (errno==EINTR) continue; else cleanupexit(1, "select error"); if (FD_ISSET(readfd, &result)) if ((rc=read(readfd, readbuf, BUF_SIZE))>0) --- 1277,1301 ---- FD_SET(readfd, &ready); FD_SET(errfd, &ready); + timeout.tv_sec=0; + timeout.tv_usec=500000; + while(1) { + int r; result=ready; ! r=select(64, &result, NULL, NULL, (cursorwhere==1) ? NULL : &timeout); ! if (r<0) { if (errno==EINTR) continue; else cleanupexit(1, "select error"); + } else if (r==0) { + if (cursorwhere!=1) { + normal(); + fullscroll(); + gotoxy(inputcursor, yinput); + cursorwhere=1; + } + continue; + } if (FD_ISSET(readfd, &result)) if ((rc=read(readfd, readbuf, BUF_SIZE))>0)