On 07/26/2015 10:09 PM, Jakub Hrozek wrote:
On Thu, Jul 23, 2015 at 06:21:25PM +0200, Michal Židek wrote:
Hi,

in SSSD we use the freeipa coding guidelines which are located here:
http://www.freeipa.org/page/Coding_Style

However this coding style guide is already dated and there are
some rules we follow in SSSD which are not mentioned in the guide
and also there are some C language features that we would like to
start using in certain way but their usage should be covered in the
coding style guide. So, update is needed (at least for SSSD).

I would like to start discussion about what to add to the coding
guide (and maybe what to remove), but before that, I would like
propose to move the coding style guide to SSSD wiki and just add link
to it to FreeIPA wiki. The reason is that unlike FreeIPA, most of the
SSSD code is written in C and SSSD team will more likely update and
modify the guide according to new practices used in upstream
development, where FreeIPA is mostly Python project and C coding
style probably does not need revision as often. So SSSD wiki
seems like more appropriate place.

Another possibility would be to fork the FreeIPA style and
maintain SSSD coding style guide separately. But I think linking
the two is better option, because the two projects are closely
related and it makes sense to share the coding style guidelines.

So, my first question is, Is someone against moving the C coding
style guide to SSSD wiki and adding link to it on FreeIPA wiki?

I don't really mind where the coding style is located as long as it's
on one place (no forks please) and the existing link points to a new
version (if any).

As per updating the coding standards, I would like to propose to:
     - explicitly say that C99 is fine to use. It's 2015 and any compiler
       that doesn't support C99 at this point is probably dead and should
       be avoided (Hello, MSVC!). We use stdbool.h and variadic macros
       already anyway.
     - Line-comments (//, aka C++ comments) should be still avoided,
       though
     - Variable Length arrays are very helpful, but explicitly mention
       they should be used with caution, especially if array size might
       come from the user
     - Also, I would warn about interleaved variable declarations. I
       think it's fine to declare some helper variable inside a for loop
       for example, but generally it might be better to refactor the
       function if we find out there's so many variables that the code
       author ends up declaring them inside blocks.

Personally, I would even go as far as to allow the __cleanup__
attribute. I really like how the systemd codebase uses it to define
helper "destructors" like:
     int closep(int fd)
     {
         if (fd >= 0) {
             close(fd);
         }
     }

     #define _cleanup_close_ _cleanup_(closep)

Then safely declare a file descriptor as:
     _cleanup_close_ int fdf = -1;
..and stop worrying about closing the fd in all branches.

It's not portable, but seriously...are there any compilers except gcc
and clang that are used at all these days??


Location of the C coding style guide was discussed on FreeIPA dev call. Conclusion was the same as Jakub's opinion: no fork, link from the other, it doesn't matter if it is in SSSD or FreeIPA wiki.
--
Petr Vobornik

--
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code

Reply via email to