[lxc-devel] [lxc/master] CODING_STYLE: update

2019-03-01 Thread brauner on Github
The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxc/pull/2887

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===
Signed-off-by: Christian Brauner 
From 874563c376dea07f0520c1a7088565c218775300 Mon Sep 17 00:00:00 2001
From: Christian Brauner 
Date: Fri, 1 Mar 2019 21:24:31 +0100
Subject: [PATCH] CODING_STYLE: update

Signed-off-by: Christian Brauner 
---
 CODING_STYLE.md | 32 
 1 file changed, 32 insertions(+)

diff --git a/CODING_STYLE.md b/CODING_STYLE.md
index 54ac6d4ad0..4599c4ed85 100644
--- a/CODING_STYLE.md
+++ b/CODING_STYLE.md
@@ -662,3 +662,35 @@ int lxc_attach_run_command(void *payload)
return ret;
 }
 ```
+
+## 24) Never use `fgets()`
+
+LXC does not allow the use of `fgets()`. Use `getline()` or other methods
+instead.
+
+## 25) Never allocate memory on the stack
+
+This specifically forbids any usage of `alloca()` in the codebase.
+
+## 26) Use cleanup macros supported by `gcc` and `clang`
+
+LXC has switched from manually cleaning up resources to using cleanup macros
+supported by `gcc` and `clang`:
+```c
+__attribute__((__cleanup__()))
+```
+We do not allow manually cleanups anymore if there are appropriate macros.
+Currently the following macros are supported:
+```c
+/* close file descriptor */
+#define __do_close_prot_errno
+
+/* free allocated memory */
+#define __do_free __attribute__((__cleanup__(__auto_free__)))
+
+/* close FILEs */
+#define __do_fclose __attribute__((__cleanup__(__auto_fclose__)))
+
+/* close DIRs */
+#define __do_closedir __attribute__((__cleanup__(__auto_closedir__)))
+```
___
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel


[lxc-devel] [lxc/master] CODING_STYLE: update

2018-03-02 Thread brauner on Github
The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxc/pull/2202

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===
Signed-off-by: Christian Brauner 
From 0c9119fc1f465a53ae024d5912c5eb801c3305a9 Mon Sep 17 00:00:00 2001
From: Christian Brauner 
Date: Fri, 2 Mar 2018 12:18:38 +0100
Subject: [PATCH 1/3] CODING_STYLE: remove duplicate _exit() entry

Signed-off-by: Christian Brauner 
---
 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 
Date: Fri, 2 Mar 2018 12:29:30 +0100
Subject: [PATCH 2/3] CODING_STYLE: clang-format

Signed-off-by: Christian Brauner 
---
 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: 100
+  BinPackArguments: true
+  BinPackParameters: true
+  AllowAllParametersOfDeclarationOnNextLine: false
+  AlignAfterOpenBracket: true
+  SpacesInSquareBrackets: false
+  SpacesInCStyleCastParentheses: false
+  SpaceInEmptyParentheses: false
+  SpaceBeforeParens: ControlStatements
+  SpaceAfterCStyleCast: false
+  SortIncludes: true
+  PenaltyReturnTypeOnItsOwnLine: 1
+  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 
Date: Fri, 2 Mar 2018 12:50:55 +0100
Subject: [PATCH 3/3] CODING_STYLE: arrays of structs

Signed-off-by: Christian Brauner 
---
 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 },