Tom Lane wrote:Reini Urban <[EMAIL PROTECTED]> writes:
Yes, they are talking about the localtime return value, but nevertheless the newlib folks refer to that. Their fault.
Should I discuss that with them?
Probably. They have a gratuitous variation from the Single Unix Spec.
But what may be more to the point is that AFAICS we make no assumption about the exact datatype of the timezone variable.
Bruce' patch only assumes time_t on CYGWIN and it is only for pgtypeslib (src/interfaces/ecpg/pgtypeslib/dt.h). Not for src/timezone/pgtz.c
Per my recent post in pghackers, I think that the datatype has nothing to do with it anyway. The real problem is the loss of this code that was in pg_config_manual.h in 7.4 and before:
/* * Define this if your operating system has _timezone rather than timezone */ #if defined(__CYGWIN__) || defined(WIN32) #define HAVE_INT_TIMEZONE /* has int _timezone */ #define HAVE_UNDERSCORE_TIMEZONE 1 #endif
I'm inclined to just put it back, rather than adding a configure test that we never needed before.
OK, I backed out the int cast I had made for dt.h. I agree time_t should cast to int naturally. I noticed that HAVE_INT_TIMEZONE is already a configure test. Is that test not working on Cygwin? Seems it is working on MinGW. The test is this: # PGAC_VAR_INT_TIMEZONE # --------------------- # Check if the global variable `timezone' exists. If so, define # HAVE_INT_TIMEZONE. AC_DEFUN([PGAC_VAR_INT_TIMEZONE], [AC_CACHE_CHECK(for int timezone, pgac_cv_var_int_timezone, [AC_TRY_LINK([#include <time.h> int res;], [res = timezone / 60;], [pgac_cv_var_int_timezone=yes], [pgac_cv_var_int_timezone=no])]) if test x"$pgac_cv_var_int_timezone" = xyes ; then AC_DEFINE(HAVE_INT_TIMEZONE,, [Define to 1 if you have the global variable 'int timezone'.]) fi])# PGAC_VAR_INT_TIMEZONE
You can look in include/pg_config.h to see how it is defined.
This test fails, because you cannot do arithmetic with time_t. cygwin has/had a special workaround in pg_config_manual.h See Tom above.
All other platforms with time_t timezone should manually enable their HAVE_INT_TIMEZONE and manually add the (int) timezone in src/timezone/pgtz.c.
---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives?