From c2f0eecac4578ae3ce7c54b73dee4b75cbf8e779 Mon Sep 17 00:00:00 2001 From: Ukseong Moon Date: Mon, 30 Oct 2017 21:12:04 -0300 Subject: [PATCH 1/2] Archive values in dictionary --- ZipZap/ZZArchive.h | 1 + ZipZap/ZZArchive.mm | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ZipZap/ZZArchive.h b/ZipZap/ZZArchive.h index a37e0a7e..545dae0f 100644 --- a/ZipZap/ZZArchive.h +++ b/ZipZap/ZZArchive.h @@ -56,6 +56,7 @@ NS_ASSUME_NONNULL_BEGIN * The array of ZZArchiveEntry entries within this archive. */ @property (readonly, nonatomic) NSArray* entries; +@property (readonly, nonatomic) NSDictionary* entriesDictionary; /** * Creates a new archive with the zip file at the given file URL. diff --git a/ZipZap/ZZArchive.mm b/ZipZap/ZZArchive.mm index 3ed3dc10..e7201f1c 100644 --- a/ZipZap/ZZArchive.mm +++ b/ZipZap/ZZArchive.mm @@ -141,6 +141,8 @@ - (BOOL)loadCanMiss:(BOOL)canMiss error:(out NSError**)error ZZCentralFileHeader* nextCentralFileHeader = (ZZCentralFileHeader*)(beginContent + endOfCentralDirectoryRecord->offsetOfStartOfCentralDirectoryWithRespectToTheStartingDiskNumber); NSMutableArray* entries = [NSMutableArray array]; + NSMutableDictionary *entriesDictionary = [NSMutableDictionary dictionary]; + for (NSUInteger index = 0; index < endOfCentralDirectoryRecord->totalNumberOfEntriesInTheCentralDirectory; ++index) { // sanity check: @@ -159,8 +161,18 @@ - (BOOL)loadCanMiss:(BOOL)canMiss error:(out NSError**)error ZZLocalFileHeader* nextLocalFileHeader = (ZZLocalFileHeader*)(beginContent + nextCentralFileHeader->relativeOffsetOfLocalHeader); - [entries addObject:[[ZZOldArchiveEntry alloc] initWithCentralFileHeader:nextCentralFileHeader - localFileHeader:nextLocalFileHeader]]; + /* + return [[NSString alloc] initWithBytes:_centralFileHeader->fileName() + length:_centralFileHeader->fileNameLength + encoding:encoding]; +*/ + + ZZOldArchiveEntry *entry = [[ZZOldArchiveEntry alloc] initWithCentralFileHeader:nextCentralFileHeader + localFileHeader:nextLocalFileHeader]; + + [entries addObject:entry]; + [entriesDictionary setObject:entry forKey:entry.fileName]; + nextCentralFileHeader = nextCentralFileHeader->nextCentralFileHeader(); } @@ -168,6 +180,7 @@ - (BOOL)loadCanMiss:(BOOL)canMiss error:(out NSError**)error // having successfully negotiated the new contents + entries, replace in one go _contents = contents; _entries = entries; + _entriesDictionary = entriesDictionary; return YES; } From f27aa0b58517324d5cb79c848ee6264110871a0b Mon Sep 17 00:00:00 2001 From: Ukseong Moon Date: Mon, 30 Oct 2017 21:16:54 -0300 Subject: [PATCH 2/2] Cleaned up commented out lines --- ZipZap/ZZArchive.mm | 6 ------ 1 file changed, 6 deletions(-) diff --git a/ZipZap/ZZArchive.mm b/ZipZap/ZZArchive.mm index e7201f1c..79942671 100644 --- a/ZipZap/ZZArchive.mm +++ b/ZipZap/ZZArchive.mm @@ -161,12 +161,6 @@ - (BOOL)loadCanMiss:(BOOL)canMiss error:(out NSError**)error ZZLocalFileHeader* nextLocalFileHeader = (ZZLocalFileHeader*)(beginContent + nextCentralFileHeader->relativeOffsetOfLocalHeader); - /* - return [[NSString alloc] initWithBytes:_centralFileHeader->fileName() - length:_centralFileHeader->fileNameLength - encoding:encoding]; -*/ - ZZOldArchiveEntry *entry = [[ZZOldArchiveEntry alloc] initWithCentralFileHeader:nextCentralFileHeader localFileHeader:nextLocalFileHeader];