]> granicus.if.org Git - postgresql/commitdiff
Change ordering of HAVE_TM_ZONE and HAVE_INT_TIMEZONE code blocks
authorThomas G. Lockhart <lockhart@fourpalms.org>
Thu, 31 Dec 1998 16:30:59 +0000 (16:30 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Thu, 31 Dec 1998 16:30:59 +0000 (16:30 +0000)
 to give HAVE_TM_ZONE priority. This fixes glibc2 machines and any other
 machine which passes both tests in configure.
Repair HAVE_TM_ZONE code which stuffs tm structure with date type values.
 Same problems as were originally there before v6.1, but never noticed.
Thanks to Oleg for nagging :)

src/backend/utils/adt/datetime.c
src/backend/utils/adt/dt.c
src/backend/utils/adt/nabstime.c

index 9b612ea4cf8bbe18c9b89db03149c6ac615949cf..bb5d6ed278667f5aa7fcdeaf630437467faaf753 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/adt/datetime.c,v 1.25 1998/09/01 03:25:54 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/adt/datetime.c,v 1.26 1998/12/31 16:30:56 thomas Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -339,7 +339,7 @@ abstime_date(AbsoluteTime abstime)
  *     and then convert again to try to get the time zones correct.
  */
 static int
-date2tm(DateADT dateVal, int *tzp, struct tm * tm, double *fsec, char **tzn)
+date2tm(DateADT dateVal, int *tzp, struct tm *tm, double *fsec, char **tzn)
 {
        struct tm  *tx;
        time_t          utime;
@@ -357,14 +357,18 @@ date2tm(DateADT dateVal, int *tzp, struct tm * tm, double *fsec, char **tzn)
 
                /* convert to system time */
                utime = ((dateVal + (date2j(2000, 1, 1) - date2j(1970, 1, 1))) * 86400);
-               utime += (12 * 60 * 60);/* rotate to noon to get the right day in
-                                                                * time zone */
+               /* rotate to noon to get the right day in time zone */
+               utime += (12 * 60 * 60);
 
 #ifdef USE_POSIX_TIME
                tx = localtime(&utime);
 
 #ifdef DATEDEBUG
-#ifdef HAVE_INT_TIMEZONE
+#if defined(HAVE_TM_ZONE)
+               printf("date2tm- (localtime) %d.%02d.%02d %02d:%02d:%02.0f %s dst=%d\n",
+                          tx->tm_year, tx->tm_mon, tx->tm_mday, tx->tm_hour, tx->tm_min, (double) tm->tm_sec,
+                          tx->tm_zone, tx->tm_isdst);
+#elif defined(HAVE_INT_TIMEZONE)
                printf("date2tm- (localtime) %d.%02d.%02d %02d:%02d:%02.0f %s %s dst=%d\n",
                           tx->tm_year, tx->tm_mon, tx->tm_mday, tx->tm_hour, tx->tm_min, (double) tm->tm_sec,
                           tzname[0], tzname[1], tx->tm_isdst);
@@ -375,21 +379,21 @@ date2tm(DateADT dateVal, int *tzp, struct tm * tm, double *fsec, char **tzn)
                tm->tm_mday = tx->tm_mday;
                tm->tm_isdst = tx->tm_isdst;
 
-#ifdef HAVE_INT_TIMEZONE
-               *tzp = (tm->tm_isdst ? (timezone - 3600) : timezone);
-               if (tzn != NULL)
-                       *tzn = tzname[(tm->tm_isdst > 0)];
-
-#else                                                  /* !HAVE_INT_TIMEZONE */
+#if defined(HAVE_TM_ZONE)
                tm->tm_gmtoff = tx->tm_gmtoff;
                tm->tm_zone = tx->tm_zone;
 
-               *tzp = (tm->tm_isdst ? (tm->tm_gmtoff - 3600) : tm->tm_gmtoff); /* tm_gmtoff is
-                                                                                                                                                * Sun/DEC-ism */
+               /* tm_gmtoff is Sun/DEC-ism */
+               *tzp = -(tm->tm_gmtoff);
+               if (tzn != NULL)
+                       *tzn = (char *)tm->tm_zone;
+#elif defined(HAVE_INT_TIMEZONE)
+               *tzp = (tm->tm_isdst ? (timezone - 3600) : timezone);
                if (tzn != NULL)
-                       *tzn = tm->tm_zone;
+                       *tzn = tzname[(tm->tm_isdst > 0)];
+#else
+#error USE_POSIX_TIME is defined but neither HAVE_TM_ZONE or HAVE_INT_TIMEZONE are defined
 #endif
-
 #else                                                  /* !USE_POSIX_TIME */
                *tzp = CTimeZone;               /* V7 conventions; don't know timezone? */
                if (tzn != NULL)
@@ -411,6 +415,18 @@ date2tm(DateADT dateVal, int *tzp, struct tm * tm, double *fsec, char **tzn)
                        *tzn = NULL;
        }
 
+#ifdef DATEDEBUG
+#if defined(HAVE_TM_ZONE)
+               printf("date2tm- %d.%02d.%02d %02d:%02d:%02.0f (%d %s) dst=%d\n",
+                          tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, (double) tm->tm_sec,
+                          *tzp, tm->tm_zone, tm->tm_isdst);
+#elif defined(HAVE_INT_TIMEZONE)
+               printf("date2tm- %d.%02d.%02d %02d:%02d:%02.0f (%d %s %s) dst=%d\n",
+                          tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, (double) tm->tm_sec,
+                          *tzp, tzname[0], tzname[1], tm->tm_isdst);
+#endif
+#endif
+
        return 0;
 }      /* date2tm() */
 
index fc9a71cc59465f27c41dea5709d537234747ee77..f08d70ccc533821c3a2954d01cf352df1d0c79f9 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.59 1998/10/08 18:30:07 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.60 1998/12/31 16:30:57 thomas Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1454,11 +1454,12 @@ datetime_trunc(text *units, DateTime *datetime)
                                tm->tm_year += 1900;
                                tm->tm_mon += 1;
 
-#ifdef HAVE_INT_TIMEZONE
-                               tz = ((tm->tm_isdst > 0) ? (timezone - 3600) : timezone);
-
-#else                                                  /* !HAVE_INT_TIMEZONE */
+#if defined(HAVE_TM_ZONE)
                                tz = -(tm->tm_gmtoff);  /* tm_gmtoff is Sun/DEC-ism */
+#elif defined(HAVE_INT_TIMEZONE)
+                               tz = ((tm->tm_isdst > 0) ? (timezone - 3600) : timezone);
+#else
+#error USE_POSIX_TIME is defined but neither HAVE_TM_ZONE or HAVE_INT_TIMEZONE are defined
 #endif
 
 #else                                                  /* !USE_POSIX_TIME */
@@ -2414,16 +2415,17 @@ datetime2tm(DateTime dt, int *tzp, struct tm * tm, double *fsec, char **tzn)
 #ifdef USE_POSIX_TIME
                        tx = localtime(&utime);
 #ifdef DATEDEBUG
-#ifdef HAVE_INT_TIMEZONE
+#if defined(HAVE_TM_ZONE)
+                       printf("datetime2tm- (localtime) %d.%02d.%02d %02d:%02d:%02.0f %s dst=%d\n",
+                                  tx->tm_year, tx->tm_mon, tx->tm_mday, tx->tm_hour, tx->tm_min, sec,
+                                  tx->tm_zone, tx->tm_isdst);
+#elif defined(HAVE_INT_TIMEZONE)
                        printf("datetime2tm- (localtime) %d.%02d.%02d %02d:%02d:%02.0f %s %s dst=%d\n",
                                   tx->tm_year, tx->tm_mon, tx->tm_mday, tx->tm_hour, tx->tm_min, sec,
                                   tzname[0], tzname[1], tx->tm_isdst);
 #else
-                       printf("datetime2tm- (localtime) %d.%02d.%02d %02d:%02d:%02.0f %s dst=%d\n",
-                                  tx->tm_year, tx->tm_mon, tx->tm_mday, tx->tm_hour, tx->tm_min, sec,
-                                  tx->tm_zone, tx->tm_isdst);
+#error USE_POSIX_TIME is defined but neither HAVE_TM_ZONE or HAVE_INT_TIMEZONE are defined
 #endif
-#else
 #endif
                        tm->tm_year = tx->tm_year + 1900;
                        tm->tm_mon = tx->tm_mon + 1;
@@ -2442,18 +2444,19 @@ datetime2tm(DateTime dt, int *tzp, struct tm * tm, double *fsec, char **tzn)
 #endif
                        tm->tm_isdst = tx->tm_isdst;
 
-#ifdef HAVE_INT_TIMEZONE
-                       *tzp = (tm->tm_isdst ? (timezone - 3600) : timezone);
-                       if (tzn != NULL)
-                               *tzn = tzname[(tm->tm_isdst > 0)];
-
-#else                                                  /* !HAVE_INT_TIMEZONE */
+#if defined(HAVE_TM_ZONE)
                        tm->tm_gmtoff = tx->tm_gmtoff;
                        tm->tm_zone = tx->tm_zone;
 
                        *tzp = -(tm->tm_gmtoff);        /* tm_gmtoff is Sun/DEC-ism */
                        if (tzn != NULL)
-                               *tzn = tm->tm_zone;
+                               *tzn = (char *)tm->tm_zone;
+#elif defined(HAVE_INT_TIMEZONE)
+                       *tzp = (tm->tm_isdst ? (timezone - 3600) : timezone);
+                       if (tzn != NULL)
+                               *tzn = tzname[(tm->tm_isdst > 0)];
+#else
+#error USE_POSIX_TIME is defined but neither HAVE_TM_ZONE or HAVE_INT_TIMEZONE are defined
 #endif
 
 #else                                                  /* !USE_POSIX_TIME */
@@ -2488,7 +2491,10 @@ datetime2tm(DateTime dt, int *tzp, struct tm * tm, double *fsec, char **tzn)
 
 #ifdef DATEDEBUG
 #ifdef USE_POSIX_TIME
-#ifdef HAVE_INT_TIMEZONE
+#if defined(HAVE_TM_ZONE)
+       printf("datetime2tm- timezone is %s; offset is %d\n",
+                  tm->tm_zone, ((tzp != NULL) ? *tzp : 0));
+#elif defined(HAVE_INT_TIMEZONE)
        printf("datetime2tm- timezone is %s; offset is %d (%d); daylight is %d\n",
                   tzname[tm->tm_isdst != 0], ((tzp != NULL) ? *tzp : 0), CTimeZone, CDayLight);
 #endif
@@ -3034,11 +3040,12 @@ DecodeDateTime(char **field, int *ftype, int nf,
                        tm->tm_year += 1900;
                        tm->tm_mon += 1;
 
-#ifdef HAVE_INT_TIMEZONE
-                       *tzp = ((tm->tm_isdst > 0) ? (timezone - 3600) : timezone);
-
-#else                                                  /* !HAVE_INT_TIMEZONE */
+#if defined(HAVE_TM_ZONE)
                        *tzp = -(tm->tm_gmtoff);        /* tm_gmtoff is Sun/DEC-ism */
+#elif defined(HAVE_INT_TIMEZONE)
+                       *tzp = ((tm->tm_isdst > 0) ? (timezone - 3600) : timezone);
+#else
+#error USE_POSIX_TIME is defined but neither HAVE_TM_ZONE or HAVE_INT_TIMEZONE are defined
 #endif
 
 #else                                                  /* !USE_POSIX_TIME */
@@ -4104,12 +4111,14 @@ EncodeDateTime(struct tm * tm, double fsec, int *tzp, char **tzn, int style, cha
 
 #ifdef DATEDEBUG
 #ifdef USE_POSIX_TIME
-#ifdef HAVE_INT_TIMEZONE
+#if defined(HAVE_TM_ZONE)
+       printf("EncodeDateTime- timezone is %s (%s); offset is %ld (%d); daylight is %d (%d)\n",
+                  *tzn, tm->tm_zone, (-tm->tm_gmtoff), CTimeZone, tm->tm_isdst, CDayLight);
+#elif defined(HAVE_INT_TIMEZONE)
        printf("EncodeDateTime- timezone is %s (%s); offset is %d (%d); daylight is %d (%d)\n",
                   *tzn, tzname[0], *tzp, CTimeZone, tm->tm_isdst, CDayLight);
 #else
-       printf("EncodeDateTime- timezone is %s (%s); offset is %ld (%d); daylight is %d (%d)\n",
-                  *tzn, tm->tm_zone, (-tm->tm_gmtoff), CTimeZone, tm->tm_isdst, CDayLight);
+#error USE_POSIX_TIME is defined but neither HAVE_TM_ZONE or HAVE_INT_TIMEZONE are defined
 #endif
 #else
        printf("EncodeDateTime- timezone is %s (%s); offset is %d; daylight is %d\n",
index 95c1442ac31925dbba981bd69df9cf18e6baaf51..b6147490be700c67d1fa01dfd218344a6b14c364 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- *       $Id: nabstime.c,v 1.50 1998/12/15 15:28:57 scrappy Exp $
+ *       $Id: nabstime.c,v 1.51 1998/12/31 16:30:59 thomas Exp $
  *
  */
 #include <stdio.h>
@@ -57,7 +57,7 @@ GetCurrentAbsoluteTime(void)
        if (!HasCTZSet)
        {
 #ifdef USE_POSIX_TIME
-#ifdef HAVE_TM_ZONE
+#if defined(HAVE_TM_ZONE)
                tm = localtime(&now);
 
                CTimeZone = -tm->tm_gmtoff;             /* tm_gmtoff is Sun/DEC-ism */
@@ -86,9 +86,8 @@ GetCurrentAbsoluteTime(void)
                CTimeZone = tb.timezone * 60;
                CDayLight = (tb.dstflag != 0);
 
-               /*
-                * XXX does this work to get the local timezone string in V7? -
-                * tgl 97/03/18
+               /* XXX does this work to get the local timezone string in V7?
+                * - tgl 97/03/18
                 */
                strftime(CTZName, MAXTZLEN, "%Z", localtime(&now));
 #endif
@@ -136,14 +135,14 @@ abstime2tm(AbsoluteTime time, int *tzp, struct tm * tm, char *tzn)
 #endif
 
 #if defined(DATEDEBUG)
-#if (! defined(HAVE_TM_ZONE)) && defined(HAVE_INT_TIMEZONE)
-       printf("datetime2tm- (localtime) %d.%02d.%02d %02d:%02d:%02d %s %s dst=%d\n",
-                  tx->tm_year, tx->tm_mon, tx->tm_mday, tx->tm_hour, tx->tm_min, tx->tm_sec,
-                  tzname[0], tzname[1], tx->tm_isdst);
-#else
+#if defined(HAVE_TM_ZONE)
        printf("datetime2tm- (localtime) %d.%02d.%02d %02d:%02d:%02d %s dst=%d\n",
                   tx->tm_year, tx->tm_mon, tx->tm_mday, tx->tm_hour, tx->tm_min, tx->tm_sec,
                   tx->tm_zone, tx->tm_isdst);
+#elif defined(HAVE_INT_TIMEZONE)
+       printf("datetime2tm- (localtime) %d.%02d.%02d %02d:%02d:%02d %s %s dst=%d\n",
+                  tx->tm_year, tx->tm_mon, tx->tm_mday, tx->tm_hour, tx->tm_min, tx->tm_sec,
+                  tzname[0], tzname[1], tx->tm_isdst);
 #endif
 #endif
 
@@ -157,7 +156,7 @@ abstime2tm(AbsoluteTime time, int *tzp, struct tm * tm, char *tzn)
        tm->tm_sec = tx->tm_sec;
        tm->tm_isdst = tx->tm_isdst;
 
-#ifdef HAVE_TM_ZONE
+#if defined(HAVE_TM_ZONE)
        tm->tm_gmtoff = tx->tm_gmtoff;
        tm->tm_zone = tx->tm_zone;
 
@@ -171,7 +170,7 @@ abstime2tm(AbsoluteTime time, int *tzp, struct tm * tm, char *tzn)
                *tzp = (tm->tm_isdst ? (timezone - 3600) : timezone);
        if (tzn != NULL)
                strcpy(tzn, tzname[tm->tm_isdst]);
-#else                                                  /* !HAVE_INT_TIMEZONE */
+#else
 #error POSIX time support is broken
 #endif
 #else                                                  /* ! USE_POSIX_TIME */