summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2012-02-06 18:52:40 +0000
committered <ed@FreeBSD.org>2012-02-06 18:52:40 +0000
commite53a6745b5c1e294f4615a8bc6699cdcc8e287ae (patch)
tree87fbe13105ffffd123f6aacfc9178fd69f863912 /tools
parent3a052ed6cd709e6bdc83bcd5b494bc7184dcdc9b (diff)
downloadFreeBSD-src-e53a6745b5c1e294f4615a8bc6699cdcc8e287ae.zip
FreeBSD-src-e53a6745b5c1e294f4615a8bc6699cdcc8e287ae.tar.gz
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.
Diffstat (limited to 'tools')
-rw-r--r--tools/tools/fixwhite/fixwhite.12
-rw-r--r--tools/tools/fixwhite/fixwhite.c13
2 files changed, 15 insertions, 0 deletions
diff --git a/tools/tools/fixwhite/fixwhite.1 b/tools/tools/fixwhite/fixwhite.1
index 852a390..ccf5ece 100644
--- a/tools/tools/fixwhite/fixwhite.1
+++ b/tools/tools/fixwhite/fixwhite.1
@@ -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
diff --git a/tools/tools/fixwhite/fixwhite.c b/tools/tools/fixwhite/fixwhite.c
index 276ae2e..903a5a3 100644
--- a/tools/tools/fixwhite/fixwhite.c
+++ b/tools/tools/fixwhite/fixwhite.c
@@ -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");
OpenPOWER on IntegriCloud