- uint16_t footer[] = {0,1,6,01000,0};
- fwrite(footer,10,1,dst);
+ /* Now that block size is known, update block header. */
+ if (fseek(dst, 2, SEEK_SET)) {
+ fprintf(stderr, "ERROR: Failed seek back to header of data block.\n");
+ exit(EXIT_FAILURE);
+ }
+ for (int i = 0; i < 2; i++) {
+ switch (i) {
+ case 0: data = size & 0xff; break;
+ case 1: data = (size >> 8) & 0xff; break;
+ }
+ if (!fwrite(&data, 1, 1, dst)) {
+ fprintf(stderr, "ERROR: Failed to write block size into header.\n");
+ exit(EXIT_FAILURE);
+ }
+ checksum += data; // Header is included in checksum.
+ }
+ if (fseek(dst, 0, SEEK_END)) {
+ fprintf(stderr, "ERROR: Failed seek to end of data block.\n");
+ exit(EXIT_FAILURE);
+ }