I think I see the real issue behind the recent argument about the
datatype of the timezone variable.  I don't think the datatype matters,
but the name certainly does.  In pgtz.c we have

#if defined(HAVE_STRUCT_TM_TM_ZONE)
	return tm->tm_gmtoff;
#elif defined(HAVE_INT_TIMEZONE)
#ifdef HAVE_UNDERSCORE_TIMEZONE
	return -_timezone;
#else
	return -timezone;
#endif
#else
#error No way to determine TZ? Can this happen?
#endif

but the symbol HAVE_UNDERSCORE_TIMEZONE appears nowhere else ---
certainly it's not set by configure, and never has been.  So the
"_timezone" case is dead code at the moment.

In 7.4, pg_config_manual.h contained

/*
 * 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

but this passage has disappeared from CVS tip.  So given a platform that
has "_timezone" but not "timezone", CVS tip is broken.

I am wondering how changing this would affect the existing, allegedly
working Windows port.  Should we put back the pg_config_manual.h entry?
Should we restrict it to __CYGWIN__ only?

			regards, tom lane

Wed, 01 Sep 2004 11:33:24 -0400
Tom Lane <tgl@sss.pgh.pa.us>
timezone vs _timezone on Windows

I just applied a patch to use _timezone on Cygwin consistenly.

---------------------------------------------------------------------------

Tom Lane wrote:
> I think I see the real issue behind the recent argument about the
> datatype of the timezone variable.  I don't think the datatype matters,
> but the name certainly does.  In pgtz.c we have
> 
> #if defined(HAVE_STRUCT_TM_TM_ZONE)
> 	return tm->tm_gmtoff;
> #elif defined(HAVE_INT_TIMEZONE)
> #ifdef HAVE_UNDERSCORE_TIMEZONE
> 	return -_timezone;
> #else
> 	return -timezone;
> #endif
> #else
> #error No way to determine TZ? Can this happen?
> #endif
> 
> but the symbol HAVE_UNDERSCORE_TIMEZONE appears nowhere else ---
> certainly it's not set by configure, and never has been.  So the
> "_timezone" case is dead code at the moment.
> 
> In 7.4, pg_config_manual.h contained
> 
> /*
>  * 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
> 
> but this passage has disappeared from CVS tip.  So given a platform that
> has "_timezone" but not "timezone", CVS tip is broken.
> 
> I am wondering how changing this would affect the existing, allegedly
> working Windows port.  Should we put back the pg_config_manual.h entry?
> Should we restrict it to __CYGWIN__ only?
> 
> 			regards, tom lane
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
> 
>                http://www.postgresql.org/docs/faqs/FAQ.html
> 

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Wed, 8 Sep 2004 15:41:11 -0400 (EDT)
Bruce Momjian <pgman@candle.pha.pa.us>
Re: timezone vs _timezone on Windows