summaryrefslogtreecommitdiff
path: root/m4/iconv.m4
diff options
context:
space:
mode:
authorDaiki Ueno <ueno@gnu.org>2014-10-23 19:44:36 +0200
committerWerner Lemberg <wl@gnu.org>2014-10-23 19:44:36 +0200
commit6d4aa2e3bddc10aff60455da0bc5b751a2e776a3 (patch)
treea4f327ded6835b53860154d8b7817eb48135e4fc /m4/iconv.m4
parent495bfe085c478ed71fc5952a1027ec39bff7285e (diff)
downloadgroff-git-6d4aa2e3bddc10aff60455da0bc5b751a2e776a3.tar.gz
* m4/iconv.m4: Really avoid false detection of non-working iconv.
Diffstat (limited to 'm4/iconv.m4')
-rw-r--r--m4/iconv.m438
1 files changed, 20 insertions, 18 deletions
diff --git a/m4/iconv.m4 b/m4/iconv.m4
index 2c3085f39..4e3736315 100644
--- a/m4/iconv.m4
+++ b/m4/iconv.m4
@@ -73,14 +73,16 @@ AC_DEFUN([AM_ICONV_LINK],
LIBS="$LIBS $LIBICONV"
fi
am_cv_func_iconv_works=no
- for ac_type in 'char **' 'const char **'; do
+ for ac_iconv_const in '' 'const'; do
AC_RUN_IFELSE(
[AC_LANG_PROGRAM(
[[
#include <iconv.h>
#include <string.h>
-typedef $ac_type gl_iconv_buf_t;
+#ifndef ICONV_CONST
+# define ICONV_CONST $ac_iconv_const
+#endif
]],
[[int result = 0;
/* Test against AIX 5.1 bug: Failures are not distinguishable from successful
@@ -89,15 +91,15 @@ typedef $ac_type gl_iconv_buf_t;
iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
if (cd_utf8_to_88591 != (iconv_t)(-1))
{
- static const char input[] = "\342\202\254"; /* EURO SIGN */
+ static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */
char buf[10];
- const char *inptr = input;
+ ICONV_CONST char *inptr = input;
size_t inbytesleft = strlen (input);
char *outptr = buf;
size_t outbytesleft = sizeof (buf);
size_t res = iconv (cd_utf8_to_88591,
- (gl_iconv_buf_t) &inptr, &inbytesleft,
- (gl_iconv_buf_t) &outptr, &outbytesleft);
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
if (res == 0)
result |= 1;
iconv_close (cd_utf8_to_88591);
@@ -109,15 +111,15 @@ typedef $ac_type gl_iconv_buf_t;
iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
if (cd_ascii_to_88591 != (iconv_t)(-1))
{
- static const char input[] = "\263";
+ static ICONV_CONST char input[] = "\263";
char buf[10];
- const char *inptr = input;
+ ICONV_CONST char *inptr = input;
size_t inbytesleft = strlen (input);
char *outptr = buf;
size_t outbytesleft = sizeof (buf);
size_t res = iconv (cd_ascii_to_88591,
- (gl_iconv_buf_t) &inptr, &inbytesleft,
- (gl_iconv_buf_t) &outptr, &outbytesleft);
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
if (res == 0)
result |= 2;
iconv_close (cd_ascii_to_88591);
@@ -128,15 +130,15 @@ typedef $ac_type gl_iconv_buf_t;
iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
if (cd_88591_to_utf8 != (iconv_t)(-1))
{
- static const char input[] = "\304";
+ static ICONV_CONST char input[] = "\304";
static char buf[2] = { (char)0xDE, (char)0xAD };
- const char *inptr = input;
+ ICONV_CONST char *inptr = input;
size_t inbytesleft = 1;
char *outptr = buf;
size_t outbytesleft = 1;
size_t res = iconv (cd_88591_to_utf8,
- (gl_iconv_buf_t) &inptr, &inbytesleft,
- (gl_iconv_buf_t) &outptr, &outbytesleft);
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
result |= 4;
iconv_close (cd_88591_to_utf8);
@@ -148,15 +150,15 @@ typedef $ac_type gl_iconv_buf_t;
iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
if (cd_88591_to_utf8 != (iconv_t)(-1))
{
- static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
char buf[50];
- const char *inptr = input;
+ ICONV_CONST char *inptr = input;
size_t inbytesleft = strlen (input);
char *outptr = buf;
size_t outbytesleft = sizeof (buf);
size_t res = iconv (cd_88591_to_utf8,
- (gl_iconv_buf_t) &inptr, &inbytesleft,
- (gl_iconv_buf_t) &outptr, &outbytesleft);
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
if ((int)res > 0)
result |= 8;
iconv_close (cd_88591_to_utf8);