[lxc-devel] [lxc/master] CODING_STYLE: update
brauner on Github
lxc-bot at linuxcontainers.org
Fri Mar 2 11:52:04 UTC 2018
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 364 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180302/be3c09dd/attachment.bin>
-------------- next part --------------
From 0c9119fc1f465a53ae024d5912c5eb801c3305a9 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Fri, 2 Mar 2018 12:18:38 +0100
Subject: [PATCH 1/3] CODING_STYLE: remove duplicate _exit() entry
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
CODING_STYLE.md | 7 -------
1 file changed, 7 deletions(-)
diff --git a/CODING_STYLE.md b/CODING_STYLE.md
index a3bf41a4a..4a88bb898 100644
--- a/CODING_STYLE.md
+++ b/CODING_STYLE.md
@@ -433,13 +433,6 @@ rules to use them:
}
```
-#### Use `_exit()` in `fork()`ed Processes
-
-- This has multiple reasons but the gist is:
- - `exit()` is not thread-safe
- - `exit()` in libc runs exit handlers which might interfer with the parents
- state
-
#### Use `for (;;)` instead of `while (1)` or `while (true)`
- Let's be honest, it is really the only sensible way to do this.
From 3b2568fa77a39d19ef4779665fe0df689634b700 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Fri, 2 Mar 2018 12:29:30 +0100
Subject: [PATCH 2/3] CODING_STYLE: clang-format
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
CODING_STYLE.md | 44 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/CODING_STYLE.md b/CODING_STYLE.md
index 4a88bb898..0d14e56aa 100644
--- a/CODING_STYLE.md
+++ b/CODING_STYLE.md
@@ -16,6 +16,50 @@
style and add their Signed-off-by line to it. This is especially helpful to
make it easier for first-time contributors and to prevent having pull
requests being stuck in the merge queue because of minor details.
+- We currently do not provide automatic coding style checks but if a suitable
+ tools is found we are happy to integrate it into our test suite. It is
+ possible and recommended to use the `clang-format` binary to check your code.
+ The following options are an approximation of the coding style used here.
+ Simply create a file called `.clang-format` in your home directory with the
+ following options:
+ ```
+ cat << EOF > "${HOME}"/.clang-format
+ BreakBeforeBraces: Attach
+ AlwaysBreakBeforeMultilineStrings: false
+ BreakBeforeBinaryOperators: None
+ MaxEmptyLinesToKeep: 1
+ PenaltyBreakBeforeFirstCallParameter: 1000000
+ BinPackArguments: true
+ BinPackParameters: true
+ AllowAllParametersOfDeclarationOnNextLine: false
+ AlignAfterOpenBracket: true
+ SpacesInSquareBrackets: false
+ SpacesInCStyleCastParentheses: false
+ SpaceInEmptyParentheses: false
+ SpaceBeforeParens: ControlStatements
+ SpaceAfterCStyleCast: false
+ SortIncludes: true
+ PenaltyReturnTypeOnItsOwnLine: 10000
+ PenaltyExcessCharacter: 10
+ Language: Cpp
+ ForEachMacros: ['lxc_list_for_each', 'lxc_list_for_each_safe']
+ AllowShortLoopsOnASingleLine: false
+ AllowShortIfStatementsOnASingleLine: false
+ AllowShortFunctionsOnASingleLine: None
+ AllowShortCaseLabelsOnASingleLine: false
+ AllowShortBlocksOnASingleLine: false
+ BasedOnStyle: LLVM
+ TabWidth: 8
+ IndentWidth: 8
+ UseTab: Always
+ BreakBeforeBraces: Linux
+ AllowShortIfStatementsOnASingleLine: false
+ IndentCaseLabels: false
+ EOF
+ ```
+ However, it will not handle all cases correctly. For example, most `struct`
+ initializations will not be correct. In such cases please refer to the coding
+ style here.
#### Only Use Tabs
From 099cc6ece3031786e8c998e1fcdf4e6c841f118a Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Fri, 2 Mar 2018 12:50:55 +0100
Subject: [PATCH 3/3] CODING_STYLE: arrays of structs
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
CODING_STYLE.md | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 108 insertions(+)
diff --git a/CODING_STYLE.md b/CODING_STYLE.md
index 0d14e56aa..af8bcf939 100644
--- a/CODING_STYLE.md
+++ b/CODING_STYLE.md
@@ -24,6 +24,7 @@
following options:
```
cat << EOF > "${HOME}"/.clang-format
+ AlignEscapedNewlines: Left
BreakBeforeBraces: Attach
AlwaysBreakBeforeMultilineStrings: false
BreakBeforeBinaryOperators: None
@@ -554,3 +555,110 @@ rules to use them:
- When `fork()`ing off a child process use `_exit()` to terminate it instead of
`exit()`. The `exit()` function is not thread-safe and thus not suited for
the shared library which must ensure that it is thread-safe.
+
+#### Keep Arrays of `struct`s Aligned Horizontally When Initializing
+
+- Arrays of `struct`s are:
+ ```
+ struct foo_struct {
+ int n;
+ int m;
+ int p;
+ };
+
+ struct foo_struct new_instance[] = {
+ { 1, 2, 3 },
+ { 4, 5, 6 },
+ { 7, 8, 9 },
+ };
+ ```
+- Leave a single space after the opening `{` and before closing `}` of the
+ largest member of the last column.
+- Always leave a single space between the largest member of the current column
+ and the member in the next column.
+- A good example is
+ ```
+ struct signame {
+ int num;
+ const char *name;
+ };
+
+ static const struct signame signames[] = {
+ { SIGHUP, "HUP" },
+ { SIGINT, "INT" },
+ { SIGQUIT, "QUIT" },
+ { SIGILL, "ILL" },
+ { SIGABRT, "ABRT" },
+ { SIGFPE, "FPE" },
+ { SIGKILL, "KILL" },
+ { SIGSEGV, "SEGV" },
+ { SIGPIPE, "PIPE" },
+ { SIGALRM, "ALRM" },
+ { SIGTERM, "TERM" },
+ { SIGUSR1, "USR1" },
+ { SIGUSR2, "USR2" },
+ { SIGCHLD, "CHLD" },
+ { SIGCONT, "CONT" },
+ { SIGSTOP, "STOP" },
+ { SIGTSTP, "TSTP" },
+ { SIGTTIN, "TTIN" },
+ { SIGTTOU, "TTOU" },
+ #ifdef SIGTRAP
+ { SIGTRAP, "TRAP" },
+ #endif
+ #ifdef SIGIOT
+ { SIGIOT, "IOT" },
+ #endif
+ #ifdef SIGEMT
+ { SIGEMT, "EMT" },
+ #endif
+ #ifdef SIGBUS
+ { SIGBUS, "BUS" },
+ #endif
+ #ifdef SIGSTKFLT
+ { SIGSTKFLT, "STKFLT" },
+ #endif
+ #ifdef SIGCLD
+ { SIGCLD, "CLD" },
+ #endif
+ #ifdef SIGURG
+ { SIGURG, "URG" },
+ #endif
+ #ifdef SIGXCPU
+ { SIGXCPU, "XCPU" },
+ #endif
+ #ifdef SIGXFSZ
+ { SIGXFSZ, "XFSZ" },
+ #endif
+ #ifdef SIGVTALRM
+ { SIGVTALRM, "VTALRM" },
+ #endif
+ #ifdef SIGPROF
+ { SIGPROF, "PROF" },
+ #endif
+ #ifdef SIGWINCH
+ { SIGWINCH, "WINCH" },
+ #endif
+ #ifdef SIGIO
+ { SIGIO, "IO" },
+ #endif
+ #ifdef SIGPOLL
+ { SIGPOLL, "POLL" },
+ #endif
+ #ifdef SIGINFO
+ { SIGINFO, "INFO" },
+ #endif
+ #ifdef SIGLOST
+ { SIGLOST, "LOST" },
+ #endif
+ #ifdef SIGPWR
+ { SIGPWR, "PWR" },
+ #endif
+ #ifdef SIGUNUSED
+ { SIGUNUSED, "UNUSED" },
+ #endif
+ #ifdef SIGSYS
+ { SIGSYS, "SYS" },
+ #endif
+ };
+ ```
More information about the lxc-devel
mailing list