File verbose-numeric-port.patch of Package netcat-openbsd

From: Aron Xu <aron@debian.org>
Date: Mon, 13 Feb 2012 15:38:15 +0800
Subject: verbose numeric port

---
 netcat.c |   19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

--- a/netcat.c
+++ b/netcat.c
@@ -43,6 +43,7 @@
 #include <netinet/tcp.h>
 #include <netinet/ip.h>
 #include <arpa/telnet.h>
+#include <arpa/inet.h>
 #ifdef __linux__
 # include <linux/in6.h>
 #endif
@@ -651,6 +652,18 @@ main(int argc, char *argv[])
 				s = local_listen(host, uport, hints);
 			if (s < 0)
 				err(1, NULL);
+
+			char* local;
+			if (family == AF_INET6)
+				local = "0.0.0.0";
+			else if (family == AF_INET)
+				local = ":::";
+			else
+				local = "unknown";
+			fprintf(stderr, "Listening on [%s] (family %d, port %d)\n",
+				host ?: local,
+				family,
+				*uport);
 			/*
 			 * For UDP and -k, don't connect the socket, let it
 			 * receive datagrams from multiple socket pairs.
@@ -671,14 +684,14 @@ main(int argc, char *argv[])
 				char buf[16384];
 				struct sockaddr_storage z;
 
-				len = sizeof(z);
+				len = sizeof(cliaddr);
 				plen = 2048;
 				rv = recvfrom(s, buf, plen, MSG_PEEK,
-				    (struct sockaddr *)&z, &len);
+				    (struct sockaddr *)&cliaddr, &len);
 				if (rv < 0)
 					err(1, "recvfrom");
 
-				rv = connect(s, (struct sockaddr *)&z, len);
+				rv = connect(s, (struct sockaddr *)&cliaddr, len);
 				if (rv < 0)
 					err(1, "connect");
 
openSUSE Build Service is sponsored by