chiark / gitweb /
sd-bus: add extra assert check
[elogind.git] / CODING_STYLE
index ca3b5183f901037a1e6b201e13f231f86fa8b9db..0b1f809e79717812c0fdd007e1ef5786a5f4e916 100644 (file)
@@ -1,6 +1,9 @@
-
 - 8ch indent, 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
+  then again, don't overdo it, ~140ch should be enough really.
+
 - Variables and functions *must* be static, unless they have a
   prototype, and are supposed to be exported.
 
@@ -15,7 +18,7 @@
 - For robustness reasons, destructors should be able to destruct
   half-initialized objects, too
 
-- Error codes are returned as negative Exxx. i.e. return -EINVAL. There
+- Error codes are returned as negative Exxx. e.g. return -EINVAL. There
   are some exceptions: for constructors, it is OK to return NULL on
   OOM. For lookup functions, NULL is fine too for "not found".
 
@@ -54,7 +57,7 @@
   doing something wrong!
 
 - Stay uniform. For example, always use "usec_t" for time
-  values. Do not usec mix msec, and usec and whatnot.
+  values. Do not mix usec and msec, and usec and whatnot.
 
 - Make use of _cleanup_free_ and friends. It makes your code much
   nicer to read!
 
   But it is OK if you do not.
 
+- Single-line "if" blocks should not be enclosed in {}. Use this:
+
+  if (foobar)
+          waldo();
+
+  instead of this:
+
+  if (foobar) {
+          waldo();
+  }
+
 - Do not write "foo ()", write "foo()".
 
 - Please use streq() and strneq() instead of strcmp(), strncmp() where applicable.
   function or a "non-logging" function. "Logging" functions do logging
   on their own, "non-logging" function never log on their own and
   expect their callers to log. All functions in "library" code,
-  i.e. in src/shared/ and suchlike must be "non-logging". Everytime a
+  i.e. in src/shared/ and suchlike must be "non-logging". Every time a
   "logging" function calls a "non-logging" function, it should log
   about the resulting errors. If a "logging" function calls another
   "logging" function, then it should not generate log messages, so
   is_main_thread() to detect whether the calling thread is the main
   thread.
 
-- Option parsing:
+- Command line option parsing:
   - Do not print full help() on error, be specific about the error.
   - Do not print messages to stdout on error.
   - Do not POSIX_ME_HARDER unless necessary, i.e. avoid "+" in option string.
+
+- 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.