Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Cameron <quozl@laptop.org>2012-08-20 10:35:46 (GMT)
committer Daniel Drake <dsd@laptop.org>2012-08-28 17:24:25 (GMT)
commit32d7015ac1b6287f3e1dae4b84c056e625643edd (patch)
tree41b7515d91fca061a60614c6643825eab4bb82e9
parent51c75b05e15f3201863cf1ad736388ac47abec55 (diff)
zhashfs, add header data for sanity-check of file size, #12055
-rw-r--r--bin/zhashfs.c20
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;
}