Re: Win32 defines - Mailing list pgsql-patches
From | Bruce Momjian |
---|---|
Subject | Re: Win32 defines |
Date | |
Msg-id | 200304180104.h3I14IT19518@candle.pha.pa.us Whole thread Raw |
In response to | Re: Win32 defines (Peter Eisentraut <peter_e@gmx.net>) |
List | pgsql-patches |
OK, patch attached and applied. --------------------------------------------------------------------------- Peter Eisentraut wrote: > Bruce Momjian writes: > > > OK, I have modified the patch to match your suggestions. I also removed > > the N_PLAT_NLM define because I think that just got in when we were > > thinking about the Novell port that we cancelled. Is that correct? > > Could you use HAVE_WORKING_LINK instead of HAVE_LINK? The symbol names > containing _WORKING_ are sort of standard for cases where the function > exists but doesn't really work well. > > -- > Peter Eisentraut peter_e@gmx.net > > -- 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 18 Apr 2003 00:48:32 -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_WORKING_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.311 diff -c -c -r1.311 postmaster.c *** src/backend/postmaster/postmaster.c 17 Apr 2003 22:26:01 -0000 1.311 --- src/backend/postmaster/postmaster.c 18 Apr 2003 00:48:36 -0000 *************** *** 299,307 **** char path[MAXPGPATH]; FILE *fp; - #ifndef __CYGWIN__ struct stat stat_buf; - #endif if (checkdir == NULL) { --- 299,305 ---- *************** *** 314,328 **** ExitPostmaster(2); } - /* - * Check if the directory has group or world access. If so, reject. - * - * XXX temporarily suppress check when on Windows, because there may not - * 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) --- 312,317 ---- *************** *** 332,341 **** checkdir); } 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); --- 321,338 ---- checkdir); } + /* + * Check if the directory has group or world access. If so, reject. + * + * XXX temporarily suppress check when on Windows, because there may not + * 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_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/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 18 Apr 2003 00:48:37 -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 ---- *************** *** 321,326 **** --- 319,332 ---- #define HAVE_INT64_TIMESTAMP #endif + /* Global variable holding time zone information. */ + #ifndef HAVE_UNDERSCORE_TIMEZONE + #define TIMEZONE_GLOBAL timezone + #else + #define TIMEZONE_GLOBAL _timezone + #define tzname _tzname /* should be in time.h? */ + #endif + /* sig_atomic_t is required by ANSI C, but may be missing on old platforms */ #ifndef HAVE_SIG_ATOMIC_T typedef int sig_atomic_t; *************** *** 680,686 **** * ---------------------------------------------------------------- */ ! #ifdef __CYGWIN__ #define PG_BINARY O_BINARY #define PG_BINARY_R "rb" #define PG_BINARY_W "wb" --- 686,692 ---- * ---------------------------------------------------------------- */ ! #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 18 Apr 2003 00:48:38 -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_WORKING_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/cygwin.h =================================================================== RCS file: /cvsroot/pgsql-server/src/include/port/cygwin.h,v retrieving revision 1.1 diff -c -c -r1.1 cygwin.h *** src/include/port/cygwin.h 21 Mar 2003 17:18:34 -0000 1.1 --- src/include/port/cygwin.h 18 Apr 2003 00:48:38 -0000 *************** *** 1,10 **** /* $Header: /cvsroot/pgsql-server/src/include/port/cygwin.h,v 1.1 2003/03/21 17:18:34 petere Exp $ */ #define HAS_TEST_AND_SET typedef unsigned char slock_t; - - #define tzname _tzname /* should be in time.h? */ - #define HAVE_INT_TIMEZONE /* has int _timezone */ #include <cygwin/version.h> --- 1,9 ---- /* $Header: /cvsroot/pgsql-server/src/include/port/cygwin.h,v 1.1 2003/03/21 17:18:34 petere Exp $ */ + #include <port/win32defs.h> + #define HAS_TEST_AND_SET typedef unsigned char slock_t; #include <cygwin/version.h> 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 18 Apr 2003 00:48:38 -0000 *************** *** 1,3 **** --- 1,7 ---- + /* $Header: /cvsroot/pgsql-server/src/include/port/cygwin.h,v 1.1 2003/03/21 17:18:34 petere Exp $ */ + + #include <port/win32defs.h> + #define USES_WINSOCK #define NOFILE 100 *************** *** 27,29 **** --- 31,86 ---- #define DLLIMPORT #endif + + /* + * Supplement to <sys/types.h>. + */ + #define uid_t int + #define gid_t int + #define pid_t unsigned long + #define ssize_t int + #define mode_t int + #define key_t long + #define ushort unsigned short + + /* + * Supplement to <sys/stat.h>. + */ + #define lstat slat + + #define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR) + #define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG) + + #define S_IRUSR _S_IREAD + #define S_IWUSR _S_IWRITE + #define S_IXUSR _S_IEXEC + #define S_IRWXU (_S_IREAD | _S_IWRITE | _S_IEXEC) + + /* + * Supplement to <errno.h>. + */ + #include <errno.h> + #undef EAGAIN + #undef EINTR + #define EINTR WSAEINTR + #define EAGAIN WSAEWOULDBLOCK + #define EMSGSIZE WSAEMSGSIZE + #define EAFNOSUPPORT WSAEAFNOSUPPORT + #define EWOULDBLOCK WSAEWOULDBLOCK + #define ECONNRESET WSAECONNRESET + #define EINPROGRESS WSAEINPROGRESS + + /* + * Supplement to <math.h>. + */ + #define isnan _isnan + #define finite _finite + extern double rint(double x); + + /* + * Supplement to <stdio.h>. + */ + #define snprintf _snprintf + #define vsnprintf _vsnprintf + + 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 18 Apr 2003 00:48:38 -0000 *************** *** 216,228 **** } 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. --- 216,221 ---- 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 18 Apr 2003 00:48:39 -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 18 Apr 2003 00:48:39 -0000 *************** *** 216,225 **** #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,226 ---- #endif /* Global variable holding time zone information. */ ! #if !defined(__CYGWIN__) && !defined(WIN32) #define TIMEZONE_GLOBAL timezone + #else + #define TIMEZONE_GLOBAL _timezone + #define tzname _tzname /* should be in time.h? */ #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 18 Apr 2003 00:48:40 -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: