Re: time_t timezone - Mailing list pgsql-patches
From | Reini Urban |
---|---|
Subject | Re: time_t timezone |
Date | |
Msg-id | 4136C14C.7000401@x-ray.at Whole thread Raw |
In response to | Re: time_t timezone (Bruce Momjian <pgman@candle.pha.pa.us>) |
Responses |
Re: time_t timezone
Re: time_t timezone |
List | pgsql-patches |
Bruce Momjian schrieb: > Tom Lane wrote: >>Reini Urban <rurban@x-ray.at> 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. -- Reini Urban http://xarch.tu-graz.ac.at/home/rurban/
pgsql-patches by date: