svn commit: r231098 - head/tools/tools/fixwhite
Ed Schouten
ed at FreeBSD.org
Mon Feb 6 18:52:41 UTC 2012
Author: ed
Date: Mon Feb 6 18:52:40 2012
New Revision: 231098
URL: http://svn.freebsd.org/changeset/base/231098
Log:
Add a `fix' for another whitespace bug.
If the sentence starts with a multiple of eight spaces, the sentence
should in almost all practical cases have started with tabs instead.
Replace these spaces by tabs.
Modified:
head/tools/tools/fixwhite/fixwhite.1
head/tools/tools/fixwhite/fixwhite.c
Modified: head/tools/tools/fixwhite/fixwhite.1
==============================================================================
--- head/tools/tools/fixwhite/fixwhite.1 Mon Feb 6 18:47:07 2012 (r231097)
+++ head/tools/tools/fixwhite/fixwhite.1 Mon Feb 6 18:52:40 2012 (r231098)
@@ -41,6 +41,8 @@ and prints the result to standard output
It removes leading and trailing empty lines from the input, as well as
trailing whitespace characters from ever line of text.
Multiple successive empty lines are merged together.
+If the whitespace at the beginning of a sentence is exactly a multiple
+of eight spaces, the whitespace is replaced by tabs.
Also, spaces preceeding tabs will be merged into the tab character.
.Sh AUTHORS
.An Ed Schouten Aq ed at FreeBSD.org
Modified: head/tools/tools/fixwhite/fixwhite.c
==============================================================================
--- head/tools/tools/fixwhite/fixwhite.c Mon Feb 6 18:47:07 2012 (r231097)
+++ head/tools/tools/fixwhite/fixwhite.c Mon Feb 6 18:52:40 2012 (r231098)
@@ -110,6 +110,19 @@ savewhite(char c, bool leading)
static void
printwhite(void)
{
+ off_t i;
+
+ /* Merge spaces at the start of a sentence to tabs if possible. */
+ if ((column % 8) == 0) {
+ for (i = 0; i < column; i++)
+ if (!peekbyte(i + 1, ' '))
+ break;
+ if (i == column) {
+ queuelen -= column;
+ for (i = 0; i < column; i += 8)
+ queue[queuelen++] = '\t';
+ }
+ }
if (fwrite(queue, 1, queuelen, stdout) != queuelen) {
perror("write");
More information about the svn-src-all
mailing list