From: Paul Ramsey Date: Thu, 27 May 2010 14:02:07 +0000 (+0000) Subject: Make use of iconvctl conditional on it existing X-Git-Tag: 2.0.0alpha1~2982 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3165f83a3227f2f48687407242d66ff91d04816b;p=postgis Make use of iconvctl conditional on it existing git-svn-id: http://svn.osgeo.org/postgis/trunk@5648 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/configure.ac b/configure.ac index cefb3ccbc..496172318 100644 --- a/configure.ac +++ b/configure.ac @@ -252,6 +252,8 @@ else AC_MSG_ERROR([Could not find iconv.h header. Please install libiconv and libiconv-devel.]) fi +AC_CHECK_FUNCS([iconvctl libiconvctl],[],[]) + LDFLAGS="$LDFLAGS_SAVE" CFLAGS="$CFLAGS_SAVE" diff --git a/loader/shp2pgsql-core.c b/loader/shp2pgsql-core.c index 18c8cb14a..f4a0383f8 100644 --- a/loader/shp2pgsql-core.c +++ b/loader/shp2pgsql-core.c @@ -63,7 +63,6 @@ int utf8(const char *fromcode, char *inputbuf, char **outputbuf) char *outputptr; size_t outbytesleft; size_t inbytesleft; - int on = 1; inbytesleft = strlen(inputbuf); @@ -83,7 +82,8 @@ int utf8(const char *fromcode, char *inputbuf, char **outputbuf) /* Does this string convert cleanly? */ if ( iconv(cd, &inputbuf, &inbytesleft, &outputptr, &outbytesleft) == -1 ) { - +#ifdef HAVE_ICONVCTL + int on = 1; /* No. Try to convert it while transliterating. */ iconvctl(cd, ICONV_SET_TRANSLITERATE, &on); if ( iconv(cd, &inputbuf, &inbytesleft, &outputptr, &outbytesleft) == -1 ) @@ -100,6 +100,10 @@ int utf8(const char *fromcode, char *inputbuf, char **outputbuf) } iconv_close(cd); return UTF8_BAD_RESULT; +#else + free(*outputbuf); + return UTF8_NO_RESULT; +#endif } /* Return a good result, converted string is in buffer. */ iconv_close(cd);