Dont depend on win32api in polyglot

This commit is contained in:
Kovid Goyal 2019-06-10 18:21:38 +05:30
parent f1199035f6
commit 057b873933
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -151,14 +151,24 @@ else:
return x return x
if hasattr(sys, 'getwindowsversion'): if hasattr(sys, 'getwindowsversion'):
import ctypes
gev = ctypes.windll.kernel32.GetEnvironmentVariableW
def getenv(x, default=None): def getenv(x, default=None):
from win32api import GetEnvironmentVariableW
if isinstance(x, bytes): if isinstance(x, bytes):
x = x.decode('mbcs', 'replace') x = x.decode('mbcs', 'replace')
ans = GetEnvironmentVariableW(x) n = 1024
if ans is None: buf = ctypes.create_unicode_buffer(n)
ans = default res = gev(x, buf, n)
return ans if res == 0:
return default
if res > n - 4:
n = res + 8
buf = ctypes.create_unicode_buffer(n)
res = gev(x, buf, n)
if res == 0:
return default
return buf.value
else: else:
def getenv(x, default=None): def getenv(x, default=None):
ans = os.getenv(x, default) ans = os.getenv(x, default)