FCITX_EXPORT_API FcitxAddonManager* fcitx_addon_manager_new(FcitxStandardPath* standardPath) { FcitxAddonManager* manager = fcitx_utils_new(FcitxAddonManager); manager->resolvers = fcitx_dict_new(fcitx_addon_resolver_free); manager->standardPath = fcitx_standard_path_ref(standardPath); manager->addons = fcitx_dict_new((FcitxDestroyNotify) fcitx_addon_free); manager->loadedAddons = fcitx_ptr_array_new(NULL); manager->properties = fcitx_dict_new(NULL); return fcitx_addon_manager_ref(manager); }
FCITX_EXPORT_API FcitxStandardPath* fcitx_standard_path_new() { FcitxStandardPath* path = fcitx_utils_new(FcitxStandardPath); // initialize user directory path->configHome = fcitx_standard_default_path_construct("XDG_CONFIG_HOME", ".config"); path->configDirs = fcitx_standard_default_paths_construct("XDG_CONFIG_DIRS", "/etc/xdg", NULL); path->dataHome = fcitx_standard_default_path_construct("XDG_DATA_HOME", ".local/share"); path->dataDirs = fcitx_standard_default_paths_construct("XDG_DATA_DIRS", "/usr/local/share:/usr/share", "datadir"); path->cacheHome = fcitx_standard_default_path_construct("XDG_CACHE_HOME", ".cache"); const char* tmpdir = getenv("TMPDIR"); path->runtimeDir = fcitx_standard_default_path_construct("XDG_RUNTIME_DIR", !tmpdir || !tmpdir[0] ? "/tmp" : tmpdir); path->addonDirs = fcitx_standard_default_paths_construct("FCITX_ADDON_DIRS", FCITX_INSTALL_ADDONDIR, NULL); return fcitx_standard_path_ref(path); }