View difference between Paste ID: f16274c11 and
SHOW:
|
|
- or go back to the newest paste.
1 | - | |
1 | + | #import <Foundation/Foundation.h> |
2 | ||
3 | // From iWorkImport: | |
4 | ||
5 | @interface GQZEntry : NSObject | |
6 | -(NSData*)data; | |
7 | @end | |
8 | ||
9 | @interface GQZArchive : NSObject | |
10 | -(id)initWithPath:(NSString*)path collapseCommonRootDirectory:(BOOL)directory; | |
11 | -(id)initWithData:(NSData*)data collapseCommonRootDirectory:(BOOL)directory; | |
12 | -(GQZEntry*)entryWithName:(NSString*)name; | |
13 | -(NSArray*)entryNames; | |
14 | -(BOOL)isEncrypted; | |
15 | @end | |
16 | ||
17 | int main (int argc, const char* argv[]) { | |
18 | if (argc < 2) { | |
19 | printf("Usage: show-zip-content <zipfile>\n\n"); | |
20 | return 0; | |
21 | } | |
22 | ||
23 | NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; | |
24 | ||
25 | Class GQZArchive_ = objc_getClass("GQZArchive"); | |
26 | GQZArchive* zip = [[GQZArchive_ alloc] initWithPath:[NSString stringWithUTF8String:argv[1]] collapseCommonRootDirectory:NO]; | |
27 | ||
28 | if ([zip isEncrypted]) { | |
29 | printf("Encrypted ZIP files are not supported with GQZArchive."); | |
30 | } else { | |
31 | ||
32 | for (NSString* path in [zip entryNames]) { | |
33 | printf("[%s]:\n", [path UTF8String]); | |
34 | char buf[64]; | |
35 | memset(buf, 0, sizeof(buf)); | |
36 | [[[zip entryWithName:path] data] getBytes:buf length:64]; | |
37 | // Print the first 64-bytes. | |
38 | printf("%s\n", buf); | |
39 | } | |
40 | } | |
41 | ||
42 | [zip release]; | |
43 | ||
44 | [pool drain]; | |
45 | ||
46 | return 0; | |
47 | } |