Commit 3e33dca6 authored by John M. (Jack) Maxfield's avatar John M. (Jack) Maxfield
Browse files

write to output file in myzip

parent 940bd3a2
No related merge requests found
Showing with 8 additions and 8 deletions
+8 -8
......@@ -51,7 +51,7 @@ int main(int argc, char *argv[])
const char *output_file_name = argv[1];
const char *input_file_name = argv[2];
FILE *input_file = fopen(input_file_name, "r");
FILE *output_file = fopen(output_file_name, "w");
FILE *output_file = fopen(output_file_name, "w+");
if (input_file == NULL)
{
......@@ -75,11 +75,11 @@ int main(int argc, char *argv[])
write_u32(output_file, 0x04034b50); /* local file signature */
write_u16(output_file, 20); /* extract version */
write_u16(output_file, 0); /* general purpose flag */
write_u16(output_file, 0); /* compression method */
write_u16(output_file, 8); /* compression method */
write_u16(output_file, 0); /* last mod file time */
write_u16(output_file, 0); /* last mod file date */
write_u32(output_file, 0xDEADBEEF); /* crc */
size_t compressed_size_loc = ftell(input_file);
size_t compressed_size_loc = ftell(output_file);
write_u32(output_file, 0); /* compressed file size */
write_u32(output_file, input_file_size); /* uncompressed file size */
write_u16(output_file, strlen(input_file_name)); /* file name len */
......@@ -88,12 +88,12 @@ int main(int argc, char *argv[])
/* extra field */
/* copy input file to output */
uint32_t compressed_size = write_lz77_stream(input_file, output_file);
printf("Compressed size = %d\n", compressed_size);
size_t central_directory_start = ftell(input_file); /* save location */
fseek(input_file, compressed_size_loc, SEEK_SET); /* move back */
size_t central_directory_start = ftell(output_file); /* save location */
fseek(output_file, compressed_size_loc, SEEK_SET); /* move back */
write_u32(output_file, compressed_size); /* write compressed size */
fseek(input_file, central_directory_start, SEEK_SET); /* return to writing */
fseek(output_file, central_directory_start, SEEK_SET); /* return to writing */
/* (2) CENTRAL DIRECTORY RECORD */
write_u32(output_file, 0x02014b50); /* central directory signature */
......@@ -101,7 +101,7 @@ int main(int argc, char *argv[])
write_u8 (output_file, 65); /* made by */
write_u16(output_file, 20); /* extract version */
write_u16(output_file, 0); /* general purpose bit flag */
write_u16(output_file, 0); /* compression method */
write_u16(output_file, 8); /* compression method */
write_u16(output_file, 0); /* last mod file time */
write_u16(output_file, 0); /* last mod file date */
write_u32(output_file, 0xdeadbeef); /* crc */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment