bb_got_signal = 0;
nfd = 2;
- while (!bb_got_signal && safe_poll(pfd, nfd, timeout) > 0) {
- if (nfd > 1 && pfd[1].revents) {
+ // Not safe_poll: we want to exit on signal
+ while (!bb_got_signal && poll(pfd, nfd, timeout) > 0) {
+ if (nfd > 1 && (pfd[1].revents & POLLIN)) {
char c;
// read from stdin -> write to device
if (safe_read(STDIN_FILENO, &c, 1) < 1) {
safe_poll(pfd, 1, delay);
skip_write: ;
}
- if (pfd[0].revents) {
+ if (pfd[0].revents & POLLIN) {
#define iobuf bb_common_bufsiz1
ssize_t len;
// read from device -> write to stdout
break;
}
- if (pfd[TO_CGI].revents) {
+ if (pfd[TO_CGI].revents & POLLOUT) {
/* hdr_cnt > 0 here due to the way pfd[TO_CGI].events set */
/* Have data from peer and can write to CGI */
count = safe_write(toCgi_wr, hdr_ptr, hdr_cnt);
}
}
- if (pfd[0].revents) {
+ if (pfd[0].revents & POLLIN) {
/* post_len > 0 && hdr_cnt == 0 here */
/* We expect data, prev data portion is eaten by CGI
* and there *is* data to read from the peer
}
}
- if (pfd[FROM_CGI].revents) {
+ if (pfd[FROM_CGI].revents & POLLIN) {
/* There is something to read from CGI */
char *rbuf = iobuf;
default:
#ifdef USE_POLL
- if (ufds[0].revents) /* well, should check POLLIN, but ... */
+ if (ufds[0].revents & POLLIN)
#else
if (FD_ISSET(STDIN_FILENO, &rfds))
#endif
{
- len = read(STDIN_FILENO, G.buf, DATABUFSIZE);
+ len = safe_read(STDIN_FILENO, G.buf, DATABUFSIZE);
if (len <= 0)
doexit(EXIT_SUCCESS);
TRACE(0, ("Read con: %d\n", len));
}
#ifdef USE_POLL
- if (ufds[1].revents) /* well, should check POLLIN, but ... */
+ if (ufds[1].revents & POLLIN)
#else
if (FD_ISSET(netfd, &rfds))
#endif
{
- len = read(netfd, G.buf, DATABUFSIZE);
+ len = safe_read(netfd, G.buf, DATABUFSIZE);
if (len <= 0) {
write_str(1, "Connection closed by foreign host\r\n");
doexit(EXIT_FAILURE);
if (r < 0)
break;
if (r) {
- r = read(s, &arp, sizeof(arp));
+ r = safe_read(s, &arp, sizeof(arp));
if (r < 0)
break;
* for example, try "script -c true" */
break;
}
- if (pfd[0].revents) {
+ if (pfd[0].revents & POLLIN) {
errno = 0;
count = safe_read(pty, buf, sizeof(buf));
if (count <= 0 && errno != EAGAIN) {
}
}
}
- if (pfd[1].revents) {
+ if (pfd[1].revents & POLLIN) {
count = safe_read(STDIN_FILENO, buf, sizeof(buf));
if (count <= 0) {
/* err/eof from stdin: don't read stdin anymore */