Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
}