Cleanup: use FLAG() macros.
diff --git a/toys/pending/tcpsvd.c b/toys/pending/tcpsvd.c
index e5bd76b..c1cbfdc 100644
--- a/toys/pending/tcpsvd.c
+++ b/toys/pending/tcpsvd.c
@@ -101,7 +101,7 @@
}
// Hashing of IP address.
-static int haship( char *addr)
+static int haship(char *addr)
{
uint32_t ip[8] = {0,};
int count = 0, i = 0;
@@ -171,18 +171,17 @@
{
int status;
pid_t pid_n = wait(&status);
+ char *ip = (pid_n<1) ? 0 : delete(&pids, pid_n);
- if (pid_n <= 0) return;
- char *ip = delete(&pids, pid_n);
if (!ip) return;
remove_connection(ip);
TT.count_all--;
- if (toys.optflags & FLAG_v) {
+ if (FLAG(v)) {
if (WIFEXITED(status))
xprintf("%s: end %d exit %d\n",toys.which->name, pid_n, WEXITSTATUS(status));
else if (WIFSIGNALED(status))
xprintf("%s: end %d signaled %d\n",toys.which->name, pid_n, WTERMSIG(status));
- if (TT.cn > 1) xprintf("%s: status %d/%d\n",toys.which->name, TT.count_all, TT.cn);
+ if (TT.cn > 1) xprintf("%s: status %d/%ld\n",toys.which->name, TT.count_all, TT.cn);
}
}
@@ -236,7 +235,7 @@
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC;
- hints.ai_socktype = ((TT.udp) ?SOCK_DGRAM : SOCK_STREAM);
+ hints.ai_socktype = (TT.udp ? SOCK_DGRAM : SOCK_STREAM);
if ((ret = getaddrinfo(host, ptr, &hints, &res)))
perror_exit("%s", gai_strerror(ret));
@@ -245,7 +244,7 @@
if (!rp) error_exit("Invalid IP %s", host);
- sockfd = xsocket(rp->ai_family, TT.udp ?SOCK_DGRAM :SOCK_STREAM, 0);
+ sockfd = xsocket(rp->ai_family, TT.udp ? SOCK_DGRAM : SOCK_STREAM, 0);
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &set, sizeof(set));
if (TT.udp) setsockopt(sockfd, IPPROTO_IP, IP_PKTINFO, &set, sizeof(set));
xbind(sockfd, rp->ai_addr, rp->ai_addrlen);
@@ -256,7 +255,7 @@
static void handle_signal(int sig)
{
- if (toys.optflags & FLAG_v) xprintf("got signal %d, exit\n", sig);
+ if (FLAG(v)) xprintf("got signal %d, exit\n", sig);
raise(sig);
_exit(sig + 128); //should not reach here
}
@@ -272,19 +271,16 @@
char *ptr = NULL, *addr, *server, buf[sizeof(struct sockaddr_in6)];
socklen_t len = sizeof(buf);
- TT.udp = (*toys.which->name == 'u');
+ TT.udp = *toys.which->name == 'u';
if (TT.udp) toys.optflags &= ~FLAG_C;
memset(buf, 0, len);
- if (toys.optflags & FLAG_C) {
- if ((ptr = strchr(TT.nmsg, ':'))) {
- *ptr = '\0';
- ptr++;
- }
+ if (FLAG(C)) {
+ if ((ptr = strchr(TT.nmsg, ':'))) *ptr++ = 0;
TT.maxc = atolx_range(TT.nmsg, 1, INT_MAX);
}
fd = create_bind_sock(toys.optargs[0], (struct sockaddr*)&haddr);
- if(toys.optflags & FLAG_u) {
+ if (FLAG(u)) {
get_uidgid(&uid, &gid, TT.user);
setuid(uid);
setgid(gid);
@@ -292,21 +288,21 @@
if (!TT.udp && (listen(fd, TT.bn) < 0)) perror_exit("Listen failed");
server = sock_to_address((struct sockaddr*)&haddr, NI_NUMERICHOST|NI_NUMERICSERV);
- if (toys.optflags & FLAG_v) {
- if (toys.optflags & FLAG_u)
- xprintf("%s: listening on %s, starting, uid %u, gid %u\n"
- ,toys.which->name, server, uid, gid);
+ if (FLAG(v)) {
+ if (FLAG(u))
+ xprintf("%s: listening on %s, starting, uid %u, gid %u\n",
+ toys.which->name, server, uid, gid);
else
xprintf("%s: listening on %s, starting\n", toys.which->name, server);
}
- for (j = 0; j < HASH_NR; j++) h[j].head = NULL;
+ for (j = 0; j < HASH_NR; j++) h[j].head = 0;
sigatexit(handle_signal);
signal(SIGCHLD, handle_exit);
while (1) {
- if (TT.count_all < TT.cn) {
+ if (TT.count_all < TT.cn) {
if (TT.udp) {
- if(recvfrom(fd, NULL, 0, MSG_PEEK, (struct sockaddr *)buf, &len) < 0)
+ if (recvfrom(fd, 0, 0, MSG_PEEK, (void *)buf, &len) < 0)
perror_exit("recvfrom");
newfd = fd;
} else {
@@ -323,7 +319,7 @@
addr = sock_to_address((struct sockaddr*)buf, NI_NUMERICHOST);
hash = haship(addr);
- if (toys.optflags & FLAG_C) {
+ if (FLAG(C)) {
for (head = h[hash].head; head; head = head->next)
if (!strcmp(head->d, addr)) break;
@@ -354,17 +350,17 @@
if (!(pid = xfork())) {
char *serv = NULL, *clie = NULL;
char *client = sock_to_address((struct sockaddr*)buf, NI_NUMERICHOST | NI_NUMERICSERV);
- if (toys.optflags & FLAG_h) { //lookup name
- if (toys.optflags & FLAG_l) serv = xstrdup(TT.name);
+ if (FLAG(h)) { //lookup name
+ if (FLAG(l)) serv = xstrdup(TT.name);
else serv = sock_to_address((struct sockaddr*)&haddr, 0);
clie = sock_to_address((struct sockaddr*)buf, 0);
}
- if (!(toys.optflags & FLAG_E)) {
- setenv("PROTO", TT.udp ?"UDP" :"TCP", 1);
+ if (!FLAG(E)) {
+ setenv("PROTO", TT.udp ? "UDP" :"TCP", 1);
setenv("PROTOLOCALADDR", server, 1);
setenv("PROTOREMOTEADDR", client, 1);
- if (toys.optflags & FLAG_h) {
+ if (FLAG(h)) {
setenv("PROTOLOCALHOST", serv, 1);
setenv("PROTOREMOTEHOST", clie, 1);
}
@@ -374,15 +370,15 @@
setenv("TCPCONCURRENCY", max_c, 1); //Not valid for udp
}
}
- if (toys.optflags & FLAG_v) {
+ if (FLAG(v)) {
xprintf("%s: start %d %s-%s",toys.which->name, getpid(), server, client);
- if (toys.optflags & FLAG_h) xprintf(" (%s-%s)", serv, clie);
+ if (FLAG(h)) xprintf(" (%s-%s)", serv, clie);
xputc('\n');
if (TT.cn > 1)
- xprintf("%s: status %d/%d\n",toys.which->name, TT.count_all, TT.cn);
+ xprintf("%s: status %d/%ld\n",toys.which->name, TT.count_all, TT.cn);
}
free(client);
- if (toys.optflags & FLAG_h) {
+ if (FLAG(h)) {
free(serv);
free(clie);
}