You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by am...@apache.org on 2009/08/05 18:54:23 UTC
svn commit: r801299 - in /xerces/c/trunk: configure.ac
m4/xerces_transcoder_selection.m4
src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp
Author: amassari
Date: Wed Aug 5 16:54:22 2009
New Revision: 801299
URL: http://svn.apache.org/viewvc?rev=801299&view=rev
Log:
Allow GNUiconv to be compiled on Solaris (XERCESC-1856)
Modified:
xerces/c/trunk/configure.ac
xerces/c/trunk/m4/xerces_transcoder_selection.m4
xerces/c/trunk/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp
Modified: xerces/c/trunk/configure.ac
URL: http://svn.apache.org/viewvc/xerces/c/trunk/configure.ac?rev=801299&r1=801298&r2=801299&view=diff
==============================================================================
--- xerces/c/trunk/configure.ac (original)
+++ xerces/c/trunk/configure.ac Wed Aug 5 16:54:22 2009
@@ -98,7 +98,7 @@
sys/param.h sys/socket.h sys/time.h sys/timeb.h \
unistd.h wchar.h wctype.h \
CoreServices/CoreServices.h \
- endian.h machine/endian.h \
+ endian.h machine/endian.h arpa/nameser_compat.h \
])
# Checks for typedefs, structures, and compiler characteristics.
@@ -157,7 +157,7 @@
)
AC_MSG_CHECKING([for wcsrtombs])
AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include <wchar.h>]],
- [[mbstate_t st; char buffer[2]; wchar_t src[2]; wcsrtombs(buffer, &src, 2, &st);]])],
+ [[mbstate_t st; char buffer[2]; const wchar_t* src=0; wcsrtombs(buffer, &src, 2, &st);]])],
[
AC_MSG_RESULT([yes])
AC_DEFINE_UNQUOTED([HAVE_WCSRTOMBS], 1, [Define to 1 if you have the `wcsrtombs' function.])
@@ -169,7 +169,7 @@
)
AC_MSG_CHECKING([for mbsrtowcs])
AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include <wchar.h>]],
- [[mbstate_t st; wchar_t buffer[2]; char src[2]; mbsrtowcs(buffer, &src, 2, &st);]])],
+ [[mbstate_t st; wchar_t buffer[2]; const char* src=0; mbsrtowcs(buffer, &src, 2, &st);]])],
[
AC_MSG_RESULT([yes])
AC_DEFINE_UNQUOTED([HAVE_MBSRTOWCS], 1, [Define to 1 if you have the `mbsrtowcs' function.])
Modified: xerces/c/trunk/m4/xerces_transcoder_selection.m4
URL: http://svn.apache.org/viewvc/xerces/c/trunk/m4/xerces_transcoder_selection.m4?rev=801299&r1=801298&r2=801299&view=diff
==============================================================================
--- xerces/c/trunk/m4/xerces_transcoder_selection.m4 (original)
+++ xerces/c/trunk/m4/xerces_transcoder_selection.m4 Wed Aug 5 16:54:22 2009
@@ -24,8 +24,18 @@
# Check for GNU iconv support
no_GNUiconv=false
AC_CHECK_HEADERS([iconv.h wchar.h string.h stdlib.h stdio.h ctype.h locale.h errno.h], [], [no_GNUiconv=true])
- # The code in iconv loads either endian.h or machine/endian.h, so verify that at least one is present
- AC_CHECK_HEADER([endian.h], [], [AC_CHECK_HEADER([machine/endian.h],[],[no_GNUiconv=true])])
+ # The code in iconv needs just on of these include files
+ AC_CHECK_HEADER([endian.h],
+ [],
+ [
+ AC_CHECK_HEADER([machine/endian.h],
+ [],
+ [
+ AC_CHECK_HEADER([arpa/nameser_compat.h],
+ [],
+ [no_GNUiconv=true])
+ ])
+ ])
AC_CHECK_FUNCS([iconv_open iconv_close iconv], [], [no_GNUiconv=true])
AC_MSG_CHECKING([whether we can support the GNU iconv Transcoder])
list_add=
Modified: xerces/c/trunk/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp?rev=801299&r1=801298&r2=801299&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp (original)
+++ xerces/c/trunk/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp Wed Aug 5 16:54:22 2009
@@ -22,44 +22,23 @@
// ---------------------------------------------------------------------------
// Includes
// ---------------------------------------------------------------------------
+#if HAVE_CONFIG_H
+ #include <config.h>
+#endif
+
#include <ctype.h>
#include <locale.h>
#include <errno.h>
+
#if HAVE_ENDIAN_H
#include <endian.h>
#elif HAVE_MACHINE_ENDIAN_H
#include <machine/endian.h>
+#elif HAVE_ARPA_NAMESER_COMPAT_H
+ #include <arpa/nameser_compat.h>
#endif
-#include <xercesc/util/XMLString.hpp>
-#include <xercesc/util/XMLUniDefs.hpp>
-#include <xercesc/util/XMLUni.hpp>
-#include <xercesc/util/PlatformUtils.hpp>
-#include <xercesc/util/TranscodingException.hpp>
-#include <xercesc/util/Janitor.hpp>
-#include "IconvGNUTransService.hpp"
-
-XERCES_CPP_NAMESPACE_BEGIN
-
-// ---------------------------------------------------------------------------
-// Description of encoding schemas, supported by iconv()
-// ---------------------------------------------------------------------------
-typedef struct __IconvGNUEncoding {
- const char* fSchema; // schema name
- size_t fUChSize; // size of the character
- unsigned int fUBO; // byte order, relative to the host
-} IconvGNUEncoding;
-
-static const IconvGNUEncoding gIconvGNUEncodings[] = {
- { "UTF-16LE", 2, LITTLE_ENDIAN },
- { "UTF-16BE", 2, BIG_ENDIAN },
- { "UCS-2LE", 2, LITTLE_ENDIAN },
- { "UCS-2BE", 2, BIG_ENDIAN },
- { "UCS-2-INTERNAL", 2, BYTE_ORDER },
- { NULL, 0, 0 }
-};
-
#define MAX_UCHSIZE 4
//--------------------------------------------------
@@ -124,12 +103,39 @@
# endif /* BYTE_ORDER == LITTLE_ENDIAN */
#include <wchar.h>
-
-
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
+#include <xercesc/util/XMLString.hpp>
+#include <xercesc/util/XMLUniDefs.hpp>
+#include <xercesc/util/XMLUni.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/TranscodingException.hpp>
+#include <xercesc/util/Janitor.hpp>
+#include "IconvGNUTransService.hpp"
+
+
+XERCES_CPP_NAMESPACE_BEGIN
+
+// ---------------------------------------------------------------------------
+// Description of encoding schemas, supported by iconv()
+// ---------------------------------------------------------------------------
+typedef struct __IconvGNUEncoding {
+ const char* fSchema; // schema name
+ size_t fUChSize; // size of the character
+ unsigned int fUBO; // byte order, relative to the host
+} IconvGNUEncoding;
+
+static const IconvGNUEncoding gIconvGNUEncodings[] = {
+ { "UTF-16LE", 2, LITTLE_ENDIAN },
+ { "UTF-16BE", 2, BIG_ENDIAN },
+ { "UCS-2LE", 2, LITTLE_ENDIAN },
+ { "UCS-2BE", 2, BIG_ENDIAN },
+ { "UCS-2-INTERNAL", 2, BYTE_ORDER },
+ { NULL, 0, 0 }
+};
+
// ---------------------------------------------------------------------------
// Local, const data
// ---------------------------------------------------------------------------
@@ -236,7 +242,7 @@
xmlChToMbc (ch, wcbuf);
char tmpArr[4];
- char* ptr = wcbuf;
+ const char* ptr = wcbuf;
size_t len = fUChSize;
char *pTmpArr = tmpArr;
size_t bLen = 2;
@@ -265,7 +271,7 @@
xmlChToMbc (ch, wcbuf);
char tmpArr[4];
- char* ptr = wcbuf;
+ const char* ptr = wcbuf;
size_t len = fUChSize;
char *pTmpArr = tmpArr;
size_t bLen = 2;
@@ -366,7 +372,7 @@
char **toPtr,
size_t toLen )
{
- char ** tmpPtr = (char**)&fromPtr;
+ const char ** tmpPtr = &fromPtr;
return ::iconv (fCDFrom, tmpPtr, fromLen, toPtr, &toLen);
}
@@ -375,7 +381,7 @@
char **toPtr,
size_t toLen )
{
- char ** tmpPtr = (char**)&fromPtr;
+ const char ** tmpPtr = &fromPtr;
return ::iconv (fCDTo, tmpPtr, fromLen, toPtr, &toLen);
}
@@ -409,7 +415,7 @@
strcmp (fLocalCP, "POSIX") == 0)
fLocalCP = "iso-8859-1"; // fallback locale
else {
- char *ptr = strchr (fLocalCP, '.');
+ const char *ptr = strchr (fLocalCP, '.');
if (ptr == NULL)
fLocalCP = "iso-8859-1"; // fallback locale
else
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org