# HG changeset patch # User Steve Dower # Date 1426913352 25200 # Fri Mar 20 21:49:12 2015 -0700 # Node ID f36f29e9027f2c415e410571fde58120b7160b9c # Parent 99eb196fb345c07f0bc7a7c438209bf3c435eb4f Closes #9445: Removes detection of GetFinalPathNameByHandle diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -1437,31 +1437,6 @@ return TRUE; } -/* Grab GetFinalPathNameByHandle dynamically from kernel32 */ -static int has_GetFinalPathNameByHandle = -1; -static DWORD (CALLBACK *Py_GetFinalPathNameByHandleW)(HANDLE, LPWSTR, DWORD, - DWORD); -static int -check_GetFinalPathNameByHandle() -{ - HINSTANCE hKernel32; - DWORD (CALLBACK *Py_GetFinalPathNameByHandleA)(HANDLE, LPSTR, DWORD, - DWORD); - - /* only recheck */ - if (-1 == has_GetFinalPathNameByHandle) - { - hKernel32 = GetModuleHandleW(L"KERNEL32"); - *(FARPROC*)&Py_GetFinalPathNameByHandleA = GetProcAddress(hKernel32, - "GetFinalPathNameByHandleA"); - *(FARPROC*)&Py_GetFinalPathNameByHandleW = GetProcAddress(hKernel32, - "GetFinalPathNameByHandleW"); - has_GetFinalPathNameByHandle = Py_GetFinalPathNameByHandleA && - Py_GetFinalPathNameByHandleW; - } - return has_GetFinalPathNameByHandle; -} - static BOOL get_target_path(HANDLE hdl, wchar_t **target_path) { @@ -1470,8 +1445,8 @@ /* We have a good handle to the target, use it to determine the target path name (then we'll call lstat on it). */ - buf_size = Py_GetFinalPathNameByHandleW(hdl, 0, 0, - VOLUME_NAME_DOS); + buf_size = GetFinalPathNameByHandleW(hdl, 0, 0, + VOLUME_NAME_DOS); if(!buf_size) return FALSE; @@ -1481,7 +1456,7 @@ return FALSE; } - result_length = Py_GetFinalPathNameByHandleW(hdl, + result_length = GetFinalPathNameByHandleW(hdl, buf, buf_size, VOLUME_NAME_DOS); if(!result_length) { @@ -1514,12 +1489,6 @@ wchar_t *target_path; const char *dot; - if(!check_GetFinalPathNameByHandle()) { - /* If the OS doesn't have GetFinalPathNameByHandle, don't - traverse reparse point. */ - traverse = FALSE; - } - hFile = CreateFileA( path, FILE_READ_ATTRIBUTES, /* desired access */ @@ -1610,12 +1579,6 @@ wchar_t *target_path; const wchar_t *dot; - if(!check_GetFinalPathNameByHandle()) { - /* If the OS doesn't have GetFinalPathNameByHandle, don't - traverse reparse point. */ - traverse = FALSE; - } - hFile = CreateFileW( path, FILE_READ_ATTRIBUTES, /* desired access */ @@ -4700,13 +4663,6 @@ if (path_wchar == NULL) return NULL; - if(!check_GetFinalPathNameByHandle()) { - /* If the OS doesn't have GetFinalPathNameByHandle, return a - NotImplementedError. */ - return PyErr_Format(PyExc_NotImplementedError, - "GetFinalPathNameByHandle not available on this platform"); - } - hFile = CreateFileW( path_wchar, 0, /* desired access */ @@ -4722,7 +4678,7 @@ /* We have a good handle to the target, use it to determine the target path name. */ - buf_size = Py_GetFinalPathNameByHandleW(hFile, 0, 0, VOLUME_NAME_NT); + buf_size = GetFinalPathNameByHandleW(hFile, 0, 0, VOLUME_NAME_NT); if(!buf_size) return win32_error_object("GetFinalPathNameByHandle", path); @@ -4731,8 +4687,8 @@ if(!target_path) return PyErr_NoMemory(); - result_length = Py_GetFinalPathNameByHandleW(hFile, target_path, - buf_size, VOLUME_NAME_DOS); + result_length = GetFinalPathNameByHandleW(hFile, target_path, + buf_size, VOLUME_NAME_DOS); if(!result_length) return win32_error_object("GetFinalPathNamyByHandle", path);