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$
+$