CGUL

From PDP/Grid Wiki
Jump to navigationJump to search

CGUL: The C Grand Unified Library

File:Cgul.jpg
Actually an albatros

Purpose

The CGUL's purpose is to centralize library code used by various security middleware components.

Features

  • Access to Unix privilege information
  • Networking
  • File handling
  • Logging
  • SSL wrappers

C code conventions

  • Code should be portable across POSIX-compliant platforms
  • Header files should be regarded as documentation
  • Prototypes in header files should contain variable names for clarity
  • Header files should not contain memory allocation or initializers
  • The use of global variables is highly discouraged
  • Code should be commented using Doxygen syntax (Cheat sheet)
  • Logging should only be done through CGUL logging function
  • The use of stdout or stderr directly is highly discouraged - stderr may only be accessed through the logging function
  • Comments should describe whether use of a standard library function is thread-safe or not
  • Comments should describe relevant or non-obvious side effects of a standard library function
  • Thread-safe functions should have their names suffixed with '_r'
  • Internal components of the CGUL should not depend on each other (except maybe logging)

Unresolved issues

Code authorship attribution

Next to including a general AUTHORS file, it might be possible to generate a list of specific authors per file using 'svn blame' information. This can be catted into the source code files in a make task.

SVN Activity

View into SVN grid-mw-security/cgul