#define __UCLIBC_HIDE_DEPRECATED__
#include <features.h>
#include <sys/param.h>
-#include <sys/poll.h>
+#include <poll.h>
#include <sys/socket.h>
#include <sys/stat.h>
+#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#endif
#include <sys/uio.h>
+#ifndef _PATH_HEQUIV
+#define _PATH_HEQUIV "/etc/hosts.equiv"
+#endif
+
+int rresvport(int *alport);
/* some forward declarations */
static int __ivaliduser2(FILE *hostf, u_int32_t raddr,
struct hostent *hp;
struct sockaddr_in sin, from;
struct pollfd pfd[2];
- int32_t oldmask;
+ sigset_t sig, osig;
pid_t pid;
int s, lport, timo;
char c;
pfd[1].events = POLLIN;
*ahost = hp->h_name;
- oldmask = sigblock(sigmask(SIGURG)); /* __sigblock */
+ sigemptyset(&sig);
+ sigaddset(&sig, SIGURG);
+ sigprocmask(SIG_BLOCK, &sig, &osig);
for (timo = 1, lport = IPPORT_RESERVED - 1;;) {
s = rresvport(&lport);
if (s < 0) {
"rcmd: socket: All ports in use\n");
else
(void)fprintf(stderr, "rcmd: socket: %m\n");
- sigsetmask(oldmask); /* sigsetmask */
+ sigprocmask(SIG_SETMASK, &osig, NULL);
return -1;
}
fcntl(s, F_SETOWN, pid);
continue;
}
(void)fprintf(stderr, "%s: %m\n", hp->h_name);
- sigsetmask(oldmask); /* __sigsetmask */
+ sigprocmask(SIG_SETMASK, &osig, NULL);
return -1;
}
lport--;
}
goto bad2;
}
- sigsetmask(oldmask);
+ sigprocmask(SIG_SETMASK, &osig, NULL);
return s;
bad2:
if (lport)
(void)close(*fd2p);
bad:
(void)close(s);
- sigsetmask(oldmask);
+ sigprocmask(SIG_SETMASK, &osig, NULL);
return -1;
}