void ecore_imf_module_init(void) { char buf[PATH_MAX] = ""; pfx = eina_prefix_new(NULL, ecore_imf_init, "ECORE_IMF", "ecore_imf", "checkme", PACKAGE_BIN_DIR, PACKAGE_LIB_DIR, PACKAGE_DATA_DIR, PACKAGE_DATA_DIR); #if defined(HAVE_GETUID) && defined(HAVE_GETEUID) if (getuid() == geteuid()) #endif { if (getenv("EFL_RUN_IN_TREE")) { struct stat st; snprintf(buf, sizeof(buf), "%s/src/modules/ecore_imf", PACKAGE_BUILD_DIR); if (stat(buf, &st) == 0) { const char *built_modules[] = { #ifdef ENABLE_XIM "xim", #endif #ifdef BUILD_ECORE_IMF_IBUS "ibus", #endif #ifdef BUILD_ECORE_IMF_SCIM "scim", #endif #ifdef BUILD_ECORE_IMF_WAYLAND "wayland", #endif NULL }; const char **itr; for (itr = built_modules; *itr != NULL; itr++) { snprintf(buf, sizeof(buf), "%s/src/modules/ecore_imf/%s/.libs", PACKAGE_BUILD_DIR, *itr); module_list = eina_module_list_get(module_list, buf, EINA_FALSE, NULL, NULL); } if (module_list) eina_module_list_load(module_list); return; } } } snprintf(buf, sizeof(buf), "%s/ecore_imf/modules", eina_prefix_lib_get(pfx)); module_list = eina_module_arch_list_get(module_list, buf, MODULE_ARCH); // XXX: MODFIX: do not list ALL modules and load them ALL! this is // is wrong - we end up loading BOTH xim ANd scim (and maybe uim too) // etc. etc. when we need only 1! eina_module_list_load(module_list); }
static void _mempool_init(void) { eina_init(); /* force modules to be loaded in case they are not installed */ _modules = eina_module_list_get(NULL, PACKAGE_BUILD_DIR "/src/modules/eina", EINA_TRUE, NULL, NULL); eina_module_list_load(_modules); }
static Eina_Bool _etui_modules_load(void) { char buf[PATH_MAX]; char *path; Eina_Prefix *prefix; if (_etui_modules_loaded) return EINA_TRUE; _etui_modules_loaded = EINA_TRUE; path = eina_module_environment_path_get("HOME", "/.etui/modules"); if (path) { _etui_modules = eina_module_arch_list_get(_etui_modules, path, MODULE_ARCH); free(path); } path = eina_module_environment_path_get("ETUI_MODULES_DIR", "/etui/modules"); if (path) { _etui_modules = eina_module_arch_list_get(_etui_modules, path, MODULE_ARCH); free(path); } prefix = eina_prefix_new(NULL, etui_init, "ETUI", "etui", "checkme", PACKAGE_BIN_DIR, PACKAGE_LIB_DIR, PACKAGE_DATA_DIR, PACKAGE_DATA_DIR); if (prefix) { snprintf(buf, sizeof(buf), "%s/etui/modules", eina_prefix_lib_get(prefix)); _etui_modules = eina_module_arch_list_get(_etui_modules, buf, MODULE_ARCH); eina_prefix_free(prefix); } else { INF("Could not create prefix, use library path directly."); _etui_modules = eina_module_arch_list_get(_etui_modules, PACKAGE_LIB_DIR"/etui/modules", MODULE_ARCH); } path = eina_module_symbol_path_get(etui_object_add, "/etui/modules"); if (path) { _etui_modules = eina_module_list_get(_etui_modules, path, 0, NULL, NULL); free(path); } if (!_etui_modules) { ERR("Could not find modules."); return EINA_FALSE; } eina_module_list_load(_etui_modules); /* TODO: registry */ return EINA_TRUE; }
Eina_Bool eina_mempool_init(void) { char *path; _eina_mempool_log_dom = eina_log_domain_register("eina_mempool", EINA_LOG_COLOR_DEFAULT); if (_eina_mempool_log_dom < 0) { EINA_LOG_ERR("Could not register log domain: eina_mempool"); return 0; } EINA_ERROR_NOT_MEMPOOL_MODULE = eina_error_msg_static_register( EINA_ERROR_NOT_MEMPOOL_MODULE_STR); _backends = eina_hash_string_superfast_new(NULL); /* dynamic backends */ _modules = eina_module_arch_list_get(NULL, PACKAGE_LIB_DIR "/eina/modules/mp", MODULE_ARCH); path = eina_module_environment_path_get("HOME", "/.eina/mp/modules/mp"); _modules = eina_module_arch_list_get(_modules, path, MODULE_ARCH); if (path) free(path); path = eina_module_environment_path_get("EINA_MODULES_MEMPOOL_DIR", "/eina/modules/mp"); _modules = eina_module_arch_list_get(_modules, path, MODULE_ARCH); if (path) free(path); path = eina_module_symbol_path_get((const void *)eina_init, "/eina/modules/mp"); _modules = eina_module_arch_list_get(_modules, path, MODULE_ARCH); if (path) free(path); if (!_modules) { ERR("no mempool modules able to be loaded."); eina_hash_free(_backends); goto mempool_init_error; } eina_module_list_load(_modules); /* builtin backends */ #ifdef EINA_STATIC_BUILD_BUDDY buddy_init(); #endif #ifdef EINA_STATIC_BUILD_CHAINED_POOL chained_init(); #endif #ifdef EINA_STATIC_BUILD_EMEMOA_FIXED ememoa_fixed_init(); #endif #ifdef EINA_STATIC_BUILD_EMEMOA_UNKNOWN ememoa_unknown_init(); #endif #ifdef EINA_STATIC_BUILD_FIXED_BITMAP fixed_bitmap_init(); #endif #ifdef EINA_STATIC_BUILD_ONE_BIG one_big_init(); #endif #ifdef EINA_STATIC_BUILD_PASS_THROUGH pass_through_init(); #endif return EINA_TRUE; mempool_init_error: eina_log_domain_unregister(_eina_mempool_log_dom); _eina_mempool_log_dom = -1; return EINA_FALSE; }