diff options
Diffstat (limited to 'gnu/libexec')
| -rw-r--r-- | gnu/libexec/uucp/libunix/serial.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/gnu/libexec/uucp/libunix/serial.c b/gnu/libexec/uucp/libunix/serial.c index 3978c84e2de..7bf299208d1 100644 --- a/gnu/libexec/uucp/libunix/serial.c +++ b/gnu/libexec/uucp/libunix/serial.c @@ -26,7 +26,7 @@ #include "uucp.h" #if USE_RCS_ID -const char serial_rcsid[] = "$Id: serial.c,v 1.5 1998/02/14 07:25:55 mycroft Exp $"; +const char serial_rcsid[] = "$Id: serial.c,v 1.6 2001/05/03 20:43:16 is Exp $"; #endif #include "uudefs.h" @@ -2376,7 +2376,8 @@ fsysdep_conn_read (qconn, zbuf, pclen, cmin, ctimeout, freport) else csleepchars = MAX_INPUT - 10; - isleep = (int) (((long) csleepchars * 10000L) / q->ibaud); + isleep = q->ibaud ? (int) (((long) csleepchars * 10000L) / q->ibaud) + : 1000; isleep -= 10; if (isleep > 10) @@ -2778,9 +2779,14 @@ fsysdep_conn_io (qconn, zwrite, pcwrite, zread, pcread) / baud bits/sec) * 10 bits/byte) */ - stime.tv_sec = (long) 10240 / q->ibaud; - stime.tv_usec = ((((long) 1024000000 / q->ibaud) * (long) 10) - % (long) 1000000); + if (q->ibaud) { + stime.tv_sec = (long) 10240 / q->ibaud; + stime.tv_usec = ((((long) 1024000000 / q->ibaud) * (long) 10) + % (long) 1000000); + } else { + stime.tv_sec = 1; + stime.tv_usec = 0; + } imask = 1 << q->o; if (imask == 0) @@ -2851,7 +2857,7 @@ fsysdep_conn_io (qconn, zwrite, pcwrite, zread, pcread) we don't need to use the catch stuff, since we know that HAVE_RESTARTABLE_SYSCALLS is 0. */ usset_signal (SIGALRM, usalarm, TRUE, (boolean *) NULL); - alarm ((int) ((long) 10240 / q->ibaud) + 1); + alarm ( q->ibaud ? (int) ((long) 10240 / q->ibaud) + 1 : 1); /* There is a race condition here: on a severely loaded system, we could get the alarm before we start the |
