#include <stdlib.h> #include <stdio.h> #include <stdbool.h> #include <stdint.h> #include <string.h> #include <assert.h> #include "bitwriter.h" int main(int argc, char *argv[]) { if (argc != 2) { printf("Usage: %s <input file>\n", argv[0]); exit(1); } char *input_file_name = argv[1]; char *output_file_name = malloc(sizeof(char) * (strlen(input_file_name) + strlen(".deflate") + 1)); sprintf(output_file_name, "%s.deflate", input_file_name); FILE *input_file = fopen(input_file_name, "r"); FILE *output_file = fopen(output_file_name, "w"); free(output_file_name); BitWriter *bitWriter = BitWriter_init(output_file); BitWriter_write_bit(bitWriter, 1); /* BFINAL */ BitWriter_write_bit(bitWriter, 1); /* BTYPE */ BitWriter_write_bit(bitWriter, 0); uint8_t c; while (fread(&c, 1, 1, input_file)) { BitWriter_write_alpha(bitWriter, c); } for (int i = 0; i < 7; i++) BitWriter_write_bit(bitWriter, 0); BitWriter_flush(bitWriter); BitWriter_free(bitWriter); fclose(output_file); fclose(input_file); return 0; }