2011/11/28 Luis Lavena <luislavena / gmail.com>:
>
> Issue #5681 has been reported by Luis Lavena.
>
> ----------------------------------------
> Bug #5681: Conflcting types for rb_w32_inet_ntop caused by duplicate defi=
nition under MinGW
> http://redmine.ruby-lang.org/issues/5681
>
> Author: Luis Lavena
> Status: Open
> Priority: Normal
> Assignee: Nobuyoshi Nakada
> Category: build
> Target version:
> ruby -v: ruby 1.9.3p0 (2011-10-30) [i386-mingw32] building trunk
>
>
> MinGW 4.5.2 (TDM builds), building against trunk (r33885) is causing the =
following error:
>
> <pre>
> compiling ../../../../../../ruby/ext/socket/option.c
> ../../../../../../ruby/ext/socket/option.c:441:1: error: conflicting type=
s for 'rb_w32_inet_ntop'
> ../../../../../../ruby/include/ruby/win32.h:276:22: note: previous declar=
ation of 'rb_w32_inet_ntop' was here
> make[2]: *** [option.o] Error 1
> make[2]: Leaving directory `/c/Users/Luis/Projects/oss/oneclick/rubyinsta=
ller/sandbox/ruby19_build/ext/socket'
> make[1]: *** [ext/socket/all] Error 2
> make[1]: Leaving directory `/c/Users/Luis/Projects/oss/oneclick/rubyinsta=
ller/sandbox/ruby19_build'
> make: *** [build-ext] Error 2
> </pre>
>
> All this triggered by recent refactoring of ruby/subst.h
>
> Applying the following patch solves the issue:
>
> diff --git a/ext/socket/option.c b/ext/socket/option.c
> index 1f334bb..41765f9 100644
> --- a/ext/socket/option.c
> +++ b/ext/socket/option.c
> @@ -436,7 +436,7 @@ inspect_timeval_as_interval(int level, int optname, V=
ALUE data, VALUE ret)
> =A0* it is not distinguishable by the size.
> =A0*/
>
> -#ifndef HAVE_INET_NTOP
> +#if !defined(HAVE_INET_NTOP) && !defined(_WIN32)
> =A0static char *
> =A0inet_ntop(int af, const void *addr, char *numaddr, size_t numaddr_len)
> =A0{
>
> Can I apply?

Why win32.h don't turn on HAVE_INET_NTOP?  I mean platform specific
hack should be placed in platform specific files if possible.
configure.in is also good place to place platform hacks.

I apology if I'm missing mingw spefific something.