diff options
author | Micael Karlberg <[email protected]> | 2011-09-19 19:26:54 +0200 |
---|---|---|
committer | Micael Karlberg <[email protected]> | 2011-09-19 19:26:54 +0200 |
commit | 7c730a573a7e239f41bc619b024a675667767428 (patch) | |
tree | 1265ca1ddae47b094af21f669d0526c9c1b074dd /erts/emulator/drivers/win32/win_efile.c | |
parent | 13fcdd5c954ddbb8ac9401d73f8e77423fbd976c (diff) | |
parent | e84f232326b2800ca806c867b2bfbe3652d423cb (diff) | |
download | otp-7c730a573a7e239f41bc619b024a675667767428.tar.gz otp-7c730a573a7e239f41bc619b024a675667767428.tar.bz2 otp-7c730a573a7e239f41bc619b024a675667767428.zip |
Merge branch 'dev' of super:otp into bmk/inets/inets571_integration
Diffstat (limited to 'erts/emulator/drivers/win32/win_efile.c')
-rwxr-xr-x | erts/emulator/drivers/win32/win_efile.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/erts/emulator/drivers/win32/win_efile.c b/erts/emulator/drivers/win32/win_efile.c index 3d59564f7b..931bb196f1 100755 --- a/erts/emulator/drivers/win32/win_efile.c +++ b/erts/emulator/drivers/win32/win_efile.c @@ -127,6 +127,8 @@ static int errno_map(DWORD last_error) { return EBUSY; case ERROR_NO_PROC_SLOTS: return EAGAIN; + case ERROR_CANT_RESOLVE_FILENAME: + return EMLINK; case ERROR_ARENA_TRASHED: case ERROR_INVALID_BLOCK: case ERROR_BAD_ENVIRONMENT: @@ -1405,7 +1407,7 @@ efile_readlink(Efile_error* errInfo, char* name, char* buffer, size_t size) DWORD fileAttributes = GetFileAttributesW(wname); if ((fileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)) { BOOLEAN success = 0; - HANDLE h = CreateFileW(wname, GENERIC_READ, 0,NULL, OPEN_EXISTING, 0, NULL); + HANDLE h = CreateFileW(wname, GENERIC_READ, 0,NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); int len; if(h != INVALID_HANDLE_VALUE) { success = pGetFinalPathNameByHandle(h, wbuffer, size,0); @@ -1421,7 +1423,7 @@ efile_readlink(Efile_error* errInfo, char* name, char* buffer, size_t size) if (*wbuffer == L'\\') *wbuffer = L'/'; CloseHandle(h); - } + } FreeLibrary(hModule); if (success) { return 1; |