From 143af6151800efd8ecb750e682aa42da254ce5a7 Mon Sep 17 00:00:00 2001 From: Daira Hopwood <daira@jacaranda.org> Date: Mon, 18 May 2015 01:42:01 +0100 Subject: [PATCH] fileutil.py: use ctypes.get_last_error() instead of GetLastError(). refs #1531 Signed-off-by: Daira Hopwood <daira@jacaranda.org> --- src/allmydata/util/fileutil.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/allmydata/util/fileutil.py b/src/allmydata/util/fileutil.py index 0349669e..20f5c34e 100644 --- a/src/allmydata/util/fileutil.py +++ b/src/allmydata/util/fileutil.py @@ -363,23 +363,27 @@ def to_windows_long_path(path): have_GetDiskFreeSpaceExW = False if sys.platform == "win32": - from ctypes import WINFUNCTYPE, windll, POINTER, byref, c_ulonglong, create_unicode_buffer + from ctypes import WINFUNCTYPE, windll, POINTER, byref, c_ulonglong, create_unicode_buffer, \ + get_last_error from ctypes.wintypes import BOOL, DWORD, LPCWSTR, LPWSTR - # <http://msdn.microsoft.com/en-us/library/ms679360%28v=VS.85%29.aspx> - GetLastError = WINFUNCTYPE(DWORD)(("GetLastError", windll.kernel32)) - # <http://msdn.microsoft.com/en-us/library/windows/desktop/ms683188%28v=vs.85%29.aspx> - GetEnvironmentVariableW = WINFUNCTYPE(DWORD, LPCWSTR, LPWSTR, DWORD)( - ("GetEnvironmentVariableW", windll.kernel32)) + GetEnvironmentVariableW = WINFUNCTYPE( + DWORD, + LPCWSTR, LPWSTR, DWORD, + use_last_error=True + )(("GetEnvironmentVariableW", windll.kernel32)) try: # <http://msdn.microsoft.com/en-us/library/aa383742%28v=VS.85%29.aspx> PULARGE_INTEGER = POINTER(c_ulonglong) # <http://msdn.microsoft.com/en-us/library/aa364937%28VS.85%29.aspx> - GetDiskFreeSpaceExW = WINFUNCTYPE(BOOL, LPCWSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER)( - ("GetDiskFreeSpaceExW", windll.kernel32)) + GetDiskFreeSpaceExW = WINFUNCTYPE( + BOOL, + LPCWSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER, + use_last_error=True + )(("GetDiskFreeSpaceExW", windll.kernel32)) have_GetDiskFreeSpaceExW = True except Exception: @@ -424,7 +428,7 @@ def windows_getenv(name): n = GetEnvironmentVariableW(name, None, 0) # GetEnvironmentVariableW returns DWORD, so n cannot be negative. if n == 0: - err = GetLastError() + err = get_last_error() if err == ERROR_ENVVAR_NOT_FOUND: return None raise OSError("Windows error %d attempting to read size of environment variable %r" @@ -437,7 +441,7 @@ def windows_getenv(name): buf = create_unicode_buffer(u'\0'*n) retval = GetEnvironmentVariableW(name, buf, n) if retval == 0: - err = GetLastError() + err = get_last_error() if err == ERROR_ENVVAR_NOT_FOUND: return None raise OSError("Windows error %d attempting to read environment variable %r" @@ -484,7 +488,7 @@ def get_disk_stats(whichdir, reserved_space=0): byref(n_free_for_root)) if retval == 0: raise OSError("Windows error %d attempting to get disk statistics for %r" - % (GetLastError(), whichdir)) + % (get_last_error(), whichdir)) free_for_nonroot = n_free_for_nonroot.value total = n_total.value free_for_root = n_free_for_root.value -- 2.45.2