udhcp,ipcalc: simple code shrink (Nico Erfurth <masta AT perlgolf.de>)
[oweals/busybox.git] / networking / nc.c
index e7bd519e06106d0b08d82668972da820b0a6444b..7d4a6e047f129afbb419de6a1e2dd409f8fd5cc3 100644 (file)
  * when compared to "standard" nc
  */
 
-static void timeout(int signum)
+static void timeout(int signum ATTRIBUTE_UNUSED)
 {
        bb_error_msg_and_die("timed out");
 }
 
-int nc_main(int argc, char **argv);
+int nc_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
 int nc_main(int argc, char **argv)
 {
        /* sfd sits _here_ only because of "repeat" option (-l -l). */
@@ -44,14 +44,17 @@ int nc_main(int argc, char **argv)
                while ((opt = getopt(argc, argv,
                        "" USE_NC_SERVER("lp:") USE_NC_EXTRA("w:i:f:e:") )) > 0
                ) {
-                       if (ENABLE_NC_SERVER && opt=='l')      USE_NC_SERVER(do_listen++);
-                       else if (ENABLE_NC_SERVER && opt=='p') {
+                       if (ENABLE_NC_SERVER && opt=='l')
+                               USE_NC_SERVER(do_listen++);
+                       else if (ENABLE_NC_SERVER && opt=='p')
                                USE_NC_SERVER(lport = bb_lookup_port(optarg, "tcp", 0));
-                       }
-                       else if (ENABLE_NC_EXTRA && opt=='w') USE_NC_EXTRA( wsecs = xatou(optarg));
-                       else if (ENABLE_NC_EXTRA && opt=='i') USE_NC_EXTRA( delay = xatou(optarg));
-                       else if (ENABLE_NC_EXTRA && opt=='f') USE_NC_EXTRA( cfd = xopen(optarg, O_RDWR));
-                       else if (ENABLE_NC_EXTRA && opt=='e' && optind<=argc) {
+                       else if (ENABLE_NC_EXTRA && opt=='w')
+                               USE_NC_EXTRA( wsecs = xatou(optarg));
+                       else if (ENABLE_NC_EXTRA && opt=='i')
+                               USE_NC_EXTRA( delay = xatou(optarg));
+                       else if (ENABLE_NC_EXTRA && opt=='f')
+                               USE_NC_EXTRA( cfd = xopen(optarg, O_RDWR));
+                       else if (ENABLE_NC_EXTRA && opt=='e' && optind <= argc) {
                                /* We cannot just 'break'. We should let getopt finish.
                                ** Or else we won't be able to find where
                                ** 'host' and 'port' params are
@@ -103,17 +106,17 @@ int nc_main(int argc, char **argv)
                        if (lport)
                                set_nport(lsa, htons(lport));
                        setsockopt_reuseaddr(sfd);
-                       xbind(sfd, &lsa->sa, lsa->len);
+                       xbind(sfd, &lsa->u.sa, lsa->len);
                        xlisten(sfd, do_listen); /* can be > 1 */
                        /* If we didn't specify a port number,
                         * query and print it after listen() */
                        if (!lport) {
                                socklen_t addrlen = lsa->len;
-                               getsockname(sfd, &lsa->sa, &addrlen);
-                               lport = get_nport(&lsa->sa);
+                               getsockname(sfd, &lsa->u.sa, &addrlen);
+                               lport = get_nport(&lsa->u.sa);
                                fdprintf(2, "%d\n", ntohs(lport));
                        }
-                       fcntl(sfd, F_SETFD, FD_CLOEXEC);
+                       close_on_exec_on(sfd);
  accept_again:
                        cfd = accept(sfd, NULL, 0);
                        if (cfd < 0)