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 @@
* Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group
* 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);
*/
extern int pgrename(const char *from, const char *to);
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 */
#ifdef WIN32_CLIENT_ONLY
#include <io.h>
......@@ -176,9 +174,19 @@ extern int pgsymlink(const char *oldpath, const char *newpath);
#define rename(from, to) pgrename(from, to)
#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)
#endif
#endif
extern bool rmtree(char *path, bool rmtopdir);
#ifdef WIN32
......
......@@ -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.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)
}
#ifdef WIN32 /* Cygwin has its own symlinks */
/*
* pgsymlink support:
*
......@@ -160,9 +161,7 @@ typedef struct
WORD PrintNameOffset;
WORD PrintNameLength;
WCHAR PathBuffer[1];
}
REPARSE_JUNCTION_DATA_BUFFER;
} REPARSE_JUNCTION_DATA_BUFFER;
#define REPARSE_JUNCTION_DATA_BUFFER_HEADER_SIZE \
FIELD_OFFSET(REPARSE_JUNCTION_DATA_BUFFER, SubstituteNameOffset)
......@@ -246,6 +245,7 @@ pgsymlink(const char *oldpath, const char *newpath)
return 0;
}
#endif
#endif
/* 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