From a52f75d28da53eeed8ffc0da70262f88c91523f2 Mon Sep 17 00:00:00 2001 From: Peter Avalos Date: Sun, 4 Feb 2007 18:43:39 +0000 Subject: [PATCH] Print the "$" symbol on blank lines when the -s and -e options are used together. Obtained-from: FreeBSD --- 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 a57eb9cbb1..f1b3c97fbc 100644 --- a/bin/cat/cat.c +++ b/bin/cat/cat.c @@ -36,7 +36,7 @@ * @(#) Copyright (c) 1989, 1993 The Regents of the University of California. All rights reserved. * @(#)cat.c 8.2 (Berkeley) 4/27/95 * $FreeBSD: src/bin/cat/cat.c,v 1.14.2.8 2002/06/29 05:09:26 tjr Exp $ - * $DragonFly: src/bin/cat/cat.c,v 1.13 2004/11/08 00:44:38 dillon Exp $ + * $DragonFly: src/bin/cat/cat.c,v 1.14 2007/02/04 19:43:39 pavalos Exp $ */ #include @@ -180,29 +180,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) { + } else + gobble = 0; + } + if (nflag && (!bflag || ch != '\n')) { 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) -- 2.11.4.GIT