#include <stdio.h> #include <stdbool.h> #include <string.h> #include <stdlib.h> #include <inflate.h> void truncate_suffix(char *fname) { char *dot = strrchr(fname, '.'); const char *suffix = ".deflate"; for (int i = 0; i < 8; i++) { if (dot == NULL || *(dot + i) != suffix[i]) { fprintf(stderr, "error: must be a .deflate file\n"); exit(1); } } *dot = '\0'; } int main(int argc, char *argv[]) { if (argc != 2) { fprintf(stderr, "usage: inflate [file]\n"); return 1; } char *fname = argv[1]; FILE *fp = fopen(fname, "rb"); if (!fp) { fprintf(stderr, "error: file not found\n"); return 1; } fseek(fp, 0, SEEK_END); long size = ftell(fp); rewind(fp); truncate_suffix(fname); inflate(fp, size, fname); fclose(fp); return 0; }