int AB_Banking_PluginSystemFini(void) { if (ab_plugin_init_count) { if (--ab_plugin_init_count==0) { AB_BankInfoPlugin_List_free(ab_bankInfoPlugins); ab_bankInfoPlugins=NULL; AB_ImExporter_List_free(ab_imexporters); ab_imexporters=NULL; /* unregister and unload provider plugin manager */ if (ab_pluginManagerProvider) { if (GWEN_PluginManager_Unregister(ab_pluginManagerProvider)) { DBG_ERROR(AQBANKING_LOGDOMAIN, "Could not unregister provider plugin manager"); } GWEN_PluginManager_free(ab_pluginManagerProvider); ab_pluginManagerProvider=NULL; } /* unregister and unload bankinfo plugin manager */ if (ab_pluginManagerBankInfo) { if (GWEN_PluginManager_Unregister(ab_pluginManagerBankInfo)) { DBG_ERROR(AQBANKING_LOGDOMAIN, "Could not unregister bankinfo plugin manager"); } GWEN_PluginManager_free(ab_pluginManagerBankInfo); ab_pluginManagerBankInfo=NULL; } /* unregister and unload imexporters plugin manager */ if (ab_pluginManagerImExporter) { if (GWEN_PluginManager_Unregister(ab_pluginManagerImExporter)) { DBG_ERROR(AQBANKING_LOGDOMAIN, "Could not unregister imexporter plugin manager"); } GWEN_PluginManager_free(ab_pluginManagerImExporter); ab_pluginManagerImExporter=NULL; } /* undefine our own paths */ GWEN_PathManager_UndefinePath(AB_PM_LIBNAME, AB_PM_LOCALEDIR); GWEN_PathManager_UndefinePath(AB_PM_LIBNAME, AB_PM_DATADIR); GWEN_PathManager_UndefinePath(AB_PM_LIBNAME, AB_PM_SYSCONFDIR); GWEN_PathManager_UndefinePath(AB_PM_LIBNAME, AB_PM_WIZARDDIR); /* remove AqBanking additions to all pathmanagers */ GWEN_PathManager_RemovePaths(AB_PM_LIBNAME); GWEN_Logger_Close(AQBANKING_LOGDOMAIN); GWEN_Fini(); } } else { DBG_WARN(AQBANKING_LOGDOMAIN, "AB_Banking_PluginSystemFini() called too often!"); } return 0; }
int GWEN_Crypt_Token_ModuleFini(void) { GWEN_PLUGIN_MANAGER *pm; pm=GWEN_PluginManager_FindPluginManager(GWEN_CRYPT_TOKEN_PLUGIN_TYPENAME); if (pm) { int rv; rv=GWEN_PluginManager_Unregister(pm); if (rv) { DBG_ERROR(GWEN_LOGDOMAIN, "Could not unregister CryptToken plugin manager (%d)", rv); return rv; } else GWEN_PluginManager_free(pm); } return 0; }