From 32d7015ac1b6287f3e1dae4b84c056e625643edd Mon Sep 17 00:00:00 2001 From: James Cameron Date: Mon, 20 Aug 2012 10:35:46 +0000 Subject: zhashfs, add header data for sanity-check of file size, #12055 --- diff --git a/bin/zhashfs.c b/bin/zhashfs.c index 9832f31..b85de95 100644 --- a/bin/zhashfs.c +++ b/bin/zhashfs.c @@ -165,6 +165,8 @@ int main(int argc, char **argv) FILE *infile; long i; off_t insize; + off_t outsizepos, zsizepos, lastpos; + char *sizefmt; int readlen; int skip; @@ -236,6 +238,11 @@ int main(int argc, char **argv) ++fname; fprintf(outfile, "data: %s\n", fname); + outsizepos = ftello(outfile); + zsizepos = ftello(zfile); + sizefmt = "[ifdef] size: size: %12.12lx [then]\n"; + fprintf(outfile, sizefmt, 0); + fprintf(zfile, sizefmt, 0); fprintf(outfile, "zblocks: %lx %lx\n", zblocksize, eblocks); fprintf(zfile, "zblocks: %lx %lx\n", zblocksize, eblocks); @@ -266,9 +273,20 @@ int main(int argc, char **argv) fprintf(outfile, "zblocks-end:\n"); fprintf(zfile, "zblocks-end:\n"); + lastpos = ftello(zfile); + + /* go back and rewrite zdata size line, now that it is known */ + (void)fseeko(outfile, outsizepos, SEEK_SET); + fprintf(outfile, sizefmt, lastpos); + (void)fseeko(outfile, lastpos, SEEK_SET); + + (void)fseeko(zfile, zsizepos, SEEK_SET); + fprintf(zfile, sizefmt, lastpos); + (void)fseeko(zfile, lastpos, SEEK_SET); + fclose(infile); fclose(outfile); - putchar('\n'); + putchar('\n'); return EXIT_SUCCESS; } -- cgit v0.9.1