offset = lseek(z_fd, offset, SEEK_SET);
if ((qty = read(z_fd, header, Z_FILE_HEADER_BYTES))< Z_FILE_HEADER_BYTES)
fprintf(stderr, "Warning: Tried to read %ld header bytes but only got %ld. Will do my best\n", Z_FILE_HEADER_BYTES, qty);
+ time_t timestamp = msdos2unixtime(header->timestamp, header->datestamp);
+ char *datetime = ctime(×tamp);
printf("Magic %08x\n", header->magic);
- printf("CRC32 %08x\n", header->__crc32);
+ printf("Timestamp %s" , datetime);
printf("File size %08x\n", header->file_bytes);
printf("Payload size %08x\n", header->payload_bytes);
printf("Directories offset %08x\n", header->directories_offset);
printf("File entries: %d ( %08x bytes @ 0x%08x)\n", header->files_entries, header->files_bytes, header->files_offset);
for (int i = 0; i < header->files_entries; ++i) {
- time_t timestamp = msdos2unixtime(q->timestamp, q->datestamp);
- char *datetime = ctime(×tamp);
+ timestamp = msdos2unixtime(q->timestamp, q->datestamp);
+ datetime = ctime(×tamp);
printf(" Entry %4d uses %06x bytes @ %08x. Date %s File-size %08x (payload %08x @ %08x)", i, q->entry_bytes, header->files_offset +(uint32_t)((void *)q - (void *)fileent), datetime, q->file_bytes, q->payload_bytes, q->payload_offset);
if (debug) {
uint16_t __flags; // 0x06
uint32_t __unknown08; // 0x08
uint16_t files_entries; // 0x0C
- uint32_t __crc32; // 0x0E
+ uint16_t datestamp; // 0x0E
+ uint16_t timestamp; // 0x10
uint32_t file_bytes; // 0x12
uint32_t payload_bytes; // 0x16
uint8_t __known1A; // 0x1A