zck_read_header: fix header with uncompressed
authorStefano Babic <sbabic@denx.de>
Mon, 16 Aug 2021 10:38:59 +0000 (12:38 +0200)
committerStefano Babic <sbabic@denx.de>
Tue, 31 Aug 2021 12:59:17 +0000 (14:59 +0200)
If checksum for uncompressed chunk is added to index, resize the header
to take into account that two sha will be printed.

Signed-off-by: Stefano Babic <sbabic@denx.de>
src/zck_read_header.c

index 21e9bee6f11d0883f91a68b3fcee063d01ea2bd7..5a3b37c9bb3964068198606eaef6090cc44b564e 100644 (file)
@@ -27,6 +27,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <stdint.h>
+#include <string.h>
 #include <stdbool.h>
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -167,8 +168,6 @@ int main (int argc, char *argv[]) {
     if(!arguments.quiet && arguments.show_chunks)
         printf("\n");
     if(arguments.show_chunks) {
-        printf("       Chunk Checksum %*c        Start    Comp size         Size\n",
-               (((int)zck_get_chunk_digest_size(zck)*2)-9), ' ');
         for(zckChunk *chk=zck_get_first_chunk(zck); chk;
             chk=zck_get_next_chunk(chk)) {
             char *digest = zck_get_chunk_digest(chk);
@@ -180,6 +179,17 @@ int main (int argc, char *argv[]) {
             if (!digest_uncompressed)
                 digest_uncompressed = "";
 
+           if (chk == zck_get_first_chunk(zck)) {
+                   bool has_uncompressed = (strlen(digest_uncompressed) > 0);
+                   if (has_uncompressed)
+                        printf("       Chunk Checksum %*cChecksum uncompressed %*c       Start    Comp size         Size\n",
+                           (((int)zck_get_chunk_digest_size(zck) * 2) - (int)strlen("Checksum")), ' ',
+                           ((int)zck_get_chunk_digest_size(zck) * 2) - (int)strlen("Uncompressed Checksum"), ' ');
+                    else
+                        printf("       Chunk Checksum %*c        Start    Comp size         Size\n",
+                              (((int)zck_get_chunk_digest_size(zck) * 2) - (int)strlen("Checksum")), ' ');
+
+           }
             printf("%12lu %s %s %12lu %12lu %12lu",
                    (long unsigned)zck_get_chunk_number(chk),
                    digest,