Re: Win32 defines - Mailing list pgsql-patches
From | Bruce Momjian |
---|---|
Subject | Re: Win32 defines |
Date | |
Msg-id | 200304161754.h3GHsEX29183@candle.pha.pa.us Whole thread Raw |
In response to | Re: Win32 defines (Tom Lane <tgl@sss.pgh.pa.us>) |
Responses |
Re: Win32 defines
|
List | pgsql-patches |
Tom Lane wrote: > Bruce Momjian <pgman@candle.pha.pa.us> writes: > > Tom Lane wrote: > >> Why is this removing the use of the TIMEZONE_GLOBAL macro? > > > It was Peter's suggestion. Once we had a port-specific define, we > > should use timezone directly, no? > > > #define timezone _timezone > > Oh, I missed that part. A bit risky IMHO --- the macro might expand in > places you didn't expect/want. TIMEZONE_GLOBAL is unlikely to cause > any such conflict ... Agreed. A 'timezone' macro will expand as a structure member, while a timezone variable will not. Here is a new version that defines a variable timezone to equal _timezone. This seems cleaner, and removes the need for TIMEZONE_GLOBAL. I am still researching the stat() handling in postmaster.c. SRA has a porting document that I translated from Japanese (via Babelfish) which looks very helpful. -- 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 Index: src/backend/access/transam/xlog.c =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/access/transam/xlog.c,v retrieving revision 1.112 diff -c -c -r1.112 xlog.c *** src/backend/access/transam/xlog.c 21 Feb 2003 00:06:22 -0000 1.112 --- src/backend/access/transam/xlog.c 16 Apr 2003 17:49:45 -0000 *************** *** 1507,1513 **** * overwrite an existing logfile. However, there shouldn't be one, so * rename() is an acceptable substitute except for the truly paranoid. */ ! #if !defined(__BEOS__) && !defined(N_PLAT_NLM) && !defined(__CYGWIN__) if (link(tmppath, path) < 0) elog(PANIC, "link from %s to %s (initialization of log file %u, segment %u) failed: %m", tmppath, path, log, seg); --- 1507,1513 ---- * overwrite an existing logfile. However, there shouldn't be one, so * rename() is an acceptable substitute except for the truly paranoid. */ ! #if HAVE_LINK if (link(tmppath, path) < 0) elog(PANIC, "link from %s to %s (initialization of log file %u, segment %u) failed: %m", tmppath, path, log, seg); Index: src/backend/postmaster/postmaster.c =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/postmaster/postmaster.c,v retrieving revision 1.310 diff -c -c -r1.310 postmaster.c *** src/backend/postmaster/postmaster.c 6 Apr 2003 22:45:22 -0000 1.310 --- src/backend/postmaster/postmaster.c 16 Apr 2003 17:49:48 -0000 *************** *** 300,306 **** char path[MAXPGPATH]; FILE *fp; ! #ifndef __CYGWIN__ struct stat stat_buf; #endif --- 300,306 ---- char path[MAXPGPATH]; FILE *fp; ! #if !defined(__CYGWIN__) && !defined(WIN32) struct stat stat_buf; #endif *************** *** 322,329 **** * be proper support for Unix-y file permissions. Need to think of a * reasonable check to apply on Windows. */ ! #ifndef __CYGWIN__ ! if (stat(checkdir, &stat_buf) == -1) { if (errno == ENOENT) --- 322,328 ---- * be proper support for Unix-y file permissions. Need to think of a * reasonable check to apply on Windows. */ ! #if !defined(__CYGWIN__) && !defined(WIN32) if (stat(checkdir, &stat_buf) == -1) { if (errno == ENOENT) *************** *** 336,342 **** if (stat_buf.st_mode & (S_IRWXG | S_IRWXO)) elog(FATAL, "data directory %s has group or world access; permissions should be u=rwx (0700)", checkdir); ! #endif /* !__CYGWIN__ */ /* Look for PG_VERSION before looking for pg_control */ ValidatePgVersion(checkdir); --- 335,341 ---- if (stat_buf.st_mode & (S_IRWXG | S_IRWXO)) elog(FATAL, "data directory %s has group or world access; permissions should be u=rwx (0700)", checkdir); ! #endif /* Look for PG_VERSION before looking for pg_control */ ValidatePgVersion(checkdir); Index: src/backend/utils/adt/datetime.c =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/utils/adt/datetime.c,v retrieving revision 1.103 diff -c -c -r1.103 datetime.c *** src/backend/utils/adt/datetime.c 4 Apr 2003 04:50:44 -0000 1.103 --- src/backend/utils/adt/datetime.c 16 Apr 2003 17:49:51 -0000 *************** *** 1533,1539 **** /* tm_gmtoff is Sun/DEC-ism */ tz = -(tmp->tm_gmtoff); #elif defined(HAVE_INT_TIMEZONE) ! tz = ((tmp->tm_isdst > 0) ? (TIMEZONE_GLOBAL - 3600) : TIMEZONE_GLOBAL); #endif /* HAVE_INT_TIMEZONE */ } else --- 1533,1539 ---- /* tm_gmtoff is Sun/DEC-ism */ tz = -(tmp->tm_gmtoff); #elif defined(HAVE_INT_TIMEZONE) ! tz = ((tmp->tm_isdst > 0) ? (timezone - 3600) : timezone); #endif /* HAVE_INT_TIMEZONE */ } else Index: src/backend/utils/adt/nabstime.c =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/utils/adt/nabstime.c,v retrieving revision 1.106 diff -c -c -r1.106 nabstime.c *** src/backend/utils/adt/nabstime.c 4 Apr 2003 04:50:44 -0000 1.106 --- src/backend/utils/adt/nabstime.c 16 Apr 2003 17:49:52 -0000 *************** *** 261,267 **** } else { ! *tzp = ((tm->tm_isdst > 0) ? (TIMEZONE_GLOBAL - 3600) : TIMEZONE_GLOBAL); if (tzn != NULL) { --- 261,267 ---- } else { ! *tzp = ((tm->tm_isdst > 0) ? (timezone - 3600) : timezone); if (tzn != NULL) { Index: src/backend/utils/adt/timestamp.c =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/utils/adt/timestamp.c,v retrieving revision 1.83 diff -c -c -r1.83 timestamp.c *** src/backend/utils/adt/timestamp.c 7 Apr 2003 15:04:03 -0000 1.83 --- src/backend/utils/adt/timestamp.c 16 Apr 2003 17:49:53 -0000 *************** *** 899,905 **** if (tzn != NULL) *tzn = (char *) tm->tm_zone; #elif defined(HAVE_INT_TIMEZONE) ! *tzp = ((tm->tm_isdst > 0) ? (TIMEZONE_GLOBAL - 3600) : TIMEZONE_GLOBAL); if (tzn != NULL) *tzn = tzname[(tm->tm_isdst > 0)]; #endif --- 899,905 ---- if (tzn != NULL) *tzn = (char *) tm->tm_zone; #elif defined(HAVE_INT_TIMEZONE) ! *tzp = ((tm->tm_isdst > 0) ? (timezone - 3600) : timezone); if (tzn != NULL) *tzn = tzname[(tm->tm_isdst > 0)]; #endif Index: src/include/c.h =================================================================== RCS file: /cvsroot/pgsql-server/src/include/c.h,v retrieving revision 1.137 diff -c -c -r1.137 c.h *** src/include/c.h 6 Apr 2003 22:45:23 -0000 1.137 --- src/include/c.h 16 Apr 2003 17:49:55 -0000 *************** *** 51,57 **** */ #include "pg_config.h" ! #include "pg_config_manual.h" #include "pg_config_os.h" #include "postgres_ext.h" --- 51,57 ---- */ #include "pg_config.h" ! #include "pg_config_manual.h" /* must be after pg_config.h */ #include "pg_config_os.h" #include "postgres_ext.h" *************** *** 65,74 **** #endif #include <sys/types.h> - #ifdef __CYGWIN__ #include <errno.h> #include <sys/fcntl.h> /* ensure O_BINARY is available */ - #endif #ifdef HAVE_SUPPORTDEFS_H #include <SupportDefs.h> #endif --- 65,72 ---- *************** *** 680,686 **** * ---------------------------------------------------------------- */ ! #ifdef __CYGWIN__ #define PG_BINARY O_BINARY #define PG_BINARY_R "rb" #define PG_BINARY_W "wb" --- 678,684 ---- * ---------------------------------------------------------------- */ ! #if defined(__CYGWIN__) || defined(WIN32) #define PG_BINARY O_BINARY #define PG_BINARY_R "rb" #define PG_BINARY_W "wb" Index: src/include/pg_config_manual.h =================================================================== RCS file: /cvsroot/pgsql-server/src/include/pg_config_manual.h,v retrieving revision 1.1 diff -c -c -r1.1 pg_config_manual.h *** src/include/pg_config_manual.h 6 Apr 2003 22:45:23 -0000 1.1 --- src/include/pg_config_manual.h 16 Apr 2003 17:49:56 -0000 *************** *** 135,140 **** --- 135,156 ---- #endif /* + * Define this if your operating system supports link() + */ + #if !defined(__QNX__) && !defined(__BEOS__) && \ + !defined(__CYGWIN__) && !defined(WIN32) + # define HAVE_LINK 1 + #endif + + /* + * 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 + + /* * This is the default directory in which AF_UNIX socket files are * placed. Caution: changing this risks breaking your existing client * applications, which are likely to continue to look in the old Index: src/include/port/win32.h =================================================================== RCS file: /cvsroot/pgsql-server/src/include/port/win32.h,v retrieving revision 1.6 diff -c -c -r1.6 win32.h *** src/include/port/win32.h 22 Jan 2002 19:02:40 -0000 1.6 --- src/include/port/win32.h 16 Apr 2003 17:49:56 -0000 *************** *** 1,6 **** --- 1,9 ---- #define USES_WINSOCK #define NOFILE 100 + #define tzname _tzname /* should be in time.h? */ + #define HAVE_INT_TIMEZONE /* has int _timezone */ + /* defines for dynamic linking on Win32 platform */ #ifdef __CYGWIN__ Index: src/include/utils/datetime.h =================================================================== RCS file: /cvsroot/pgsql-server/src/include/utils/datetime.h,v retrieving revision 1.37 diff -c -c -r1.37 datetime.h *** src/include/utils/datetime.h 4 Apr 2003 04:50:44 -0000 1.37 --- src/include/utils/datetime.h 16 Apr 2003 17:49:57 -0000 *************** *** 216,226 **** } while(0) #endif ! /* Global variable holding time zone information. */ ! #if defined(__CYGWIN__) || defined(N_PLAT_NLM) ! #define TIMEZONE_GLOBAL _timezone ! #else ! #define TIMEZONE_GLOBAL timezone #endif /* --- 216,224 ---- } while(0) #endif ! #ifdef HAVE_UNDERSCORE_TIMEZONE ! short timezone = _timezone; ! char *tzname = _tzname; #endif /* Index: src/interfaces/ecpg/include/sqlca.h =================================================================== RCS file: /cvsroot/pgsql-server/src/interfaces/ecpg/include/sqlca.h,v retrieving revision 1.22 diff -c -c -r1.22 sqlca.h *** src/interfaces/ecpg/include/sqlca.h 10 Mar 2003 22:28:21 -0000 1.22 --- src/interfaces/ecpg/include/sqlca.h 16 Apr 2003 17:49:57 -0000 *************** *** 2,8 **** #define POSTGRES_SQLCA_H #ifndef DLLIMPORT ! #ifdef __CYGWIN__ #define DLLIMPORT __declspec (dllimport) #else #define DLLIMPORT --- 2,8 ---- #define POSTGRES_SQLCA_H #ifndef DLLIMPORT ! #if defined(__CYGWIN__) || defined(WIN32) #define DLLIMPORT __declspec (dllimport) #else #define DLLIMPORT Index: src/interfaces/ecpg/pgtypeslib/dt.h =================================================================== RCS file: /cvsroot/pgsql-server/src/interfaces/ecpg/pgtypeslib/dt.h,v retrieving revision 1.3 diff -c -c -r1.3 dt.h *** src/interfaces/ecpg/pgtypeslib/dt.h 1 Apr 2003 14:37:25 -0000 1.3 --- src/interfaces/ecpg/pgtypeslib/dt.h 16 Apr 2003 17:49:57 -0000 *************** *** 215,227 **** } while(0) #endif - /* Global variable holding time zone information. */ - #if defined(__CYGWIN__) || defined(N_PLAT_NLM) - #define TIMEZONE_GLOBAL _timezone - #else - #define TIMEZONE_GLOBAL timezone - #endif - /* * Date/time validation * Include check for leap year. --- 215,220 ---- Index: src/interfaces/ecpg/pgtypeslib/dt_common.c =================================================================== RCS file: /cvsroot/pgsql-server/src/interfaces/ecpg/pgtypeslib/dt_common.c,v retrieving revision 1.3 diff -c -c -r1.3 dt_common.c *** src/interfaces/ecpg/pgtypeslib/dt_common.c 1 Apr 2003 14:37:25 -0000 1.3 --- src/interfaces/ecpg/pgtypeslib/dt_common.c 16 Apr 2003 17:49:59 -0000 *************** *** 9,14 **** --- 9,19 ---- #include "dt.h" #include "extern.h" + #ifdef HAVE_UNDERSCORE_TIMEZONE + short timezone = _timezone; + char *tzname = _tzname; + #endif + static int day_tab[2][13] = { {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0}, {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0}}; *************** *** 1167,1173 **** #elif defined(HAVE_INT_TIMEZONE) if (tzp != NULL) { ! *tzp = ((tm->tm_isdst > 0) ? (TIMEZONE_GLOBAL - 3600) : TIMEZONE_GLOBAL); if (tzn != NULL) { --- 1172,1178 ---- #elif defined(HAVE_INT_TIMEZONE) if (tzp != NULL) { ! *tzp = ((tm->tm_isdst > 0) ? (timezone - 3600) : timezone); if (tzn != NULL) { *************** *** 1252,1258 **** /* tm_gmtoff is Sun/DEC-ism */ tz = -(tmp->tm_gmtoff); #elif defined(HAVE_INT_TIMEZONE) ! tz = ((tmp->tm_isdst > 0) ? (TIMEZONE_GLOBAL - 3600) : TIMEZONE_GLOBAL); #endif /* HAVE_INT_TIMEZONE */ } else --- 1257,1263 ---- /* tm_gmtoff is Sun/DEC-ism */ tz = -(tmp->tm_gmtoff); #elif defined(HAVE_INT_TIMEZONE) ! tz = ((tmp->tm_isdst > 0) ? (timezone - 3600) : timezone); #endif /* HAVE_INT_TIMEZONE */ } else Index: src/interfaces/ecpg/pgtypeslib/timestamp.c =================================================================== RCS file: /cvsroot/pgsql-server/src/interfaces/ecpg/pgtypeslib/timestamp.c,v retrieving revision 1.5 diff -c -c -r1.5 timestamp.c *** src/interfaces/ecpg/pgtypeslib/timestamp.c 1 Apr 2003 14:37:25 -0000 1.5 --- src/interfaces/ecpg/pgtypeslib/timestamp.c 16 Apr 2003 17:50:00 -0000 *************** *** 214,220 **** if (tzn != NULL) *tzn = (char *) tm->tm_zone; #elif defined(HAVE_INT_TIMEZONE) ! *tzp = ((tm->tm_isdst > 0) ? (TIMEZONE_GLOBAL - 3600) : TIMEZONE_GLOBAL); if (tzn != NULL) *tzn = tzname[(tm->tm_isdst > 0)]; #endif --- 214,220 ---- if (tzn != NULL) *tzn = (char *) tm->tm_zone; #elif defined(HAVE_INT_TIMEZONE) ! *tzp = ((tm->tm_isdst > 0) ? (timezone - 3600) : timezone); if (tzn != NULL) *tzn = tzname[(tm->tm_isdst > 0)]; #endif Index: src/tools/entab/entab.c =================================================================== RCS file: /cvsroot/pgsql-server/src/tools/entab/entab.c,v retrieving revision 1.11 diff -c -c -r1.11 entab.c *** src/tools/entab/entab.c 9 Jan 2002 18:21:46 -0000 1.11 --- src/tools/entab/entab.c 16 Apr 2003 17:50:01 -0000 *************** *** 12,17 **** --- 12,19 ---- #include <stdlib.h> #include <string.h> + #include "../include/c.h" + #define NUL '\0' #ifndef TRUE *************** *** 94,104 **** in_file = stdin; else { ! #ifndef __CYGWIN__ ! if ((in_file = fopen(*argv, "r")) == NULL) ! #else ! if ((in_file = fopen(*argv, "rb")) == NULL) ! #endif halt("PERROR: Can not open file %s\n", argv[0]); argv++; } --- 96,102 ---- in_file = stdin; else { ! if ((in_file = fopen(*argv, PG_BINARY_R)) == NULL) halt("PERROR: Can not open file %s\n", argv[0]); argv++; }
pgsql-patches by date: