[libgda] Removed global variable for Catalog DTD
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda] Removed global variable for Catalog DTD
- Date: Mon, 15 Apr 2019 03:12:24 +0000 (UTC)
commit 2a50765bcb1468e5c3fded38953682d6a592059f
Author: Daniel Espinosa <esodan gmail com>
Date: Sun Apr 14 19:39:28 2019 -0500
Removed global variable for Catalog DTD
libgda/gda-db-catalog.c | 54 +++++++++++++++++++++++++++++++++++++++++++++----
libgda/gda-init.c | 45 -----------------------------------------
2 files changed, 50 insertions(+), 49 deletions(-)
---
diff --git a/libgda/gda-db-catalog.c b/libgda/gda-db-catalog.c
index d82e8c787..38a3a033f 100644
--- a/libgda/gda-db-catalog.c
+++ b/libgda/gda-db-catalog.c
@@ -27,6 +27,7 @@
#include <glib.h>
#include <glib/gprintf.h>
#include <glib/gi18n-lib.h>
+#include <libgda/binreloc/gda-binreloc.h>
#include "gda-server-provider.h"
#include <libgda/gda-lockable.h>
@@ -73,9 +74,6 @@ enum {
static GParamSpec *properties [N_PROPS] = {NULL};
-/* Originally defined in gda-init.c */
-extern xmlDtdPtr _gda_db_catalog_dtd;
-
/**
* gda_db_catalog_new:
*
@@ -206,6 +204,38 @@ gda_db_catalog_init (GdaDbCatalog *self)
priv->cnc = NULL;
}
+xmlDtdPtr
+_gda_db_catalog_get_dtd ()
+{
+ xmlDtdPtr _gda_db_catalog_dtd = NULL;
+ gchar *file;
+ /* GdaDbCreator DTD */
+ file = gda_gbr_get_file_path (GDA_DATA_DIR, LIBGDA_ABI_NAME, "dtd",
+ "libgda-db-catalog.dtd", NULL);
+ if (g_file_test (file, G_FILE_TEST_EXISTS))
+ _gda_db_catalog_dtd = xmlParseDTD (NULL, (xmlChar*)file);
+ else
+ {
+ if (g_getenv ("GDA_TOP_SRC_DIR"))
+ {
+ g_free (file);
+ file = g_build_filename (g_getenv ("GDA_TOP_SRC_DIR"), "libgda",
+ "libgda-db-catalog.dtd", NULL);
+ _gda_db_catalog_dtd = xmlParseDTD (NULL, (xmlChar*)file);
+ }
+ }
+
+ if (!_gda_db_catalog_dtd)
+ g_message (_("Could not parse '%s': "
+ "Validation for XML files for GdaDbCreator will not be performed (some weird errors may
occur)"),
+ file);
+ else
+ _gda_db_catalog_dtd->name = xmlStrdup((xmlChar*) "db-catalog");
+
+ g_free (file);
+ return _gda_db_catalog_dtd;
+}
+
static gboolean
_gda_db_catalog_validate_doc (xmlDocPtr doc,
GError **error)
@@ -225,7 +255,14 @@ _gda_db_catalog_validate_doc (xmlDocPtr doc,
goto on_error;
}
- int valid = xmlValidateDtd (ctx, doc,_gda_db_catalog_dtd);
+ xmlDtdPtr _gda_db_catalog_dtd = _gda_db_catalog_get_dtd ();
+
+ int valid = 0;
+
+ if (_gda_db_catalog_dtd != NULL) {
+ valid = xmlValidateDtd (ctx, doc,_gda_db_catalog_dtd);
+ xmlFreeDtd (_gda_db_catalog_dtd);
+ }
if (!valid)
{
@@ -395,6 +432,9 @@ gda_db_catalog_parse_file_from_path (GdaDbCatalog *self,
{
g_return_val_if_fail (self,FALSE);
g_return_val_if_fail (xmlfile,FALSE);
+
+ xmlDtdPtr _gda_db_catalog_dtd = _gda_db_catalog_get_dtd ();
+
g_return_val_if_fail (_gda_db_catalog_dtd,FALSE);
xmlDocPtr doc = NULL;
@@ -447,6 +487,9 @@ gda_db_catalog_validate_file_from_path (const gchar *xmlfile,
GError **error)
{
g_return_val_if_fail (xmlfile, FALSE);
+
+ xmlDtdPtr _gda_db_catalog_dtd = _gda_db_catalog_get_dtd ();
+
g_return_val_if_fail (_gda_db_catalog_dtd, FALSE);
xmlDocPtr doc = NULL;
@@ -990,6 +1033,9 @@ gda_db_catalog_parse_file (GdaDbCatalog *self,
{
g_return_val_if_fail (self, FALSE);
g_return_val_if_fail (xmlfile, FALSE);
+
+ xmlDtdPtr _gda_db_catalog_dtd = _gda_db_catalog_get_dtd ();
+
g_return_val_if_fail (_gda_db_catalog_dtd, FALSE);
GFileInputStream *istream = NULL;
diff --git a/libgda/gda-init.c b/libgda/gda-init.c
index 91eb104dd..63dd8f8d2 100644
--- a/libgda/gda-init.c
+++ b/libgda/gda-init.c
@@ -39,25 +39,6 @@
#include <libgda/binreloc/gda-binreloc.h>
#include <sql-parser/gda-sql-parser.h>
-/*
- * global variables
- *
- * REM: to use them from another Windows DLL, they have to be declared like:
- * __declspec(dllimport) extern gchar *_gda_server_op_dtd;
- *
- * Better yet is to define the IMPORT macro as:
- *
- * #ifdef G_OS_WIN32
- * #define IMPORT __declspec(dllimport)
- * #else
- * #define IMPORT
- * #endif
- * IMPORT extern gchar *_gda_server_op_dtd;
- */
-xmlDtdPtr _gda_db_catalog_dtd = NULL;
-
-static gchar *gda_lang_locale = "";
-
/**
* gda_init:
@@ -129,32 +110,6 @@ gda_init (void)
/* binreloc */
gda_gbr_init ();
- /* GdaDbCreator DTD */
- _gda_db_catalog_dtd = NULL;
- file = gda_gbr_get_file_path (GDA_DATA_DIR, LIBGDA_ABI_NAME, "dtd",
- "libgda-db-catalog.dtd", NULL);
- if (g_file_test (file, G_FILE_TEST_EXISTS))
- _gda_db_catalog_dtd = xmlParseDTD (NULL, (xmlChar*)file);
- else
- {
- if (g_getenv ("GDA_TOP_SRC_DIR"))
- {
- g_free (file);
- file = g_build_filename (g_getenv ("GDA_TOP_SRC_DIR"), "libgda",
- "libgda-db-catalog.dtd", NULL);
- _gda_db_catalog_dtd = xmlParseDTD (NULL, (xmlChar*)file);
- }
- }
-
- if (!_gda_db_catalog_dtd)
- g_message (_("Could not parse '%s': "
- "Validation for XML files for GdaDbCreator will not be performed (some weird errors may
occur)"),
- file);
- else
- _gda_db_catalog_dtd->name = xmlStrdup((xmlChar*) "db-catalog");
-
- g_free (file);
-
initialized = TRUE;
g_mutex_unlock (&init_mutex);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]