diff options
Diffstat (limited to 'network/netcat-openbsd/patches/0005-send-crlf.patch')
-rw-r--r-- | network/netcat-openbsd/patches/0005-send-crlf.patch | 192 |
1 files changed, 0 insertions, 192 deletions
diff --git a/network/netcat-openbsd/patches/0005-send-crlf.patch b/network/netcat-openbsd/patches/0005-send-crlf.patch deleted file mode 100644 index ecbeb3b810..0000000000 --- a/network/netcat-openbsd/patches/0005-send-crlf.patch +++ /dev/null @@ -1,192 +0,0 @@ -From: Aron Xu <aron@debian.org> -Date: Mon, 13 Feb 2012 14:57:45 +0800 -Subject: send crlf - ---- - nc.1 | 9 +++++-- - netcat.c | 74 ++++++++++++++++++++++++++++++++++----------------------------- - 2 files changed, 48 insertions(+), 35 deletions(-) - ---- a/nc.1 -+++ b/nc.1 -@@ -33,7 +33,7 @@ - .Nd arbitrary TCP and UDP connections and listens - .Sh SYNOPSIS - .Nm nc --.Op Fl 46DdFhklNnrStUuvz -+.Op Fl 46CDdFhklNnrStUuvz - .Op Fl I Ar length - .Op Fl i Ar interval - .Op Fl M Ar ttl -@@ -92,6 +92,11 @@ The options are as follows: - Use IPv4 addresses only. - .It Fl 6 - Use IPv6 addresses only. -+.It Fl C -+Send CRLF as line-ending. Each line feed (LF) character from the input -+data is translated into CR+LF before being written to the socket. Line -+feed characters that are already preceded with a carriage return (CR) -+are not translated. Received data is not affected. - .It Fl D - Enable debugging on the socket. - .It Fl d -@@ -377,7 +382,7 @@ More complicated examples can be built u - of requests required by the server. - As another example, an email may be submitted to an SMTP server using: - .Bd -literal -offset indent --$ nc localhost 25 \*(Lt\*(Lt EOF -+$ nc [\-C] localhost 25 \*(Lt\*(Lt EOF - HELO host.example.com - MAIL FROM:\*(Ltuser@host.example.com\*(Gt - RCPT TO:\*(Ltuser2@host.example.com\*(Gt ---- a/netcat.c -+++ b/netcat.c -@@ -166,6 +166,8 @@ char *tls_expecthash; /* required hash - char *tls_ciphers; /* TLS ciphers */ - char *tls_protocols; /* TLS protocols */ - FILE *Zflag; /* file to save peer cert */ -+# else -+int Cflag = 0; /* CRLF line-ending */ - # endif - - int recvcount, recvlimit; -@@ -215,7 +217,7 @@ ssize_t fillbuf(int, unsigned char *, si - void tls_setup_client(struct tls *, int, char *); - struct tls *tls_setup_server(struct tls *, int, char *); - # else --ssize_t drainbuf(int, unsigned char *, size_t *); -+ssize_t drainbuf(int, unsigned char *, size_t *, int); - ssize_t fillbuf(int, unsigned char *, size_t *); - # endif - -@@ -256,7 +258,7 @@ main(int argc, char *argv[]) - # if defined(TLS) - "46C:cDde:FH:hI:i:K:klM:m:NnO:o:P:p:R:rSs:T:tUuV:vW:w:X:x:Z:z")) - # else -- "46DdFhI:i:klM:m:NnO:P:p:rSs:T:tUuV:vW:w:X:x:z")) -+ "46CDdFhI:i:klM:m:NnO:P:p:rSs:T:tUuV:vW:w:X:x:z")) - # endif - != -1) { - switch (ch) { -@@ -286,6 +288,10 @@ main(int argc, char *argv[]) - case 'c': - usetls = 1; - break; -+# else -+ case 'C': -+ Cflag = 1; -+ break; - # endif - case 'd': - dflag = 1; -@@ -1324,12 +1330,6 @@ readwrite(int net_fd) - stdinbufpos == 0 && netinbufpos == 0) - return; - -- /* help says -i is for "wait between lines sent". We read and -- * write arbitrary amounts of data, and we don't want to start -- * scanning for newlines, so this is as good as it gets */ -- if (iflag) -- sleep(iflag); -- - /* poll */ - num_fds = poll(pfd, 4, timeout); - -@@ -1409,7 +1409,7 @@ readwrite(int net_fd) - pfd[POLL_NETOUT].events = POLLOUT; - else - # else -- &stdinbufpos); -+ &stdinbufpos, (iflag || Cflag) ? 1 : 0); - # endif - if (ret == -1) - pfd[POLL_NETOUT].fd = -1; -@@ -1468,7 +1468,7 @@ readwrite(int net_fd) - pfd[POLL_STDOUT].events = POLLOUT; - else - # else -- &netinbufpos); -+ &netinbufpos, 0); - # endif - if (ret == -1) - pfd[POLL_STDOUT].fd = -1; -@@ -1494,33 +1494,40 @@ readwrite(int net_fd) - } - - ssize_t --# if defined(TLS) --drainbuf(int fd, unsigned char *buf, size_t *bufpos, struct tls *tls) --# else --drainbuf(int fd, unsigned char *buf, size_t *bufpos) --# endif -+drainbuf(int fd, unsigned char *buf, size_t *bufpos, int oneline) - { -- ssize_t n; -+ ssize_t n, r; - ssize_t adjust; -+ unsigned char *lf = NULL; - --# if defined(TLS) -- if (tls) { -- n = tls_write(tls, buf, *bufpos); -- if (n == -1) -- errx(1, "tls write failed (%s)", tls_error(tls)); -- } else { --# endif -- n = write(fd, buf, *bufpos); -- /* don't treat EAGAIN, EINTR as error */ -- if (n == -1 && (errno == EAGAIN || errno == EINTR)) --# if defined(TLS) -- n = TLS_WANT_POLLOUT; -- } --# else -- n = -2; --# endif -+ if (oneline) -+ lf = memchr(buf, '\n', *bufpos); -+ if (lf == NULL) { -+ n = *bufpos; -+ oneline = 0; -+ } -+ else if (Cflag && (lf == buf || buf[lf - buf - 1] != '\r')) { -+ n = lf - buf; -+ oneline = 2; -+ } -+ else -+ n = lf - buf + 1; -+ if (n > 0) -+ n = write(fd, buf, n); -+ -+ /* don't treat EAGAIN, EINTR as error */ -+ if (n == -1 && (errno == EAGAIN || errno == EINTR)) -+ n = -2; -+ if (oneline == 2 && n >= 0) -+ n++; - if (n <= 0) - return n; -+ -+ if (oneline == 2 && (r = atomicio(vwrite, fd, "\r\n", 2)) != 2) -+ err(1, "write failed (%zu/2)", r); -+ if (oneline > 0 && iflag) -+ sleep(iflag); -+ - /* adjust buffer */ - adjust = *bufpos - n; - if (adjust > 0) -@@ -2030,6 +2037,7 @@ help(void) - fprintf(stderr, "\tCommand Summary:\n\ - \t-4 Use IPv4\n\ - \t-6 Use IPv6\n\ -+ \t-C Send CRLF as line-ending\n\ - \t-D Enable the debug socket option\n\ - \t-d Detach from stdin\n\ - \t-F Pass socket fd\n\ -@@ -2067,7 +2075,7 @@ void - usage(int ret) - { - fprintf(stderr, -- "usage: nc [-46DdFhklNnrStUuvz] [-I length] [-i interval] [-M ttl]\n" -+ "usage: nc [-46CDdFhklNnrStUuvz] [-I length] [-i interval] [-M ttl]\n" - "\t [-m minttl] [-O length] [-P proxy_username] [-p source_port]\n" - "\t [-s source] [-T keyword] [-V rtable] [-W recvlimit] " - "[-w timeout]\n" |