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.