Load modules from module directory.
authorJelmer Vernooij <jelmer@openchange.org>
Thu, 23 Feb 2012 15:09:09 +0000 (15:09 +0000)
committerJelmer Vernooij <jelmer@openchange.org>
Thu, 23 Feb 2012 15:09:09 +0000 (15:09 +0000)
Makefile
mapiproxy/libmapiproxy/modules.c

index 1e2e06de63b8239a47b037c055ffb8e3991be98f..58aaa003f45543561b55e40e062243464140b7e1 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -764,6 +764,8 @@ libmapiproxy-distclean:
 
 distclean::libmapiproxy-distclean
 
+mapiproxy/libmapiproxy/modules.o mapiproxy/libmapiproxy/modules.po: CFLAGS+=-DMODULESDIR=\"${modulesdir}\"
+
 mapiproxy/libmapiproxy.$(SHLIBEXT).$(PACKAGE_VERSION): mapiproxy/libmapiproxy/dcesrv_mapiproxy_module.po       \
                                                        mapiproxy/libmapiproxy/dcesrv_mapiproxy_server.po       \
                                                        mapiproxy/libmapiproxy/dcesrv_mapiproxy_session.po      \
index c8b436531a5975ef634329f74bcf8c42f56efcdb..195eee58f2db5e294639a6391ef1129d7b50c383 100644 (file)
@@ -56,18 +56,24 @@ static openchange_plugin_init_fn load_plugin(const char *path)
        return (openchange_plugin_init_fn)init_fn;
 }
 
-openchange_plugin_init_fn *load_openchange_plugins(TALLOC_CTX *mem_ctx, const char *path)
+openchange_plugin_init_fn *load_openchange_plugins(TALLOC_CTX *mem_ctx, const char *subsystem)
 {
        DIR *dir;
        struct dirent *entry;
-       char *filename;
+       char *filename, *path;
        int success = 0;
        openchange_plugin_init_fn *ret = talloc_array(mem_ctx, openchange_plugin_init_fn, 2);
 
        ret[0] = NULL;
 
+       path = talloc_asprintf(mem_ctx, "%s/%s", MODULESDIR, subsystem);
+       if (path == NULL) {
+               return NULL;
+       }
+
        dir = opendir(path);
        if (dir == NULL) {
+               talloc_free(path);
                talloc_free(ret);
                return NULL;
        }
@@ -89,6 +95,7 @@ openchange_plugin_init_fn *load_openchange_plugins(TALLOC_CTX *mem_ctx, const ch
        }
 
        closedir(dir);
+       talloc_free(path);
 
        return ret;
 }