Author: amassari
Date: Wed Aug  5 17:49:53 2009
New Revision: 801335

URL: http://svn.apache.org/viewvc?rev=801335&view=rev
Log:
On Linux, iconv requires char*; on Solaris, const char*. Use autoconf to pick 
the correct code

Modified:
    xerces/c/trunk/configure.ac
    
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=801335&r1=801334&r2=801335&view=diff
==============================================================================
--- xerces/c/trunk/configure.ac (original)
+++ xerces/c/trunk/configure.ac Wed Aug  5 17:49:53 2009
@@ -180,6 +180,25 @@
                     ]
                  )
 
+AC_MSG_CHECKING([if iconv uses const pointers])
+AC_COMPILE_IFELSE(  [AC_LANG_PROGRAM([[#include <iconv.h>]],
+                                     [[
+                                       const char *fromPtr=0;
+                                       size_t     fromLen=0;
+                                       const char *toPtr=0;
+                                       size_t     toLen=0;
+                                       iconv_t    cv=0;
+                                       iconv(cv, &tmpPtr, &fromLen, &toPtr, 
&toLen);
+                                      ]])],
+                    [
+                      AC_MSG_RESULT([yes])
+                      AC_DEFINE_UNQUOTED([ICONV_USES_CONST_POINTER], 1, 
[Define to 1 if you have to use const char* with iconv, to 0 if you must use 
char*.])
+                    ],
+                    [
+                      AC_MSG_RESULT([no])
+                      AC_DEFINE_UNQUOTED([ICONV_USES_CONST_POINTER], 0, 
[Define to 1 if you have to use const char* with iconv, to 0 if you must use 
char*.])
+                    ]
+                 )
 
 AC_SUBST([SHREXT], [$shrext_cmds])
 

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=801335&r1=801334&r2=801335&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 17:49:53 2009
@@ -242,7 +242,11 @@
     xmlChToMbc (ch, wcbuf);
 
     char    tmpArr[4];
+#if ICONV_USES_CONST_POINTER
     const char* ptr = wcbuf;
+#else
+    char* ptr = wcbuf;
+#endif
     size_t    len = fUChSize;
     char    *pTmpArr = tmpArr;
     size_t    bLen = 2;
@@ -271,7 +275,11 @@
     xmlChToMbc (ch, wcbuf);
 
     char    tmpArr[4];
+#if ICONV_USES_CONST_POINTER
     const char* ptr = wcbuf;
+#else
+    char* ptr = wcbuf;
+#endif
     size_t    len = fUChSize;
     char    *pTmpArr = tmpArr;
     size_t    bLen = 2;
@@ -372,7 +380,11 @@
                  char        **toPtr,
                  size_t        toLen )
 {
+#if ICONV_USES_CONST_POINTER
     const char ** tmpPtr = &fromPtr;
+#else
+    char ** tmpPtr = (char**)&fromPtr;
+#endif
     return ::iconv (fCDFrom, tmpPtr, fromLen, toPtr, &toLen);
 }
 
@@ -381,7 +393,11 @@
                    char        **toPtr,
                    size_t        toLen )
 {
+#if ICONV_USES_CONST_POINTER
     const char ** tmpPtr = &fromPtr;
+#else
+    char ** tmpPtr = (char**)&fromPtr;
+#endif
     return ::iconv (fCDTo, tmpPtr, fromLen, toPtr, &toLen);
 }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to