File netcat.patch of Package netcat

--- Makefile
+++ Makefile
@@ -9,13 +9,14 @@
 # pick gcc if you'd rather , and/or do -g instead of -O if debugging
 # debugging
 # DFLAGS = -DTEST -DDEBUG
-CFLAGS = -O
+DFLAGS = -DTELNET
+CFLAGS = -O2
 XFLAGS = 	# xtra cflags, set by systype targets
 XLIBS =		# xtra libs if necessary?
 # -Bstatic for sunos,  -static for gcc, etc.  You want this, trust me.
 STATIC =
 CC = cc $(CFLAGS)
-LD = $(CC) -s	# linker; defaults to stripped executables
+LD = $(CC)	# linker; defaults to stripped executables
 o = o		# object extension
 
 ALL = nc
@@ -67,7 +68,8 @@
 	make -e $(ALL) $(MFLAGS) XFLAGS='-DAIX'
 
 linux:
-	make -e $(ALL) $(MFLAGS) XFLAGS='-DLINUX' STATIC=-static
+	make -e $(ALL) $(MFLAGS) XFLAGS='-DLINUX' 
+#STATIC=-static
 
 # irix 5.2, dunno 'bout earlier versions.  If STATIC='-non_shared' doesn't
 # work for you, null it out and yell at SGI for their STUPID default
--- netcat.c
+++ netcat.c
@@ -73,6 +73,10 @@
 #include <errno.h>
 #include <signal.h>
 #include <fcntl.h>		/* O_WRONLY et al */
+#include <unistd.h>		/* read, write, yadda yadda */
+#ifdef HAVE_BIND
+#include <resolv.h>
+#endif
 
 /* handy stuff: */
 #define SA struct sockaddr	/* socket overgeneralization braindeath */
@@ -1216,6 +1220,7 @@
 	if (rr <= 0) {			/* at end, or fukt, or ... */
 	  FD_CLR (0, ding1);		/* disable and close stdin */
 	  close (0);
+	  shutdown(fd, 1);		/* no more sending from us */
 	} else {
 	  rzleft = rr;
 	  zp = bigbuf_in;
@@ -1313,7 +1318,13 @@
   USHORT hiport = 0;
   USHORT curport = 0;
   char * randports = NULL;
+  char * basename;
 
+  if ((basename = strrchr(argv[0], '/')) == NULL)
+      basename = argv[0];
+  else
+      basename++;
+  
 #ifdef HAVE_BIND
 /* can *you* say "cc -yaddayadda netcat.c -lresolv -l44bsd" on SunLOSs? */
   res_init();
@@ -1420,7 +1431,7 @@
       case 'h':
 	errno = 0;
 #ifdef HAVE_HELP
-	helpme();			/* exits by itself */
+	helpme(basename);		/* exits by itself */
 #else
 	bail ("no help available, dork -- RTFS");
 #endif
@@ -1471,7 +1482,7 @@
 	break;
       default:
 	errno = 0;
-	bail ("nc -h for help");
+	bail ("%s -h for help", basename);
     } /* switch x */
   } /* while getopt */
 
@@ -1627,13 +1638,13 @@
 #ifdef HAVE_HELP		/* unless we wanna be *really* cryptic */
 /* helpme :
    the obvious */
-helpme()
+void helpme(char * basename)
 {
   o_verbose = 1;
   holler ("[v1.10]\n\
-connect to somewhere:	nc [-options] hostname port[s] [ports] ... \n\
-listen for inbound:	nc -l -p port [-options] [hostname] [port]\n\
-options:");
+connect to somewhere:	%s [-options] hostname port[s] [ports] ... \n\
+listen for inbound:	%s -l -p port [-options] [hostname] [port]\n\
+options:", basename, basename);
 /* sigh, this necessarily gets messy.  And the trailing \ characters may be
    interpreted oddly by some compilers, generating or not generating extra
    newlines as they bloody please.  u-fix... */
--- scripts/alta
+++ scripts/alta
@@ -16,12 +16,12 @@
 QB="GET /cgi-bin/query?pg=q&what=${WHAT}&fmt=c&q=\"${PLUSARG}\""
 
 # ping 'em once, to get the routing warm
-nc -z -w 8 www.altavista.digital.com 24015 2> /dev/null
+netcat -z -w 8 www.altavista.digital.com 24015 2> /dev/null
 echo "=== Altavista ==="
 
 for xx in 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 \
   190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 ; do
-  echo "${QB}&stq=${xx}" | nc -w 15 www.altavista.digital.com 80 | \
+  echo "${QB}&stq=${xx}" | netcat -w 15 www.altavista.digital.com 80 | \
   egrep '^<a href="http://'
 done
 
--- scripts/bsh
+++ scripts/bsh
@@ -2,7 +2,7 @@
 ## a little wrapper to "password" and re-launch a shell-listener.
 ## Arg is taken as the port to listen on.  Define "NC" to point wherever.
 
-NC=nc
+NC=netcat
 
 case "$1" in
   ?* )
--- scripts/dist.sh
+++ scripts/dist.sh
@@ -9,7 +9,7 @@
 
 sleep 1
 SRC=`tail -1 dist.log`
-echo "<36>elite: ${SRC}" | ./nc -u -w 1 localhost 514 > /dev/null 2>&1
+echo "<36>elite: ${SRC}" | netcat -u -w 1 localhost 514 > /dev/null 2>&1
 echo ";;; Hi, ${SRC}..."
 echo ";;; This is a PRERELEASE version of 'netcat', tar/gzip/uuencoded."
 echo ";;; Unless you are capturing this somehow, it won't do you much good."
@@ -17,7 +17,7 @@
 sleep 8
 cat dist.file
 sleep 1
-./nc -v -l -p ${PORT} -e dist.sh < /dev/null >> dist.log 2>&1 &
+netcat -v -l -p ${PORT} -e dist.sh < /dev/null >> dist.log 2>&1 &
 sleep 1
-echo "<36>elite: done" | ./nc -u -w 1 localhost 514 > /dev/null 2>&1
+echo "<36>elite: done" | netcat -u -w 1 localhost 514 > /dev/null 2>&1
 exit 0
--- scripts/irc
+++ scripts/irc
@@ -1,6 +1,6 @@
 #! /bin/sh
 ## Shit-simple script to supply the "privmsg <recipient>" of IRC typein, and
-## keep the connection alive.  Pipe this thru "nc -v -w 5 irc-server port".
+## keep the connection alive.  Pipe this thru "netcat -v -w 5 irc-server port".
 ## Note that this mechanism makes the script easy to debug without being live,
 ## since it just echoes everything bound for the server.
 ## if you want autologin-type stuff, construct some appropriate files and
--- scripts/iscan
+++ scripts/iscan
@@ -13,7 +13,7 @@
 esac
 
 # ping 'em once and see if they *are* running identd
-nc -z -w 9 "$1" 113 || { echo "oops, $1 isn't running identd" ; exit 0 ; }
+netcat -z -w 9 "$1" 113 || { echo "oops, $1 isn't running identd" ; exit 0 ; }
 
 # generate a randomish base port
 RP=`expr $$ % 999 + 31337`
@@ -22,10 +22,10 @@
 shift
 
 while test "$1" ; do
-  nc -v -w 8 -p ${RP} "$TRG" ${1} < /dev/null > /dev/null &
+  netcat -v -w 8 -p ${RP} "$TRG" ${1} < /dev/null > /dev/null &
   PROC=$!
   sleep 3
-  echo "${1},${RP}" | nc -w 4 -r "$TRG" 113 2>&1
+  echo "${1},${RP}" | netcat -w 4 -r "$TRG" 113 2>&1
   sleep 2
 # does this look like a lamer script or what...
   kill -HUP $PROC
--- scripts/ncp
+++ scripts/ncp
@@ -20,9 +20,9 @@
 if test "$2" ; then
   test ! -f "$1" && echo "can't find $1" && exit 1
   if test "$me" = "nzp" ; then
-    compress -c < "$1" | nc -v -w 2 $2 $MYPORT && exit 0
+    compress -c < "$1" | netcat -v -w 2 $2 $MYPORT && exit 0
   else
-    nc -v -w 2 $2 $MYPORT < "$1" && exit 0
+    netcat -v -w 2 $2 $MYPORT < "$1" && exit 0
   fi
   echo "transfer FAILED!"
   exit 1
@@ -36,9 +36,9 @@
 fi
 # 30 seconds oughta be pleeeeenty of time, but change if you want.
 if test "$me" = "nzp" ; then
-  nc -v -w 30 -p $MYPORT -l < /dev/null | uncompress -c > "$1" && exit 0
+  netcat -v -w 30 -p $MYPORT -l < /dev/null | uncompress -c > "$1" && exit 0
 else
-  nc -v -w 30 -p $MYPORT -l < /dev/null > "$1" && exit 0
+  netcat -v -w 30 -p $MYPORT -l < /dev/null > "$1" && exit 0
 fi
 echo "transfer FAILED!"
 # clean up, since even if the transfer failed, $1 is already trashed
--- scripts/probe
+++ scripts/probe
@@ -10,7 +10,7 @@
 GATE=192.157.69.11
 
 # might conceivably wanna change this for different run styles
-UCMD='nc -v -w 8'
+UCMD='netcat -v -w 8'
 
 test ! "$1" && echo Needs victim arg && exit 1
 
@@ -20,7 +20,7 @@
 $UCMD -z -r -g $GATE "$1" 6473 2>&1
 $UCMD -r -z "$1" 6000 4000-4004 111 53 2105 137-140 1-20 540-550 95 87 2>&1
 # -s `hostname` may be wrong for some multihomed machines
-echo 'UDP echoecho!' | nc -u -p 7 -s `hostname` -w 3 "$1" 7 19 2>&1
+echo 'UDP echoecho!' | netcat -u -p 7 -s `hostname` -w 3 "$1" 7 19 2>&1
 echo '113,10158' | $UCMD -p 10158 "$1" 113 2>&1
 rservice bin bin | $UCMD -p 1019 "$1" shell 2>&1
 echo QUIT | $UCMD -w 8 -r "$1" 25 158 159 119 110 109 1109 142-144 220 23 2>&1
@@ -36,14 +36,14 @@
 echo 'BEGIN big udp -- everything may look "open" if packet-filtered'
 data -g < ${DDIR}/nfs-0.d | $UCMD -i 1 -u "$1" 2049 | od -x 2>&1
 # no wait-time, uses RTT hack
-nc -v -z -u -r "$1" 111 66-70 88 53 87 161-164 121-123 213 49 2>&1
-nc -v -z -u -r "$1" 137-140 694-712 747-770 175-180 2103 510-530 2>&1
+netcat -v -z -u -r "$1" 111 66-70 88 53 87 161-164 121-123 213 49 2>&1
+netcat -v -z -u -r "$1" 137-140 694-712 747-770 175-180 2103 510-530 2>&1
 echo 'END big udp'
 $UCMD -r -z "$1" 175-180 2000-2003 530-533 1524 1525 666 213 8000 6250 2>&1
 # Use our identd-sniffer!
 iscan "$1" 21 25 79 80 111 53 6667 6000 2049 119 2>&1
 # this gets pretty intrusive, but what the fuck.  Probe for portmap first
-if nc -w 5 -z -u "$1" 111 ; then
+if netcat -w 5 -z -u "$1" 111 ; then
   showmount -e "$1" 2>&1
   rpcinfo -p "$1" 2>&1
 fi
--- scripts/web
+++ scripts/web
@@ -37,7 +37,7 @@
 # PATH=${HOME}:${PATH} ; export PATH
 
 test "${PAGER}" || PAGER=more
-BACKEND="nc -v -w 15"
+BACKEND="netcat -v -w 15"
 TMPAGE=/tmp/web$$
 host="$1"
 port="80"
--- scripts/webproxy
+++ scripts/webproxy
@@ -51,7 +51,7 @@
 # is necessary so this shell has NO remaining channel open to the net.
 # This will hang around for 10 minutes, and exit if no new connections arrive.
 # Using -n for speed, avoiding any DNS/port lookups.
-    nc -w 600 -n -l -p $PORT -e "$0" $XNC "$CLIENT" < /dev/null > /dev/null \
+    netcat -w 600 -n -l -p $PORT -e "$0" $XNC "$CLIENT" < /dev/null > /dev/null \
 	2> $CFILE &
   ;;
 esac
@@ -64,7 +64,7 @@
   if test "$1" = "reset" ; then
     rm -f $LFILE
     test -f "$CFILE" && rm -f $CFILE
-    nc -w 1 -n 127.0.0.1 $PORT < /dev/null > /dev/null 2>&1
+    netcat -w 1 -n 127.0.0.1 $PORT < /dev/null > /dev/null 2>&1
     exit 0
   fi
 # find our ass with both hands
@@ -82,7 +82,7 @@
   fi
 
 # ping client machine and get its bare IP address
-  CLIENT=`nc -z -v -w 8 "$1" 22000 2>&1 | sed 's/.*\[\(..*\)\].*/\1/'`
+  CLIENT=`netcat -z -v -w 8 "$1" 22000 2>&1 | sed 's/.*\[\(..*\)\].*/\1/'`
   test ! "$CLIENT" && echo "Can't find address of $1" && exit 1
 
 # if this was an initial launch, be informative about it
@@ -92,7 +92,7 @@
   test -f "$CFILE" && echo "  and connection fuckups to $CFILE"
 
 # and run the first listener, showing us output just for the first hit
-  nc -v -w 600 -n -l -p $PORT -e "$0" $XNC "$CLIENT" &
+  netcat -v -w 600 -n -l -p $PORT -e "$0" $XNC "$CLIENT" &
   exit 0
 fi
 
@@ -130,8 +130,8 @@
   echo "access to Netscam's servers <b>DENIED.</b>" && exit 0
 # Do it.  30 sec net-wait time oughta be *plenty*...
 # Some braindead servers have forgotten how to handle the simple-query syntax.
-# If necessary, replace below with (echo "$x1 $hf" ; echo '') | nc...
-echo "$x1 $hf" | nc -w 30 "$hh" "$hp" 2> /dev/null || \
+# If necessary, replace below with (echo "$x1 $hf" ; echo '') | netcat...
+echo "$x1 $hf" | netcat -w 30 "$hh" "$hp" 2> /dev/null || \
   echo "oops, can't get to $hh : $hp".
 echo "sent \"$x1 $hf\" to $hh : $hp" >> $LFILE
 exit 0
--- scripts/webrelay
+++ scripts/webrelay
@@ -10,7 +10,7 @@
 
 # set these as you wish: proxy port...
 PORT=8000
-# any extra args to the listening "nc", for instance "-s inside-net-addr"
+# any extra args to the listening "netcat", for instance "-s inside-net-addr"
 XNC=''
 
 # functionality switch, which has to be done fast to start the next listener
@@ -24,9 +24,9 @@
 case "${1}" in
   "")
 # no args: fire off new relayer process NOW.  Will hang around for 10 minutes
-    nc -w 600 -l -n -p $PORT -e "$0" $XNC < /dev/null > /dev/null 2>&1 &
+    netcat -w 600 -l -n -p $PORT -e "$0" $XNC < /dev/null > /dev/null 2>&1 &
 # and handle this request, which will simply fail if vars not set yet.
-    exec nc -w 15 $RDEST $RPORT
+    exec netcat -w 15 $RDEST $RPORT
   ;;
 esac
 
@@ -38,7 +38,7 @@
 
 # Launch the first relayer same as above, but let its error msgs show up
 # will hang around for a minute, and exit if no new connections arrive.
-nc -v -w 600 -l -p $PORT -e "$0" $XNC < /dev/null > /dev/null &
+netcat -v -w 600 -l -p $PORT -e "$0" $XNC < /dev/null > /dev/null &
 echo \
   "Relay to ${RDEST}:${RPORT} running -- point your browser here on port $PORT"
 exit 0
--- scripts/websearch
+++ scripts/websearch
@@ -15,7 +15,7 @@
 
 # Don't have "nc"?  Get "netcat" from avian.org and add it to your toolkit.
 doquery () {
-  echo GET "$1" | nc -v -i 1 -w 30 "$2" "$3"
+  echo GET "$1" | netcat -v -i 1 -w 30 "$2" "$3"
 }
 
 # changed since original: now supplying port numbers and separator lines...
@@ -35,7 +35,7 @@
 # you want to play, the basic idea and query formats follow.
 # echo "GET /WW/IS/Titles?qt=${PLUSARG}" > $IFILE
 # echo "" >> $IFILE
-# nc -v -w 30 guide-p.infoseek.com 80 < $IFILE
+# netcat -v -w 30 guide-p.infoseek.com 80 < $IFILE
 
 # this is kinda flakey; might have to do twice??
 echo '' ; echo "=== Opentext ==="
@@ -66,7 +66,7 @@
 echo "Why: go ask todd@pointcom.com (Todd Whitney)" >> $IFILE
 echo '' >> $IFILE
 echo '' ; echo "=== Lycos ==="
-nc -v -i 1 -w 30 twelve.srv.lycos.com 80 < $IFILE
+netcat -v -i 1 -w 30 twelve.srv.lycos.com 80 < $IFILE
 
 rm -f $IFILE
 exit 0