From 5c16a116ec2db9d19e42c5682cbfbf4f2b87ad87 Mon Sep 17 00:00:00 2001 From: Petteri Aimonen Date: Thu, 26 Feb 2015 18:16:25 +0200 Subject: [PATCH] Better error messages for syntax errors in .options file --- generator/nanopb_generator.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index 7ee06523..82602908 100755 --- a/generator/nanopb_generator.py +++ b/generator/nanopb_generator.py @@ -1126,14 +1126,28 @@ def read_options_file(infile): [(namemask, options), ...] ''' results = [] - for line in infile: + for i, line in enumerate(infile): line = line.strip() if not line or line.startswith('//') or line.startswith('#'): continue parts = line.split(None, 1) + + if len(parts) < 2: + sys.stderr.write("%s:%d: " % (infile.name, i + 1) + + "Option lines should have space between field name and options. " + + "Skipping line: '%s'\n" % line) + continue + opts = nanopb_pb2.NanoPBOptions() - text_format.Merge(parts[1], opts) + + try: + text_format.Merge(parts[1], opts) + except Exception, e: + sys.stderr.write("%s:%d: " % (infile.name, i + 1) + + "Unparseable option line: '%s'. " % line + + "Error: %s\n" % str(e)) + continue results.append((parts[0], opts)) return results -- 2.16.6