Skip to content

Commit

Permalink
Fix a "pointer type missmatch" warning.
Browse files Browse the repository at this point in the history
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>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Ramsay Jones authored and Junio C Hamano committed Mar 4, 2007
1 parent 2832114 commit fd547a9
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 2 deletions.
7 changes: 7 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,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.
Expand Down Expand Up @@ -573,6 +576,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
Expand Down
10 changes: 8 additions & 2 deletions utf8.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
Expand Down

0 comments on commit fd547a9

Please sign in to comment.