diff options
Diffstat (limited to 'tools/rsgtutil.c')
-rw-r--r-- | tools/rsgtutil.c | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/tools/rsgtutil.c b/tools/rsgtutil.c index 7b70a9a7..3286163b 100644 --- a/tools/rsgtutil.c +++ b/tools/rsgtutil.c @@ -34,7 +34,7 @@ typedef unsigned char uchar; -static enum { MD_DUMP, MD_DETECT_FILE_TYPE, +static enum { MD_DUMP, MD_DETECT_FILE_TYPE, MD_SHOW_SIGBLK_PARAMS } mode = MD_DUMP; static int verbose = 0; @@ -75,6 +75,45 @@ err: fprintf(stderr, "error %d processing file %s\n", r, name); } static void +showSigblkParams(char *name) +{ + FILE *fp; + block_sig_t *bs; + uint8_t bHasRecHashes, bHasIntermedHashes; + uint64_t blkCnt = 0; + int r = -1; + + if(!strcmp(name, "-")) + fp = stdin; + else { + if((fp = fopen(name, "r")) == NULL) { + perror(name); + goto err; + } + } + if((r = rsgt_chkFileHdr(fp, "LOGSIG10")) != 0) goto err; + + while(1) { /* we will err out on EOF */ + if((r = rsgt_getBlockParams(fp, 0, &bs, &bHasRecHashes, + &bHasIntermedHashes)) != 0) + goto err; + ++blkCnt; + rsgt_printBLOCK_SIG(stdout, bs, verbose); + printf("\t***META INFORMATION:\n"); + printf("\tBlock Nbr in File......: %llu\n", blkCnt); + printf("\tHas Record Hashes......: %d\n", bHasRecHashes); + printf("\tHas Intermediate Hashes: %d\n", bHasIntermedHashes); + } + + if(fp != stdin) + fclose(fp); + return; +err: + if(r != RSGTE_EOF) + fprintf(stderr, "error %d processing file %s\n", r, name); +} + +static void detectFileType(char *name) { FILE *fp; @@ -114,6 +153,9 @@ processFile(char *name) case MD_DUMP: dumpFile(name); break; + case MD_SHOW_SIGBLK_PARAMS: + showSigblkParams(name); + break; } } @@ -124,6 +166,7 @@ static struct option long_options[] = {"verbose", no_argument, NULL, 'v'}, {"version", no_argument, NULL, 'V'}, {"detect-file-type", no_argument, NULL, 'T'}, + {"show-sigblock-params", no_argument, NULL, 'B'}, {NULL, 0, NULL, 0} }; @@ -147,6 +190,9 @@ main(int argc, char *argv[]) case 'D': mode = MD_DUMP; break; + case 'B': + mode = MD_SHOW_SIGBLK_PARAMS; + break; case 'T': mode = MD_DETECT_FILE_TYPE; break; |