[compat] Fix compat_shlex_quote on Windows (closes #5889, closes #10254)

This commit is contained in:
Sergey M․ 2017-06-17 23:14:24 +07:00
parent be80986ed9
commit b08e235f09
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D

View File

@ -2617,9 +2617,17 @@ def compat_parse_qs(qs, keep_blank_values=False, strict_parsing=False,
parsed_result[name] = [value] parsed_result[name] = [value]
return parsed_result return parsed_result
try:
compat_os_name = os._name if os.name == 'java' else os.name
if compat_os_name == 'nt':
def compat_shlex_quote(s):
return s if re.match(r'^[-_\w./]+$', s) else '"%s"' % s.replace('"', '\\"')
else:
try:
from shlex import quote as compat_shlex_quote from shlex import quote as compat_shlex_quote
except ImportError: # Python < 3.3 except ImportError: # Python < 3.3
def compat_shlex_quote(s): def compat_shlex_quote(s):
if re.match(r'^[-_\w./]+$', s): if re.match(r'^[-_\w./]+$', s):
return s return s
@ -2649,9 +2657,6 @@ def compat_ord(c):
return ord(c) return ord(c)
compat_os_name = os._name if os.name == 'java' else os.name
if sys.version_info >= (3, 0): if sys.version_info >= (3, 0):
compat_getenv = os.getenv compat_getenv = os.getenv
compat_expanduser = os.path.expanduser compat_expanduser = os.path.expanduser