Hello, Obtained from OpenBSD r1.13 of src/bin/cat/cat.c. When 'cat -se' is used, a '$' is not printed for blank lines, attached diff fixes that.
Ok to commit? Sevan
Index: cat.c =================================================================== RCS file: /cvsroot/src/bin/cat/cat.c,v retrieving revision 1.55 diff -u -p -u -r1.55 cat.c --- cat.c 25 Jul 2015 16:17:01 -0000 1.55 +++ cat.c 3 Jun 2016 01:17:35 -0000 @@ -174,18 +174,16 @@ cook_buf(FILE *fp) line = gobble = 0; for (prev = '\n'; (ch = getc(fp)) != EOF; prev = ch) { if (prev == '\n') { - if (ch == '\n') { - if (sflag) { - if (!gobble && nflag && !bflag) - (void)fprintf(stdout, - "%6d\t\n", ++line); - else if (!gobble && putchar(ch) == EOF) - break; + if (sflag) { + if (ch == '\n') { + if (gobble) + continue; gobble = 1; - continue; + } else + gobble = 0; } if (nflag) { - if (!bflag) { + if (!bflag || ch != '\n') { (void)fprintf(stdout, "%6d\t", ++line); if (ferror(stdout)) @@ -197,13 +195,7 @@ cook_buf(FILE *fp) break; } } - } else if (nflag) { - (void)fprintf(stdout, "%6d\t", ++line); - if (ferror(stdout)) - break; } - } - gobble = 0; if (ch == '\n') { if (eflag) if (putchar('$') == EOF)