From 3165f83a3227f2f48687407242d66ff91d04816b Mon Sep 17 00:00:00 2001 From: Paul Ramsey Date: Thu, 27 May 2010 14:02:07 +0000 Subject: [PATCH] Make use of iconvctl conditional on it existing git-svn-id: http://svn.osgeo.org/postgis/trunk@5648 b70326c6-7e19-0410-871a-916f4a2858ee --- configure.ac | 2 ++ loader/shp2pgsql-core.c | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) 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); -- 2.40.0