So you've decided what kind of module you want to write (system or user). You've created
a directory for your module in the appropriate location and you've read the Citadel Coding
Style document.
If you are writing a user module then feel free to ignore everything in the Citadel Coding Style
document. If you are writing a system module you can ignore it too but we'd rather you didn't.
Even if you are writing a user module it is a good idea to follow the Citadel Coding Style
document practice as you may like to have your module included at a later date.
Either way there are a few golden rules about writing modules. First we'll start with the
absolutely must do things.
Must DO
One of your module source files must contain one and only one function called
CTDL_MODULE_INIT(module_name), more on this later.
Each of your module source files must #include "ctdl_module.h"
At the moment you must edit the Makefile.in to have your module compiled and linked it
(More on this in Makefile.in and modules).
Not many of those...
Things your module should/should NOT do
All of your functions should be named in accordance with the Citadel Coding style for
private functions. That is they should be named like save_to_ldap
None of your functions should be shared to the outside world. So you shouldn't be declaring
functions with names like CtdlGetUser
You should not try to #include any file from the main source directory or from any other
module directory.
You should not attempt to call a function defined in any other module or other module
directory.
You should not try to call a Citadel core function that does not have a name like
CtdlAccessCheck (OK, there are lots of exceptions to that one but we are working on it).
You may call any function documented in the Module API document.