From 00832809a0fe271487d6851af72d0d88246a5d94 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 11 Apr 2008 23:53:00 +0000 Subject: [PATCH] A quick try at un-breaking the Cygwin build. Whether it needs the pgwin32_safestat remains to be determined, but in any case the current code is not tolerable. --- src/include/port.h | 31 ++++++++++++++++--------------- src/port/dirmod.c | 9 ++++++--- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/include/port.h b/src/include/port.h index e1cc4c74dc..3215b5f0a2 100644 --- a/src/include/port.h +++ b/src/include/port.h @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/port.h,v 1.119 2008/04/10 16:58:51 mha Exp $ + * $PostgreSQL: pgsql/src/include/port.h,v 1.120 2008/04/11 23:53:00 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -281,9 +281,23 @@ extern void copydir(char *fromdir, char *todir, bool recurse); extern bool rmtree(char *path, bool rmtopdir); +/* + * stat() is not guaranteed to set the st_size field on win32, so we + * redefine it to our own implementation that is. + * + * We must pull in sys/stat.h here so the system header definition + * goes in first, and we redefine that, and not the other way around. + */ +#if defined(WIN32) && !defined(__CYGWIN__) +#include +extern int pgwin32_safestat(const char *path, struct stat *buf); +#define stat(a,b) pgwin32_safestat(a,b) +#endif + #if defined(WIN32) && !defined(__CYGWIN__) -/* open() and fopen() replacements to allow deletion of open files and +/* + * open() and fopen() replacements to allow deletion of open files and * passing of other special options. */ #define O_DIRECT 0x80000000 @@ -298,19 +312,6 @@ extern FILE *pgwin32_fopen(const char *, const char *); #define popen(a,b) _popen(a,b) #define pclose(a) _pclose(a) -/* - * stat() is not guaranteed to set the st_size field on win32, so we - * redefine it to our own implementation that is. - * - * We must pull in sys/stat.h here so the system header definition - * goes in first, and we redefine that, and not the other way around. - */ -extern int pgwin32_safestat(const char *path, struct stat *buf); -#if !defined(FRONTEND) && !defined(_DIRMOD_C) -#include -#define stat(a,b) pgwin32_safestat(a,b) -#endif - /* Missing rand functions */ extern long lrand48(void); extern void srand48(long seed); diff --git a/src/port/dirmod.c b/src/port/dirmod.c index 792c3f21b6..087116c42c 100644 --- a/src/port/dirmod.c +++ b/src/port/dirmod.c @@ -10,7 +10,7 @@ * Win32 (NT, Win2k, XP). replace() doesn't work on Win95/98/Me. * * IDENTIFICATION - * $PostgreSQL: pgsql/src/port/dirmod.c,v 1.52 2008/04/10 16:58:51 mha Exp $ + * $PostgreSQL: pgsql/src/port/dirmod.c,v 1.53 2008/04/11 23:53:00 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -449,13 +449,15 @@ report_and_fail: } -#ifdef WIN32 +#if defined(WIN32) && !defined(__CYGWIN__) + +#undef stat + /* * The stat() function in win32 is not guaranteed to update the st_size * field when run. So we define our own version that uses the Win32 API * to update this field. */ -#undef stat int pgwin32_safestat(const char *path, struct stat *buf) { @@ -480,4 +482,5 @@ pgwin32_safestat(const char *path, struct stat *buf) return 0; } + #endif