From 0d1b8eab4d44047b52746639d7836cc849626e59 Mon Sep 17 00:00:00 2001 From: David Lord Date: Mon, 27 Apr 2020 08:47:06 -0700 Subject: [PATCH] Revert "Use shlex.quote for quoting shell arguments" This reverts commit e798f64ffde20c549e2e0df5834e4194c74adb0a. This caused issues if the editor command (etc.) had options like "less -FRSX" because they would then get quoted as a single word. --- src/click/_compat.py | 4 ---- src/click/_termui_impl.py | 22 +++++++++------------- tests/test_imports.py | 1 - 3 files changed, 9 insertions(+), 18 deletions(-) diff --git a/src/click/_compat.py b/src/click/_compat.py index ed57a18f9..60cb115bc 100644 --- a/src/click/_compat.py +++ b/src/click/_compat.py @@ -174,8 +174,6 @@ def seekable(self): iteritems = lambda x: x.iteritems() range_type = xrange - from pipes import quote as shlex_quote - def is_bytes(x): return isinstance(x, (buffer, bytearray)) @@ -284,8 +282,6 @@ def filename_to_ui(value): isidentifier = lambda x: x.isidentifier() iteritems = lambda x: iter(x.items()) - from shlex import quote as shlex_quote - def is_bytes(x): return isinstance(x, (bytes, memoryview, bytearray)) diff --git a/src/click/_termui_impl.py b/src/click/_termui_impl.py index c6e86cc01..88bec3770 100644 --- a/src/click/_termui_impl.py +++ b/src/click/_termui_impl.py @@ -17,7 +17,6 @@ from ._compat import isatty from ._compat import open_stream from ._compat import range_type -from ._compat import shlex_quote from ._compat import strip_ansi from ._compat import term_len from ._compat import WIN @@ -346,10 +345,7 @@ def pager(generator, color=None): fd, filename = tempfile.mkstemp() os.close(fd) try: - if ( - hasattr(os, "system") - and os.system("more {}".format(shlex_quote(filename))) == 0 - ): + if hasattr(os, "system") and os.system('more "{}"'.format(filename)) == 0: return _pipepager(generator, "more", color) return _nullpager(stdout, generator, color) finally: @@ -418,7 +414,7 @@ def _tempfilepager(generator, cmd, color): with open_stream(filename, "wb")[0] as f: f.write(text.encode(encoding)) try: - os.system("{} {}".format(shlex_quote(cmd), shlex_quote(filename))) + os.system('{} "{}"'.format(cmd, filename)) finally: os.unlink(filename) @@ -463,9 +459,7 @@ def edit_file(self, filename): environ = None try: c = subprocess.Popen( - "{} {}".format(shlex_quote(editor), shlex_quote(filename)), - env=environ, - shell=True, + '{} "{}"'.format(editor, filename), env=environ, shell=True, ) exit_code = c.wait() if exit_code != 0: @@ -536,16 +530,18 @@ def _unquote_file(url): elif WIN: if locate: url = _unquote_file(url) - args = "explorer /select,{}".format(shlex_quote(url)) + args = 'explorer /select,"{}"'.format(_unquote_file(url.replace('"', ""))) else: - args = 'start {} "" {}'.format("/WAIT" if wait else "", shlex_quote(url)) + args = 'start {} "" "{}"'.format( + "/WAIT" if wait else "", url.replace('"', "") + ) return os.system(args) elif CYGWIN: if locate: url = _unquote_file(url) - args = "cygstart {}".format(shlex_quote(os.path.dirname(url))) + args = 'cygstart "{}"'.format(os.path.dirname(url).replace('"', "")) else: - args = "cygstart {} {}".format("-w" if wait else "", shlex_quote(url)) + args = 'cygstart {} "{}"'.format("-w" if wait else "", url.replace('"', "")) return os.system(args) try: diff --git a/tests/test_imports.py b/tests/test_imports.py index b99d453d0..e309eac93 100644 --- a/tests/test_imports.py +++ b/tests/test_imports.py @@ -49,7 +49,6 @@ def tracking_import(module, locals=None, globals=None, fromlist=None, "fcntl", "datetime", "pipes", - "shlex", } if WIN: