2021-06-26 17:19:43 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# This script fetches .clang-format from the Linux kernel
|
|
|
|
# and slightly adapts it for CRIU.
|
|
|
|
|
|
|
|
URL="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/.clang-format?h=v5.13"
|
|
|
|
|
|
|
|
curl -s "${URL}" | sed -e "
|
|
|
|
s,^\( *\)#\([A-Z]\),\1\2,g;
|
|
|
|
s,ControlStatements,ControlStatementsExceptForEachMacros,g;
|
|
|
|
s,ColumnLimit: 80,ColumnLimit: 120,g;
|
|
|
|
s,Intended for clang-format >= 4,Intended for clang-format >= 11,g;
|
2023-01-16 18:22:07 +03:00
|
|
|
s,ForEachMacros:,ForEachMacros:\n - 'for_each_bit',g;
|
2021-06-26 17:19:43 +00:00
|
|
|
s,ForEachMacros:,ForEachMacros:\n - 'for_each_pstree_item',g;
|
|
|
|
s,\(AlignTrailingComments:.*\)$,\1\nAlignConsecutiveMacros: true,g;
|
clang-format: enable AlignTrailingComments
Code becomes much more human-readable after enabling it.
Example 1:
Before:
```
struct file_desc {
u32 id; /* File id, unique */
struct hlist_node hash; /* Descriptor hashing and lookup */
struct list_head fd_info_head; /* Chain of fdinfo_list_entry-s with same ID and type but different pids */
struct file_desc_ops *ops; /* Associated operations */
struct list_head fake_master_list; /* To chain in the list of file_desc, which don't
have a fle in a task, that having permissions */
};
```
After:
```
struct file_desc {
u32 id; /* File id, unique */
struct hlist_node hash; /* Descriptor hashing and lookup */
struct list_head fd_info_head; /* Chain of fdinfo_list_entry-s with same ID and type but different pids */
struct file_desc_ops *ops; /* Associated operations */
struct list_head fake_master_list; /* To chain in the list of file_desc, which don't
* have a fle in a task, that having permissions */
};
```
Example 2:
Before:
```
enum fsconfig_command {
FSCONFIG_SET_FLAG = 0, /* Set parameter, supplying no value */
FSCONFIG_SET_STRING = 1, /* Set parameter, supplying a string value */
FSCONFIG_SET_BINARY = 2, /* Set parameter, supplying a binary blob value */
FSCONFIG_SET_PATH = 3, /* Set parameter, supplying an object by path */
FSCONFIG_SET_PATH_EMPTY = 4, /* Set parameter, supplying an object by (empty) path */
FSCONFIG_SET_FD = 5, /* Set parameter, supplying an object by fd */
FSCONFIG_CMD_CREATE = 6, /* Invoke superblock creation */
FSCONFIG_CMD_RECONFIGURE = 7, /* Invoke superblock reconfiguration */
};
```
After:
```
enum fsconfig_command {
FSCONFIG_SET_FLAG = 0, /* Set parameter, supplying no value */
FSCONFIG_SET_STRING = 1, /* Set parameter, supplying a string value */
FSCONFIG_SET_BINARY = 2, /* Set parameter, supplying a binary blob value */
FSCONFIG_SET_PATH = 3, /* Set parameter, supplying an object by path */
FSCONFIG_SET_PATH_EMPTY = 4, /* Set parameter, supplying an object by (empty) path */
FSCONFIG_SET_FD = 5, /* Set parameter, supplying an object by fd */
FSCONFIG_CMD_CREATE = 6, /* Invoke superblock creation */
FSCONFIG_CMD_RECONFIGURE = 7, /* Invoke superblock reconfiguration */
};
```
Example 3:
Before:
```
ret = libnet_build_tcp(ntohs(sk->dst_addr->v4.sin_port), /* source port */
ntohs(sk->src_addr->v4.sin_port), /* destination port */
data->inq_seq, /* sequence number */
data->outq_seq - data->outq_len, /* acknowledgement num */
flags, /* control flags */
data->rcv_wnd, /* window size */
0, /* checksum */
10, /* urgent pointer */
LIBNET_TCP_H + 20, /* TCP packet size */
NULL, /* payload */
0, /* payload size */
l, /* libnet handle */
0); /* libnet id */
```
After:
```
ret = libnet_build_tcp(ntohs(sk->dst_addr->v4.sin_port), /* source port */
ntohs(sk->src_addr->v4.sin_port), /* destination port */
data->inq_seq, /* sequence number */
data->outq_seq - data->outq_len, /* acknowledgement num */
flags, /* control flags */
data->rcv_wnd, /* window size */
0, /* checksum */
10, /* urgent pointer */
LIBNET_TCP_H + 20, /* TCP packet size */
NULL, /* payload */
0, /* payload size */
l, /* libnet handle */
0); /* libnet id */
```
Example 4:
Before:
```
static struct testcase __testcases[] = {
{ 2, 1, 2, 1, 2, 1 }, /* session00 */
{ 4, 2, 4, 2, 4, 1 }, /* |\_session00 */
{ 15, 4, 4, 4, 15, 1 }, /* | |\_session00 */
{ 16, 4, 4, 4, 15, 1 }, /* | \_session00 */
{ 17, 4, 4, 4, 17, 0 }, /* | |\_session00 */
{ 18, 4, 4, 4, 17, 1 }, /* | \_session00 */
{ 5, 2, 2, 2, 2, 1 }, /* |\_session00 */
{ 8, 2, 8, 2, 8, 1 }, /* |\_session00 */
{ 9, 8, 2, 2, 2, 1 }, /* | \_session00 */
{ 10, 2, 10, 2, 10, 1 }, /* |\_session00 */
{ 11, 10, 11, 2, 11, 1 }, /* | \_session00 */
{ 12, 11, 2, 2, 2, 1 }, /* | \_session00 */
{ 13, 2, 2, 2, 2, 0 }, /* \_session00 */
{ 3, 13, 2, 2, 2, 1 }, /* session00 */
{ 6, 2, 6, 2, 6, 0 }, /* \_session00 */
{ 14, 6, 6, 6, 6, 1 }, /* session00 */
};
```
After:
```
static struct testcase __testcases[] = {
{ 2, 1, 2, 1, 2, 1 }, /* session00 */
{ 4, 2, 4, 2, 4, 1 }, /* |\_session00 */
{ 15, 4, 4, 4, 15, 1 }, /* | |\_session00 */
{ 16, 4, 4, 4, 15, 1 }, /* | \_session00 */
{ 17, 4, 4, 4, 17, 0 }, /* | |\_session00 */
{ 18, 4, 4, 4, 17, 1 }, /* | \_session00 */
{ 5, 2, 2, 2, 2, 1 }, /* |\_session00 */
{ 8, 2, 8, 2, 8, 1 }, /* |\_session00 */
{ 9, 8, 2, 2, 2, 1 }, /* | \_session00 */
{ 10, 2, 10, 2, 10, 1 }, /* |\_session00 */
{ 11, 10, 11, 2, 11, 1 }, /* | \_session00 */
{ 12, 11, 2, 2, 2, 1 }, /* | \_session00 */
{ 13, 2, 2, 2, 2, 0 }, /* \_session00 */
{ 3, 13, 2, 2, 2, 1 }, /* session00 */
{ 6, 2, 6, 2, 6, 0 }, /* \_session00 */
{ 14, 6, 6, 6, 6, 1 }, /* session00 */
};
```
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
2021-10-28 17:15:52 +03:00
|
|
|
s,AlignTrailingComments: false,AlignTrailingComments: true,g;
|
2021-06-26 17:19:43 +00:00
|
|
|
" > .clang-format
|