aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure8
-rw-r--r--configure.in7
-rw-r--r--src/backend/commands/tablespace.c11
-rw-r--r--src/port/dirmod.c9
4 files changed, 28 insertions, 7 deletions
diff --git a/configure b/configure
index 75069605648..a9356bcc860 100755
--- a/configure
+++ b/configure
@@ -12060,7 +12060,13 @@ LIBOBJS="$LIBOBJS copydir.$ac_objext"
LIBOBJS="$LIBOBJS gettimeofday.$ac_objext"
LIBOBJS="$LIBOBJS kill.$ac_objext"
LIBOBJS="$LIBOBJS open.$ac_objext"
-LIBOBJS="$LIBOBJS rand.$ac_objext" ;;
+LIBOBJS="$LIBOBJS rand.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SYMLINK 1
+_ACEOF
+
+;;
esac
if test "$with_readline" = yes; then
diff --git a/configure.in b/configure.in
index 5a27f6cc75a..cf12ce64937 100644
--- a/configure.in
+++ b/configure.in
@@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script.
-dnl $PostgreSQL: pgsql/configure.in,v 1.371 2004/08/04 21:33:35 tgl Exp $
+dnl $PostgreSQL: pgsql/configure.in,v 1.372 2004/08/08 01:31:09 momjian Exp $
dnl
dnl Developers, please strive to achieve this order:
dnl
@@ -908,7 +908,10 @@ AC_LIBOBJ(copydir)
AC_LIBOBJ(gettimeofday)
AC_LIBOBJ(kill)
AC_LIBOBJ(open)
-AC_LIBOBJ(rand) ;;
+AC_LIBOBJ(rand)
+AC_DEFINE([HAVE_SYMLINK], 1,
+ [Define to 1 if you have the `symlink' function.])
+;;
esac
if test "$with_readline" = yes; then
diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c
index 1a9e69dc123..05a13315a1f 100644
--- a/src/backend/commands/tablespace.c
+++ b/src/backend/commands/tablespace.c
@@ -45,7 +45,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/commands/tablespace.c,v 1.7 2004/08/01 20:30:48 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/commands/tablespace.c,v 1.8 2004/08/08 01:31:11 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -482,11 +482,20 @@ DropTableSpace(DropTableSpaceStmt *stmt)
errmsg("could not unlink file \"%s\": %m",
subfile)));
+#ifndef WIN32
if (unlink(location) < 0)
ereport(ERROR,
(errcode_for_file_access(),
errmsg("could not unlink symbolic link \"%s\": %m",
location)));
+#else
+ /* The junction is a directory, not a file */
+ if (rmdir(location) < 0)
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not remove junction dir \"%s\": %m",
+ location)));
+#endif
pfree(subfile);
pfree(location);
diff --git a/src/port/dirmod.c b/src/port/dirmod.c
index 3010127c4c2..1ff57a26883 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.14 2004/08/07 21:48:09 momjian Exp $
+ * $PostgreSQL: pgsql/src/port/dirmod.c,v 1.15 2004/08/08 01:31:15 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -153,9 +153,9 @@ pgsymlink(const char *oldpath, const char *newpath)
{
HANDLE dirhandle;
DWORD len;
- char *p = nativeTarget;
char buffer[MAX_PATH*sizeof(WCHAR) + sizeof(REPARSE_JUNCTION_DATA_BUFFER)];
char nativeTarget[MAX_PATH];
+ char *p = nativeTarget;
REPARSE_JUNCTION_DATA_BUFFER *reparseBuf = (REPARSE_JUNCTION_DATA_BUFFER*)buffer;
CreateDirectory(newpath, 0);
@@ -203,9 +203,12 @@ pgsymlink(const char *oldpath, const char *newpath)
NULL, GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPSTR)&msg, 0, NULL );
+#ifdef FRONTEND
+ fprintf(stderr, "Error setting junction for %s: %s", nativeTarget, msg);
+#else
ereport(ERROR, (errcode_for_file_access(),
errmsg("Error setting junction for %s: %s", nativeTarget, msg)));
-
+#endif
LocalFree(msg);
CloseHandle(dirhandle);