Index: configure =================================================================== RCS file: /cvsroot/pgsql-server/configure,v retrieving revision 1.381 diff -c -c -r1.381 configure *** configure 4 Aug 2004 21:33:34 -0000 1.381 --- configure 8 Aug 2004 00:45:33 -0000 *************** *** 12060,12066 **** LIBOBJS="$LIBOBJS gettimeofday.$ac_objext" LIBOBJS="$LIBOBJS kill.$ac_objext" LIBOBJS="$LIBOBJS open.$ac_objext" ! LIBOBJS="$LIBOBJS rand.$ac_objext" ;; esac if test "$with_readline" = yes; then --- 12060,12072 ---- LIBOBJS="$LIBOBJS gettimeofday.$ac_objext" LIBOBJS="$LIBOBJS kill.$ac_objext" LIBOBJS="$LIBOBJS open.$ac_objext" ! LIBOBJS="$LIBOBJS rand.$ac_objext" ! ! cat >>confdefs.h <<\_ACEOF ! #define HAVE_SYMLINK 1 ! _ACEOF ! ! ;; esac if test "$with_readline" = yes; then Index: configure.in =================================================================== RCS file: /cvsroot/pgsql-server/configure.in,v retrieving revision 1.371 diff -c -c -r1.371 configure.in *** configure.in 4 Aug 2004 21:33:35 -0000 1.371 --- configure.in 8 Aug 2004 00:45:37 -0000 *************** *** 908,914 **** AC_LIBOBJ(gettimeofday) AC_LIBOBJ(kill) AC_LIBOBJ(open) ! AC_LIBOBJ(rand) ;; esac if test "$with_readline" = yes; then --- 908,917 ---- AC_LIBOBJ(gettimeofday) AC_LIBOBJ(kill) AC_LIBOBJ(open) ! AC_LIBOBJ(rand) ! AC_DEFINE([HAVE_SYMLINK], 1, ! [Define to 1 if you have the `symlink' function.]) ! ;; esac if test "$with_readline" = yes; then Index: src/backend/commands/tablespace.c =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/commands/tablespace.c,v retrieving revision 1.7 diff -c -c -r1.7 tablespace.c *** src/backend/commands/tablespace.c 1 Aug 2004 20:30:48 -0000 1.7 --- src/backend/commands/tablespace.c 8 Aug 2004 00:45:44 -0000 *************** *** 482,492 **** --- 482,501 ---- 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); Index: src/port/dirmod.c =================================================================== RCS file: /cvsroot/pgsql-server/src/port/dirmod.c,v retrieving revision 1.14 diff -c -c -r1.14 dirmod.c *** src/port/dirmod.c 7 Aug 2004 21:48:09 -0000 1.14 --- src/port/dirmod.c 8 Aug 2004 00:45:52 -0000 *************** *** 153,161 **** { HANDLE dirhandle; DWORD len; - char *p = nativeTarget; char buffer[MAX_PATH*sizeof(WCHAR) + sizeof(REPARSE_JUNCTION_DATA_BUFFER)]; char nativeTarget[MAX_PATH]; REPARSE_JUNCTION_DATA_BUFFER *reparseBuf = (REPARSE_JUNCTION_DATA_BUFFER*)buffer; CreateDirectory(newpath, 0); --- 153,161 ---- { HANDLE dirhandle; DWORD len; 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,211 **** NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&msg, 0, NULL ); ereport(ERROR, (errcode_for_file_access(), errmsg("Error setting junction for %s: %s", nativeTarget, msg))); ! LocalFree(msg); CloseHandle(dirhandle); --- 203,214 ---- 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);