I just noticed I broke nc -kl. Here is the fix:
--- netcat.c.list Mon Mar 31 21:03:39 2014
+++ netcat.c Mon Mar 31 21:03:44 2014
@@ -763,7 +763,7 @@
if (nostdin && Nflag) shutdown(nfd, SHUT_WR);
if (nostdout) shutdown(nfd, SHUT_RD);
- while (pfd[0].fd != -1 || pfd[1].fd != -1) {
+ while (!nostdin || !nostdout) {
if (iflag)
sleep(iflag);
@@ -783,6 +783,7 @@
shutdown(nfd, SHUT_WR);
shutdown(wfd, SHUT_RD);
pfd[0].fd = -1;
+ nostdin = 1;
} else {
if (atomicio(vwrite, nfd, buf, n) != n)
return;
@@ -794,8 +795,10 @@
return;
else if (n == 0) {
shutdown(nfd, SHUT_RD);
- shutdown(lfd, SHUT_WR);
- close(lfd);
+ if (!kflag) {
+ shutdown(lfd, SHUT_WR);
+ close(lfd);
+ }
/*if (!Nflag)*/ return;
pfd[1].fd = -1;
pfd[2].events = POLLHUP;
@@ -817,6 +820,7 @@
if (pfd[1].revents & POLLHUP) {
shutdown(nfd, SHUT_RD);
pfd[1].fd = -1;
+ nostdout = 1;
}
}
}
--
http://gmerlin.de
OpenPGP: http://gmerlin.de/christopher.pub
F190 D013 8F01 AA53 E080 3F3C F17F B0A1 D44E 4FEE