CODING_STYLE: add languages to highlight

parent b629739c
...@@ -71,12 +71,12 @@ ...@@ -71,12 +71,12 @@
- Any comments that are added must use `/* */`. - Any comments that are added must use `/* */`.
- All comments should start on the same line as the opening `/*`. - All comments should start on the same line as the opening `/*`.
- Single-line comments should simply be placed between `/* */`. For example: - Single-line comments should simply be placed between `/* */`. For example:
``` ```C
/* Define pivot_root() if missing from the C library */ /* Define pivot_root() if missing from the C library */
``` ```
- Multi-line comments should end with the closing `*/` on a separate line. For - Multi-line comments should end with the closing `*/` on a separate line. For
example: example:
``` ```C
/* At this point the old-root is mounted on top of our new-root /* At this point the old-root is mounted on top of our new-root
* To unmounted it we must not be chdir()ed into it, so escape back * To unmounted it we must not be chdir()ed into it, so escape back
* to old-root. * to old-root.
...@@ -96,7 +96,7 @@ ...@@ -96,7 +96,7 @@
- They should be descriptive, without being needlessly long. It is best to just - They should be descriptive, without being needlessly long. It is best to just
use already existing error messages as examples. use already existing error messages as examples.
- Examples of acceptable error messages are: - Examples of acceptable error messages are:
``` ```C
SYSERROR("Failed to create directory \"%s\"", path); SYSERROR("Failed to create directory \"%s\"", path);
WARN("\"/dev\" directory does not exist. Proceeding without autodev being set up"); WARN("\"/dev\" directory does not exist. Proceeding without autodev being set up");
``` ```
...@@ -118,7 +118,7 @@ ...@@ -118,7 +118,7 @@
the function in the `*.c` file the function signature should not be preceded the function in the `*.c` file the function signature should not be preceded
by the `extern` keyword. When declaring the function signature in the `*.h` by the `extern` keyword. When declaring the function signature in the `*.h`
file it must be preceded by the `extern` keyword. For example: file it must be preceded by the `extern` keyword. For example:
``` ```C
/* Valid function definition in a *.c file */ /* Valid function definition in a *.c file */
ssize_t lxc_write_nointr(int fd, const void* buf, size_t count) ssize_t lxc_write_nointr(int fd, const void* buf, size_t count)
{ {
...@@ -151,7 +151,7 @@ ...@@ -151,7 +151,7 @@
- put standard types defined by libc before types defined by LXC - put standard types defined by libc before types defined by LXC
- put multiple declarations of the same type on the same line - put multiple declarations of the same type on the same line
- Examples of good declarations can be seen in the following function: - Examples of good declarations can be seen in the following function:
``` ```C
int lxc_clear_procs(struct lxc_conf *c, const char *key) int lxc_clear_procs(struct lxc_conf *c, const char *key)
{ {
struct lxc_list *it, *next; struct lxc_list *it, *next;
...@@ -188,7 +188,7 @@ ...@@ -188,7 +188,7 @@
single-line conditions. If there is at least one non-single-line single-line conditions. If there is at least one non-single-line
condition `{}` must be used. condition `{}` must be used.
- For example: - For example:
``` ```C
/* no brackets needed */ /* no brackets needed */
if (size > INT_MAX) if (size > INT_MAX)
return -EFBIG; return -EFBIG;
...@@ -227,7 +227,7 @@ ...@@ -227,7 +227,7 @@
- When checking whether a function not returning booleans was successful or not - When checking whether a function not returning booleans was successful or not
the returned value must be assigned before it is checked (`str{n}cmp()` the returned value must be assigned before it is checked (`str{n}cmp()`
functions being one notable exception). For example: functions being one notable exception). For example:
``` ```C
/* assign value to "ret" first */ /* assign value to "ret" first */
ret = mount(sourcepath, cgpath, "cgroup", remount_flags, NULL); ret = mount(sourcepath, cgpath, "cgroup", remount_flags, NULL);
/* check whether function was successful */ /* check whether function was successful */
...@@ -238,7 +238,7 @@ ...@@ -238,7 +238,7 @@
} }
``` ```
Functions returning booleans can be checked directly. For example: Functions returning booleans can be checked directly. For example:
``` ```C
extern bool lxc_string_in_array(const char *needle, const char **haystack); extern bool lxc_string_in_array(const char *needle, const char **haystack);
/* check right away */ /* check right away */
...@@ -256,7 +256,7 @@ ...@@ -256,7 +256,7 @@
treated as such since they don't really behave like boolean functions. So treated as such since they don't really behave like boolean functions. So
`if (!str{n}cmp())` and `if (str{n}cmp())` checks must not be used. Good `if (!str{n}cmp())` and `if (str{n}cmp())` checks must not be used. Good
examples are found in the following functions: examples are found in the following functions:
``` ```C
static int set_config_hooks(const char *key, const char *value, static int set_config_hooks(const char *key, const char *value,
struct lxc_conf *lxc_conf, void *data) struct lxc_conf *lxc_conf, void *data)
...@@ -321,7 +321,7 @@ rules to use them: ...@@ -321,7 +321,7 @@ rules to use them:
- **only** jump downwards unless you are handling `EAGAIN` errors and want to - **only** jump downwards unless you are handling `EAGAIN` errors and want to
avoid `do-while` constructs. avoid `do-while` constructs.
- An example of a good usage of `goto` is: - An example of a good usage of `goto` is:
``` ```C
static int set_config_idmaps(const char *key, const char *value, static int set_config_idmaps(const char *key, const char *value,
struct lxc_conf *lxc_conf, void *data) struct lxc_conf *lxc_conf, void *data)
{ {
...@@ -394,7 +394,7 @@ rules to use them: ...@@ -394,7 +394,7 @@ rules to use them:
- If you implement a custom cleanup function to e.g. free a complex type - If you implement a custom cleanup function to e.g. free a complex type
you declared you must ensure that the object's null type is handled and you declared you must ensure that the object's null type is handled and
treated as a NOOP. For example: treated as a NOOP. For example:
``` ```C
void lxc_free_array(void **array, lxc_free_fn element_free_fn) void lxc_free_array(void **array, lxc_free_fn element_free_fn)
{ {
void **p; void **p;
...@@ -410,7 +410,7 @@ rules to use them: ...@@ -410,7 +410,7 @@ rules to use them:
descriptors and sets the already closed file descriptors to `-EBADF`. On the descriptors and sets the already closed file descriptors to `-EBADF`. On the
next call it can simply check whether the file descriptor is positive and next call it can simply check whether the file descriptor is positive and
move on if it isn't: move on if it isn't:
``` ```C
static void lxc_put_attach_clone_payload(struct attach_clone_payload *p) static void lxc_put_attach_clone_payload(struct attach_clone_payload *p)
{ {
if (p->ipc_socket >= 0) { if (p->ipc_socket >= 0) {
...@@ -439,7 +439,7 @@ rules to use them: ...@@ -439,7 +439,7 @@ rules to use them:
default do not need to be cast to `(void)`. Classical candidates are default do not need to be cast to `(void)`. Classical candidates are
`close()` and `fclose()`. `close()` and `fclose()`.
- A good example is: - A good example is:
``` ```C
for (i = 0; hierarchies[i]; i++) { for (i = 0; hierarchies[i]; i++) {
char *fullpath; char *fullpath;
char *path = hierarchies[i]->fullcgpath; char *path = hierarchies[i]->fullcgpath;
...@@ -521,7 +521,7 @@ rules to use them: ...@@ -521,7 +521,7 @@ rules to use them:
- Please always use the affected file (without the file type suffix) or module - Please always use the affected file (without the file type suffix) or module
as a prefix in the commit message. as a prefix in the commit message.
- Examples of good commit messages are: - Examples of good commit messages are:
``` ```Diff
commit b87243830e3b5e95fa31a17cf1bfebe55353bf13 commit b87243830e3b5e95fa31a17cf1bfebe55353bf13
Author: Felix Abecassis <fabecassis@nvidia.com> Author: Felix Abecassis <fabecassis@nvidia.com>
Date: Fri Feb 2 06:19:13 2018 -0800 Date: Fri Feb 2 06:19:13 2018 -0800
...@@ -559,7 +559,7 @@ rules to use them: ...@@ -559,7 +559,7 @@ rules to use them:
#### Keep Arrays of `struct`s Aligned Horizontally When Initializing #### Keep Arrays of `struct`s Aligned Horizontally When Initializing
- Arrays of `struct`s are: - Arrays of `struct`s are:
``` ```C
struct foo_struct { struct foo_struct {
int n; int n;
int m; int m;
...@@ -577,7 +577,7 @@ rules to use them: ...@@ -577,7 +577,7 @@ rules to use them:
- Always leave a single space between the largest member of the current column - Always leave a single space between the largest member of the current column
and the member in the next column. and the member in the next column.
- A good example is - A good example is
``` ```C
struct signame { struct signame {
int num; int num;
const char *name; const char *name;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment