git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 6/6] Fix a "pointer type missmatch" warning.

From
Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Date
Mar 3, 2007, 18:29 UTC
Message-ID
<45E9BE6F.9090400@ramsay1.demon.co.uk>

In particular, the second parameter in the call to iconv() will cause this warning if your library declares iconv() with the second (input buffer pointer) parameter of type const char **. This is the old prototype, which is none-the-less used by the current version of newlib on Cygwin. (It appears in old versions of glibc too).

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
---
Note: set OLD_ICONV in your config.mak file on Cygwin.
  Makefile |    7 +++++++
  utf8.c   |   10 ++++++++--
  2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 8390a94..d447c43 100644
--- a/Makefile
+++ b/Makefile
@@ -85,6 +85,9 @@ all::
  #
  # Define NO_ICONV if your libc does not properly support iconv.
  #
+# Define OLD_ICONV if your library has an old iconv(), where the second
+# (input buffer pointer) parameter is declared with type (const char **).
+#
  # Define NO_R_TO_GCC if your gcc does not like "-R/path/lib" that
  # tells runtime paths to dynamic libraries; "-Wl,-rpath=/path/lib"
  # is used instead.
@@ -560,6 +563,10 @@ ifdef NO_ICONV
  	BASIC_CFLAGS += -DNO_ICONV
  endif

+ifdef OLD_ICONV
+	BASIC_CFLAGS += -DOLD_ICONV
+endif
+
  ifdef PPC_SHA1
  	SHA1_HEADER = "ppc/sha1.h"
  	LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o
diff --git a/utf8.c b/utf8.c
index 211e100..f381a7f 100644
--- a/utf8.c
+++ b/utf8.c
@@ -293,11 +293,17 @@ int is_encoding_utf8(const char *name)
   * with iconv.  If the conversion fails, returns NULL.
   */
  #ifndef NO_ICONV
+#ifdef OLD_ICONV
+	typedef const char * iconv_ibp;
+#else
+	typedef char * iconv_ibp;
+#endif
  char *reencode_string(const char *in, const char *out_encoding, const char *in_encoding)
  {
  	iconv_t conv;
  	size_t insz, outsz, outalloc;
-	char *out, *outpos, *cp;
+	char *out, *outpos;
+	iconv_ibp cp;

  	if (!in_encoding)
  		return NULL;
@@ -309,7 +315,7 @@ char *reencode_string(const char *in, const char *out_encoding, const char *in_e
  	outalloc = outsz + 1; /* for terminating NUL */
  	out = xmalloc(outalloc);
  	outpos = out;
-	cp = (char *)in;
+	cp = (iconv_ibp)in;

  	while (1) {
  		size_t cnt = iconv(conv, &cp, &insz, &outpos, &outsz);
-- 
1.5.0
Next: Johannes Schindelin
Message 1 of 3 in “Fix a "pointer type missmatch" warning.”
  1. 6/6 Fix a "pointer type missmatch" warning.Ramsay Jones, Mar 3, 2007
  2. Johannes SchindelinMar 3, 2007
  3. Ramsay JonesMar 4, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.