Date: Tue, 27 Nov 2001 10:40:06 -0800 (PST) From: Ruslan Ermilov <ru@FreeBSD.org> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/31392: fmt(1) does format nroff source correctly Message-ID: <200111271840.fARIe6X75873@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/31392; it has been noted by GNATS. From: Ruslan Ermilov <ru@FreeBSD.org> To: bug-followup@FreeBSD.org, kurt@boolean.net Cc: Subject: Re: bin/31392: fmt(1) does format nroff source correctly Date: Tue, 27 Nov 2001 20:39:16 +0200 Hi! I've checked that the old fmt(1) really had an undocumented feature to not format lines starting with the dot character. I have also checked that System V's fmt(1) has this feature. The below patch is believed to fix the problem. Index: fmt.1 =================================================================== RCS file: /home/ncvs/src/usr.bin/fmt/fmt.1,v retrieving revision 1.9 diff -u -p -r1.9 fmt.1 --- fmt.1 2001/08/15 14:53:55 1.9 +++ fmt.1 2001/11/27 18:35:24 @@ -79,6 +79,11 @@ The spacing at the beginning of the inpu as are blank lines and interword spacing. Lines are joined or split only at white space; that is, words are never joined or hyphenated. +.Nm +does not fill lines beginning with a +.Ql \&. +(dot), for compatibility with +.Xr nroff 1 . .Pp The options are as follows: .Bl -tag -width indent Index: fmt.c =================================================================== RCS file: /home/ncvs/src/usr.bin/fmt/fmt.c,v retrieving revision 1.16 diff -u -p -r1.16 fmt.c --- fmt.c 2001/08/15 14:53:55 1.16 +++ fmt.c 2001/11/27 18:35:32 @@ -395,6 +395,7 @@ process_stream(FILE *stream, const char } /* We need a new paragraph if and only if: * this line is blank, + * OR it's a troff request, * OR it's a mail header, * OR it's not a mail header AND the last line was one, * OR the indentation has changed @@ -402,6 +403,7 @@ process_stream(FILE *stream, const char * AND this isn't the second line of an indented paragraph. */ if ( length==0 + || (length>0 && line[0]=='.') || header_type==hdr_Header || (header_type==hdr_NonHeader && prev_header_type>hdr_NonHeader) || (np!=last_indent @@ -411,6 +413,11 @@ process_stream(FILE *stream, const char para_line_number = 0; first_indent = np; last_indent = np; + /* nroff compatibility: don't fill lines beginning with a dot */ + if (length>0 && line[0]=='.') { + printf("%.*s\n", (int)length, line); + continue; + } if (header_type==hdr_Header) last_indent=2; /* for cont. lines */ if (length==0) { putchar('\n'); -- Ruslan Ermilov Oracle Developer/DBA, ru@sunbay.com Sunbay Software AG, ru@FreeBSD.org FreeBSD committer, +380.652.512.251 Simferopol, Ukraine http://www.FreeBSD.org The Power To Serve http://www.oracle.com Enabling The Information Age To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200111271840.fARIe6X75873>