From dd471ef1c6d5508e5568a813505761b3bf935912 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Thu, 26 Mar 2009 18:37:47 +0100 Subject: [PATCH] handle iconv() function that takes const char ** instead of char ** --- configure.in | 13 +++++++------ src/charset.cpp | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/configure.in b/configure.in index ebf8aedd..b47eaae1 100644 --- a/configure.in +++ b/configure.in @@ -33,12 +33,13 @@ AC_CHECK_HEADERS([dirent.h regex.h], , AC_MSG_ERROR(vital headers missing)) dnl ====================== dnl = checking for iconv = dnl ====================== -if test "$prefix" = "NONE"; then - encodings_file="${ac_default_prefix}" -else - encodings_file="${prefix}" -fi -AC_CHECK_HEADERS([iconv.h], , AC_MSG_NOTICE(cannot find iconv.h header, iconv support will be disabled)) +AC_CHECK_HEADERS([iconv.h], + AC_MSG_CHECKING([whether iconv takes const char **]) + AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[#include ]], [[iconv(0, (const char **)0, 0, 0, 0);]]), + AC_MSG_RESULT([yes]) AC_DEFINE([ICONV_CONST], [const], [pass const pointer to iconv]), + AC_MSG_RESULT([no]) AC_DEFINE([ICONV_CONST], [], [pass non-const pointer to iconv])) + AC_CHECK_LIB(iconv, libiconv, LDFLAGS="$LDFLAGS -liconv", ) +, ) dnl ======================== dnl = checking for ncurses = diff --git a/src/charset.cpp b/src/charset.cpp index fa683f2c..e8e9d1f9 100644 --- a/src/charset.cpp +++ b/src/charset.cpp @@ -73,7 +73,7 @@ namespace char *outstart = outbuf; char *instart = inbuf; - if (iconv(cd, &inbuf, &len, &outbuf, &buflen) == (size_t)-1) + if (iconv(cd, const_cast(&inbuf), &len, &outbuf, &buflen) == (size_t)-1) { delete [] outstart; iconv_close(cd);