diff cutils/treesum.py @ 208:85e7edea8ac7

Print the filesystem encoding and the generator in the "info" output also
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 22 Jan 2025 18:58:52 +0100
parents 0e8c12ff0f41
children 1be3af138183
line wrap: on
line diff
--- a/cutils/treesum.py	Wed Jan 22 18:57:44 2025 +0100
+++ b/cutils/treesum.py	Wed Jan 22 18:58:52 2025 +0100
@@ -1046,7 +1046,8 @@
             reader = TreesumReader.from_path(fn)
 
         with reader:
-            root = flags = algorithm = digest = size = None
+            root = generator = flags = fsencoding = algorithm = digest \
+                = size = None
             comments = []
             in_block = False
             block_no = 0
@@ -1058,13 +1059,17 @@
                     block_no += 1
                     root = flags = algorithm = digest = size = None
                     comments = []
+                elif record[0] == "GENERATOR":
+                    generator = record[1]
+                elif record[0] == "FSENCODING":
+                    fsencoding = record[1]
                 elif record[0] == "FLAGS":
                     flags = record[1]
                 elif record[0] == "ROOT":
                     root = record[1]
                 elif record[0] == "COMMENT":
                     comments.append(record[1])
-                elif record[0] in ("FSENCODING", "TIMESTAMP", "ISOTIMESTAMP"):
+                elif record[0] in ("TIMESTAMP", "ISOTIMESTAMP"):
                     pass
                 elif record[0] == "CRC32":
                     pass
@@ -1085,7 +1090,8 @@
                         if not print_only_last_block:
                             print_block_data(
                                 block_no,
-                                root, flags, comments, algorithm, digest, size)
+                                root, generator, fsencoding, flags, comments,
+                                algorithm, digest, size)
                             root = flags = algorithm = digest = size = None
                         in_block = False
         if print_only_last_block:
@@ -1093,16 +1099,21 @@
                 if digest is not None or size is not None:
                     print_block_data(
                         block_no,
-                        root, flags, comments, algorithm, digest, size)
+                        root, generator, fsencoding, flags, comments,
+                        algorithm, digest, size)
             else:
                 logging.warning("missing block end")
 
 
-def print_block_data(block_no, tag, flags, comments, algorithm, digest, size):
+def print_block_data(block_no, tag, generator, fsencoding, flags, comments,
+                     algorithm, digest, size):
     digeststr = util.n(binascii.hexlify(digest)) if digest else "<no digest>"
     sizestr = str(size) if size is not None else "<no size>"
     print("BLOCK No %d:" % (block_no,))
     print("    Tag:", tag)
+    print("    FS-Encoding:", fsencoding)
+    if generator:
+        print("    Generator:", generator)
     print("    Flags:", flags if flags else "<none>")
     print("    Comments:", comments if comments else "")
     print("    Algorithm:", algorithm)