/* vi: set sw=4 ts=4: */
-/* nc: mini-netcat - built from the ground up for LRP
+/* nc: mini-netcat - built from the ground up for LRP
*
- * Copyright (C) 1998, 1999 Charles P. Wright
- * Copyright (C) 1998 Dave Cinege
+ * Copyright (C) 1998, 1999 Charles P. Wright
+ * Copyright (C) 1998 Dave Cinege
*
- * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
#include "libbb.h"
//config: Allow netcat to act as a server.
//config:
//config:config NC_EXTRA
-//config: bool "Netcat extensions (-eiw and filename)"
+//config: bool "Netcat extensions (-eiw and -f FILE)"
//config: default y
//config: depends on NC
//config: help
//config:
//config:config NC_110_COMPAT
//config: bool "Netcat 1.10 compatibility (+2.5k)"
-//config: default y
+//config: default n # off specially for Rob
//config: depends on NC
//config: help
//config: This option makes nc closely follow original nc-1.10.
//config: The code is about 2.5k bigger. It enables
//config: -s ADDR, -n, -u, -v, -o FILE, -z options, but loses
-//config: busybox-specific extensions: -f FILE and -ll.
+//config: busybox-specific extensions: -f FILE.
#if ENABLE_NC_110_COMPAT
# include "nc_bloaty.c"
//usage:#if !ENABLE_NC_110_COMPAT
//usage:
//usage:#if ENABLE_NC_SERVER || ENABLE_NC_EXTRA
-//usage:#define NC_OPTIONS_STR "\n\nOptions:"
+//usage:#define NC_OPTIONS_STR "\n"
//usage:#else
//usage:#define NC_OPTIONS_STR
//usage:#endif
//usage:#define nc_full_usage "\n\n"
//usage: "Open a pipe to IP:PORT" IF_NC_EXTRA(" or FILE")
//usage: NC_OPTIONS_STR
-//usage: IF_NC_EXTRA(
-//usage: "\n -e PROG Run PROG after connect"
//usage: IF_NC_SERVER(
//usage: "\n -l Listen mode, for inbound connects"
//usage: IF_NC_EXTRA(
-//usage: "\n (use -l twice with -e for persistent server)")
+//usage: "\n (use -ll with -e for persistent server)"
+//usage: )
//usage: "\n -p PORT Local port"
//usage: )
-//usage: "\n -w SEC Timeout for connect"
+//usage: IF_NC_EXTRA(
+//usage: "\n -w SEC Connect timeout"
//usage: "\n -i SEC Delay interval for lines sent"
//usage: "\n -f FILE Use file (ala /dev/ttyS0) instead of network"
+//usage: "\n -e PROG Run PROG after connect"
//usage: )
//usage:
//usage:#define nc_notes_usage ""
/* getopt32 is _almost_ usable:
** it cannot handle "... -e PROG -prog-opt" */
while ((opt = getopt(argc, argv,
- "" IF_NC_SERVER("lp:") IF_NC_EXTRA("w:i:f:e:") )) > 0
+ "" IF_NC_SERVER("lp:") IF_NC_EXTRA("w:i:f:e:") )) > 0
) {
if (ENABLE_NC_SERVER && opt == 'l')
IF_NC_SERVER(do_listen++);
*p++ = argv[optind++];
}
)
- /* optind points to argv[arvc] (NULL) now.
+ /* optind points to argv[argc] (NULL) now.
** FIXME: we assume that getopt will not count options
** possibly present on "-e PROG ARGS" and will not
** include them into final value of optind
/* child, or main thread if only one -l */
xmove_fd(cfd, 0);
xdup2(0, 1);
- xdup2(0, 2);
+ /*xdup2(0, 2); - original nc 1.10 does this, we don't */
IF_NC_EXTRA(BB_EXECVP(execparam[0], execparam);)
- /* Don't print stuff or it will go over the wire... */
- _exit(127);
+ IF_NC_EXTRA(bb_perror_msg_and_die("can't execute '%s'", execparam[0]);)
}
/* Select loop copying stdin to cfd, and cfd to stdout */