tracetool: add out_lineno and out_next_lineno to out()

Make the output file line number and next line number available to
out().

A later patch will use this to improve error messages.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20200827142915.108730-3-stefanha@redhat.com>
This commit is contained in:
Stefan Hajnoczi 2020-08-27 15:29:13 +01:00
parent c05012a365
commit 294170c1dd
1 changed files with 9 additions and 1 deletions

View File

@ -31,6 +31,7 @@ def error(*lines):
sys.exit(1)
out_lineno = 1
out_filename = '<none>'
out_fobj = sys.stdout
@ -45,12 +46,19 @@ def out(*lines, **kwargs):
You can use kwargs as a shorthand for mapping variables when formatting all
the strings in lines.
The 'out_filename' kwarg is automatically added with the output filename.
The 'out_lineno' kwarg is automatically added to reflect the current output
file line number. The 'out_next_lineno' kwarg is also automatically added
with the next output line number. The 'out_filename' kwarg is automatically
added with the output filename.
"""
global out_lineno
output = []
for l in lines:
kwargs['out_lineno'] = out_lineno
kwargs['out_next_lineno'] = out_lineno + 1
kwargs['out_filename'] = out_filename
output.append(l % kwargs)
out_lineno += 1
out_fobj.writelines("\n".join(output) + "\n")