Would you accept a patch like this?

Posted on Fri 20 November 2009 by alex in geek

Wow, I actually found something that netcat can't do.

--- netcat-openbsd-1.89/netcat.c        2009-11-20 17:44:40.000000000 +0000
+++ netcat-openbsd-1.89.patched/netcat.c        2009-11-20 17:43:35.000000000 +0000
@@ -74,6 +74,7 @@

 /* Command Line Options */
 int    Cflag = 0;                              /* CRLF line-ending */
+int    cflag = 0;                              /* CR line-ending */
 int    dflag;                                  /* detached, no stdin */
 int    iflag;                                  /* Interval Flag */
 int    jflag;                                  /* use jumbo frames if we can */
@@ -137,7 +138,7 @@
        sv = NULL;

        while ((ch = getopt(argc, argv,
-           "46Ddhi:jklnP:p:rSs:tT:Uuvw:X:x:zC")) != -1) {
+           "46Ddhi:jklnP:p:rSs:tT:Uuvw:X:x:zCc")) != -1) {
                switch (ch) {
                case '4':
                        family = AF_INET;
@@ -230,6 +231,9 @@
                case 'C':
                        Cflag = 1;
                        break;
+               case 'c':
+                       cflag = 1;
+                       break;
                default:
                        usage(1);
                }
@@ -748,6 +752,12 @@
                                        if (atomicio(vwrite, nfd, "\r\n", 2) != 2)
                                                return;
                                }
+                               else if ((cflag) && (buf[n-1]=='\n')) {
+                                       if (atomicio(vwrite, nfd, buf, n-1) != (n-1))
+                                               return;
+                                       if (atomicio(vwrite, nfd, "\r", 1) != 1)
+                                               return;
+                               }
                                else {
                                        if (atomicio(vwrite, nfd, buf, n) != n)
                                                return;

My dad has been experimenting with putting an old Flex system on the net. I was having trouble talking to it with netcat. Using Telnet was a little better but still failing. It turns out some very old systems have different line termination sequences. I can now play the original Colossal Cave :-)