====== Loadable Modules ====== //Author: Aaron Stone// \\ //Last changed: Jan 10, 2005// \\ **First SVN appearance: Nov 25, 2005** Using GLib's module loading interface, it is easy to dynamically load the convenience libraries in mysql/, pgsql/, and sqlite/ so that all database drivers can be built at compile time, and the one you want / have installed can be loaded at run time. This is a big, big deal for packaging DBMail for inclusion in distributions, because most binary distributions rather dislike needing to maintain two sets of mutually-exclusive packages for the same thing. The debian packages for 2.1 have finally caught up with the new situation. They now provide separate packages for all loadable modules, and a single base packages with all the binaries and the common libdbmail library. This means that apart from some cosmetics, this is a done deal. Necessary changes: * De-integrate the convenience libraries for the three database drivers in 2.1.SVN. Done, AS. Improved, PJS.] * Wrappers for db_function() calls to db->function() in dbmodule.c [done, AS] * Create a function called db_load_driver() that populates the function table. [done, AS]. * Updates to acinclude.m4 to set up the right tests and defines. [done, AS]. * Would be nice to have ./configure give a summary table at the end, too. [done, AS]. Things I've noticed: * The SQLite implementation is for SQLite 2.x, needs some updates to support the 3.x API. **[todo]** * Needs to collect both compile time and runtime list of places to look for the library. [done, PJS.] Authentication: * Is the db loadable layer decent to copy for auth? Is there a more generic way to code this? [Nah. Done, AS.] * Replace -DAUTHLDAP sections with calls to the module (that are no-op or do stuff, as needed). [done, PJS] Sieve: * Modularize sort/ and make sort_sieve.so a loadable module, too. [Done, AS.] * Replace -DSIEVE sections with calls to the module (that are no-op or do stuff, as needed). [Done, AS.]