about summary refs log tree commit diff
path: root/inet/rcmd.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-06-27 13:29:37 +0000
committerUlrich Drepper <drepper@redhat.com>1998-06-27 13:29:37 +0000
commitcd68221f28ca1eb29b6e6827f437f5691bd21fb2 (patch)
treee588ae7e274e5e086bc21eec5588ac9042a1c96d /inet/rcmd.c
parent19c36e333722962398eb281fd7201ac45f5eb572 (diff)
downloadglibc-cd68221f28ca1eb29b6e6827f437f5691bd21fb2.tar.gz
glibc-cd68221f28ca1eb29b6e6827f437f5691bd21fb2.tar.xz
glibc-cd68221f28ca1eb29b6e6827f437f5691bd21fb2.zip
Update.
1998-06-25    Andi Kleen <ak@muc.de>

	* inet/rcmd.c (rcmd): Change to use __poll instead of select.
	* resolv/res_send.c (res_send): Likewise.
Diffstat (limited to 'inet/rcmd.c')
-rw-r--r--inet/rcmd.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/inet/rcmd.c b/inet/rcmd.c
index d76eff84e9..e54d894f84 100644
--- a/inet/rcmd.c
+++ b/inet/rcmd.c
@@ -36,6 +36,7 @@ static char sccsid[] = "@(#)rcmd.c	8.3 (Berkeley) 3/26/94";
 #endif /* LIBC_SCCS and not lint */
 
 #include <sys/param.h>
+#include <sys/poll.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
 
@@ -68,7 +69,7 @@ rcmd(ahost, rport, locuser, remuser, cmd, fd2p)
 	size_t hstbuflen;
 	char *tmphstbuf;
 	struct sockaddr_in sin, from;
-	fd_set reads;
+	struct pollfd pfd[2];
 	int32_t oldmask;
 	pid_t pid;
 	int s, lport, timo;
@@ -94,6 +95,9 @@ rcmd(ahost, rport, locuser, remuser, cmd, fd2p)
 	      tmphstbuf = __alloca (hstbuflen);
 	    }
 
+	pfd[0].events = POLLIN;
+	pfd[1].events = POLLIN;
+
 	*ahost = hp->h_name;
 	oldmask = sigblock(sigmask(SIGURG));
 	for (timo = 1, lport = IPPORT_RESERVED - 1;;) {
@@ -161,18 +165,16 @@ rcmd(ahost, rport, locuser, remuser, cmd, fd2p)
 			(void)close(s2);
 			goto bad;
 		}
-		FD_ZERO(&reads);
-		FD_SET(s, &reads);
-		FD_SET(s2, &reads);
+		pfd[0].fd = s;
+		pfd[1].fd = s2;
 		__set_errno (0);
-		if (select(1 + (s > s2 ? s : s2), &reads, 0, 0, 0) < 1 ||
-		    !FD_ISSET(s2, &reads)) {
+		if (__poll (pfd, 2, -1) < 1 || (pfd[1].revents & POLLIN) == 0){
 			if (errno != 0)
 				(void)fprintf(stderr,
-				  _("rcmd: select (setting up stderr): %m\n"));
+				  _("rcmd: poll (setting up stderr): %m\n"));
 			else
 				(void)fprintf(stderr,
-			     _("select: protocol failure in circuit setup\n"));
+			     _("poll: protocol failure in circuit setup\n"));
 			(void)close(s2);
 			goto bad;
 		}