X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=generator%2Fnanopb_generator.py;h=82602908233ebdff8a4e18a12a923f5dbf93d8ed;hb=5c16a116ec2db9d19e42c5682cbfbf4f2b87ad87;hp=4c01502c0da99396fdbb0bdeb1e50967a073d4d4;hpb=25b92c5b4e154130bf0787009046ea60175d28e8;p=apps%2Fagl-service-can-low-level.git diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index 4c01502c..82602908 100755 --- a/generator/nanopb_generator.py +++ b/generator/nanopb_generator.py @@ -587,6 +587,9 @@ class OneOf(Field): self.name = oneof_desc.name self.ctype = 'union' self.fields = [] + self.allocation = 'ONEOF' + self.default = None + self.rules = 'ONEOF' def add_field(self, field): if field.allocation == 'CALLBACK': @@ -1123,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