dovecot-2.0: module_dir_load(): Support multiple binaries for ch...
dovecot at dovecot.org
dovecot at dovecot.org
Thu Aug 12 15:51:20 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/4b59b19628b1
changeset: 11980:4b59b19628b1
user: Timo Sirainen <tss at iki.fi>
date: Thu Aug 12 13:51:12 2010 +0100
description:
module_dir_load(): Support multiple binaries for checking dependency
diffstat:
src/lib/module-dir.c | 22 ++++++++++++++++------
1 files changed, 16 insertions(+), 6 deletions(-)
diffs (40 lines):
diff -r a75589746450 -r 4b59b19628b1 src/lib/module-dir.c
--- a/src/lib/module-dir.c Thu Aug 12 13:50:01 2010 +0100
+++ b/src/lib/module-dir.c Thu Aug 12 13:51:12 2010 +0100
@@ -71,20 +71,30 @@
module_check_wrong_binary_dependency(const struct module_dir_load_settings *set,
struct module *module)
{
- const char *symbol_name, *binary_dep;
+ const char *symbol_name, *binary_dep, *const *names;
+ string_t *errstr;
+
+ if (set->binary_name == NULL)
+ return TRUE;
symbol_name = t_strconcat(module->name, "_binary_dependency", NULL);
binary_dep = dlsym(module->handle, symbol_name);
if (binary_dep == NULL)
return TRUE;
- if (set->binary_name == NULL ||
- strcmp(binary_dep, set->binary_name) == 0)
+ names = t_strsplit(binary_dep, " ");
+ if (str_array_find(names, set->binary_name))
return TRUE;
- i_error("Can't load plugin %s: "
- "Plugin is intended to be used only by %s binary (we're %s)",
- module->name, binary_dep, set->binary_name);
+ errstr = t_str_new(128);
+ str_printfa(errstr, "Can't load plugin %s: "
+ "Plugin is intended to be used only by ", module->name);
+ if (names[1] == NULL)
+ str_printfa(errstr, "%s binary", binary_dep);
+ else
+ str_printfa(errstr, "binaries: %s", binary_dep);
+ str_printfa(errstr, " (we're %s)", set->binary_name);
+ i_error("%s", str_c(errstr));
return FALSE;
}
More information about the dovecot-cvs
mailing list