Re: Win32 defines - Mailing list pgsql-patches

From Peter Eisentraut
Subject Re: Win32 defines
Date
Msg-id Pine.LNX.4.44.0304031545400.2215-100000@peter.localdomain
Whole thread Raw
In response to Win32 defines  (Bruce Momjian <pgman@candle.pha.pa.us>)
Responses Re: Win32 defines
List pgsql-patches
Bruce Momjian writes:

> This adds some Win32 defines to cygwin defines --- this isn't all of
> them, but it is most.

> 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    3 Apr 2003 06:09:26 -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 !defined(__BEOS__) && !defined(N_PLAT_NLM) && !defined(__CYGWIN__) && !defined(WIN32)
>       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);

That list is getting pretty long.  This should be replaced by something
like HAVE_WORKING_LINK and be handled liked HAVE_UNIX_SOCKETS.

> Index: src/backend/postmaster/postmaster.c
> ===================================================================
> RCS file: /cvsroot/pgsql-server/src/backend/postmaster/postmaster.c,v
> retrieving revision 1.309
> diff -c -c -r1.309 postmaster.c
> *** src/backend/postmaster/postmaster.c    24 Mar 2003 22:40:14 -0000    1.309
> --- src/backend/postmaster/postmaster.c    3 Apr 2003 06:09:32 -0000

> ***************
> *** 323,330 ****
>        * 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)
> --- 323,329 ----
>        * 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)

The comment tells the tale.  What is a reasonable check to apply to
Windows here?

> Index: src/include/c.h
> ===================================================================
> RCS file: /cvsroot/pgsql-server/src/include/c.h,v
> retrieving revision 1.135
> diff -c -c -r1.135 c.h
> *** src/include/c.h    9 Jan 2003 18:00:24 -0000    1.135
> --- src/include/c.h    3 Apr 2003 06:09:40 -0000
> ***************
> *** 63,69 ****
>   #endif
>   #include <sys/types.h>
>
> ! #ifdef __CYGWIN__
>   #include <errno.h>
>   #include <sys/fcntl.h>            /* ensure O_BINARY is available */
>   #endif
> --- 63,69 ----
>   #endif
>   #include <sys/types.h>
>
> ! #if defined(__CYGWIN__) || defined(WIN32)
>   #include <errno.h>
>   #include <sys/fcntl.h>            /* ensure O_BINARY is available */
>   #endif

I think this should be killed and <errno.h> and <fcntl.h> always included.

> Index: src/include/utils/datetime.h
> ===================================================================
> RCS file: /cvsroot/pgsql-server/src/include/utils/datetime.h,v
> retrieving revision 1.36
> diff -c -c -r1.36 datetime.h
> *** src/include/utils/datetime.h    20 Feb 2003 05:24:55 -0000    1.36
> --- src/include/utils/datetime.h    3 Apr 2003 06:09:41 -0000
> ***************
> *** 217,223 ****
>   #endif
>
>   /* Global variable holding time zone information. */
> ! #if defined(__CYGWIN__) || defined(N_PLAT_NLM)
>   #define TIMEZONE_GLOBAL _timezone
>   #else
>   #define TIMEZONE_GLOBAL timezone
> --- 217,223 ----
>   #endif
>
>   /* Global variable holding time zone information. */
> ! #if defined(__CYGWIN__) || defined(WIN32) || defined(N_PLAT_NLM)
>   #define TIMEZONE_GLOBAL _timezone
>   #else
>   #define TIMEZONE_GLOBAL timezone

We should move that to the port-specific include files, like

#define timezone _timezone

> 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    3 Apr 2003 06:09:41 -0000

(same here)

> 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    3 Apr 2003 06:09:44 -0000
> ***************
> *** 94,100 ****
>               in_file = stdin;
>           else
>           {
> ! #ifndef __CYGWIN__
>               if ((in_file = fopen(*argv, "r")) == NULL)
>   #else
>               if ((in_file = fopen(*argv, "rb")) == NULL)
> --- 94,100 ----
>               in_file = stdin;
>           else
>           {
> ! #if defined(__CYGWIN__) || defined(WIN32)
>               if ((in_file = fopen(*argv, "r")) == NULL)
>   #else
>               if ((in_file = fopen(*argv, "rb")) == NULL)

This should use the macros defined in c.h.

--
Peter Eisentraut   peter_e@gmx.net


pgsql-patches by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: Win32 path patch
Next
From: Andrew Sullivan
Date:
Subject: pglog-rotator