Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Feb 2012 18:52:40 +0000 (UTC)
From:      Ed Schouten <ed@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r231098 - head/tools/tools/fixwhite
Message-ID:  <201202061852.q16IqeIx049110@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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@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");



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201202061852.q16IqeIx049110>