Fix symlink() errno on Windows.
Ancient bug noticed while working on a test suite for these functions. https://postgr.es/m/CA%2BhUKG%2BajSQ_8eu2AogTncOnZ5me2D-Cn66iN_-wZnRjLN%2Bicg%40mail.gmail.com
This commit is contained in:
parent
f186c7c885
commit
359d601095
@ -197,7 +197,10 @@ pgsymlink(const char *oldpath, const char *newpath)
|
||||
FILE_FLAG_OPEN_REPARSE_POINT | FILE_FLAG_BACKUP_SEMANTICS, 0);
|
||||
|
||||
if (dirhandle == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
_dosmaperr(GetLastError());
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* make sure we have an unparsed native win32 path */
|
||||
if (memcmp("\\??\\", oldpath, 4) != 0)
|
||||
@ -230,8 +233,11 @@ pgsymlink(const char *oldpath, const char *newpath)
|
||||
0, 0, &len, 0))
|
||||
{
|
||||
LPSTR msg;
|
||||
int save_errno;
|
||||
|
||||
_dosmaperr(GetLastError());
|
||||
save_errno = errno;
|
||||
|
||||
errno = 0;
|
||||
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
||||
FORMAT_MESSAGE_IGNORE_INSERTS |
|
||||
FORMAT_MESSAGE_FROM_SYSTEM,
|
||||
@ -251,6 +257,9 @@ pgsymlink(const char *oldpath, const char *newpath)
|
||||
|
||||
CloseHandle(dirhandle);
|
||||
RemoveDirectory(newpath);
|
||||
|
||||
errno = save_errno;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user