From 158f3c735ea382cab42182cfb7f6349faa5d97bd Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Sat, 18 Mar 2023 18:40:26 -0500 Subject: [PATCH] Cleanup: use FLAG() macros. --- toys/pending/tcpsvd.c | 60 ++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/toys/pending/tcpsvd.c b/toys/pending/tcpsvd.c index e5bd76b5..c1cbfdcb 100644 --- a/toys/pending/tcpsvd.c +++ b/toys/pending/tcpsvd.c @@ -101,7 +101,7 @@ static void insert(struct list_pid **l, int pid, char *addr) } // 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 @@ static void handle_exit(int sig) { 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 @@ static int create_bind_sock(char *host, struct sockaddr *haddr) 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 @@ static int create_bind_sock(char *host, struct sockaddr *haddr) 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 int create_bind_sock(char *host, struct sockaddr *haddr) 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 @@ void tcpsvd_main(void) 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 @@ void tcpsvd_main(void) 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 @@ void tcpsvd_main(void) 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 @@ void tcpsvd_main(void) 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 @@ void tcpsvd_main(void) 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); } -- 2.39.2