summaryrefslogtreecommitdiff
path: root/third_party/waf/waflib/Utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/waf/waflib/Utils.py')
-rw-r--r--third_party/waf/waflib/Utils.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/third_party/waf/waflib/Utils.py b/third_party/waf/waflib/Utils.py
index fc64fa05154..669490ca908 100644
--- a/third_party/waf/waflib/Utils.py
+++ b/third_party/waf/waflib/Utils.py
@@ -11,7 +11,7 @@ through Python versions 2.5 to 3.X and across different platforms (win32, linux,
from __future__ import with_statement
-import atexit, os, sys, errno, inspect, re, datetime, platform, base64, signal, functools, time
+import atexit, os, sys, errno, inspect, re, datetime, platform, base64, signal, functools, time, shlex
try:
import cPickle
@@ -577,10 +577,13 @@ def quote_define_name(s):
fu = fu.upper()
return fu
-re_sh = re.compile('\\s|\'|"')
-"""
-Regexp used for shell_escape below
-"""
+# shlex.quote didn't exist until python 3.3. Prior to that it was a non-documented
+# function in pipes.
+try:
+ shell_quote = shlex.quote
+except AttributeError:
+ import pipes
+ shell_quote = pipes.quote
def shell_escape(cmd):
"""
@@ -589,7 +592,7 @@ def shell_escape(cmd):
"""
if isinstance(cmd, str):
return cmd
- return ' '.join(repr(x) if re_sh.search(x) else x for x in cmd)
+ return ' '.join(shell_quote(x) for x in cmd)
def h_list(lst):
"""