From bf5f0c446e31c47d0aa8c9c6714a7b2433cac8c7 Mon Sep 17 00:00:00 2001 From: "Tim J. Robbins" Date: Thu, 13 Jun 2002 14:05:26 +0000 Subject: [PATCH] Print the "$" symbol on blank lines when the -s and -e options are used together. Obtained from: OpenBSD (millert, Denis Afonin) --- bin/cat/cat.c | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/bin/cat/cat.c b/bin/cat/cat.c index 2186946c4d76..2648a7decccc 100644 --- a/bin/cat/cat.c +++ b/bin/cat/cat.c @@ -179,29 +179,23 @@ cook_cat(FILE *fp) line = gobble = 0; for (prev = '\n'; (ch = getc(fp)) != EOF; prev = ch) { if (prev == '\n') { - if (ch == '\n') { - if (sflag) { - if (!gobble && putchar(ch) == EOF) - break; + if (sflag) { + if (ch == '\n') { + if (gobble) + continue; gobble = 1; - continue; - } - if (nflag && !bflag) { - fprintf(stdout, "%6d\t", ++line); - if (ferror(stdout)) - break; - } - } else if (nflag) { - fprintf(stdout, "%6d\t", ++line); + } else + gobble = 0; + } + if (nflag && (!bflag || ch != '\n')) { + (void)fprintf(stdout, "%6d\t", ++line); if (ferror(stdout)) break; } } - gobble = 0; if (ch == '\n') { - if (eflag) - if (putchar('$') == EOF) - break; + if (eflag && putchar('$') == EOF) + break; } else if (ch == '\t') { if (tflag) { if (putchar('^') == EOF || putchar('I') == EOF)