X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=CODING_STYLE;h=b687e729f4676c3c91ce054eeced49322a4e339f;hp=4439ee6099abb707a4114a8b32b7e94608a75cea;hb=d422e52a3523ad0955bec4f9fbed46e234d28590;hpb=7f8bf08f9036de419ad14c55b61eda74c6659d3a diff --git a/CODING_STYLE b/CODING_STYLE index 4439ee609..b687e729f 100644 --- a/CODING_STYLE +++ b/CODING_STYLE @@ -1,4 +1,5 @@ -- 8ch indent, no tabs +- 8ch indent, no tabs, except for files in man/ which are 2ch indent, + and still no tabs - Don't break code lines too eagerly. We do *not* force line breaks at 80ch, all of today's screens should be much larger than that. But @@ -190,3 +191,38 @@ - Do not write functions that clobber call-by-reference variables on failure. Use temporary variables for these cases and change the passed in variables only on success. + +- When you allocate a file descriptor, it should be made O_CLOEXEC + right from the beginning, as none of our files should leak to forked + binaries by default. Hence, whenever you open a file, O_CLOEXEC must + be specified, right from the beginning. This also applies to + sockets. Effectively this means that all invocations to: + + a) open() must get O_CLOEXEC passed + b) socket() and socketpair() must get SOCK_CLOEXEC passed + c) recvmsg() must get MSG_CMSG_CLOEXEC set + d) F_DUPFD_CLOEXEC should be used instead of F_DUPFD, and so on + +- We never use the XDG version of basename(). glibc defines it in + libgen.h. The only reason to include that file is because dirname() + is needed. Everytime you need that please immediately undefine + basename(), and add a comment about it, so that no code ever ends up + using the XDG version! + +- Use the bool type for booleans, not integers. One exception: in public + headers (i.e those in src/systemd/sd-*.h) use integers after all, as "bool" + is C99 and in our public APIs we try to stick to C89 (with a few extension). + +- When you invoke certain calls like unlink(), or mkdir_p() and you + know it is safe to ignore the error it might return (because a later + call would detect the failure anyway, or because the error is in an + error path and you thus couldn't do anything about it anyway), then + make this clear by casting the invocation explicitly to (void). Code + checks like Coverity understand that, and will not complain about + ignored error codes. Hence, please use this: + + (void) unlink("/foo/bar/baz"); + + instead of just this: + + unlink("/foo/bar/baz");