start_stop_daemon: NOMMU fixes, round 2 by Alex Landau <landau_alex@yahoo.com>
[oweals/busybox.git] / networking / nc.c
index dc9102b2a25c3caf8019826f38aaa729711ee355..e7bd519e06106d0b08d82668972da820b0a6444b 100644 (file)
@@ -7,7 +7,11 @@
  *  Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  */
 
-#include "busybox.h"
+#include "libbb.h"
+
+#if ENABLE_DESKTOP
+#include "nc_bloaty.c"
+#else
 
 /* Lots of small differences in features
  * when compared to "standard" nc
@@ -18,6 +22,7 @@ static void timeout(int signum)
        bb_error_msg_and_die("timed out");
 }
 
+int nc_main(int argc, char **argv);
 int nc_main(int argc, char **argv)
 {
        /* sfd sits _here_ only because of "repeat" option (-l -l). */
@@ -105,7 +110,7 @@ int nc_main(int argc, char **argv)
                        if (!lport) {
                                socklen_t addrlen = lsa->len;
                                getsockname(sfd, &lsa->sa, &addrlen);
-                               lport = get_nport(lsa);
+                               lport = get_nport(&lsa->sa);
                                fdprintf(2, "%d\n", ntohs(lport));
                        }
                        fcntl(sfd, F_SETFD, FD_CLOEXEC);
@@ -148,7 +153,7 @@ int nc_main(int argc, char **argv)
                }
                dup2(0, 1);
                dup2(0, 2);
-               USE_NC_EXTRA(execvp(execparam[0], execparam);)
+               USE_NC_EXTRA(BB_EXECVP(execparam[0], execparam);)
                /* Don't print stuff or it will go over the wire.... */
                _exit(127);
        }
@@ -169,11 +174,10 @@ int nc_main(int argc, char **argv)
                if (select(FD_SETSIZE, &testfds, NULL, NULL, NULL) < 0)
                        bb_perror_msg_and_die("select");
 
+#define iobuf bb_common_bufsiz1
                for (fd = 0; fd < FD_SETSIZE; fd++) {
                        if (FD_ISSET(fd, &testfds)) {
-                               nread = safe_read(fd, bb_common_bufsiz1,
-                                                       sizeof(bb_common_bufsiz1));
-
+                               nread = safe_read(fd, iobuf, sizeof(iobuf));
                                if (fd == cfd) {
                                        if (nread < 1)
                                                exit(0);
@@ -187,10 +191,10 @@ int nc_main(int argc, char **argv)
                                        }
                                        ofd = cfd;
                                }
-
-                               xwrite(ofd, bb_common_bufsiz1, nread);
+                               xwrite(ofd, iobuf, nread);
                                if (delay > 0) sleep(delay);
                        }
                }
        }
 }
+#endif