version 1.55.4.1, 2000/10/18 00:39:47 |
version 1.55.4.2, 2000/10/18 02:04:49 |
|
|
int fromlen; |
int fromlen; |
double sec, last, d_last; |
double sec, last, d_last; |
struct timeval timeout; |
struct timeval timeout; |
fd_set fdmask; |
fd_set *fdmaskp; |
|
size_t nfdmask; |
|
|
(void)gettimeofday(&clear_cache,0); |
(void)gettimeofday(&clear_cache,0); |
if (maxwait != 0) { |
if (maxwait != 0) { |
|
|
d_last = 365*24*60*60; |
d_last = 365*24*60*60; |
} |
} |
|
|
FD_ZERO(&fdmask); |
nfdmask = howmany(s + 1, NFDBITS); |
|
if ((fdmaskp = malloc(nfdmask)) == NULL) |
|
err(1, "malloc"); |
|
memset(fdmaskp, 0, nfdmask); |
do { |
do { |
(void)gettimeofday(&now,0); |
(void)gettimeofday(&now,0); |
|
|
|
|
|
|
sec_to_timeval(sec, &timeout); |
sec_to_timeval(sec, &timeout); |
|
|
FD_SET(s, &fdmask); |
FD_SET(s, fdmaskp); |
cc = select(s+1, &fdmask, 0, 0, &timeout); |
cc = select(s+1, fdmaskp, 0, 0, &timeout); |
if (cc <= 0) { |
if (cc <= 0) { |
if (cc < 0) { |
if (cc < 0) { |
if (errno == EINTR) |
if (errno == EINTR) |
|
|
|
|
} while (nreceived < npackets |
} while (nreceived < npackets |
&& (nreceived == 0 || !(pingflags & F_ONCE))); |
&& (nreceived == 0 || !(pingflags & F_ONCE))); |
|
free(fdmaskp); |
|
|
finish(0); |
finish(0); |
} |
} |