]> git.ozlabs.org Git - bitfield/blobdiff - bitfield
Allow progressive parsing of stdin (rather than waiting for EOF)
[bitfield] / bitfield
index 32a0405648b0d4dade7caff3b4a1421facf704e5..1a03ddb96419c9f2f77ea08830a21c6d25665d14 100644 (file)
--- a/bitfield
+++ b/bitfield
@@ -77,13 +77,15 @@ class register:
                self.width = width
                self.fields = []
 
-       def add_field(self, field,):
+       def add_field(self, field):
                self.fields.append(field)
 
        def decode(self, value, ignore_zero):
                field_width = (self.width + 3) / 4
                name_width = max(map(lambda f: len(f.name), self.fields))
+
                str = "0x%0*lx [%d]\n" % (field_width, value, value)
+
                for field in self.fields:
                        v = field.mask(self.width, value);
                        if ignore_zero and v == 0:
@@ -273,19 +275,19 @@ def main():
                print "No such register '%s'" % reg_id
                return 1
 
-       r = regs[reg_id]
-       print "decoding as %s" % r.name
+       reg = regs[reg_id]
+       print "decoding as %s" % reg.name
 
        if args:
-               values = args
+               value_iter = args.__iter__()
        else:
-               try:
-                       values = sys.stdin.readlines()
-               except KeyboardInterrupt, e:
-                       return
-
-       for value in values:
-               decode_value(r, value.strip(), options)
+               value_iter = iter(sys.stdin.readline, '')
+               
+       try:
+               for value in value_iter:
+                       decode_value(reg, value.strip(), options)
+       except KeyboardInterrupt, e:
+               pass
 
        return 0