chiark / gitweb /
sd-rtnl: process - only apply matches to broadcast messages
[elogind.git] / CODING_STYLE
index 30d24e56a6e1fa4ec9e40896f47096451b629f7b..b687e729f4676c3c91ce054eeced49322a4e339f 100644 (file)
 - 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.
+  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");