Hello,
While combing through a collection of files, I noticed that whenever I
called diff with both --ignore-trailing-space and
--ignore-tab-expansion, the latter option was seemingly ignored.
Initially I was worried that combining them was’t supported at all,
even though the documentation suggested nothing of the sort. So I dug
into the source code to see whether this was a feature omission or a
bug. Half an hour later, I had a patch ready. Attached.
I don’t believe the patch needs copyright assignment, given that it
changes just two lines and adds one. Though I figure writing some tests
to cover this case is in order, which I did not do.
—f
Index: diffutils-3.7/src/util.c
===================================================================
--- diffutils-3.7.orig/src/util.c
+++ diffutils-3.7/src/util.c
@@ -1074,7 +1074,7 @@ lines_differ (char const *s1, char const
while ((c = *p) != '\n' && isspace (c))
++p;
if (c != '\n')
- break;
+ goto not_eol;
}
if (c2 != '\n')
{
@@ -1082,11 +1082,12 @@ lines_differ (char const *s1, char const
while ((c = *p) != '\n' && isspace (c))
++p;
if (c != '\n')
- break;
+ goto not_eol;
}
/* Both lines have nothing but whitespace left. */
return false;
}
+ not_eol:
if (ignore_white_space == IGNORE_TRAILING_SPACE)
break;
FALLTHROUGH;