diff --git a/artiq/frontend/bit2bin.py b/artiq/frontend/bit2bin.py
index ded87a0b3..5770792c9 100755
--- a/artiq/frontend/bit2bin.py
+++ b/artiq/frontend/bit2bin.py
@@ -32,39 +32,38 @@ def flip32(data):
def bit2bin(bit, bin, flip=False):
- bitfile = open(bit, "rb")
+ with open(bit, "rb") as bitfile:
+ l, = struct.unpack(">H", bitfile.read(2))
+ if l != 9:
+ raise ValueError("Missing <0009> header, not a bit file")
- l, = struct.unpack(">H", bitfile.read(2))
- if l != 9:
- raise ValueError("Missing <0009> header, not a bit file")
+ bitfile.read(l)
+ d = bitfile.read(*struct.unpack(">H", bitfile.read(2)))
+ if d != b"a":
+ raise ValueError("Missing header, not a bit file")
- bitfile.read(l)
- d = bitfile.read(*struct.unpack(">H", bitfile.read(2)))
- if d != b"a":
- raise ValueError("Missing header, not a bit file")
+ d = bitfile.read(*struct.unpack(">H", bitfile.read(2)))
+ print("Design name:", d)
- d = bitfile.read(*struct.unpack(">H", bitfile.read(2)))
- print("Design name:", d)
-
- while True:
- key = bitfile.read(1)
- if not key:
- break
- if key in b"bcd":
- d = bitfile.read(*struct.unpack(">H", bitfile.read(2)))
- name = {b"b": "Partname", b"c": "Date", b"d": "Time"}[key]
- print(name, d)
- elif key == b"e":
- l, = struct.unpack(">I", bitfile.read(4))
- print("found binary data length:", l)
- d = bitfile.read(l)
- if flip:
- d = flip32(d)
- with open(bin, "wb") as f:
- f.write(d)
- else:
- d = bitfile.read(*struct.unpack(">H", bitfile.read(2)))
- print("Unexpected key: ", key, d)
+ while True:
+ key = bitfile.read(1)
+ if not key:
+ break
+ if key in b"bcd":
+ d = bitfile.read(*struct.unpack(">H", bitfile.read(2)))
+ name = {b"b": "Partname", b"c": "Date", b"d": "Time"}[key]
+ print(name, d)
+ elif key == b"e":
+ l, = struct.unpack(">I", bitfile.read(4))
+ print("found binary data length:", l)
+ d = bitfile.read(l)
+ if flip:
+ d = flip32(d)
+ with open(bin, "wb") as f:
+ f.write(d)
+ else:
+ d = bitfile.read(*struct.unpack(">H", bitfile.read(2)))
+ print("Unexpected key: ", key, d)
if __name__ == "__main__":