You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
xrdp-proprietary/coding_style.md

3.1 KiB

XRdp Coding Style

The coding style used by XRdp is described below.

The XRdp project uses astyle (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"

This coding style is a work in progress and is still evolving.

Language Standard

Try to make all code compile with both C and C++ compiler. C++ is more strict, which makes the code safer.

Indentation

  • 4 spaces per indent
  • No tabs for any indents

if (fd < 0)
{
    return -1;
}

Line wrapping

  • Keep lines not longer than 80 chars
  • Align wrapped argument to the first argument

log_message("connection aborted: error %d",
            ret);

Variable names

  • Use lowercase with underscores as needed
  • Don't use camelCase
  • Preprocessor constants should be uppercase

#define BUF_SIZE 1024
int fd;
int bytes_in_stream;

Variable declaration

  • Each variable is declared on a separate line

int i;
int j;

Whitespace

  • 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);

Function declarations

  • Use newline before function name

static int
value_ok(int val)
{
    return (val >= 0);
}

Braces

  • 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;
    }
}

if statements

  • 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);
}

for statements

  • Always use braces
  • Put both braces on separate lines

for (i = 0; i < 10; i++)
{
    printf("i = %d\n", i);
}

while and do while statements

  • Always use braces
  • while after the closing brace is on the same line

while (cptr)
{
    cptr—;
}

do
{
    cptr--;
} while (cptr);

switch statements

  • 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");
}

Comments

Use /* */ for comments Don't use //