diff options
author | brian <brian@FreeBSD.org> | 1997-12-27 13:44:42 +0000 |
---|---|---|
committer | brian <brian@FreeBSD.org> | 1997-12-27 13:44:42 +0000 |
commit | d03808004927d9310c50fb5885b4908a0d39c340 (patch) | |
tree | 33ec99f0df5b4c99d728f96a8e35a1a4732b18be /usr.sbin/pppctl/pppctl.c | |
parent | 7629c0321e705cb78c28a7c4ad020f2c2451c5d6 (diff) | |
download | FreeBSD-src-d03808004927d9310c50fb5885b4908a0d39c340.zip FreeBSD-src-d03808004927d9310c50fb5885b4908a0d39c340.tar.gz |
Remove bogus timeout code in Receive().
Don't read(fd, buffer, 0) and think ppp has closed the
connection when `buffer' is full, instead, flush most of
buffer to the terminal and read() for a reasonable length.
This fixes "show route" when there's more than 2k of
routing output.
Diffstat (limited to 'usr.sbin/pppctl/pppctl.c')
-rw-r--r-- | usr.sbin/pppctl/pppctl.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/usr.sbin/pppctl/pppctl.c b/usr.sbin/pppctl/pppctl.c index 32647ba..92be115 100644 --- a/usr.sbin/pppctl/pppctl.c +++ b/usr.sbin/pppctl/pppctl.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id$ + * $Id: pppctl.c,v 1.14 1997/12/21 12:11:13 brian Exp $ */ #include <sys/types.h> @@ -99,12 +99,7 @@ Receive(int fd, int display) } len += Result; Buffer[len] = '\0'; - if (TimedOut) { - if (display & REC_VERBOSE) - write(1,Buffer,len); - Result = -1; - break; - } else if (len > 2 && !strcmp(Buffer+len-2, "> ")) { + if (len > 2 && !strcmp(Buffer+len-2, "> ")) { prompt = strrchr(Buffer, '\n'); if (display & (REC_SHOW|REC_VERBOSE)) { if (display & REC_VERBOSE) @@ -138,6 +133,17 @@ Receive(int fd, int display) Result = 0; break; } + if (len == sizeof Buffer - 1) { + int flush; + if ((last = strrchr(Buffer, '\n')) == NULL) + /* Yeuch - this is one mother of a line ! */ + flush = sizeof Buffer / 2; + else + flush = last - Buffer + 1; + write(1, Buffer, flush); + strcpy(Buffer, Buffer + flush); + len -= flush; + } } return Result; |