Eric Blake <ebb9 <at> byu.net> writes: > As your testcase shows, the inclusion of <sys/time.h> manages to define struct > timezone, but then subsequent includes trigger the macro that changes the > spelling to _timezone, and your declarations all end up referring to the > incomplete type struct _timezone, hence the compiler error. So something in > cygwin's headers needs to change in order to make sure struct timezone is not > hidden by the macro in <cygwin/time.h>.
At first, I thought the solution might be as simple as having <cygwin/time.h> declare struct _timezone which is identical in layout to <time.h>'s struct timezone. But then I realized there is another clash to also fix - if the user does: #include <sys/timeb.h> #include <sys/time.h> then how do they refer to struct timeb.timezone? Maybe the correct fix is a cygwin-specific newlib patch to both sys/timeb.h and sys/time.h that moves the #include <cygwin/time.h> earlier in the file, so that timezone is redefined to _timezone before any other declaration that tries to use the name timezone. -- Eric Blake -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/