X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=doclib%2Fpkgdraw;h=efff924a51e1a4d35b4cda9245f84f37d26d267f;hb=e3ac07a9414a45b50eac1cced35502154128d1ca;hp=4f80472cb231ccffe5a87e32e410d1e7871f3622;hpb=7cd188197e5815788229d0ca0503cb34bb75982c;p=senf.git diff --git a/doclib/pkgdraw b/doclib/pkgdraw index 4f80472..efff924 100755 --- a/doclib/pkgdraw +++ b/doclib/pkgdraw @@ -304,6 +304,7 @@ def parse_VECTOR(args, flags): sys.stderr.write("Failed to aprse VECTOR: %s\n" % args) return None field = dict(FIELD_TYPES.get(args[-1].split(':')[-1], {})) + print args,repr(field); field['name'] = args[0] field['repeat'] = True return field @@ -400,15 +401,21 @@ def scanPackets(data): packetOrder.append(name) minsize = maxsize = 0 for field in packets[name]: - if field.get('size', None) is not None: - maxsize += field['size'] - elif field.get('minsize', None) is not None: - maxsize += field['maxsize'] + if maxsize is not None: + if field.get('repeat', False): + maxsize = None + elif field.get('size', None) is not None: + maxsize += field['size'] + elif field.get('minsize', None) is not None: + maxsize += field['maxsize'] + else: + maxsize = None if not field.get('optional', False): if field.get('size', None) is not None: minsize += field['size'] elif field.get('minsize', None) is not None: minsize += field['minsize'] + print name,minsize,maxsize if minsize is not None and maxsize is not None: if minsize == maxsize: FIELD_TYPES[name] = { 'size' : minsize }