oe.scriptutils.run_editor: ditch the error-prone argument quoting

Rather than trying to construct a string by quoting the files in an
error-prone way, parse $EDITOR to pass a list to subprocess rather than
a string.

(From OE-Core rev: c9fdf3d046606a0becb2e6b566a481c483b9021a)

Signed-off-by: Christopher Larson <chris_larson@mentor.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Christopher Larson 2018-06-22 02:07:31 +05:00 committed by Richard Purdie
parent ea4318b78e
commit 2fe9a05666

View File

@ -15,16 +15,17 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import sys
import os
import logging
import glob
import argparse
import subprocess
import tempfile
import shutil
import glob
import logging
import os
import random
import shlex
import shutil
import string
import subprocess
import sys
import tempfile
def logger_create(name, stream=None):
logger = logging.getLogger(name)
@ -214,15 +215,14 @@ def fetch_url(tinfoil, srcuri, srcrev, destdir, logger, preserve_tmp=False, mirr
def run_editor(fn, logger=None):
if isinstance(fn, str):
params = '"%s"' % fn
files = [fn]
else:
params = ''
for fnitem in fn:
params += ' "%s"' % fnitem
files = fn
editor = os.getenv('VISUAL', os.getenv('EDITOR', 'vi'))
try:
return subprocess.check_call('%s %s' % (editor, params), shell=True)
#print(shlex.split(editor) + files)
return subprocess.check_call(shlex.split(editor) + files)
except subprocess.CalledProcessError as exc:
logger.error("Execution of '%s' failed: %s" % (editor, exc))
return 1