summaryrefslogtreecommitdiffstats
path: root/usr.sbin/pppctl/pppctl.c
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>1997-12-27 13:44:42 +0000
committerbrian <brian@FreeBSD.org>1997-12-27 13:44:42 +0000
commitd03808004927d9310c50fb5885b4908a0d39c340 (patch)
tree33ec99f0df5b4c99d728f96a8e35a1a4732b18be /usr.sbin/pppctl/pppctl.c
parent7629c0321e705cb78c28a7c4ad020f2c2451c5d6 (diff)
downloadFreeBSD-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.c20
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;
OpenPOWER on IntegriCloud