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);
       }