Example #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;
}
Example #2
0
void LC_Client_FiniCommon() {
  if (lc_client__initcounter==1) {
    GWEN_DB_Group_free(lc_client__driver_db);
    lc_client__driver_db=NULL;
    GWEN_DB_Group_free(lc_client__config);
    lc_client__config=0;
    GWEN_XMLNode_free(lc_client__app_nodes);
    lc_client__app_nodes=0;
    GWEN_XMLNode_free(lc_client__card_nodes);
    lc_client__card_nodes=0;

    GWEN_PathManager_UndefinePath(LCC_PM_LIBNAME, LCC_PM_DATADIR);
    GWEN_PathManager_UndefinePath(LCC_PM_LIBNAME, LCC_PM_SYSCONFDIR);

    GWEN_Logger_Close(LC_LOGDOMAIN);
    GWEN_Fini();
  }
  if (lc_client__initcounter>0)
    lc_client__initcounter--;
}