version 1.62, 2006/03/19 18:59:49 |
version 1.63, 2006/03/25 00:05:41 |
|
|
|
|
extern char *__progname; |
extern char *__progname; |
fd_set *read_wait; |
fd_set *read_wait; |
size_t read_wait_size; |
size_t read_wait_nfdset; |
int ncon; |
int ncon; |
int nonfatal_fatal = 0; |
int nonfatal_fatal = 0; |
jmp_buf kexjmp; |
jmp_buf kexjmp; |
|
|
} else |
} else |
seltime.tv_sec = seltime.tv_usec = 0; |
seltime.tv_sec = seltime.tv_usec = 0; |
|
|
r = xmalloc(read_wait_size); |
r = xcalloc(read_wait_nfdset, sizeof(fd_mask)); |
memcpy(r, read_wait, read_wait_size); |
e = xcalloc(read_wait_nfdset, sizeof(fd_mask)); |
e = xmalloc(read_wait_size); |
memcpy(r, read_wait, read_wait_nfdset * sizeof(fd_mask)); |
memcpy(e, read_wait, read_wait_size); |
memcpy(e, read_wait, read_wait_nfdset * sizeof(fd_mask)); |
|
|
while (select(maxfd, r, NULL, e, &seltime) == -1 && |
while (select(maxfd, r, NULL, e, &seltime) == -1 && |
(errno == EAGAIN || errno == EINTR)) |
(errno == EAGAIN || errno == EINTR)) |
|
|
fatal("%s: not enough file descriptors", __progname); |
fatal("%s: not enough file descriptors", __progname); |
if (maxfd > fdlim_get(0)) |
if (maxfd > fdlim_get(0)) |
fdlim_set(maxfd); |
fdlim_set(maxfd); |
fdcon = xmalloc(maxfd * sizeof(con)); |
fdcon = xcalloc(maxfd, sizeof(con)); |
memset(fdcon, 0, maxfd * sizeof(con)); |
|
|
|
read_wait_size = howmany(maxfd, NFDBITS) * sizeof(fd_mask); |
read_wait_nfdset = howmany(maxfd, NFDBITS); |
read_wait = xmalloc(read_wait_size); |
read_wait = xcalloc(read_wait_nfdset, sizeof(fd_mask)); |
memset(read_wait, 0, read_wait_size); |
|
|
|
if (fopt_count) { |
if (fopt_count) { |
Linebuf *lb; |
Linebuf *lb; |