Hello,
The attached patch amends bin/cat/cat.c so the output is the same aside
from blank lines being numbered or unnumbered, depending on whether cat
was invoked with -ne or -be.

At present, when cat is invoked with -be, there is an aditional
difference that the '$' on blank lines is placed on the far left of the
script.

The patch originates from r1.17 of bin/cat/cat.c from NetBSD.

Following from that there is the addition of a regress test to check for
this issue.

The regress changes also includes a test previously mentioned here[1]
for the fix applied in r1.13 of OpenBSD bin/cat/cat.c.


[1] http://marc.info/?l=openbsd-tech&m=146665028627169&w=2


Regards


Sevan Janiyan
Index: cat.c
===================================================================
RCS file: /cvs/src/bin/cat/cat.c,v
retrieving revision 1.24
diff -u -p -u -r1.24 cat.c
--- bin/cat/cat.c       4 Nov 2015 21:28:01 -0000       1.24
+++ bin/cat/cat.c       27 Jun 2016 00:27:47 -0000
@@ -153,10 +153,16 @@ cook_buf(FILE *fp)
                                } else
                                        gobble = 0;
                        }
-                       if (nflag && (!bflag || ch != '\n')) {
-                               (void)fprintf(stdout, "%6d\t", ++line);
-                               if (ferror(stdout))
-                                       break;
+                       if (nflag) {
+                               if (!bflag || ch != '\n') {
+                                       (void)fprintf(stdout, "%6d\t", ++line);
+                                       if (ferror(stdout))
+                                               break;
+                               } else if (eflag) {
+                                       (void)fprintf(stdout, "%6s\t", "");
+                                       if (ferror(stdout))
+                                               break;
+                               }
                        }
                }
                if (ch == '\n') {
Index: regress/bin/Makefile
===================================================================
RCS file: /cvs/src/regress/bin/Makefile,v
retrieving revision 1.9
diff -u -p -u -r1.9 Makefile
--- regress/bin/Makefile        15 Jun 2015 09:25:22 -0000      1.9
+++ regress/bin/Makefile        27 Jun 2016 00:37:19 -0000
@@ -1,6 +1,6 @@
 #      $OpenBSD: Makefile,v 1.9 2015/06/15 09:25:22 florian Exp $
 
-SUBDIR+= chmod ksh ln md5 pax ps systrace test
+SUBDIR+= cat chmod ksh ln md5 pax ps systrace test
 
 install:
 
Index: regress/bin/cat/Makefile
===================================================================
RCS file: regress/bin/cat/Makefile
diff -N regress/bin/cat/Makefile
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/bin/cat/Makefile    27 Jun 2016 00:37:19 -0000
@@ -0,0 +1,11 @@
+# $OpenBSD$
+
+REGRESS_TARGETS=cat_be cat_se
+
+cat_be:
+       cat -be ${.CURDIR}/cat_be.in | cmp -s ${.CURDIR}/cat_be.out /dev/stdin
+
+cat_se:
+       cat -se ${.CURDIR}/cat_se.in | cmp -s ${.CURDIR}/cat_se.out /dev/stdin
+
+.include <bsd.regress.mk>
Index: regress/bin/cat/cat_be.in
===================================================================
RCS file: regress/bin/cat/cat_be.in
diff -N regress/bin/cat/cat_be.in
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/bin/cat/cat_be.in   27 Jun 2016 00:37:19 -0000
@@ -0,0 +1,5 @@
+free,
+
+functional
+
+and secure
Index: regress/bin/cat/cat_be.out
===================================================================
RCS file: regress/bin/cat/cat_be.out
diff -N regress/bin/cat/cat_be.out
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/bin/cat/cat_be.out  27 Jun 2016 00:37:19 -0000
@@ -0,0 +1,5 @@
+     1 free,$
+       $
+     2 functional$
+       $
+     3 and secure$
Index: regress/bin/cat/cat_se.in
===================================================================
RCS file: regress/bin/cat/cat_se.in
diff -N regress/bin/cat/cat_se.in
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/bin/cat/cat_se.in   27 Jun 2016 00:37:19 -0000
@@ -0,0 +1,3 @@
+
+Free, functional and secure
+
Index: regress/bin/cat/cat_se.out
===================================================================
RCS file: regress/bin/cat/cat_se.out
diff -N regress/bin/cat/cat_se.out
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/bin/cat/cat_se.out  27 Jun 2016 00:37:19 -0000
@@ -0,0 +1,3 @@
+$
+Free, functional and secure$
+$

Reply via email to