?¡ëPNG
IHDR ? f ??C1 sRGB ??¨¦ gAMA ¡À?¨¹a pHYs ? ??o¡§d GIDATx^¨ª¨¹L¡±¡Âe¡ÂY?a?("Bh?_¨°???¡é¡ì?q5k?*:t0A-o??£¤]VkJ¡éM??f?¡À8\k2¨ªll¡ê1]q?¨´???T
Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in /home/user1137782/www/china1.by/classwithtostring.php on line 86
Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 213
Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 214
Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 215
Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 216
Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 217
Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 218
Plugins
=======
Plugins in Dovecot are really simple. They basically have two functions:
* _init(module) is called when 'module_dir_init()' is called.
* _deinit() is called when 'module_dir_deinit()' or
'module_dir_unload()' is called.
The is the short version of the plugin name, based on the
filename. For example if the filename is 'lib11_imap_quota_plugin.so', the
is "imap_quota" and the init function to be called is
imap_quota_plugin_init().
Versioning
----------
Since different Dovecot versions can have different APIs, your plugin should
usually also define_version, like:
---%<-------------------------------------------------------------------------
const char *imap_quota_plugin_version = DOVECOT_VERSION;
---%<-------------------------------------------------------------------------
If the version string in plugin doesn't match the version of the running
binary, the plugin loading fails. The DOVECOT_VERSION is defined in Dovecot's
'config.h', which you're typically including.
Dependencies
------------
Some plugins depend on another one. In some systems (but not all) it's possible
to handle this by giving a nicer error message than "symbol xyz not found".
There are two steps for this:
First create _dependencies array listing plugin names that the
plugin depends on, like:
---%<-------------------------------------------------------------------------
const char *imap_quota_plugin_dependencies[] = { "quota", NULL };
---%<-------------------------------------------------------------------------
Then you'll also have to make the plugin .so binary link to the other plugins:
---%<-------------------------------------------------------------------------
if PLUGIN_DEPS
lib11_imap_quota_plugin_la_LIBADD = \
../quota/lib10_quota_plugin.la
endif
---%<-------------------------------------------------------------------------
PLUGIN_DEPS is set only if plugin dependencies are actually supported.
Otherwise the build might fail or plugin loading might fail.
Once all this is done, trying to load imap_quota plugin without quota plugin
gives a nice error message:
---%<-------------------------------------------------------------------------
Error: Can't load plugin imap_quota_plugin: Plugin quota must be loaded also
---%<-------------------------------------------------------------------------
(This file was created from the wiki on 2011-01-13 04:52)