Bug #2587

Forced definition of struct timezone under MinGW

Added by Luis Lavena almost 6 years ago. Updated over 4 years ago.

ruby -v:ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-mingw32] Backport:


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

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.

check-timezone-struct-avoid-redefinition.patch Magnifier (956 Bytes) Luis Lavena, 01/10/2010 06:07 PM


#1 Updated by Roger Pack almost 6 years ago

is this a cross compile? Which version of gcc?

#2 Updated by Luis Lavena almost 6 years ago


No cross-compiler, native.

Timezone is part of the newer w32api packages for MinGW. Will grab the versions and follow once I have the computer around.



#3 Updated by Nobuyoshi Nakada almost 6 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r26311.
Luis, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


Also available in: Atom PDF