#include #include #include #include #include #include #include #include #include #include struct { char head[6]; long len; } header; int main(int argc, char *argv[]) { int fd; long len; struct stat s; void *p = 0; char outfile[100], *data, *buffer; if (argc < 2) return 1; if ((fd = open(argv[1], O_RDONLY)) < 0) { fprintf(stderr, "%s: %s: %s\n", argv[0], argv[1], strerror(errno)); return 1; } fstat(fd, &s); // if ((p = mmap(0, s.st_size, PROT_READ, MAP_SHARED, fd, 0)) == MAP_FAILED) { // fprintf(stderr, "%s: %s: %s\n", argv[0], argv[1], strerror(errno)); // return 1; // } fd = open(argv[1], O_RDONLY); read(fd, header.head, 6); if (strcmp(header.head, "sZIP01")) { printf("fuck, not a stupid zip file!\n"); exit(1); } read(fd, &header.len, 4); data = malloc(header.len); buffer = malloc(s.st_size); read(fd, buffer, s.st_size-10); uncompress(data, &len, buffer, s.st_size-10); close(fd); write(1, data, len); return 0; }