On 8/2/05, Andrew W. Nosenko <[EMAIL PROTECTED]> wrote:
> How to detect at run-time whether libxml2 was compiled with enabled
> mutlithreading support (--with-threads)?
> 
> Reason of question: I just try to avoid following scenario:
>   1. application builded and tested on the machine with thread-aware
> libxml2 (--with-threads).
>   2. user copied application (binary) to the machine where libxml2 builded 
> with
>       disabled threads support (--without-threads).
>   3. Application misterious fails :-(

Attached patch solves this issue.

2005-09-02  Andrew W. Nosenko  <[EMAIL PROTECTED]>

        * parserInternals.c:
        * include/libxml/xmlversion.h.in:
        * include/libxml/xmlwin32version.h:
        * include/libxml/xmlwin32version.h.in:
        * win32/libxml2.def.src:
        (xmlIsThreadsEnabled): 
        New function.

-- 
Andrew W. Nosenko <[EMAIL PROTECTED]>
2005-09-02  Andrew W. Nosenko  <[EMAIL PROTECTED]>

	* parserInternals.c:
	* include/libxml/xmlversion.h.in:
	* include/libxml/xmlwin32version.h:
	* include/libxml/xmlwin32version.h.in:
	* win32/libxml2.def.src:
	(xmlIsThreadsEnabled): 
	New function.

Index: parserInternals.c
===================================================================
RCS file: /cvs/gnome/libxml2/parserInternals.c,v
retrieving revision 1.116
diff -u -p -r1.116 parserInternals.c
--- parserInternals.c	29 Jul 2005 22:02:23 -0000	1.116
+++ parserInternals.c	2 Sep 2005 10:43:12 -0000
@@ -87,6 +87,21 @@ xmlCheckVersion(int version) {
     }
 }
 
+/**
+ * xmlIsThreadsEnabled:
+ *
+ * Returns 1 (true) if library was compiled with multithread support
+ * enabled or 0 (false) otherwise.
+ */
+int
+xmlIsThreadsEnabled(void)
+{
+#ifdef LIBXML_THREAD_ENABLED
+    return 1;
+#else
+    return 0;
+#endif
+}
 
 /************************************************************************
  *									*
Index: include/libxml/xmlversion.h.in
===================================================================
RCS file: /cvs/gnome/libxml2/include/libxml/xmlversion.h.in,v
retrieving revision 1.57
diff -u -p -r1.57 xmlversion.h.in
--- include/libxml/xmlversion.h.in	22 Aug 2005 21:22:26 -0000	1.57
+++ include/libxml/xmlversion.h.in	2 Sep 2005 10:43:12 -0000
@@ -22,6 +22,7 @@ extern "C" {
  */
 #ifndef LIBXML2_COMPILING_MSCCDEF
 XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
+XMLPUBFUN int XMLCALL xmlIsThreadsEnabled(void);
 #endif /* LIBXML2_COMPILING_MSCCDEF */
 
 /**
Index: include/libxml/xmlwin32version.h
===================================================================
RCS file: /cvs/gnome/libxml2/include/libxml/xmlwin32version.h,v
retrieving revision 1.42
diff -u -p -r1.42 xmlwin32version.h
--- include/libxml/xmlwin32version.h	18 Nov 2003 20:56:51 -0000	1.42
+++ include/libxml/xmlwin32version.h	2 Sep 2005 10:43:13 -0000
@@ -21,6 +21,7 @@ extern "C" {
  */
 #ifndef LIBXML2_COMPILING_MSCCDEF
 extern void xmlCheckVersion(int version);
+extern int xmlIsThreadsEnabled(void);
 #endif /* LIBXML2_COMPILING_MSCCDEF */
 
 /**
Index: include/libxml/xmlwin32version.h.in
===================================================================
RCS file: /cvs/gnome/libxml2/include/libxml/xmlwin32version.h.in,v
retrieving revision 1.16
diff -u -p -r1.16 xmlwin32version.h.in
--- include/libxml/xmlwin32version.h.in	23 Jul 2005 15:00:22 -0000	1.16
+++ include/libxml/xmlwin32version.h.in	2 Sep 2005 10:43:13 -0000
@@ -21,6 +21,7 @@ extern "C" {
  */
 #ifndef LIBXML2_COMPILING_MSCCDEF
 extern void xmlCheckVersion(int version);
+extern int xmlIsThreadsEnabled(void);
 #endif /* LIBXML2_COMPILING_MSCCDEF */
 
 /**
Index: win32/libxml2.def.src
===================================================================
RCS file: /cvs/gnome/libxml2/win32/libxml2.def.src,v
retrieving revision 1.66
diff -u -p -r1.66 libxml2.def.src
--- win32/libxml2.def.src	23 Aug 2005 13:49:54 -0000	1.66
+++ win32/libxml2.def.src	2 Sep 2005 10:43:14 -0000
@@ -654,6 +654,7 @@ xmlCheckHTTPInput
 xmlCheckLanguageID
 xmlCheckUTF8
 xmlCheckVersion
+xmlIsThreadsEnabled
 xmlCleanupCharEncodingHandlers
 xmlCleanupEncodingAliases
 xmlCleanupGlobals
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to