summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/tools/srcclean.c31
1 files changed, 26 insertions, 5 deletions
diff --git a/src/tools/srcclean.c b/src/tools/srcclean.c
index b1407e95a03..204f46c5008 100644
--- a/src/tools/srcclean.c
+++ b/src/tools/srcclean.c
@@ -70,6 +70,7 @@ int main(int argc, char *argv[])
int removed_tabs = 0;
int added_tabs = 0;
int removed_spaces = 0;
+ int removed_continuations = 0;
int fixed_mac_style = 0;
int fixed_nix_style = 0;
int added_newline = 0;
@@ -203,11 +204,30 @@ int main(int argc, char *argv[])
/* if we hit a CR or LF, clean up from there */
else if (ch == 0x0d || ch == 0x0a)
{
- /* remove all extra spaces/tabs at the end */
- while (dst > 0 && (modified[dst-1] == ' ' || modified[dst-1] == 0x09))
+ while (true)
{
- removed_spaces++;
- dst--;
+ /* remove all extra spaces/tabs at the end */
+ if (dst > 0 && (modified[dst-1] == ' ' || modified[dst-1] == 0x09))
+ {
+ removed_spaces++;
+ dst--;
+ }
+ /* remove extraneous line continuation followed by a blank line */
+ else if (is_c_file && dst > 2 && modified[dst-3] == '\\' && modified[dst-2] == 0x0d && modified[dst-1]==0x0a)
+ {
+ removed_continuations++;
+ dst -= 3;
+ }
+ /* remove blank lines following an opening brace */
+ else if (is_c_file && !in_multiline_comment && dst > 2 && modified[dst-3] == '{' && modified[dst-2] == 0x0d && modified[dst-1]==0x0a)
+ {
+ removed_newlines++;
+ dst -= 2;
+ }
+ else
+ {
+ break;
+ }
}
/* insert a proper CR/LF */
@@ -339,8 +359,9 @@ int main(int argc, char *argv[])
/* explain what we did */
printf("Cleaned up %s:", argv[1]);
if (added_newline) printf(" added newline at end of file");
- if (removed_newlines) printf(" removed %d newline(s) at end of file", removed_newlines);
+ if (removed_newlines) printf(" removed %d newline(s)", removed_newlines);
if (removed_spaces) printf(" removed %d space(s)", removed_spaces);
+ if (removed_continuations) printf(" removed %d continuation(s)", removed_continuations);
if (removed_tabs) printf(" removed %d tab(s)", removed_tabs);
if (added_tabs) printf(" added %d tab(s)", added_tabs);
if (hichars) printf(" fixed %d high-ASCII char(s)", hichars);