]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
revise .clang-format and add a C formatting script in util
authorEvan Hunt <each@isc.org>
Thu, 13 Feb 2020 18:16:25 +0000 (10:16 -0800)
committerEvan Hunt <each@isc.org>
Thu, 13 Feb 2020 23:04:36 +0000 (15:04 -0800)
- add util/cformat.sh, which runs clang-format on all C files with
  the default .clang-format, and on all header files with a slightly
  modified version.
- use correct bracing after multi-line control statements
- stop aligning variable declarations to avoid problems with pointer
  alignment, but retain aligned declarations in header files so that
  struct definitions look cleaner.
- static function prototypes in C files can skip the line break after
  the return type, but function prototypes in header files still have
  the line break.
- don't break-before-brace in function definitions. ISC style calls
  for braces on the same line when function parameters fit on a single
  line, and a line break if they don't, but clang-format doesn't yet
  support that distinction. one-line function definitions are about
  four times more common than multi-line, so let's use the option that
  deviates less.

.clang-format
util/cformat.sh [new file with mode: 0644]
util/copyrights

index 7e2dbc509494d87299e124001869059fe072e98a..8f653f68d1d9990875dc762146982ad4a5af8780 100644 (file)
@@ -1,20 +1,35 @@
 BasedOnStyle: LLVM
 IndentWidth: 8
 UseTab: Always
-BreakBeforeBraces: Linux
+BreakBeforeBraces: Custom
+BraceWrapping:
+  AfterClass:      false
+  AfterEnum:       false
+  AfterStruct:     false
+  AfterUnion:      false
+  AfterControlStatement: MultiLine
+  AfterFunction:   false # should also be MultiLine, but not yet supported
+  AfterExternBlock: false
+  BeforeElse:      false
+  IndentBraces:    false
+  SplitEmptyFunction: true
 AllowShortIfStatementsOnASingleLine: false
 IndentCaseLabels: false
-AlwaysBreakAfterReturnType: All
+AlwaysBreakAfterReturnType: TopLevelDefinitions
 Cpp11BracedListStyle: false
 ColumnLimit: 80
 AlignAfterOpenBracket: Align
-AlignConsecutiveDeclarations: true
+AlignConsecutiveDeclarations: false
+AlignConsecutiveMacros: true
+AlignTrailingComments: true
+AllowAllArgumentsOnNextLine: true
 AlwaysBreakBeforeMultilineStrings: false
 BreakBeforeBinaryOperators: None
 BreakBeforeTernaryOperators: true
 AlignEscapedNewlines: Left
 DerivePointerAlignment: false
 PointerAlignment: Right
+PointerBindsToType: false
 IncludeBlocks: Regroup
 IncludeCategories:
   - Regex:           '^<isc/'
@@ -36,15 +51,11 @@ IncludeCategories:
   - Regex:           '".*"'
     Priority:        9
 KeepEmptyLinesAtTheStartOfBlocks: false
-
-# Taken from git's rules
-PenaltyBreakAssignment: 10
-# PenaltyBreakBeforeFirstCallParameter: 30
+MaxEmptyLinesToKeep: 1
+PenaltyBreakAssignment: 30
 PenaltyBreakComment: 10
 PenaltyBreakFirstLessLess: 0
 PenaltyBreakString: 10
 PenaltyExcessCharacter: 100
-
 Standard: Cpp11
-
 ContinuationIndentWidth: 8
diff --git a/util/cformat.sh b/util/cformat.sh
new file mode 100644 (file)
index 0000000..5d125f6
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# See the COPYRIGHT file distributed with this work for additional
+# information regarding copyright ownership.
+
+# use the main .clang-format for C files
+find bin lib -name "*.c" |
+    xargs clang-format --style=file --sort-includes -i
+
+# set up a temporary .clang-format file for headers ONLY
+cp -f .clang-format .clang-format.bak
+sed -e 's/\(AlignConsecutiveDeclarations\).*/\1: true/' \
+    -e 's/\(AlwaysBreakAfterReturnType\).*/\1: All/' \
+    .clang-format.bak > .clang-format
+
+# modify header files
+find bin lib -name "*.h" |
+    xargs clang-format --style=file --sort-includes -i
+
+# restore the original .clang-format file
+cp -f .clang-format.bak .clang-format
+rm -f .clang-format.bak
index 8a8497a5f65855e8bdf9e5fe4c917a8a35f8e8a9..eb35aae950bf465228cc582739e60cb6ae606785 100644 (file)
 ./util/COPYRIGHT.TOP                           X       2018,2019,2020
 ./util/bindkeys.pl                             PERL    2009,2010,2011,2012,2014,2016,2017,2018,2019,2020
 ./util/branchsync.sh                           SH      2013,2016,2018,2019,2020
+./util/cformat.sh                              SH      2020
 ./util/check-ans-prereq.sh                     SH      2019,2020
 ./util/check-categories.sh                     SH      2015,2016,2017,2018,2019,2020
 ./util/check-changes                           PERL    2002,2004,2007,2012,2016,2018,2019,2020