X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=CODING_STYLE;h=dbadfbdb5441adf3ae53a0ebec458bf2726cd151;hp=91f09e80a87472f11c65a4f68fb51861a27a38bc;hb=7f231684fd2943d4d5585022ec8595ea1b67cf8a;hpb=ae695cb23d75f9b43f0a302285bfae6a7565d6cc diff --git a/CODING_STYLE b/CODING_STYLE index 91f09e80a..dbadfbdb5 100644 --- a/CODING_STYLE +++ b/CODING_STYLE @@ -210,11 +210,12 @@ 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() +- We never use the POSIX version of basename() (which glibc defines it in + libgen.h), only the GNU version (which glibc defines in string.h). + The only reason to include libgen.h 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! + using the POSIX 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" @@ -292,3 +293,24 @@ - When returning a return code from main(), please preferably use EXIT_FAILURE and EXIT_SUCCESS as defined by libc. + +- The order in which header files are included doesn't matter too + much. However, please try to include the headers of external + libraries first (these are all headers enclosed in <>), followed by + the headers of our own public headers (these are all headers + starting with "sd-"), internal utility libraries from src/shared/, + followed by the headers of the specific component. Or in other + words: + + #include + #include "sd-daemon.h" + #include "util.h" + #include "frobnicator.h" + + Where stdio.h is a public glibc API, sd-daemon.h is a public API of + our own, util.h is a utility library header from src/shared, and + frobnicator.h is an placeholder name for any systemd component. The + benefit of following this ordering is that more local definitions + are always defined after more global ones. Thus, our local + definitions will never "leak" into the global header files, possibly + altering their effect due to #ifdeffery.