diff options
author | James Cameron <quozl@laptop.org> | 2012-08-20 10:35:46 (GMT) |
---|---|---|
committer | Daniel Drake <dsd@laptop.org> | 2012-08-28 17:24:25 (GMT) |
commit | 32d7015ac1b6287f3e1dae4b84c056e625643edd (patch) | |
tree | 41b7515d91fca061a60614c6643825eab4bb82e9 | |
parent | 51c75b05e15f3201863cf1ad736388ac47abec55 (diff) |
zhashfs, add header data for sanity-check of file size, #12055
-rw-r--r-- | bin/zhashfs.c | 20 |
1 files changed, 19 insertions, 1 deletions
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; } |