Fixups for Win32 symlinks.
This commit is contained in:
parent
9b3caebb0a
commit
5e01aa7ad1
8
configure
vendored
8
configure
vendored
@ -12060,7 +12060,13 @@ LIBOBJS="$LIBOBJS copydir.$ac_objext"
|
|||||||
LIBOBJS="$LIBOBJS gettimeofday.$ac_objext"
|
LIBOBJS="$LIBOBJS gettimeofday.$ac_objext"
|
||||||
LIBOBJS="$LIBOBJS kill.$ac_objext"
|
LIBOBJS="$LIBOBJS kill.$ac_objext"
|
||||||
LIBOBJS="$LIBOBJS open.$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
|
esac
|
||||||
|
|
||||||
if test "$with_readline" = yes; then
|
if test "$with_readline" = yes; then
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
dnl Process this file with autoconf to produce a configure script.
|
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
|
||||||
dnl Developers, please strive to achieve this order:
|
dnl Developers, please strive to achieve this order:
|
||||||
dnl
|
dnl
|
||||||
@ -908,7 +908,10 @@ AC_LIBOBJ(copydir)
|
|||||||
AC_LIBOBJ(gettimeofday)
|
AC_LIBOBJ(gettimeofday)
|
||||||
AC_LIBOBJ(kill)
|
AC_LIBOBJ(kill)
|
||||||
AC_LIBOBJ(open)
|
AC_LIBOBJ(open)
|
||||||
AC_LIBOBJ(rand) ;;
|
AC_LIBOBJ(rand)
|
||||||
|
AC_DEFINE([HAVE_SYMLINK], 1,
|
||||||
|
[Define to 1 if you have the `symlink' function.])
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if test "$with_readline" = yes; then
|
if test "$with_readline" = yes; then
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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",
|
errmsg("could not unlink file \"%s\": %m",
|
||||||
subfile)));
|
subfile)));
|
||||||
|
|
||||||
|
#ifndef WIN32
|
||||||
if (unlink(location) < 0)
|
if (unlink(location) < 0)
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errcode_for_file_access(),
|
(errcode_for_file_access(),
|
||||||
errmsg("could not unlink symbolic link \"%s\": %m",
|
errmsg("could not unlink symbolic link \"%s\": %m",
|
||||||
location)));
|
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(subfile);
|
||||||
pfree(location);
|
pfree(location);
|
||||||
|
@ -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.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;
|
HANDLE dirhandle;
|
||||||
DWORD len;
|
DWORD len;
|
||||||
char *p = nativeTarget;
|
|
||||||
char buffer[MAX_PATH*sizeof(WCHAR) + sizeof(REPARSE_JUNCTION_DATA_BUFFER)];
|
char buffer[MAX_PATH*sizeof(WCHAR) + sizeof(REPARSE_JUNCTION_DATA_BUFFER)];
|
||||||
char nativeTarget[MAX_PATH];
|
char nativeTarget[MAX_PATH];
|
||||||
|
char *p = nativeTarget;
|
||||||
REPARSE_JUNCTION_DATA_BUFFER *reparseBuf = (REPARSE_JUNCTION_DATA_BUFFER*)buffer;
|
REPARSE_JUNCTION_DATA_BUFFER *reparseBuf = (REPARSE_JUNCTION_DATA_BUFFER*)buffer;
|
||||||
|
|
||||||
CreateDirectory(newpath, 0);
|
CreateDirectory(newpath, 0);
|
||||||
@ -203,9 +203,12 @@ pgsymlink(const char *oldpath, const char *newpath)
|
|||||||
NULL, GetLastError(),
|
NULL, GetLastError(),
|
||||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||||
(LPSTR)&msg, 0, NULL );
|
(LPSTR)&msg, 0, NULL );
|
||||||
|
#ifdef FRONTEND
|
||||||
|
fprintf(stderr, "Error setting junction for %s: %s", nativeTarget, msg);
|
||||||
|
#else
|
||||||
ereport(ERROR, (errcode_for_file_access(),
|
ereport(ERROR, (errcode_for_file_access(),
|
||||||
errmsg("Error setting junction for %s: %s", nativeTarget, msg)));
|
errmsg("Error setting junction for %s: %s", nativeTarget, msg)));
|
||||||
|
#endif
|
||||||
LocalFree(msg);
|
LocalFree(msg);
|
||||||
|
|
||||||
CloseHandle(dirhandle);
|
CloseHandle(dirhandle);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user