changeset 240:51bd09d4289e

eof pblms fixed, seems to work
author Henry S. Thompson <ht@inf.ed.ac.uk>
date Tue, 01 Oct 2024 15:59:26 +0100
parents 992f59d21832
children 96021cfee209
files lib/python/unpackz.py
diffstat 1 files changed, 13 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/lib/python/unpackz.py	Sat Sep 28 15:19:05 2024 +0100
+++ b/lib/python/unpackz.py	Tue Oct 01 15:59:26 2024 +0100
@@ -18,19 +18,22 @@
   z = isal.isal_zlib.decompressobj(31)
   count = 0
   while True:
-      if z.unused_data == b"":
+      if z.unused_data == b"": 
           #print('n', obuf_len, file=sys.stderr)
+          if lastbuf:  # buf == b"":
+              if outfile is None:
+                print(obuf_len, offset)
+              else:
+                outfile.write(b'\000%d\000%d\000'%(obuf_len, offset))
+              if count!=0:
+                  print("Unused data: count=%s offset=%s ?"%(count, offset),
+                        file=sys.stderr)
+              break
           if nbuf:
-            obuf_len += BUFSIZE # still no EOS after a full buffer processed
+              obuf_len += BUFSIZE # still no EOS after a full buffer processed
           buf = f.read(BUFSIZE)
           nbuf = True
           lastbuf = ((truesize:=len(buf)) < BUFSIZE) # will only succeed if now at EOF
-          if buf == b"":
-              if outfile is None:
-                print(count, offset)
-              else:
-                outfile.write(b'\000%d\000%d\000'%(count, offset))
-              break
       else:
           buf_len = len(buf)
           #print('b', obuf_len, buf_len, len(z.unused_data), len(buf)-len(z.unused_data),
@@ -41,6 +44,8 @@
             print(count, offset)
           else:
             outfile.write(b'\000%d\000%d\000'%(count, offset))
+#          if (offset == 1352249):
+#            breakpoint()
           offset += count
           count = 0
           buf = z.unused_data
@@ -50,8 +55,5 @@
       got = z.decompress(buf)
       if outfile is not None:
         outfile.write(got)
-if count!=0:
-  print("Unused data: count=%s offset=%s ?"%(count, offset),
-        file=sys.stderr)
 if outfile is not None:
   outfile.close()