| 588 | } |
| 589 | |
| 590 | static void write_zip_trailer(const struct object_id *oid) |
| 591 | { |
| 592 | struct zip_dir_trailer trailer; |
| 593 | int clamped = 0; |
| 594 | |
| 595 | copy_le32(trailer.magic, 0x06054b50); |
| 596 | copy_le16(trailer.disk, 0); |
| 597 | copy_le16(trailer.directory_start_disk, 0); |
| 598 | copy_le16_clamp(trailer.entries_on_this_disk, zip_dir_entries, |
| 599 | &clamped); |
| 600 | copy_le16_clamp(trailer.entries, zip_dir_entries, &clamped); |
| 601 | copy_le32(trailer.size, zip_dir.len); |
| 602 | copy_le32_clamp(trailer.offset, zip_offset, &clamped); |
| 603 | copy_le16(trailer.comment_length, oid ? the_hash_algo->hexsz : 0); |
| 604 | |
| 605 | write_or_die(1, zip_dir.buf, zip_dir.len); |
| 606 | if (clamped) |
| 607 | write_zip64_trailer(); |
| 608 | write_or_die(1, &trailer, ZIP_DIR_TRAILER_SIZE); |
| 609 | if (oid) |
| 610 | write_or_die(1, oid_to_hex(oid), the_hash_algo->hexsz); |
| 611 | } |
| 612 | |
| 613 | static void dos_time(timestamp_t *timestamp, int *dos_date, int *dos_time) |
| 614 | { |
no test coverage detected