diff options
author | Philipp Hagemeister <phihag@phihag.de> | 2014-12-12 04:01:08 +0100 |
---|---|---|
committer | Philipp Hagemeister <phihag@phihag.de> | 2014-12-12 04:01:08 +0100 |
commit | 16040f46d64bad8dcc5f948288ef469dd787d3d3 (patch) | |
tree | 8a5316eb5c4cfafe6de58f5c84e433ec8ccd75c7 /youtube_dl/compat.py | |
parent | d068ba24f3fa247b262a0aed6d94ac7f4f43de97 (diff) |
[utils] Work around PyPy stupidity with Windows DLLs (Fixes #4392)
Diffstat (limited to 'youtube_dl/compat.py')
-rw-r--r-- | youtube_dl/compat.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/youtube_dl/compat.py b/youtube_dl/compat.py index f4a85443e..cd46693b3 100644 --- a/youtube_dl/compat.py +++ b/youtube_dl/compat.py @@ -1,8 +1,10 @@ from __future__ import unicode_literals +import ctypes import getpass import optparse import os +import platform import re import subprocess import sys @@ -326,6 +328,22 @@ def workaround_optparse_bug9161(): optparse.OptionGroup.add_option = _compat_add_option +if platform.python_implementation() == 'PyPy': + # PyPy expects byte strings as Windows function names + # https://github.com/rg3/youtube-dl/pull/4392 + def compat_WINFUNCTYPE(*args, **kwargs): + real = ctypes.WINFUNCTYPE(*args, **kwargs) + + def resf(tpl, *args, **kwargs): + funcname, dll = tpl + return real((str(funcname), dll), *args, **kwargs) + + return resf +else: + def compat_WINFUNCTYPE(*args, **kwargs): + return ctypes.WINFUNCTYPE(*args, **kwargs) + + __all__ = [ 'compat_HTTPError', 'compat_chr', @@ -349,6 +367,7 @@ __all__ = [ 'compat_urllib_request', 'compat_urlparse', 'compat_urlretrieve', + 'compat_WINFUNCTYPE', 'compat_xml_parse_error', 'shlex_quote', 'subprocess_check_output', |