Skip to content

Commit 7a28edb

Browse files
committed
Updated preprocessor not to use shell=True
1 parent 2de9088 commit 7a28edb

File tree

1 file changed

+30
-14
lines changed

1 file changed

+30
-14
lines changed

pyverilog/vparser/preprocessor.py

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,39 @@
2929

3030
class VerilogPreprocessor(object):
3131
def __init__(self, filelist, outputfile='pp.out', include=None, define=None):
32+
33+
if not isinstance(filelist, (tuple, list)):
34+
filelist = list(filelist)
35+
3236
self.filelist = filelist
33-
iverilog_invocable = os.environ.get("PYVERILOG_IVERILOG") or "iverilog"
34-
include = include or []
35-
define = define or []
36-
includes = map(
37-
lambda includable: "-I '{0}'".format(includable), include
38-
)
39-
defines = map(lambda definable: "-D {0}".format(definable), define)
40-
self.iv = "'{0}' {1} {2} -E -o '{3}'".format(
41-
iverilog_invocable, ' '.join(includes), ' '.join(defines),
42-
outputfile
43-
)
37+
38+
iverilog = os.environ.get('PYVERILOG_IVERILOG')
39+
if iverilog is None:
40+
iverilog = 'iverilog'
41+
42+
if include is None:
43+
include = ()
44+
45+
if define is None:
46+
define = ()
47+
48+
self.iv = [iverilog]
49+
50+
for inc in include:
51+
self.iv.append('-I')
52+
self.iv.append(inc)
53+
54+
for dfn in define:
55+
self.iv.append('-D')
56+
self.iv.append(dfn)
57+
58+
self.iv.append('-E')
59+
self.iv.append('-o')
60+
self.iv.append(outputfile)
4461

4562
def preprocess(self):
46-
files = map(lambda file: "'{0}'".format(file), self.filelist)
47-
cmd = "{0} {1}".format(self.iv, ' '.join(files))
48-
subprocess.call(cmd, shell=True)
63+
cmd = self.iv + list(self.filelist)
64+
subprocess.call(cmd)
4965

5066

5167
def preprocess(

0 commit comments

Comments
 (0)