-#ifndef HAVE_ICONV
- iconv_t iconv_open (const char *, const char *);
-size_t iconv (iconv_t, const char **, size_t *, char **, size_t *);
-int iconv_close (iconv_t);
+#define M_ICONV_HOOK_FROM 1
+#define M_ICONV_HOOK_TO 2
+
+extern char *Charset;
+extern int Charset_is_utf8;
+
+#ifdef HAVE_ICONV_H
+# include <iconv.h>
+
+static inline ssize_t
+my_iconv(iconv_t ict, const char **in, ssize_t *il, char **out, ssize_t *ol) {
+ return iconv(ict, (char **)in, (size_t*)il, out, (size_t*)ol);
+}
+
+#else
+# define iconv_t void*
+# define iconv_open(a, b) ((iconv_t)(-1))
+# define my_iconv(a,b,c,d,e) 0
+# define iconv_close(a) 0