Re: [PATCH 2/5] makedocbook: Use sys.exit()

Torbjorn SVENSSON <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
Hi,

I'm no committer, so don't take my comment as such.

On 2022-11-04 14:49, Jon Turney wrote:
> Use sys.exit() to write a message to stderr and terminate with a
> non-zero exit code.
> ---
>   newlib/doc/makedocbook.py | 16 ++++++----------
>   1 file changed, 6 insertions(+), 10 deletions(-)
> 
> diff --git a/newlib/doc/makedocbook.py b/newlib/doc/makedocbook.py
> index 5e46082df..57cd23bfd 100755
> --- a/newlib/doc/makedocbook.py
> +++ b/newlib/doc/makedocbook.py
> @@ -214,8 +214,7 @@ def function(c, l):
>   
>       # FUNCTION implies starting a new refentry
>       if refentry is not None:
> -        print("multiple FUNCTIONs without NEWPAGE", file=sys.stderr)
> -        exit(1)
> +        sys.exit("multiple FUNCTIONs without NEWPAGE")
>   
>       # create the refentry
>       refentry = lxml.etree.SubElement(rootelement, 'refentry')
> @@ -308,17 +307,15 @@ def synopsis(c, t):
>   
>               # a prototype without a terminating ';' is an error
>               if s.endswith(')'):
> -                print("'%s' missing terminating semicolon" % l, file=sys.stderr)
> +                sys.exit("'%s' missing terminating semicolon" % l)

I'm not sure when it was introduced in python, but you can use this syntax:
sys.exit(f"'{l}' missing terminating semicolon")

If you don't want to use this fancy syntax, consider to at least do:
sys.exit("'%s' missing terminating semicolon" % (l,))


Kind regards,
Torbjörn

>                   s = s + ';'
> -                exit(1)
>   
>               if ';' in s:
>                   synopsis_for_prototype(funcsynopsis, s)
>                   s = ''
>   
>       if s.strip():
> -        print("surplus synopsis '%s'" % s, file=sys.stderr)
> -        exit(1)
> +        sys.exit("surplus synopsis '%s'" % s)
>   
>   def synopsis_for_prototype(funcsynopsis, s):
>       s = s.strip()
> @@ -591,8 +588,7 @@ def t_eof(t):
>   
>   # Error handling rule
>   def t_error(t):
> -    print("tokenization error, remaining text '%s'" % t.value, file=sys.stderr)
> -    exit(1)
> +    sys.exit("tokenization error, remaining text '%s'" % t.value)
>   
>   lexer = lex.lex()
>   
> @@ -795,8 +791,8 @@ def p_multitable(p):
>       parser_verbose(p)
>   
>   def p_error(t):
> -    print('parse error at line %d, token %s, next token %s' % (t.lineno, t, parser.token()), file=sys.stderr)
> -    exit(1)
> +    sys.exit('parse error at line %d, token %s, next token %s' % (t.lineno, t, parser.token()))
> +
>   
>   # protect creating the parser with a lockfile, so that when multiple processes
>   # are running this script simultaneously, we don't get one of them generating a
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.