From owner-cvs-src@FreeBSD.ORG Wed Dec 15 11:46:01 2004 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4096F16A4CE; Wed, 15 Dec 2004 11:46:01 +0000 (GMT) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.FreeBSD.org (Postfix) with ESMTP id 2484A43D5D; Wed, 15 Dec 2004 11:46:01 +0000 (GMT) (envelope-from bright@elvis.mu.org) Received: by elvis.mu.org (Postfix, from userid 1192) id 1AF7F5CA33; Wed, 15 Dec 2004 03:46:01 -0800 (PST) Date: Wed, 15 Dec 2004 03:46:01 -0800 From: Alfred Perlstein To: Suleiman Souhlal Message-ID: <20041215114601.GP15799@elvis.mu.org> References: <200412150624.iBF6Ov1u016707@repoman.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200412150624.iBF6Ov1u016707@repoman.freebsd.org> User-Agent: Mutt/1.4.2.1i cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/usr.bin/rev rev.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Dec 2004 11:46:01 -0000 * Suleiman Souhlal [041214 22:24] wrote: > ssouhlal 2004-12-15 06:24:57 UTC > > FreeBSD src repository > > Modified files: > usr.bin/rev rev.c > Log: > If ferror is true, we must reset the error indicator. There's another possible bug here. Note that the code seems to unconditionally emit an EOL marker even if the last character of the line is not a newline. If that is a bug then here is a possible fix: something like this may work: (untested) Index: rev.c =================================================================== RCS file: /home/ncvs/src/usr.bin/rev/rev.c,v retrieving revision 1.8 diff -u -r1.8 rev.c --- rev.c 15 Dec 2004 06:24:57 -0000 1.8 +++ rev.c 15 Dec 2004 11:44:48 -0000 @@ -66,7 +66,7 @@ wchar_t *p, *t; FILE *fp; size_t len; - int ch, rval; + int ch, rval, newline; setlocale(LC_ALL, ""); @@ -94,12 +94,17 @@ filename = *argv++; } while ((p = fgetwln(fp, &len)) != NULL) { - if (p[len - 1] == '\n') + if (p[len - 1] == '\n') { + newline = 1; --len; + } else { + newline = 0; + } t = p + len - 1; for (t = p + len - 1; t >= p; --t) putwchar(*t); - putwchar('\n'); + if (newline) + putwchar('\n'); } if (ferror(fp)) { warn("%s", filename); -- - Alfred Perlstein - Research Engineering Development Inc. - email: bright@mu.org cell: 408-480-4684