Commit c0c4883b authored by Bruce Momjian's avatar Bruce Momjian

Use native Cygwin symlinks so tablespaces work on Win95/98/ME which

don't support junction points.  Doesn't affect native Win32.
parent 669ca7af
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/include/port.h,v 1.63 2004/09/27 23:24:37 momjian Exp $ * $PostgreSQL: pgsql/src/include/port.h,v 1.64 2004/10/11 22:50:33 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -167,8 +167,6 @@ extern int pclose_check(FILE *stream); ...@@ -167,8 +167,6 @@ extern int pclose_check(FILE *stream);
*/ */
extern int pgrename(const char *from, const char *to); extern int pgrename(const char *from, const char *to);
extern int pgunlink(const char *path); extern int pgunlink(const char *path);
extern int pgsymlink(const char *oldpath, const char *newpath);
/* Include this first so later includes don't see these defines */ /* Include this first so later includes don't see these defines */
#ifdef WIN32_CLIENT_ONLY #ifdef WIN32_CLIENT_ONLY
#include <io.h> #include <io.h>
...@@ -176,9 +174,19 @@ extern int pgsymlink(const char *oldpath, const char *newpath); ...@@ -176,9 +174,19 @@ extern int pgsymlink(const char *oldpath, const char *newpath);
#define rename(from, to) pgrename(from, to) #define rename(from, to) pgrename(from, to)
#define unlink(path) pgunlink(path) #define unlink(path) pgunlink(path)
/*
* Cygwin has its own symlinks which work on Win95/98/ME where
* junction points don't, so use it instead. We have no way of
* knowing what type of system Cygwin binaries will be run on.
*/
#ifdef WIN32
extern int pgsymlink(const char *oldpath, const char *newpath);
#define symlink(oldpath, newpath) pgsymlink(oldpath, newpath) #define symlink(oldpath, newpath) pgsymlink(oldpath, newpath)
#endif #endif
#endif
extern bool rmtree(char *path, bool rmtopdir); extern bool rmtree(char *path, bool rmtopdir);
#ifdef WIN32 #ifdef WIN32
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* Win32 (NT, Win2k, XP). replace() doesn't work on Win95/98/Me. * Win32 (NT, Win2k, XP). replace() doesn't work on Win95/98/Me.
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/port/dirmod.c,v 1.27 2004/09/27 19:16:02 momjian Exp $ * $PostgreSQL: pgsql/src/port/dirmod.c,v 1.28 2004/10/11 22:50:48 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -142,6 +142,7 @@ pgunlink(const char *path) ...@@ -142,6 +142,7 @@ pgunlink(const char *path)
} }
#ifdef WIN32 /* Cygwin has its own symlinks */
/* /*
* pgsymlink support: * pgsymlink support:
* *
...@@ -160,9 +161,7 @@ typedef struct ...@@ -160,9 +161,7 @@ typedef struct
WORD PrintNameOffset; WORD PrintNameOffset;
WORD PrintNameLength; WORD PrintNameLength;
WCHAR PathBuffer[1]; WCHAR PathBuffer[1];
} } REPARSE_JUNCTION_DATA_BUFFER;
REPARSE_JUNCTION_DATA_BUFFER;
#define REPARSE_JUNCTION_DATA_BUFFER_HEADER_SIZE \ #define REPARSE_JUNCTION_DATA_BUFFER_HEADER_SIZE \
FIELD_OFFSET(REPARSE_JUNCTION_DATA_BUFFER, SubstituteNameOffset) FIELD_OFFSET(REPARSE_JUNCTION_DATA_BUFFER, SubstituteNameOffset)
...@@ -246,6 +245,7 @@ pgsymlink(const char *oldpath, const char *newpath) ...@@ -246,6 +245,7 @@ pgsymlink(const char *oldpath, const char *newpath)
return 0; return 0;
} }
#endif #endif
#endif
/* We undefined this above, so we redefine it */ /* We undefined this above, so we redefine it */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment