On Fri, May 11, 2012 at 01:52:31PM +1000, Greg Banks wrote: > - Cyrus has multiple definitions of fatal(), with three different sets > of parameters. Apart from the basic sillyness of this arrangement, > it's just *asking* for unnecessary drama once you add shared libraries > into the mix. At the very least we should ensure they all have exactly > the same parameters. Better would be to push the definition into > libcyrus_min() and provide an atfatal() which behaves like atexit(), > i.e. allows code to register cleanup handlers to be called from > fatal(). Then all the calls to foo_done() all over the place could use > that technique. We could also add __attribute__((noreturn)) and > provide a printf-like variant (like fatalf() in masterconf.c) too.
I also want to deal with the stupidity of having two different configuration systems which both read the same config data, one of which pre-seeds the other during startup. It's insane. cyrusmaster should just include the same config reading code. Bron.