summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--miscutils/microcom.c7
-rw-r--r--networking/httpd.c6
-rw-r--r--networking/telnet.c8
-rw-r--r--networking/udhcp/arpping.c2
-rw-r--r--util-linux/script.c4
5 files changed, 14 insertions, 13 deletions
diff --git a/miscutils/microcom.c b/miscutils/microcom.c
index fe6661f..9a7a41d 100644
--- a/miscutils/microcom.c
+++ b/miscutils/microcom.c
@@ -117,8 +117,9 @@ int microcom_main(int argc UNUSED_PARAM, char **argv)
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) {
@@ -142,7 +143,7 @@ int microcom_main(int argc UNUSED_PARAM, char **argv)
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
diff --git a/networking/httpd.c b/networking/httpd.c
index 0a8322c..227803a 100644
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -1167,7 +1167,7 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post
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);
@@ -1184,7 +1184,7 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post
}
}
- 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
@@ -1202,7 +1202,7 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post
}
}
- if (pfd[FROM_CGI].revents) {
+ if (pfd[FROM_CGI].revents & POLLIN) {
/* There is something to read from CGI */
char *rbuf = iobuf;
diff --git a/networking/telnet.c b/networking/telnet.c
index 77e1747..013d959 100644
--- a/networking/telnet.c
+++ b/networking/telnet.c
@@ -618,12 +618,12 @@ int telnet_main(int argc UNUSED_PARAM, char **argv)
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));
@@ -631,12 +631,12 @@ int telnet_main(int argc UNUSED_PARAM, char **argv)
}
#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);
diff --git a/networking/udhcp/arpping.c b/networking/udhcp/arpping.c
index 3df0f39..4af8534 100644
--- a/networking/udhcp/arpping.c
+++ b/networking/udhcp/arpping.c
@@ -95,7 +95,7 @@ int FAST_FUNC arpping(uint32_t test_nip,
if (r < 0)
break;
if (r) {
- r = read(s, &arp, sizeof(arp));
+ r = safe_read(s, &arp, sizeof(arp));
if (r < 0)
break;
diff --git a/util-linux/script.c b/util-linux/script.c
index d9a62fb..37213ee 100644
--- a/util-linux/script.c
+++ b/util-linux/script.c
@@ -119,7 +119,7 @@ int script_main(int argc UNUSED_PARAM, char **argv)
* 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) {
@@ -143,7 +143,7 @@ int script_main(int argc UNUSED_PARAM, char **argv)
}
}
}
- 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 */