From: Luis Lavena Date: 2010-01-10T18:07:11+09:00 Subject: [ruby-core:27515] [Bug #2587] Forced definition of struct timezone under MinGW Bug #2587: Forced definition of struct timezone under MinGW http://redmine.ruby-lang.org/issues/show/2587 Author: Luis Lavena Status: Open, Priority: Normal Category: build, Target version: 1.9.x ruby -v: ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-mingw32] It appears that win32.h is forcing the definition of timezone structure, even when it has been defined by MinGW provided headers. The output from compilation of miniruby:
In file included from ../include/ruby/defines.h:205:0,
                 from ../include/ruby/ruby.h:73,
                 from ../include/ruby.h:32,
                 from ../main.c:13:
../include/ruby/win32.h:201:8: error: redefinition of 'struct timezone'
And the code that defines it:

#ifdef __MINGW32__
struct timezone {
  int tz_minuteswest;
  int tz_dsttime;
};
#undef isascii
#define isascii __isascii
#endif
It is clear that this was made to workaround limitations of older versions of MinGW, but a simple check with AC_CHECK_TYPES (or if specific are needed: AC_CHECK_MEMBERS), any of those could provide the defines needed to avoid the forced redefinition. Please find attached a naive patch for configure.in and win32.h that use HAVE_STRUCT_TIMEZONE Thank you. ---------------------------------------- http://redmine.ruby-lang.org