-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Coding Style
The coding style used by xrdp is described below.
The xrdp project uses astyle 3.1 (artistic style) to format the code. Astyle
requires a configuration file that describes how you want your code
formatted. This file is present in the xrdp root directory and is named
astyle_config.as
.
Here is how we run the astyle command:
astyle --options=/path/to/file/astyle_config.as "*.c"
Alternatively, set the environment variable ARTISTIC_STYLE_PROJECT_OPTIONS
to astyle_config.as
. Then astyle
can be invoked anywhere in the xrdp source tree and it will find the correct file.
This coding style is a work in progress and is still evolving.
- 4 spaces per indent
- No tabs for any indents
☞
if (fd < 0)
{
return -1;
}
- Keep lines shorter than 80 chars
- Align wrapped argument to the first argument
☞
log_message("connection aborted: error %d",
ret);
- Use lowercase with underscores as needed
- Don't use camelCase
☞
int fd;
int bytes_in_stream;
- Each variable is declared on a separate line
☞
int i;
int j;
- Use blank lines to group statements
- Use at most one empty line between statements
- For pointers and references, use a single space before * or & but not after
- Use one space after a cast
- No space before square brackets
☞
char *cptr;
int *iptr;
cptr = (char *) malloc(1024);
write(fd, &buf[12], 16);
- Use newline before function name
☞
static int
value_ok(int val)
{
return (val >= 0);
}
- Opening brace is always on a separate line
- Align braces with the line preceding the opening brace
☞
struct stream
{
int flags;
char *data;
};
void
process_data(struct stream *s)
{
if (stream == NULL)
{
return;
}
}
- Always use braces
- Put both braces on separate lines
☞
if (val <= 0xff)
{
out_uint8(s, val);
}
else if (val <= 0xffff)
{
out_uint16_le(s, val);
}
else
{
out_uint32_le(s, val);
}
- Always use braces
- Put both braces on separate lines
☞
for (i = 0; i < 10; i++)
{
printf("i = %d\n", i);
}
- Always use braces
-
while
after the closing brace is on the same line
☞
while (cptr)
{
cptr—;
}
do
{
cptr--;
} while (cptr);
- Indent
case
once - Indent statements under
case
one more time - Put both braces on separate lines
☞
switch (cmd)
{
case READ:
read(fd, buf, 1024);
break;
default:
printf("bad cmd\n");
}
When invoking a function via a variable containing a pointer to the function, it is preferred to use a pointer-to-function type rather than a function designator as defined in the C standard, i.e:-
☞
static int
sum(int a, int b)
{
return a + b;
}
. . .
{
int (*my_func)(int, int); // Declare pointer-to-function variable
int total;
my_func = sum;
total = my_func(1, 2); // Invocation via function pointer
total = (*my_func)(1, 2); // Invocation via function designator
}