1 #include <zipfile/zipfile.h>
\r
6 void dump_zipfile(FILE* to, zipfile_t file);
\r
9 main(int argc, char** argv)
\r
12 size_t size, unsize;
\r
18 enum { HUH, LIST, UNZIP } what = HUH;
\r
20 if (strcmp(argv[2], "-l") == 0 && argc == 3) {
\r
23 else if (strcmp(argv[2], "-u") == 0 && argc == 5) {
\r
27 fprintf(stderr, "usage: test_zipfile ZIPFILE -l\n"
\r
28 " lists the files in the zipfile\n"
\r
29 " test_zipfile ZIPFILE -u FILENAME SAVETO\n"
\r
30 " saves FILENAME from the zip file into SAVETO\n");
\r
34 f = fopen(argv[1], "r");
\r
36 fprintf(stderr, "couldn't open %s\n", argv[1]);
\r
40 fseek(f, 0, SEEK_END);
\r
45 fread(buf, 1, size, f);
\r
47 zip = init_zipfile(buf, size);
\r
49 fprintf(stderr, "inti_zipfile failed\n");
\r
59 dump_zipfile(stdout, zip);
\r
62 entry = lookup_zipentry(zip, argv[3]);
\r
63 if (entry == NULL) {
\r
64 fprintf(stderr, "zip file '%s' does not contain file '%s'\n",
\r
68 f = fopen(argv[4], "w");
\r
70 fprintf(stderr, "can't open file for writing '%s'\n", argv[4]);
\r
73 unsize = get_zipentry_size(entry);
\r
74 size = unsize * 1.001;
\r
75 scratch = malloc(size);
\r
76 printf("scratch=%p\n", scratch);
\r
77 err = decompress_zipentry(entry, scratch, size);
\r
79 fprintf(stderr, "error decompressing file\n");
\r
82 fwrite(scratch, unsize, 1, f);
\r