aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac20
-rw-r--r--src/charConv.c2
-rw-r--r--src/charConv.h2
3 files changed, 22 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac
index 9137a074b..f1c867ebe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -157,6 +157,26 @@ if test x$enable_iconv = xyes; then
if test x$enable_iconv = xyes; then
AC_CHECK_LIB(iconv,main,MPD_LIBS="$MPD_LIBS $ICONV_LIBS",)
AC_DEFINE(HAVE_ICONV,1,[Define to use iconv])
+ AC_MSG_CHECKING([for iconv declaration])
+ AC_CACHE_VAL(proto_iconv, [
+ AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+], [], iconv_arg1="", iconv_arg1="const")
+ proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
+ proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+ AC_MSG_RESULT([$]{ac_t:-}[$]proto_iconv)
+ AC_DEFINE_UNQUOTED(ICONV_CONST, $proto_iconv_arg1,
+ [Define as const if the declaration of iconv() needs const.])
fi
CFLAGS=$oldcflags
LIBS=$oldlibs
diff --git a/src/charConv.c b/src/charConv.c
index 354a8aba7..52c14987b 100644
--- a/src/charConv.c
+++ b/src/charConv.c
@@ -83,7 +83,7 @@ int setCharSetConversion(char * to, char * from) {
return -1;
}
-char * convStrDup(char * string) {
+char * convStrDup(ICONV_CONST char * string) {
if(!char_conv_to) return NULL;
if(char_conv_same) return strdup(string);
diff --git a/src/charConv.h b/src/charConv.h
index 5687c1e7e..3093fcac2 100644
--- a/src/charConv.h
+++ b/src/charConv.h
@@ -23,7 +23,7 @@
int setCharSetConversion(char * to, char * from);
-char * convStrDup(char * string);
+char * convStrDup(ICONV_CONST char * string);
void closeCharSetConversion();