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);
