diff options
-rw-r--r-- | configure.ac | 20 | ||||
-rw-r--r-- | src/charConv.c | 2 | ||||
-rw-r--r-- | src/charConv.h | 2 |
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(); |