21 Commits
1.0.0 ... 1.0.3

Author SHA1 Message Date
Gianluca Bertani
04d8d9d1d4 Fixed podspec by adding public headers 2016-08-28 12:12:38 +02:00
Gianluca Bertani
cc40af1311 Bumped version to 1.0.3 2016-08-28 11:28:16 +02:00
Gianluca Bertani
1dbde8f9c9 Bumped version to 1.0.3 2016-08-28 11:26:08 +02:00
Gianluca Bertani
5a90a66267 Merge pull request #41 from atlasti/master
Removing a potential leak found by static analysis.
2016-08-28 11:01:55 +02:00
Gianluca Bertani
00386a3fe9 Merge pull request #48 from andyj-at-aspin/Swift3ExceptionThrowing
Changed throwing of Swift errors
2016-08-28 10:59:34 +02:00
Andy Johnson
ec6056de67 Changed throwing of Swift errors from the Stream reading/writing to be nonnull_error rather than zero_result. Continues to work with Swift 2.x but now works with Swift 3 Beta (circa XCode 8 beta 6) 2016-08-26 16:53:19 +01:00
Martin Winter
2485f97586 Apply changes from commit e54e129 of https://github.com/madler/zlib/ repository to silence compiler warning about shifting a negative signed value. 2016-04-01 13:57:52 +01:00
Gianluca Bertani
8364f87f9a Merge pull request #44 from deni2s/master
Update README.md
2016-03-18 08:37:38 +01:00
deni2s
9dfa7e43da Update README.md
Suppresses warning about using int type instead of long long for info.size
2016-03-17 17:38:39 +02:00
Gianluca Bertani
401dfa4b17 Merge pull request #43 from deni2s/patch-1
Update README.md
2016-03-17 16:21:54 +01:00
deni2s
a1e5810879 Update README.md
Fixed typo in example code
2016-03-17 17:07:48 +02:00
Kevin Meaney
64185c4750 Removing a potential leek found by static analysis. 2016-01-04 11:22:31 +00:00
Gianluca Bertani
4ed48f8e04 Bumped version to 1.0.2 2015-10-18 14:37:22 +02:00
Gianluca Bertani
6797222f63 Improved section on reading a file; removed section on memory management; added version 1.0.2 in version history 2015-10-18 14:33:49 +02:00
Gianluca Bertani
f1f4fee67f Improved interface of locateFileInZip and readDataWithBuffer in NSError variant 2015-10-18 14:32:45 +02:00
Gianluca Bertani
07288c8e00 Fixed pod name in README 2015-10-18 10:35:30 +02:00
Gianluca Bertani
1409b8622d Updated podspec 2015-09-20 19:01:01 +02:00
Gianluca Bertani
7f6ea3dd22 Bumped version to 1.0.1 2015-09-20 19:00:10 +02:00
Gianluca Bertani
f3ccab7a68 Added Swift unit tests; bug fixes for Swift compatibility; verified settings for Xcode 7 2015-09-20 18:55:05 +02:00
Gianluca Bertani
74cbccda01 Merged back Getting Started in README 2015-09-14 11:51:02 +02:00
Gianluca Bertani
5178459102 Moved enums to NS_ENUMs for Swift compatibility 2015-09-14 11:49:48 +02:00
36 changed files with 1149 additions and 521 deletions

View File

@@ -1,232 +0,0 @@
Getting started with Objective-Zip
==================================
Objective-Zip exposes basic functionalities to read and write zip files,
encapsulating both ZLib for the compression mechanism and MiniZip for
the zip wrapping.
Adding Objective-Zip to your project
------------------------------------
The library is distributed via CocoaPods, you can add a dependency in you pod
file with the following line:
pod 'Objective-Zip', '~> 1.0'
You can then access Objective-Zip classes with the following import
statement if you plan to use exception handling:
```objective-c
#import "Objective-Zip.h"
```
Alternatively you can use the following import statement if you plan to use
Apple's NSError pattern:
```objective-c
#import "Objective-Zip+NSError.h"
```
More on error handling at the end of this document.
Main concepts
-------------
Objective-Zip is centered on a class called (with a lack of fantasy)
OZZipFile. It can be created with the common Objective-C procedure of an
alloc followed by an init, specifying in the latter if the zip file is
being created, appended or unzipped:
```objective-c
OZZipFile *zipFile= [[OZZipFile alloc] initWithFileName:@"test.zip"
mode:OZZipFileModeCreate];
```
Creating and appending are both write-only modalities, while unzipping
is a read-only modality. You can not request reading operations on a
write-mode zip file, nor request writing operations on a read-mode zip
file.
Adding a file to a zip file
---------------------------
The ZipFile class has a couple of methods to add new files to a zip
file, one of which keeps the file in clear and the other encrypts it
with a password. Both methods return an instance of a OZZipWriteStream
class, which will be used solely for the scope of writing the content of
the file, and then must be closed:
```objective-c
OZZipWriteStream *stream= [zipFile writeFileInZipWithName:@"abc.txt"
compressionLevel:OZZipCompressionLevelBest];
[stream writeData:abcData];
[stream finishedWriting];
```
Reading a file from a zip file
------------------------------
The OZZipFile class, when used in unzip mode, must be treated like a
cursor: you position the instance on a file at a time, either by
step-forwarding or by locating the file by name. Once you are on the
correct file, you can obtain an instance of a OZZipReadStream that will
let you read the content (and then must be closed):
```objective-c
OZZipFile *unzipFile= [[OZZipFile alloc] initWithFileName:@"test.zip"
mode:OZZipFileModeUnzip];
[unzipFile goToFirstFileInZip];
OZZipReadStream *read= [unzipFile readCurrentFileInZip];
NSMutableData *data= [[NSMutableData alloc] initWithLength:256];
int bytesRead= [read readDataWithBuffer:data];
[read finishedReading];
```
Note that the NSMutableData instance that acts as the read buffer must
have been set with a length greater than 0: the readDataWithBuffer API
will use that length to know how many bytes it can fetch from the zip
file.
Listing files in a zip file
---------------------------
When the ZipFile class is used in unzip mode, it can also list the files
contained in zip by filling an NSArray with instances of FileInZipInfo
class. You can then use its name property to locate the file inside the
zip and expand it:
```objective-c
OZZipFile *unzipFile= [[OZZipFile alloc] initWithFileName:@"test.zip"
mode:ZipFileModeUnzip];
NSArray *infos= [unzipFile listFileInZipInfos];
for (OZFileInZipInfo *info in infos) {
NSLog(@"- %@ %@ %d (%d)", info.name, info.date, info.size,
info.level);
// Locate the file in the zip
[unzipFile locateFileInZip:info.name];
// Expand the file in memory
OZZipReadStream *read= [unzipFile readCurrentFileInZip];
NSMutableData *data= [[NSMutableData alloc] initWithLength:256];
int bytesRead= [read readDataWithBuffer:data];
[read finishedReading];
}
```
Note that the OZFileInZipInfo class provide two sizes:
- **length** is the original (uncompressed) file size, while
- **size** is the compressed file size.
Closing the zip file
--------------------
Remember, when you are done, to close your OZZipFile instance to avoid
file corruption problems:
```objective-c
[zipFile close];
```
Notes
=====
File/folder hierarchy inide the zip
-----------------------------------
Please note that inside the zip files there is no representation of a
file-folder hierarchy: it is simply embedded in file names (i.e.: a file
with a name like "x/y/z/file.txt"). It is up to the program that
extracts files to consider these file names as expressing a structure and
rebuild it on the file system (and viceversa during creation). Common
zippers/unzippers simply follow this rule.
Memory management
-----------------
If you need to extract huge files that cannot be contained in memory,
you can do so using a read-then-write buffered loop like this:
```objective-c
NSFileHandle *file= [NSFileHandle fileHandleForWritingAtPath:filePath];
NSMutableData *buffer= [[NSMutableData alloc]
initWithLength:BUFFER_SIZE];
OZZipReadStream *read= [unzipFile readCurrentFileInZip];
// Read-then-write buffered loop
do {
// Reset buffer length
[buffer setLength:BUFFER_SIZE];
// Expand next chunk of bytes
int bytesRead= [read readDataWithBuffer:buffer];
if (bytesRead > 0) {
// Write what we have read
[buffer setLength:bytesRead];
[file writeData:buffer];
} else
break;
} while (YES);
// Clean up
[file closeFile];
[read finishedReading];
[buffer release];
```
Error handling
--------------
Objective-Zip provides two kinds of error handling:
- standard exception handling;
- Apple's NSError pattern.
With standard exception handling, Objective-Zip will throw an exception of
class OZZipException any time an error occurs (programmer or runtime errors).
To use standard exception handling import Objective-Zip in your project with
this statement:
```objective-c
#import "Objective-Zip.h"
```
With Apple's NSError pattern, Objective-Zip will expect a NSError
pointer-to-pointer argument and will fill it with an NSError instance
whenever a runtime error occurs. Will revert to throwing an exception (of
OZZipException class) in case of programmer errors.
To use Apple's NSError pattern import Objective-Zip in your project with this
statement:
```objective-c
#import "Objective-Zip+NSError.h"
```
Apple's NSError pattern is of course mandatory with Swift programming
language, since it does not support exception handling.

View File

@@ -342,7 +342,10 @@ local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
return 0;
if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0)
{
TRYFREE(buf);
return 0;
}
file_size = ZTELL64(*pzlib_filefunc_def, filestream);

View File

@@ -575,7 +575,10 @@ local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
return 0;
if (ZSEEK64(*pzlib_filefunc_def, filestream, 0, ZLIB_FILEFUNC_SEEK_END) != 0)
{
TRYFREE(buf);
return 0;
}
file_size = ZTELL64(*pzlib_filefunc_def, filestream);

View File

@@ -7,7 +7,7 @@
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>com.flyingdolphinstudio.$(PRODUCT_NAME:rfc1034identifier)</string>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>

View File

@@ -0,0 +1,5 @@
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//
#import "Objective-Zip+NSError.h"

View File

@@ -0,0 +1,5 @@
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//
#import "Objective-Zip+NSError.h"

View File

@@ -0,0 +1,454 @@
//
// Objective-Zip_Swift_Tests.swift
// Objective-Zip
//
// Created by Gianluca Bertani on 20/09/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
// * Neither the name of Gianluca Bertani nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES LOSS OF USE, DATA, OR PROFITS OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//
import XCTest
let HUGE_TEST_BLOCK_LENGTH = 50000
let HUGE_TEST_NUMBER_OF_BLOCKS = 100000
let MAC_TEST_ZIP = "UEsDBBQACAAIAPWF10IAAAAAAAAAAAAAAAANABAAdGVzdF9maWxlLnR4dFVYDACQCsdRjQrHUfYB9gHzT8pKTS7JLEvVjcosUPBNTFYoSS0uUUjLzEnlAgBQSwcIlXE92h4AAAAcAAAAUEsDBAoAAAAAAACG10IAAAAAAAAAAAAAAAAJABAAX19NQUNPU1gvVVgMAKAKx1GgCsdR9gH2AVBLAwQUAAgACAD1hddCAAAAAAAAAAAAAAAAGAAQAF9fTUFDT1NYLy5fdGVzdF9maWxlLnR4dFVYDACQCsdRjQrHUfYB9gFjYBVjZ2BiYPBNTFbwD1aIUIACkBgDJxAbAXElEIP4qxmIAo4hIUFQJkjHHCDmR1PCiBAXT87P1UssKMhJ1QtJrShxzUvOT8nMSwdKlpak6VpYGxqbGBmaW1qYAABQSwcIcBqNwF0AAACrAAAAUEsBAhUDFAAIAAgA9YXXQpVxPdoeAAAAHAAAAA0ADAAAAAAAAAAAQKSBAAAAAHRlc3RfZmlsZS50eHRVWAgAkArHUY0Kx1FQSwECFQMKAAAAAAAAhtdCAAAAAAAAAAAAAAAACQAMAAAAAAAAAABA/UFpAAAAX19NQUNPU1gvVVgIAKAKx1GgCsdRUEsBAhUDFAAIAAgA9YXXQnAajcBdAAAAqwAAABgADAAAAAAAAAAAQKSBoAAAAF9fTUFDT1NYLy5fdGVzdF9maWxlLnR4dFVYCACQCsdRjQrHUVBLBQYAAAAAAwADANwAAABTAQAAAAA="
let WIN_TEST_ZIP = "UEsDBBQAAAAAAMmF10L4VbPKIQAAACEAAAANAAAAdGVzdF9maWxlLnR4dE9iamVjdGl2ZS1aaXAgV2luZG93cyB0ZXN0IGZpbGUNClBLAQIUABQAAAAAAMmF10L4VbPKIQAAACEAAAANAAAAAAAAAAEAIAAAAAAAAAB0ZXN0X2ZpbGUudHh0UEsFBgAAAAABAAEAOwAAAEwAAAAAAA=="
class Objective_Zip_Swift_Tests: XCTestCase {
override func setUp() {
super.setUp()
}
override func tearDown() {
super.tearDown()
}
func test01ZipAndUnzip() {
let documentsUrl = NSURL(fileURLWithPath:NSHomeDirectory(), isDirectory:true).URLByAppendingPathComponent("Documents")
let fileUrl = documentsUrl.URLByAppendingPathComponent("test.zip")
let filePath = fileUrl.path!
do {
try NSFileManager.defaultManager().removeItemAtPath(filePath)
} catch {}
defer {
do {
try NSFileManager.defaultManager().removeItemAtPath(filePath)
} catch {}
}
do {
NSLog("Test 1: opening zip file for writing...")
let zipFile = try OZZipFile(fileName:filePath, mode:OZZipFileMode.Create)
XCTAssertNotNil(zipFile)
NSLog("Test 1: adding first file...")
let stream1 = try zipFile.writeFileInZipWithName("abc.txt", fileDate:NSDate(timeIntervalSinceNow:-86400.0), compressionLevel:OZZipCompressionLevel.Best)
XCTAssertNotNil(stream1)
NSLog("Test 1: writing to first file's stream...")
let text = "abc"
try stream1.writeData(text.dataUsingEncoding(NSUTF8StringEncoding)!)
NSLog("Test 1: closing first file's stream...")
try stream1.finishedWriting()
NSLog("Test 1: adding second file...")
let file2name = "x/y/z/xyz.txt"
let stream2 = try zipFile.writeFileInZipWithName(file2name, compressionLevel:OZZipCompressionLevel.None)
XCTAssertNotNil(stream2)
NSLog("Test 1: writing to second file's stream...")
let text2 = "XYZ"
try stream2.writeData(text2.dataUsingEncoding(NSUTF8StringEncoding)!)
NSLog("Test 1: closing second file's stream...")
try stream2.finishedWriting()
NSLog("Test 1: closing zip file...")
try zipFile.close()
NSLog("Test 1: opening zip file for reading...")
let unzipFile = try OZZipFile(fileName:filePath, mode:OZZipFileMode.Unzip)
XCTAssertNotNil(unzipFile)
NSLog("Test 1: reading file infos...")
let infos = try unzipFile.listFileInZipInfos()
XCTAssertEqual(2, infos.count)
let info1 = infos[0] as! OZFileInZipInfo
XCTAssertEqualWithAccuracy(NSDate().timeIntervalSinceReferenceDate, info1.date.timeIntervalSinceReferenceDate + 86400, accuracy:5.0)
NSLog("Test 1: - \(info1.name) \(info1.date) \(info1.size) (\(info1.level))")
let info2 = infos[1] as! OZFileInZipInfo
XCTAssertEqualWithAccuracy(NSDate().timeIntervalSinceReferenceDate, info2.date.timeIntervalSinceReferenceDate, accuracy:5.0)
NSLog("Test 1: - \(info2.name) \(info2.date) \(info2.size) (\(info2.level))")
NSLog("Test 1: opening first file...")
try unzipFile.goToFirstFileInZip()
let read1 = try unzipFile.readCurrentFileInZip()
XCTAssertNotNil(read1)
NSLog("Test 1: reading from first file's stream...")
let data1 = NSMutableData(length:256)!
let bytesRead1 = try read1.readDataWithBuffer(data1)
XCTAssertEqual(3, bytesRead1)
let fileText1 = NSString(bytes:data1.bytes, length:Int(bytesRead1), encoding:NSUTF8StringEncoding)
XCTAssertEqual("abc", fileText1)
NSLog("Test 1: closing first file's stream...")
try read1.finishedReading()
NSLog("Test 1: opening second file...")
try unzipFile.locateFileInZip(file2name)
let read2 = try unzipFile.readCurrentFileInZip()
XCTAssertNotNil(read2)
NSLog("Test 1: reading from second file's stream...")
let data2 = NSMutableData(length:256)!
let bytesRead2 = try read2.readDataWithBuffer(data2)
XCTAssertEqual(3, bytesRead2)
let fileText2 = NSString(bytes:data2.bytes, length:Int(bytesRead2), encoding:NSUTF8StringEncoding)
XCTAssertEqual("XYZ", fileText2)
NSLog("Test 1: closing second file's stream...")
try read2.finishedReading()
NSLog("Test 1: closing zip file...")
try unzipFile.close()
NSLog("Test 1: test terminated succesfully")
} catch let error as NSError {
NSLog("Test 1: error caught: \(error.code) - \(error.userInfo[NSLocalizedFailureReasonErrorKey])")
XCTFail("Error caught: \(error.code) - \(error.userInfo[NSLocalizedFailureReasonErrorKey])")
} catch let error {
NSLog("Test 1: generic error caught: \(error)")
XCTFail("Generic error caught: \(error)")
}
}
/*
* Uncomment to execute this test, but be careful: takes 5 minutes and consumes 5 GB of disk space
*
func test02ZipAndUnzip5GB() {
let documentsUrl = NSURL(fileURLWithPath:NSHomeDirectory(), isDirectory:true).URLByAppendingPathComponent("Documents")
let fileUrl = documentsUrl.URLByAppendingPathComponent("huge_test.zip")
let filePath = fileUrl.path!
do {
try NSFileManager.defaultManager().removeItemAtPath(filePath)
} catch {}
defer {
do {
try NSFileManager.defaultManager().removeItemAtPath(filePath)
} catch {}
}
do {
NSLog("Test 2: opening zip file for writing...")
let zipFile = try OZZipFile(fileName:filePath, mode:OZZipFileMode.Create)
XCTAssertNotNil(zipFile)
NSLog("Test 2: adding file...")
let stream = try zipFile.writeFileInZipWithName("huge_file.txt", compressionLevel:OZZipCompressionLevel.Best)
XCTAssertNotNil(stream)
NSLog("Test 2: writing to file's stream...")
let data = NSMutableData(length:HUGE_TEST_BLOCK_LENGTH)!
SecRandomCopyBytes(kSecRandomDefault, data.length, UnsafeMutablePointer<UInt8>(data.mutableBytes))
let checkData = data.subdataWithRange(NSMakeRange(0, 100))
let buffer = NSMutableData(length:HUGE_TEST_BLOCK_LENGTH)! // For use later
for (var i = 0; i < HUGE_TEST_NUMBER_OF_BLOCKS; i++) {
try stream.writeData(data)
if (i % 100 == 0) {
NSLog("Test 2: written \((data.length / 1024) * (i + 1)) KB...")
}
}
NSLog("Test 2: closing file's stream...")
try stream.finishedWriting()
NSLog("Test 2: closing zip file...")
try zipFile.close()
NSLog("Test 2: opening zip file for reading...")
let unzipFile = try OZZipFile(fileName:filePath, mode:OZZipFileMode.Unzip)
XCTAssertNotNil(unzipFile)
NSLog("Test 1: reading file infos...")
let infos = try unzipFile.listFileInZipInfos()
XCTAssertEqual(1, infos.count)
let info1 = infos[0] as! OZFileInZipInfo
XCTAssertEqual(info1.length, UInt64(HUGE_TEST_NUMBER_OF_BLOCKS) * UInt64(HUGE_TEST_BLOCK_LENGTH))
NSLog("Test 1: - \(info1.name) \(info1.date) \(info1.size) (\(info1.level))")
NSLog("Test 2: opening file...")
try unzipFile.goToFirstFileInZip()
let read = try unzipFile.readCurrentFileInZip()
XCTAssertNotNil(read)
NSLog("Test 2: reading from file's stream...")
for (var i = 0; i < HUGE_TEST_NUMBER_OF_BLOCKS; i++) {
let bytesRead = try read.readDataWithBuffer(buffer)
XCTAssertEqual(data.length, bytesRead)
let range = buffer.rangeOfData(checkData, options:NSDataSearchOptions(), range:NSMakeRange(0, buffer.length))
XCTAssertEqual(0, range.location)
if (i % 100 == 0) {
NSLog("Test 2: read \((buffer.length / 1024) * (i + 1))) KB...")
}
}
NSLog("Test 2: closing file's stream...")
try read.finishedReading()
NSLog("Test 2: closing zip file...")
try unzipFile.close()
NSLog("Test 2: test terminated succesfully")
} catch let error as NSError {
NSLog("Test 2: error caught: \(error.code) - \(error.userInfo[NSLocalizedFailureReasonErrorKey])")
XCTFail("Error caught: \(error.code) - \(error.userInfo[NSLocalizedFailureReasonErrorKey])")
}
}
*/
func test03UnzipMacZipFile() -> () {
let documentsUrl = NSURL(fileURLWithPath:NSHomeDirectory(), isDirectory:true).URLByAppendingPathComponent("Documents")
let fileUrl = documentsUrl.URLByAppendingPathComponent("mac_test_file.zip")
let filePath = fileUrl.path!
do {
try NSFileManager.defaultManager().removeItemAtPath(filePath)
} catch {}
let macZipData = NSData(base64EncodedString:MAC_TEST_ZIP, options:NSDataBase64DecodingOptions())!
macZipData.writeToFile(filePath, atomically:false)
defer {
do {
try NSFileManager.defaultManager().removeItemAtPath(filePath)
} catch {}
}
do {
NSLog("Test 3: opening zip file for reading...")
let unzipFile = try OZZipFile(fileName:filePath, mode:OZZipFileMode.Unzip)
XCTAssertNotNil(unzipFile)
NSLog("Test 3: opening file...")
try unzipFile.goToFirstFileInZip()
let read = try unzipFile.readCurrentFileInZip()
XCTAssertNotNil(read)
NSLog("Test 3: reading from file's stream...")
let buffer = NSMutableData(length:1024)!
let bytesRead = try read.readDataWithBuffer(buffer)
let fileText = NSString(bytes:buffer.bytes, length:Int(bytesRead), encoding:NSUTF8StringEncoding)
XCTAssertEqual("Objective-Zip Mac test file\n", fileText)
NSLog("Test 3: closing file's stream...")
try read.finishedReading()
NSLog("Test 3: closing zip file...")
try unzipFile.close()
NSLog("Test 3: test terminated succesfully")
} catch let error as NSError {
NSLog("Test 3: error caught: \(error.code) - \(error.userInfo[NSLocalizedFailureReasonErrorKey])")
XCTFail("Error caught: \(error.code) - \(error.userInfo[NSLocalizedFailureReasonErrorKey])")
}
}
func test04UnzipWinZipFile() {
let documentsUrl = NSURL(fileURLWithPath:NSHomeDirectory(), isDirectory:true).URLByAppendingPathComponent("Documents")
let fileUrl = documentsUrl.URLByAppendingPathComponent("win_test_file.zip")
let filePath = fileUrl.path!
do {
try NSFileManager.defaultManager().removeItemAtPath(filePath)
} catch {}
let winZipData = NSData(base64EncodedString:WIN_TEST_ZIP, options:NSDataBase64DecodingOptions())!
winZipData.writeToFile(filePath, atomically:false)
defer {
do {
try NSFileManager.defaultManager().removeItemAtPath(filePath)
} catch {}
}
do {
NSLog("Test 4: opening zip file for reading...")
let unzipFile = try OZZipFile(fileName:filePath, mode:OZZipFileMode.Unzip)
XCTAssertNotNil(unzipFile)
NSLog("Test 4: opening file...")
try unzipFile.goToFirstFileInZip()
let read = try unzipFile.readCurrentFileInZip()
XCTAssertNotNil(read)
NSLog("Test 4: reading from file's stream...")
let buffer = NSMutableData(length:1024)!
let bytesRead = try read.readDataWithBuffer(buffer)
let fileText = NSString(bytes:buffer.bytes, length:Int(bytesRead), encoding:NSUTF8StringEncoding)
XCTAssertEqual("Objective-Zip Windows test file\r\n", fileText)
NSLog("Test 4: closing file's stream...")
try read.finishedReading()
NSLog("Test 4: closing zip file...")
try unzipFile.close()
NSLog("Test 4: test terminated succesfully")
} catch let error as NSError {
NSLog("Test 4: error caught: \(error.code) - \(error.userInfo[NSLocalizedFailureReasonErrorKey])")
XCTFail("Error caught: \(error.code) - \(error.userInfo[NSLocalizedFailureReasonErrorKey])")
}
}
func test05ErrorWrapping() {
let fileUrl = NSURL(fileURLWithPath:"/root.zip", isDirectory:false)
let filePath = fileUrl.path!
defer {
do {
try NSFileManager.defaultManager().removeItemAtPath(filePath)
} catch {}
}
do {
NSLog("Test 5: opening impossible zip file for writing...")
let zipFile = try OZZipFile(fileName:filePath, mode:OZZipFileMode.Create)
try zipFile.close()
NSLog("Test 5: test failed, no error reported")
XCTFail("No error reported")
} catch let error as NSError {
XCTAssertEqual(OZ_ERROR_NO_SUCH_FILE, error.code)
NSLog("Test 5: test terminated succesfully")
}
}
}

View File

@@ -135,13 +135,13 @@
XCTAssertEqualWithAccuracy([[NSDate date] timeIntervalSinceReferenceDate], [info1.date timeIntervalSinceReferenceDate] + 86400, 5.0);
NSLog(@"Test 1: - %@ %@ %lu (%d)", info1.name, info1.date, (unsigned long) info1.size, info1.level);
NSLog(@"Test 1: - %@ %@ %lu (%ld)", info1.name, info1.date, (unsigned long) info1.size, (long) info1.level);
OZFileInZipInfo *info2= [infos objectAtIndex:1];
XCTAssertEqualWithAccuracy([[NSDate date] timeIntervalSinceReferenceDate], [info2.date timeIntervalSinceReferenceDate], 5.0);
NSLog(@"Test 1: - %@ %@ %lu (%d)", info2.name, info2.date, (unsigned long) info2.size, info2.level);
NSLog(@"Test 1: - %@ %@ %lu (%ld)", info2.name, info2.date, (unsigned long) info2.size, (long) info2.level);
NSLog(@"Test 1: opening first file...");
@@ -177,7 +177,7 @@
NSMutableData *data2= [[NSMutableData alloc] initWithLength:256];
NSUInteger bytesRead2= [read2 readDataWithBuffer:data2];
XCTAssertEqual(3, bytesRead1);
XCTAssertEqual(3, bytesRead2);
NSString *fileText2= [[NSString alloc] initWithBytes:[data2 bytes] length:bytesRead2 encoding:NSUTF8StringEncoding];
@@ -208,11 +208,11 @@
}
}
/*
* Uncomment to execute this test, but be careful: takes 5 minutes and consumes 5 GB of disk space
*
- (void) test02ZipAndUnzip5GB {
// TODO Remove to enable this test, but be careful: takes 5 minutes and consumes 5 GB of disk space
return;
NSString *documentsDir= [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *filePath= [documentsDir stringByAppendingPathComponent:@"huge_test.zip"];
@@ -271,7 +271,7 @@
XCTAssertEqual(info1.length, HUGE_TEST_NUMBER_OF_BLOCKS * HUGE_TEST_BLOCK_LENGTH);
NSLog(@"Test 1: - %@ %@ %lu (%d)", info1.name, info1.date, (unsigned long) info1.size, info1.level);
NSLog(@"Test 1: - %@ %@ %lu (%ld)", info1.name, info1.date, (unsigned long) info1.size, (long) info1.level);
NSLog(@"Test 2: opening file...");
@@ -319,6 +319,7 @@
[[NSFileManager defaultManager] removeItemAtPath:filePath error:NULL];
}
}
*/
- (void) test03UnzipMacZipFile {
NSString *documentsDir= [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
@@ -448,7 +449,7 @@
} @catch (OZZipException *ze) {
XCTAssertEqual(ERROR_NO_SUCH_FILE, ze.error);
XCTAssertEqual(OZ_ERROR_NO_SUCH_FILE, ze.error);
} @catch (NSException *e) {
NSLog(@"Test 5: generic exception caught: %@ - %@", [[e class] description], [e description]);
@@ -469,7 +470,7 @@
XCTAssertNil(zipFile);
XCTAssertNotNil(error);
XCTAssertEqual(ERROR_NO_SUCH_FILE, error.code);
XCTAssertEqual(OZ_ERROR_NO_SUCH_FILE, error.code);
NSLog(@"Test 5: test terminated succesfully");

View File

@@ -7,54 +7,90 @@
objects = {
/* Begin PBXBuildFile section */
8C59F3821BAEE3BC00DBB3D0 /* Objective-Zip_Swift_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3811BAEE3BC00DBB3D0 /* Objective-Zip_Swift_Tests.swift */; settings = {ASSET_TAGS = (); }; };
8C59F3831BAEE3BC00DBB3D0 /* Objective-Zip_Swift_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3811BAEE3BC00DBB3D0 /* Objective-Zip_Swift_Tests.swift */; settings = {ASSET_TAGS = (); }; };
8C59F39E1BAEE48600DBB3D0 /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3841BAEE48600DBB3D0 /* adler32.c */; settings = {ASSET_TAGS = (); }; };
8C59F39F1BAEE48600DBB3D0 /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3841BAEE48600DBB3D0 /* adler32.c */; settings = {ASSET_TAGS = (); }; };
8C59F3A01BAEE48600DBB3D0 /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3851BAEE48600DBB3D0 /* compress.c */; settings = {ASSET_TAGS = (); }; };
8C59F3A11BAEE48600DBB3D0 /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3851BAEE48600DBB3D0 /* compress.c */; settings = {ASSET_TAGS = (); }; };
8C59F3A21BAEE48600DBB3D0 /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3861BAEE48600DBB3D0 /* crc32.c */; settings = {ASSET_TAGS = (); }; };
8C59F3A31BAEE48600DBB3D0 /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3861BAEE48600DBB3D0 /* crc32.c */; settings = {ASSET_TAGS = (); }; };
8C59F3A41BAEE48600DBB3D0 /* crc32.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3871BAEE48600DBB3D0 /* crc32.h */; settings = {ASSET_TAGS = (); }; };
8C59F3A51BAEE48600DBB3D0 /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3881BAEE48600DBB3D0 /* deflate.c */; settings = {ASSET_TAGS = (); }; };
8C59F3A61BAEE48600DBB3D0 /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3881BAEE48600DBB3D0 /* deflate.c */; settings = {ASSET_TAGS = (); }; };
8C59F3A71BAEE48600DBB3D0 /* deflate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3891BAEE48600DBB3D0 /* deflate.h */; settings = {ASSET_TAGS = (); }; };
8C59F3A81BAEE48600DBB3D0 /* gzclose.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F38A1BAEE48600DBB3D0 /* gzclose.c */; settings = {ASSET_TAGS = (); }; };
8C59F3A91BAEE48600DBB3D0 /* gzclose.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F38A1BAEE48600DBB3D0 /* gzclose.c */; settings = {ASSET_TAGS = (); }; };
8C59F3AA1BAEE48600DBB3D0 /* gzguts.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F38B1BAEE48600DBB3D0 /* gzguts.h */; settings = {ASSET_TAGS = (); }; };
8C59F3AB1BAEE48600DBB3D0 /* gzlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F38C1BAEE48600DBB3D0 /* gzlib.c */; settings = {ASSET_TAGS = (); }; };
8C59F3AC1BAEE48600DBB3D0 /* gzlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F38C1BAEE48600DBB3D0 /* gzlib.c */; settings = {ASSET_TAGS = (); }; };
8C59F3AD1BAEE48600DBB3D0 /* gzread.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F38D1BAEE48600DBB3D0 /* gzread.c */; settings = {ASSET_TAGS = (); }; };
8C59F3AE1BAEE48600DBB3D0 /* gzread.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F38D1BAEE48600DBB3D0 /* gzread.c */; settings = {ASSET_TAGS = (); }; };
8C59F3AF1BAEE48600DBB3D0 /* gzwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F38E1BAEE48600DBB3D0 /* gzwrite.c */; settings = {ASSET_TAGS = (); }; };
8C59F3B01BAEE48600DBB3D0 /* gzwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F38E1BAEE48600DBB3D0 /* gzwrite.c */; settings = {ASSET_TAGS = (); }; };
8C59F3B11BAEE48600DBB3D0 /* infback.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F38F1BAEE48600DBB3D0 /* infback.c */; settings = {ASSET_TAGS = (); }; };
8C59F3B21BAEE48600DBB3D0 /* infback.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F38F1BAEE48600DBB3D0 /* infback.c */; settings = {ASSET_TAGS = (); }; };
8C59F3B31BAEE48600DBB3D0 /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3901BAEE48600DBB3D0 /* inffast.c */; settings = {ASSET_TAGS = (); }; };
8C59F3B41BAEE48600DBB3D0 /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3901BAEE48600DBB3D0 /* inffast.c */; settings = {ASSET_TAGS = (); }; };
8C59F3B51BAEE48600DBB3D0 /* inffast.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3911BAEE48600DBB3D0 /* inffast.h */; settings = {ASSET_TAGS = (); }; };
8C59F3B61BAEE48600DBB3D0 /* inffixed.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3921BAEE48600DBB3D0 /* inffixed.h */; settings = {ASSET_TAGS = (); }; };
8C59F3B71BAEE48600DBB3D0 /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3931BAEE48600DBB3D0 /* inflate.c */; settings = {ASSET_TAGS = (); }; };
8C59F3B81BAEE48600DBB3D0 /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3931BAEE48600DBB3D0 /* inflate.c */; settings = {ASSET_TAGS = (); }; };
8C59F3B91BAEE48600DBB3D0 /* inflate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3941BAEE48600DBB3D0 /* inflate.h */; settings = {ASSET_TAGS = (); }; };
8C59F3BA1BAEE48600DBB3D0 /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3951BAEE48600DBB3D0 /* inftrees.c */; settings = {ASSET_TAGS = (); }; };
8C59F3BB1BAEE48600DBB3D0 /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3951BAEE48600DBB3D0 /* inftrees.c */; settings = {ASSET_TAGS = (); }; };
8C59F3BC1BAEE48600DBB3D0 /* inftrees.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3961BAEE48600DBB3D0 /* inftrees.h */; settings = {ASSET_TAGS = (); }; };
8C59F3BD1BAEE48600DBB3D0 /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3971BAEE48600DBB3D0 /* trees.c */; settings = {ASSET_TAGS = (); }; };
8C59F3BE1BAEE48600DBB3D0 /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3971BAEE48600DBB3D0 /* trees.c */; settings = {ASSET_TAGS = (); }; };
8C59F3BF1BAEE48600DBB3D0 /* trees.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3981BAEE48600DBB3D0 /* trees.h */; settings = {ASSET_TAGS = (); }; };
8C59F3C01BAEE48600DBB3D0 /* uncompr.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3991BAEE48600DBB3D0 /* uncompr.c */; settings = {ASSET_TAGS = (); }; };
8C59F3C11BAEE48600DBB3D0 /* uncompr.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3991BAEE48600DBB3D0 /* uncompr.c */; settings = {ASSET_TAGS = (); }; };
8C59F3C21BAEE48600DBB3D0 /* zconf.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F39A1BAEE48600DBB3D0 /* zconf.h */; settings = {ASSET_TAGS = (); }; };
8C59F3C31BAEE48600DBB3D0 /* zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F39B1BAEE48600DBB3D0 /* zlib.h */; settings = {ASSET_TAGS = (); }; };
8C59F3C41BAEE48600DBB3D0 /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F39C1BAEE48600DBB3D0 /* zutil.c */; settings = {ASSET_TAGS = (); }; };
8C59F3C51BAEE48600DBB3D0 /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F39C1BAEE48600DBB3D0 /* zutil.c */; settings = {ASSET_TAGS = (); }; };
8C59F3C61BAEE48600DBB3D0 /* zutil.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F39D1BAEE48600DBB3D0 /* zutil.h */; settings = {ASSET_TAGS = (); }; };
8C59F3CE1BAEE49400DBB3D0 /* crypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3C71BAEE49400DBB3D0 /* crypt.h */; settings = {ASSET_TAGS = (); }; };
8C59F3CF1BAEE49400DBB3D0 /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3C81BAEE49400DBB3D0 /* ioapi.c */; settings = {ASSET_TAGS = (); }; };
8C59F3D01BAEE49400DBB3D0 /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3C81BAEE49400DBB3D0 /* ioapi.c */; settings = {ASSET_TAGS = (); }; };
8C59F3D11BAEE49400DBB3D0 /* ioapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3C91BAEE49400DBB3D0 /* ioapi.h */; settings = {ASSET_TAGS = (); }; };
8C59F3D21BAEE49400DBB3D0 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3CA1BAEE49400DBB3D0 /* unzip.c */; settings = {ASSET_TAGS = (); }; };
8C59F3D31BAEE49400DBB3D0 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3CA1BAEE49400DBB3D0 /* unzip.c */; settings = {ASSET_TAGS = (); }; };
8C59F3D41BAEE49400DBB3D0 /* unzip.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3CB1BAEE49400DBB3D0 /* unzip.h */; settings = {ASSET_TAGS = (); }; };
8C59F3D51BAEE49400DBB3D0 /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3CC1BAEE49400DBB3D0 /* zip.c */; settings = {ASSET_TAGS = (); }; };
8C59F3D61BAEE49400DBB3D0 /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3CC1BAEE49400DBB3D0 /* zip.c */; settings = {ASSET_TAGS = (); }; };
8C59F3D71BAEE49400DBB3D0 /* zip.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3CD1BAEE49400DBB3D0 /* zip.h */; settings = {ASSET_TAGS = (); }; };
8C59F3F01BAEE4A100DBB3D0 /* Objective-Zip.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3D81BAEE4A100DBB3D0 /* Objective-Zip.h */; settings = {ASSET_TAGS = (); }; };
8C59F3F11BAEE4A100DBB3D0 /* Objective-Zip+NSError.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3D91BAEE4A100DBB3D0 /* Objective-Zip+NSError.h */; settings = {ASSET_TAGS = (); }; };
8C59F3F21BAEE4A100DBB3D0 /* OZFileInZipInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3DA1BAEE4A100DBB3D0 /* OZFileInZipInfo.h */; settings = {ASSET_TAGS = (); }; };
8C59F3F31BAEE4A100DBB3D0 /* OZFileInZipInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3DB1BAEE4A100DBB3D0 /* OZFileInZipInfo.m */; settings = {ASSET_TAGS = (); }; };
8C59F3F41BAEE4A100DBB3D0 /* OZFileInZipInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3DB1BAEE4A100DBB3D0 /* OZFileInZipInfo.m */; settings = {ASSET_TAGS = (); }; };
8C59F3F51BAEE4A100DBB3D0 /* OZFileInZipInfo+Internals.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3DC1BAEE4A100DBB3D0 /* OZFileInZipInfo+Internals.h */; settings = {ASSET_TAGS = (); }; };
8C59F3F61BAEE4A100DBB3D0 /* OZZipCompressionLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3DD1BAEE4A100DBB3D0 /* OZZipCompressionLevel.h */; settings = {ASSET_TAGS = (); }; };
8C59F3F71BAEE4A100DBB3D0 /* OZZipException.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3DE1BAEE4A100DBB3D0 /* OZZipException.h */; settings = {ASSET_TAGS = (); }; };
8C59F3F81BAEE4A100DBB3D0 /* OZZipException.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3DF1BAEE4A100DBB3D0 /* OZZipException.m */; settings = {ASSET_TAGS = (); }; };
8C59F3F91BAEE4A100DBB3D0 /* OZZipException.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3DF1BAEE4A100DBB3D0 /* OZZipException.m */; settings = {ASSET_TAGS = (); }; };
8C59F3FA1BAEE4A100DBB3D0 /* OZZipException+Internals.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3E01BAEE4A100DBB3D0 /* OZZipException+Internals.h */; settings = {ASSET_TAGS = (); }; };
8C59F3FB1BAEE4A100DBB3D0 /* OZZipFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3E11BAEE4A100DBB3D0 /* OZZipFile.h */; settings = {ASSET_TAGS = (); }; };
8C59F3FC1BAEE4A100DBB3D0 /* OZZipFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3E21BAEE4A100DBB3D0 /* OZZipFile.m */; settings = {ASSET_TAGS = (); }; };
8C59F3FD1BAEE4A100DBB3D0 /* OZZipFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3E21BAEE4A100DBB3D0 /* OZZipFile.m */; settings = {ASSET_TAGS = (); }; };
8C59F3FE1BAEE4A100DBB3D0 /* OZZipFile+NSError.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3E31BAEE4A100DBB3D0 /* OZZipFile+NSError.h */; settings = {ASSET_TAGS = (); }; };
8C59F3FF1BAEE4A100DBB3D0 /* OZZipFile+Standard.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3E41BAEE4A100DBB3D0 /* OZZipFile+Standard.h */; settings = {ASSET_TAGS = (); }; };
8C59F4001BAEE4A100DBB3D0 /* OZZipFileMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3E51BAEE4A100DBB3D0 /* OZZipFileMode.h */; settings = {ASSET_TAGS = (); }; };
8C59F4011BAEE4A100DBB3D0 /* OZZipReadStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3E61BAEE4A100DBB3D0 /* OZZipReadStream.h */; settings = {ASSET_TAGS = (); }; };
8C59F4021BAEE4A100DBB3D0 /* OZZipReadStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3E71BAEE4A100DBB3D0 /* OZZipReadStream.m */; settings = {ASSET_TAGS = (); }; };
8C59F4031BAEE4A100DBB3D0 /* OZZipReadStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3E71BAEE4A100DBB3D0 /* OZZipReadStream.m */; settings = {ASSET_TAGS = (); }; };
8C59F4041BAEE4A100DBB3D0 /* OZZipReadStream+Internals.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3E81BAEE4A100DBB3D0 /* OZZipReadStream+Internals.h */; settings = {ASSET_TAGS = (); }; };
8C59F4051BAEE4A100DBB3D0 /* OZZipReadStream+NSError.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3E91BAEE4A100DBB3D0 /* OZZipReadStream+NSError.h */; settings = {ASSET_TAGS = (); }; };
8C59F4061BAEE4A100DBB3D0 /* OZZipReadStream+Standard.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3EA1BAEE4A100DBB3D0 /* OZZipReadStream+Standard.h */; settings = {ASSET_TAGS = (); }; };
8C59F4071BAEE4A100DBB3D0 /* OZZipWriteStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3EB1BAEE4A100DBB3D0 /* OZZipWriteStream.h */; settings = {ASSET_TAGS = (); }; };
8C59F4081BAEE4A100DBB3D0 /* OZZipWriteStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3EC1BAEE4A100DBB3D0 /* OZZipWriteStream.m */; settings = {ASSET_TAGS = (); }; };
8C59F4091BAEE4A100DBB3D0 /* OZZipWriteStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C59F3EC1BAEE4A100DBB3D0 /* OZZipWriteStream.m */; settings = {ASSET_TAGS = (); }; };
8C59F40A1BAEE4A100DBB3D0 /* OZZipWriteStream+Internals.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3ED1BAEE4A100DBB3D0 /* OZZipWriteStream+Internals.h */; settings = {ASSET_TAGS = (); }; };
8C59F40B1BAEE4A100DBB3D0 /* OZZipWriteStream+NSError.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3EE1BAEE4A100DBB3D0 /* OZZipWriteStream+NSError.h */; settings = {ASSET_TAGS = (); }; };
8C59F40C1BAEE4A100DBB3D0 /* OZZipWriteStream+Standard.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C59F3EF1BAEE4A100DBB3D0 /* OZZipWriteStream+Standard.h */; settings = {ASSET_TAGS = (); }; };
8CC2FC631B91E63E00D5E05F /* libObjective-Zip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8CC2FC581B91E63E00D5E05F /* libObjective-Zip.a */; };
8CC2FC7E1B91E65200D5E05F /* libObjective-Zip_OS_X.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8CC2FC731B91E65200D5E05F /* libObjective-Zip_OS_X.a */; };
8CC2FC8A1B91E6F000D5E05F /* OZZipFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C6D353F10E56BD300B63EFA /* OZZipFile.m */; };
8CC2FC8B1B91E6F000D5E05F /* OZZipException.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C6D356A10E56F4D00B63EFA /* OZZipException.m */; };
8CC2FC8C1B91E6F000D5E05F /* OZZipWriteStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C6D357510E5797600B63EFA /* OZZipWriteStream.m */; };
8CC2FC8D1B91E6F000D5E05F /* OZFileInZipInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C83F49410E7CBCB002FB3CB /* OZFileInZipInfo.m */; };
8CC2FC8E1B91E6F000D5E05F /* OZZipReadStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CBE431710E95FA300AC9ED3 /* OZZipReadStream.m */; };
8CC2FC8F1B91E6FD00D5E05F /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C6D352510E56A9000B63EFA /* ioapi.c */; };
8CC2FC901B91E6FD00D5E05F /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C6D352910E56A9000B63EFA /* unzip.c */; };
8CC2FC911B91E6FD00D5E05F /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C6D352B10E56A9000B63EFA /* zip.c */; };
8CC2FC921B91E6FD00D5E05F /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3E917766067005212EC /* adler32.c */; };
8CC2FC931B91E6FD00D5E05F /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3EA17766067005212EC /* compress.c */; };
8CC2FC941B91E6FD00D5E05F /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3EB17766067005212EC /* crc32.c */; };
8CC2FC951B91E6FD00D5E05F /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3ED17766067005212EC /* deflate.c */; };
8CC2FC961B91E6FD00D5E05F /* gzclose.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3EF17766067005212EC /* gzclose.c */; };
8CC2FC971B91E6FD00D5E05F /* gzlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3F117766067005212EC /* gzlib.c */; };
8CC2FC981B91E6FD00D5E05F /* gzread.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3F217766067005212EC /* gzread.c */; };
8CC2FC991B91E6FD00D5E05F /* gzwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3F317766067005212EC /* gzwrite.c */; };
8CC2FC9A1B91E6FD00D5E05F /* infback.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3F417766067005212EC /* infback.c */; };
8CC2FC9B1B91E6FD00D5E05F /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3F517766067005212EC /* inffast.c */; };
8CC2FC9C1B91E6FD00D5E05F /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3F817766067005212EC /* inflate.c */; };
8CC2FC9D1B91E6FD00D5E05F /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3FA17766067005212EC /* inftrees.c */; };
8CC2FC9E1B91E6FD00D5E05F /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3FC17766067005212EC /* trees.c */; };
8CC2FC9F1B91E6FD00D5E05F /* uncompr.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3FE17766067005212EC /* uncompr.c */; };
8CC2FCA01B91E6FD00D5E05F /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B40117766067005212EC /* zutil.c */; };
8CC2FCA11B91E70D00D5E05F /* OZZipFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C6D353F10E56BD300B63EFA /* OZZipFile.m */; };
8CC2FCA21B91E70D00D5E05F /* OZZipException.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C6D356A10E56F4D00B63EFA /* OZZipException.m */; };
8CC2FCA31B91E70D00D5E05F /* OZZipWriteStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C6D357510E5797600B63EFA /* OZZipWriteStream.m */; };
8CC2FCA41B91E70D00D5E05F /* OZFileInZipInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C83F49410E7CBCB002FB3CB /* OZFileInZipInfo.m */; };
8CC2FCA51B91E70D00D5E05F /* OZZipReadStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CBE431710E95FA300AC9ED3 /* OZZipReadStream.m */; };
8CC2FCA61B91E71700D5E05F /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C6D352510E56A9000B63EFA /* ioapi.c */; };
8CC2FCA71B91E71700D5E05F /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C6D352910E56A9000B63EFA /* unzip.c */; };
8CC2FCA81B91E71700D5E05F /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C6D352B10E56A9000B63EFA /* zip.c */; };
8CC2FCA91B91E71700D5E05F /* adler32.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3E917766067005212EC /* adler32.c */; };
8CC2FCAA1B91E71700D5E05F /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3EA17766067005212EC /* compress.c */; };
8CC2FCAB1B91E71700D5E05F /* crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3EB17766067005212EC /* crc32.c */; };
8CC2FCAC1B91E71700D5E05F /* deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3ED17766067005212EC /* deflate.c */; };
8CC2FCAD1B91E71700D5E05F /* gzclose.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3EF17766067005212EC /* gzclose.c */; };
8CC2FCAE1B91E71700D5E05F /* gzlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3F117766067005212EC /* gzlib.c */; };
8CC2FCAF1B91E71700D5E05F /* gzread.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3F217766067005212EC /* gzread.c */; };
8CC2FCB01B91E71700D5E05F /* gzwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3F317766067005212EC /* gzwrite.c */; };
8CC2FCB11B91E71700D5E05F /* infback.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3F417766067005212EC /* infback.c */; };
8CC2FCB21B91E71700D5E05F /* inffast.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3F517766067005212EC /* inffast.c */; };
8CC2FCB31B91E71700D5E05F /* inflate.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3F817766067005212EC /* inflate.c */; };
8CC2FCB41B91E71700D5E05F /* inftrees.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3FA17766067005212EC /* inftrees.c */; };
8CC2FCB51B91E71700D5E05F /* trees.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3FC17766067005212EC /* trees.c */; };
8CC2FCB61B91E71700D5E05F /* uncompr.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B3FE17766067005212EC /* uncompr.c */; };
8CC2FCB71B91E71700D5E05F /* zutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8B40117766067005212EC /* zutil.c */; };
8CC2FCB91B91EB3500D5E05F /* ObjectiveZip_Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CC2FCB81B91EB3500D5E05F /* ObjectiveZip_Tests.m */; };
8CC2FCBA1B91EB3500D5E05F /* ObjectiveZip_Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CC2FCB81B91EB3500D5E05F /* ObjectiveZip_Tests.m */; };
/* End PBXBuildFile section */
@@ -91,71 +127,73 @@
/* Begin PBXFileReference section */
1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
8C14E8181773A09F00B84597 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
8C1D598B1771057D006D69C3 /* GETTING_STARTED.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GETTING_STARTED.md; sourceTree = "<group>"; };
8C1D598C1771057D006D69C3 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.md; sourceTree = "<group>"; };
8C6D352410E56A9000B63EFA /* crypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = crypt.h; path = MiniZip/crypt.h; sourceTree = "<group>"; };
8C6D352510E56A9000B63EFA /* ioapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ioapi.c; path = MiniZip/ioapi.c; sourceTree = "<group>"; };
8C6D352610E56A9000B63EFA /* ioapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ioapi.h; path = MiniZip/ioapi.h; sourceTree = "<group>"; };
8C6D352910E56A9000B63EFA /* unzip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = unzip.c; path = MiniZip/unzip.c; sourceTree = "<group>"; };
8C6D352A10E56A9000B63EFA /* unzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = unzip.h; path = MiniZip/unzip.h; sourceTree = "<group>"; };
8C6D352B10E56A9000B63EFA /* zip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = zip.c; path = MiniZip/zip.c; sourceTree = "<group>"; };
8C6D352C10E56A9000B63EFA /* zip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = zip.h; path = MiniZip/zip.h; sourceTree = "<group>"; };
8C6D353E10E56BD300B63EFA /* OZZipFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OZZipFile.h; path = "Objective-Zip/OZZipFile.h"; sourceTree = "<group>"; };
8C6D353F10E56BD300B63EFA /* OZZipFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OZZipFile.m; path = "Objective-Zip/OZZipFile.m"; sourceTree = "<group>"; };
8C6D356910E56F4D00B63EFA /* OZZipException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OZZipException.h; path = "Objective-Zip/OZZipException.h"; sourceTree = "<group>"; };
8C6D356A10E56F4D00B63EFA /* OZZipException.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OZZipException.m; path = "Objective-Zip/OZZipException.m"; sourceTree = "<group>"; };
8C6D357410E5797600B63EFA /* OZZipWriteStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OZZipWriteStream.h; path = "Objective-Zip/OZZipWriteStream.h"; sourceTree = "<group>"; };
8C6D357510E5797600B63EFA /* OZZipWriteStream.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OZZipWriteStream.m; path = "Objective-Zip/OZZipWriteStream.m"; sourceTree = "<group>"; };
8C83F49310E7CBCB002FB3CB /* OZFileInZipInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OZFileInZipInfo.h; path = "Objective-Zip/OZFileInZipInfo.h"; sourceTree = "<group>"; };
8C83F49410E7CBCB002FB3CB /* OZFileInZipInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OZFileInZipInfo.m; path = "Objective-Zip/OZFileInZipInfo.m"; sourceTree = "<group>"; };
8CBE431610E95FA300AC9ED3 /* OZZipReadStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OZZipReadStream.h; path = "Objective-Zip/OZZipReadStream.h"; sourceTree = "<group>"; };
8CBE431710E95FA300AC9ED3 /* OZZipReadStream.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OZZipReadStream.m; path = "Objective-Zip/OZZipReadStream.m"; sourceTree = "<group>"; };
8C59F37F1BAEE3BB00DBB3D0 /* Objective-Zip Tests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Objective-Zip Tests-Bridging-Header.h"; sourceTree = "<group>"; };
8C59F3801BAEE3BB00DBB3D0 /* Objective-Zip OS X Tests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Objective-Zip OS X Tests-Bridging-Header.h"; sourceTree = "<group>"; };
8C59F3811BAEE3BC00DBB3D0 /* Objective-Zip_Swift_Tests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Objective-Zip_Swift_Tests.swift"; sourceTree = "<group>"; };
8C59F3841BAEE48600DBB3D0 /* adler32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = "<group>"; };
8C59F3851BAEE48600DBB3D0 /* compress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = "<group>"; };
8C59F3861BAEE48600DBB3D0 /* crc32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = "<group>"; };
8C59F3871BAEE48600DBB3D0 /* crc32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = "<group>"; };
8C59F3881BAEE48600DBB3D0 /* deflate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = "<group>"; };
8C59F3891BAEE48600DBB3D0 /* deflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = "<group>"; };
8C59F38A1BAEE48600DBB3D0 /* gzclose.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gzclose.c; sourceTree = "<group>"; };
8C59F38B1BAEE48600DBB3D0 /* gzguts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gzguts.h; sourceTree = "<group>"; };
8C59F38C1BAEE48600DBB3D0 /* gzlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gzlib.c; sourceTree = "<group>"; };
8C59F38D1BAEE48600DBB3D0 /* gzread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gzread.c; sourceTree = "<group>"; };
8C59F38E1BAEE48600DBB3D0 /* gzwrite.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gzwrite.c; sourceTree = "<group>"; };
8C59F38F1BAEE48600DBB3D0 /* infback.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = "<group>"; };
8C59F3901BAEE48600DBB3D0 /* inffast.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = "<group>"; };
8C59F3911BAEE48600DBB3D0 /* inffast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = "<group>"; };
8C59F3921BAEE48600DBB3D0 /* inffixed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = "<group>"; };
8C59F3931BAEE48600DBB3D0 /* inflate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = "<group>"; };
8C59F3941BAEE48600DBB3D0 /* inflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = "<group>"; };
8C59F3951BAEE48600DBB3D0 /* inftrees.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = "<group>"; };
8C59F3961BAEE48600DBB3D0 /* inftrees.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = "<group>"; };
8C59F3971BAEE48600DBB3D0 /* trees.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = "<group>"; };
8C59F3981BAEE48600DBB3D0 /* trees.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = "<group>"; };
8C59F3991BAEE48600DBB3D0 /* uncompr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = uncompr.c; sourceTree = "<group>"; };
8C59F39A1BAEE48600DBB3D0 /* zconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = "<group>"; };
8C59F39B1BAEE48600DBB3D0 /* zlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = "<group>"; };
8C59F39C1BAEE48600DBB3D0 /* zutil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = "<group>"; };
8C59F39D1BAEE48600DBB3D0 /* zutil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = "<group>"; };
8C59F3C71BAEE49400DBB3D0 /* crypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = "<group>"; };
8C59F3C81BAEE49400DBB3D0 /* ioapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = "<group>"; };
8C59F3C91BAEE49400DBB3D0 /* ioapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = "<group>"; };
8C59F3CA1BAEE49400DBB3D0 /* unzip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = "<group>"; };
8C59F3CB1BAEE49400DBB3D0 /* unzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = "<group>"; };
8C59F3CC1BAEE49400DBB3D0 /* zip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = "<group>"; };
8C59F3CD1BAEE49400DBB3D0 /* zip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = "<group>"; };
8C59F3D81BAEE4A100DBB3D0 /* Objective-Zip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Objective-Zip.h"; sourceTree = "<group>"; };
8C59F3D91BAEE4A100DBB3D0 /* Objective-Zip+NSError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Objective-Zip+NSError.h"; sourceTree = "<group>"; };
8C59F3DA1BAEE4A100DBB3D0 /* OZFileInZipInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OZFileInZipInfo.h; sourceTree = "<group>"; };
8C59F3DB1BAEE4A100DBB3D0 /* OZFileInZipInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OZFileInZipInfo.m; sourceTree = "<group>"; };
8C59F3DC1BAEE4A100DBB3D0 /* OZFileInZipInfo+Internals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OZFileInZipInfo+Internals.h"; sourceTree = "<group>"; };
8C59F3DD1BAEE4A100DBB3D0 /* OZZipCompressionLevel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OZZipCompressionLevel.h; sourceTree = "<group>"; };
8C59F3DE1BAEE4A100DBB3D0 /* OZZipException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OZZipException.h; sourceTree = "<group>"; };
8C59F3DF1BAEE4A100DBB3D0 /* OZZipException.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OZZipException.m; sourceTree = "<group>"; };
8C59F3E01BAEE4A100DBB3D0 /* OZZipException+Internals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OZZipException+Internals.h"; sourceTree = "<group>"; };
8C59F3E11BAEE4A100DBB3D0 /* OZZipFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OZZipFile.h; sourceTree = "<group>"; };
8C59F3E21BAEE4A100DBB3D0 /* OZZipFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OZZipFile.m; sourceTree = "<group>"; };
8C59F3E31BAEE4A100DBB3D0 /* OZZipFile+NSError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OZZipFile+NSError.h"; sourceTree = "<group>"; };
8C59F3E41BAEE4A100DBB3D0 /* OZZipFile+Standard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OZZipFile+Standard.h"; sourceTree = "<group>"; };
8C59F3E51BAEE4A100DBB3D0 /* OZZipFileMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OZZipFileMode.h; sourceTree = "<group>"; };
8C59F3E61BAEE4A100DBB3D0 /* OZZipReadStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OZZipReadStream.h; sourceTree = "<group>"; };
8C59F3E71BAEE4A100DBB3D0 /* OZZipReadStream.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OZZipReadStream.m; sourceTree = "<group>"; };
8C59F3E81BAEE4A100DBB3D0 /* OZZipReadStream+Internals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OZZipReadStream+Internals.h"; sourceTree = "<group>"; };
8C59F3E91BAEE4A100DBB3D0 /* OZZipReadStream+NSError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OZZipReadStream+NSError.h"; sourceTree = "<group>"; };
8C59F3EA1BAEE4A100DBB3D0 /* OZZipReadStream+Standard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OZZipReadStream+Standard.h"; sourceTree = "<group>"; };
8C59F3EB1BAEE4A100DBB3D0 /* OZZipWriteStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OZZipWriteStream.h; sourceTree = "<group>"; };
8C59F3EC1BAEE4A100DBB3D0 /* OZZipWriteStream.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OZZipWriteStream.m; sourceTree = "<group>"; };
8C59F3ED1BAEE4A100DBB3D0 /* OZZipWriteStream+Internals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OZZipWriteStream+Internals.h"; sourceTree = "<group>"; };
8C59F3EE1BAEE4A100DBB3D0 /* OZZipWriteStream+NSError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OZZipWriteStream+NSError.h"; sourceTree = "<group>"; };
8C59F3EF1BAEE4A100DBB3D0 /* OZZipWriteStream+Standard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OZZipWriteStream+Standard.h"; sourceTree = "<group>"; };
8CC2FC581B91E63E00D5E05F /* libObjective-Zip.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libObjective-Zip.a"; sourceTree = BUILT_PRODUCTS_DIR; };
8CC2FC621B91E63E00D5E05F /* Objective-Zip Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Objective-Zip Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
8CC2FC681B91E63E00D5E05F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
8CC2FC731B91E65200D5E05F /* libObjective-Zip_OS_X.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libObjective-Zip_OS_X.a"; sourceTree = BUILT_PRODUCTS_DIR; };
8CC2FC7D1B91E65200D5E05F /* Objective-Zip OS X Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Objective-Zip OS X Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
8CC2FCB81B91EB3500D5E05F /* ObjectiveZip_Tests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ObjectiveZip_Tests.m; path = "Objective-Zip Tests/ObjectiveZip_Tests.m"; sourceTree = SOURCE_ROOT; };
8CC6A7931B8F5B360062D97E /* Objective-Zip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Objective-Zip.h"; path = "Objective-Zip/Objective-Zip.h"; sourceTree = "<group>"; };
8CC6A7941B8F5C370062D97E /* OZZipFileMode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OZZipFileMode.h; path = "Objective-Zip/OZZipFileMode.h"; sourceTree = "<group>"; };
8CC6A7951B8F5C810062D97E /* OZZipCompressionLevel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OZZipCompressionLevel.h; path = "Objective-Zip/OZZipCompressionLevel.h"; sourceTree = "<group>"; };
8CC6A7961B8F5F570062D97E /* OZZipException+Internals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OZZipException+Internals.h"; path = "Objective-Zip/OZZipException+Internals.h"; sourceTree = "<group>"; };
8CC6A7971B8F5F780062D97E /* OZZipWriteStream+Internals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OZZipWriteStream+Internals.h"; path = "Objective-Zip/OZZipWriteStream+Internals.h"; sourceTree = "<group>"; };
8CC6A7981B8F5F950062D97E /* OZFileInZipInfo+Internals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OZFileInZipInfo+Internals.h"; path = "Objective-Zip/OZFileInZipInfo+Internals.h"; sourceTree = "<group>"; };
8CC6A7991B8F5FB40062D97E /* OZZipReadStream+Internals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OZZipReadStream+Internals.h"; path = "Objective-Zip/OZZipReadStream+Internals.h"; sourceTree = "<group>"; };
8CD8B3E917766067005212EC /* adler32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = adler32.c; path = ZLib/adler32.c; sourceTree = "<group>"; };
8CD8B3EA17766067005212EC /* compress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = compress.c; path = ZLib/compress.c; sourceTree = "<group>"; };
8CD8B3EB17766067005212EC /* crc32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = crc32.c; path = ZLib/crc32.c; sourceTree = "<group>"; };
8CD8B3EC17766067005212EC /* crc32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = crc32.h; path = ZLib/crc32.h; sourceTree = "<group>"; };
8CD8B3ED17766067005212EC /* deflate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = deflate.c; path = ZLib/deflate.c; sourceTree = "<group>"; };
8CD8B3EE17766067005212EC /* deflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = deflate.h; path = ZLib/deflate.h; sourceTree = "<group>"; };
8CD8B3EF17766067005212EC /* gzclose.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gzclose.c; path = ZLib/gzclose.c; sourceTree = "<group>"; };
8CD8B3F017766067005212EC /* gzguts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gzguts.h; path = ZLib/gzguts.h; sourceTree = "<group>"; };
8CD8B3F117766067005212EC /* gzlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gzlib.c; path = ZLib/gzlib.c; sourceTree = "<group>"; };
8CD8B3F217766067005212EC /* gzread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gzread.c; path = ZLib/gzread.c; sourceTree = "<group>"; };
8CD8B3F317766067005212EC /* gzwrite.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gzwrite.c; path = ZLib/gzwrite.c; sourceTree = "<group>"; };
8CD8B3F417766067005212EC /* infback.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = infback.c; path = ZLib/infback.c; sourceTree = "<group>"; };
8CD8B3F517766067005212EC /* inffast.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = inffast.c; path = ZLib/inffast.c; sourceTree = "<group>"; };
8CD8B3F617766067005212EC /* inffast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = inffast.h; path = ZLib/inffast.h; sourceTree = "<group>"; };
8CD8B3F717766067005212EC /* inffixed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = inffixed.h; path = ZLib/inffixed.h; sourceTree = "<group>"; };
8CD8B3F817766067005212EC /* inflate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = inflate.c; path = ZLib/inflate.c; sourceTree = "<group>"; };
8CD8B3F917766067005212EC /* inflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = inflate.h; path = ZLib/inflate.h; sourceTree = "<group>"; };
8CD8B3FA17766067005212EC /* inftrees.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = inftrees.c; path = ZLib/inftrees.c; sourceTree = "<group>"; };
8CD8B3FB17766067005212EC /* inftrees.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = inftrees.h; path = ZLib/inftrees.h; sourceTree = "<group>"; };
8CD8B3FC17766067005212EC /* trees.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = trees.c; path = ZLib/trees.c; sourceTree = "<group>"; };
8CD8B3FD17766067005212EC /* trees.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = trees.h; path = ZLib/trees.h; sourceTree = "<group>"; };
8CD8B3FE17766067005212EC /* uncompr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = uncompr.c; path = ZLib/uncompr.c; sourceTree = "<group>"; };
8CD8B3FF17766067005212EC /* zconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = zconf.h; path = ZLib/zconf.h; sourceTree = "<group>"; };
8CD8B40017766067005212EC /* zlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = zlib.h; path = ZLib/zlib.h; sourceTree = "<group>"; };
8CD8B40117766067005212EC /* zutil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = zutil.c; path = ZLib/zutil.c; sourceTree = "<group>"; };
8CD8B40217766067005212EC /* zutil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = zutil.h; path = ZLib/zutil.h; sourceTree = "<group>"; };
8CFA78221BA097AE001F3C5F /* OZZipFile+Standard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OZZipFile+Standard.h"; path = "Objective-Zip/OZZipFile+Standard.h"; sourceTree = "<group>"; };
8CFA78231BA097C3001F3C5F /* OZZipFile+NSError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OZZipFile+NSError.h"; path = "Objective-Zip/OZZipFile+NSError.h"; sourceTree = "<group>"; };
8CFA78241BA098D3001F3C5F /* Objective-Zip+NSError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Objective-Zip+NSError.h"; path = "Objective-Zip/Objective-Zip+NSError.h"; sourceTree = "<group>"; };
8CFA78251BA0992D001F3C5F /* OZZipWriteStream+Standard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OZZipWriteStream+Standard.h"; path = "Objective-Zip/OZZipWriteStream+Standard.h"; sourceTree = "<group>"; };
8CFA78261BA0993B001F3C5F /* OZZipWriteStream+NSError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OZZipWriteStream+NSError.h"; path = "Objective-Zip/OZZipWriteStream+NSError.h"; sourceTree = "<group>"; };
8CFA78271BA0994B001F3C5F /* OZZipReadStream+Standard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OZZipReadStream+Standard.h"; path = "Objective-Zip/OZZipReadStream+Standard.h"; sourceTree = "<group>"; };
8CFA78281BA0995A001F3C5F /* OZZipReadStream+NSError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "OZZipReadStream+NSError.h"; path = "Objective-Zip/OZZipReadStream+NSError.h"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -212,7 +250,6 @@
8CC2FC661B91E63E00D5E05F /* Objective-Zip Tests */,
29B97323FDCFA39411CA2CEA /* Frameworks */,
19C28FACFE9D520D11CA2CBB /* Products */,
8C1D598B1771057D006D69C3 /* GETTING_STARTED.md */,
8C1D598C1771057D006D69C3 /* README.md */,
);
name = CustomTemplate;
@@ -230,57 +267,59 @@
8C6D350110E56A4B00B63EFA /* MiniZip */ = {
isa = PBXGroup;
children = (
8C6D352410E56A9000B63EFA /* crypt.h */,
8C6D352510E56A9000B63EFA /* ioapi.c */,
8C6D352610E56A9000B63EFA /* ioapi.h */,
8C6D352910E56A9000B63EFA /* unzip.c */,
8C6D352A10E56A9000B63EFA /* unzip.h */,
8C6D352B10E56A9000B63EFA /* zip.c */,
8C6D352C10E56A9000B63EFA /* zip.h */,
8C59F3C71BAEE49400DBB3D0 /* crypt.h */,
8C59F3C81BAEE49400DBB3D0 /* ioapi.c */,
8C59F3C91BAEE49400DBB3D0 /* ioapi.h */,
8C59F3CA1BAEE49400DBB3D0 /* unzip.c */,
8C59F3CB1BAEE49400DBB3D0 /* unzip.h */,
8C59F3CC1BAEE49400DBB3D0 /* zip.c */,
8C59F3CD1BAEE49400DBB3D0 /* zip.h */,
);
name = MiniZip;
sourceTree = "<group>";
path = MiniZip;
sourceTree = SOURCE_ROOT;
};
8C6D353B10E56BA400B63EFA /* Objective-Zip */ = {
isa = PBXGroup;
children = (
8CC6A7931B8F5B360062D97E /* Objective-Zip.h */,
8CFA78241BA098D3001F3C5F /* Objective-Zip+NSError.h */,
8C6D353E10E56BD300B63EFA /* OZZipFile.h */,
8CFA78221BA097AE001F3C5F /* OZZipFile+Standard.h */,
8CFA78231BA097C3001F3C5F /* OZZipFile+NSError.h */,
8C6D353F10E56BD300B63EFA /* OZZipFile.m */,
8CC6A7941B8F5C370062D97E /* OZZipFileMode.h */,
8CC6A7951B8F5C810062D97E /* OZZipCompressionLevel.h */,
8C6D356910E56F4D00B63EFA /* OZZipException.h */,
8CC6A7961B8F5F570062D97E /* OZZipException+Internals.h */,
8C6D356A10E56F4D00B63EFA /* OZZipException.m */,
8C6D357410E5797600B63EFA /* OZZipWriteStream.h */,
8CFA78251BA0992D001F3C5F /* OZZipWriteStream+Standard.h */,
8CFA78261BA0993B001F3C5F /* OZZipWriteStream+NSError.h */,
8CC6A7971B8F5F780062D97E /* OZZipWriteStream+Internals.h */,
8C6D357510E5797600B63EFA /* OZZipWriteStream.m */,
8C83F49310E7CBCB002FB3CB /* OZFileInZipInfo.h */,
8CC6A7981B8F5F950062D97E /* OZFileInZipInfo+Internals.h */,
8C83F49410E7CBCB002FB3CB /* OZFileInZipInfo.m */,
8CBE431610E95FA300AC9ED3 /* OZZipReadStream.h */,
8CFA78271BA0994B001F3C5F /* OZZipReadStream+Standard.h */,
8CFA78281BA0995A001F3C5F /* OZZipReadStream+NSError.h */,
8CC6A7991B8F5FB40062D97E /* OZZipReadStream+Internals.h */,
8CBE431710E95FA300AC9ED3 /* OZZipReadStream.m */,
8C59F3D81BAEE4A100DBB3D0 /* Objective-Zip.h */,
8C59F3D91BAEE4A100DBB3D0 /* Objective-Zip+NSError.h */,
8C59F3E11BAEE4A100DBB3D0 /* OZZipFile.h */,
8C59F3E21BAEE4A100DBB3D0 /* OZZipFile.m */,
8C59F3E31BAEE4A100DBB3D0 /* OZZipFile+NSError.h */,
8C59F3E41BAEE4A100DBB3D0 /* OZZipFile+Standard.h */,
8C59F3E51BAEE4A100DBB3D0 /* OZZipFileMode.h */,
8C59F3DD1BAEE4A100DBB3D0 /* OZZipCompressionLevel.h */,
8C59F3DA1BAEE4A100DBB3D0 /* OZFileInZipInfo.h */,
8C59F3DB1BAEE4A100DBB3D0 /* OZFileInZipInfo.m */,
8C59F3DC1BAEE4A100DBB3D0 /* OZFileInZipInfo+Internals.h */,
8C59F3E61BAEE4A100DBB3D0 /* OZZipReadStream.h */,
8C59F3E71BAEE4A100DBB3D0 /* OZZipReadStream.m */,
8C59F3E81BAEE4A100DBB3D0 /* OZZipReadStream+Internals.h */,
8C59F3E91BAEE4A100DBB3D0 /* OZZipReadStream+NSError.h */,
8C59F3EA1BAEE4A100DBB3D0 /* OZZipReadStream+Standard.h */,
8C59F3EB1BAEE4A100DBB3D0 /* OZZipWriteStream.h */,
8C59F3EC1BAEE4A100DBB3D0 /* OZZipWriteStream.m */,
8C59F3ED1BAEE4A100DBB3D0 /* OZZipWriteStream+Internals.h */,
8C59F3EE1BAEE4A100DBB3D0 /* OZZipWriteStream+NSError.h */,
8C59F3EF1BAEE4A100DBB3D0 /* OZZipWriteStream+Standard.h */,
8C59F3DE1BAEE4A100DBB3D0 /* OZZipException.h */,
8C59F3DF1BAEE4A100DBB3D0 /* OZZipException.m */,
8C59F3E01BAEE4A100DBB3D0 /* OZZipException+Internals.h */,
);
name = "Objective-Zip";
sourceTree = "<group>";
path = "Objective-Zip";
sourceTree = SOURCE_ROOT;
};
8CC2FC661B91E63E00D5E05F /* Objective-Zip Tests */ = {
isa = PBXGroup;
children = (
8CC2FCB81B91EB3500D5E05F /* ObjectiveZip_Tests.m */,
8C59F3811BAEE3BC00DBB3D0 /* Objective-Zip_Swift_Tests.swift */,
8C59F37F1BAEE3BB00DBB3D0 /* Objective-Zip Tests-Bridging-Header.h */,
8C59F3801BAEE3BB00DBB3D0 /* Objective-Zip OS X Tests-Bridging-Header.h */,
8CC2FC671B91E63E00D5E05F /* Supporting Files */,
);
name = "Objective-Zip Tests";
path = "Objective-ZipTests";
sourceTree = "<group>";
path = "Objective-Zip Tests";
sourceTree = SOURCE_ROOT;
};
8CC2FC671B91E63E00D5E05F /* Supporting Files */ = {
isa = PBXGroup;
@@ -294,35 +333,35 @@
8CD8B3E817766056005212EC /* ZLib */ = {
isa = PBXGroup;
children = (
8CD8B3E917766067005212EC /* adler32.c */,
8CD8B3EA17766067005212EC /* compress.c */,
8CD8B3EB17766067005212EC /* crc32.c */,
8CD8B3EC17766067005212EC /* crc32.h */,
8CD8B3ED17766067005212EC /* deflate.c */,
8CD8B3EE17766067005212EC /* deflate.h */,
8CD8B3EF17766067005212EC /* gzclose.c */,
8CD8B3F017766067005212EC /* gzguts.h */,
8CD8B3F117766067005212EC /* gzlib.c */,
8CD8B3F217766067005212EC /* gzread.c */,
8CD8B3F317766067005212EC /* gzwrite.c */,
8CD8B3F417766067005212EC /* infback.c */,
8CD8B3F517766067005212EC /* inffast.c */,
8CD8B3F617766067005212EC /* inffast.h */,
8CD8B3F717766067005212EC /* inffixed.h */,
8CD8B3F817766067005212EC /* inflate.c */,
8CD8B3F917766067005212EC /* inflate.h */,
8CD8B3FA17766067005212EC /* inftrees.c */,
8CD8B3FB17766067005212EC /* inftrees.h */,
8CD8B3FC17766067005212EC /* trees.c */,
8CD8B3FD17766067005212EC /* trees.h */,
8CD8B3FE17766067005212EC /* uncompr.c */,
8CD8B3FF17766067005212EC /* zconf.h */,
8CD8B40017766067005212EC /* zlib.h */,
8CD8B40117766067005212EC /* zutil.c */,
8CD8B40217766067005212EC /* zutil.h */,
8C59F3841BAEE48600DBB3D0 /* adler32.c */,
8C59F3851BAEE48600DBB3D0 /* compress.c */,
8C59F3861BAEE48600DBB3D0 /* crc32.c */,
8C59F3871BAEE48600DBB3D0 /* crc32.h */,
8C59F3881BAEE48600DBB3D0 /* deflate.c */,
8C59F3891BAEE48600DBB3D0 /* deflate.h */,
8C59F38A1BAEE48600DBB3D0 /* gzclose.c */,
8C59F38B1BAEE48600DBB3D0 /* gzguts.h */,
8C59F38C1BAEE48600DBB3D0 /* gzlib.c */,
8C59F38D1BAEE48600DBB3D0 /* gzread.c */,
8C59F38E1BAEE48600DBB3D0 /* gzwrite.c */,
8C59F38F1BAEE48600DBB3D0 /* infback.c */,
8C59F3901BAEE48600DBB3D0 /* inffast.c */,
8C59F3911BAEE48600DBB3D0 /* inffast.h */,
8C59F3921BAEE48600DBB3D0 /* inffixed.h */,
8C59F3931BAEE48600DBB3D0 /* inflate.c */,
8C59F3941BAEE48600DBB3D0 /* inflate.h */,
8C59F3951BAEE48600DBB3D0 /* inftrees.c */,
8C59F3961BAEE48600DBB3D0 /* inftrees.h */,
8C59F3971BAEE48600DBB3D0 /* trees.c */,
8C59F3981BAEE48600DBB3D0 /* trees.h */,
8C59F3991BAEE48600DBB3D0 /* uncompr.c */,
8C59F39A1BAEE48600DBB3D0 /* zconf.h */,
8C59F39B1BAEE48600DBB3D0 /* zlib.h */,
8C59F39C1BAEE48600DBB3D0 /* zutil.c */,
8C59F39D1BAEE48600DBB3D0 /* zutil.h */,
);
name = ZLib;
sourceTree = "<group>";
path = ZLib;
sourceTree = SOURCE_ROOT;
};
/* End PBXGroup section */
@@ -331,6 +370,40 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
8C59F40A1BAEE4A100DBB3D0 /* OZZipWriteStream+Internals.h in Headers */,
8C59F3F21BAEE4A100DBB3D0 /* OZFileInZipInfo.h in Headers */,
8C59F3F11BAEE4A100DBB3D0 /* Objective-Zip+NSError.h in Headers */,
8C59F3F51BAEE4A100DBB3D0 /* OZFileInZipInfo+Internals.h in Headers */,
8C59F3FE1BAEE4A100DBB3D0 /* OZZipFile+NSError.h in Headers */,
8C59F3F01BAEE4A100DBB3D0 /* Objective-Zip.h in Headers */,
8C59F3BF1BAEE48600DBB3D0 /* trees.h in Headers */,
8C59F40B1BAEE4A100DBB3D0 /* OZZipWriteStream+NSError.h in Headers */,
8C59F3B61BAEE48600DBB3D0 /* inffixed.h in Headers */,
8C59F3FA1BAEE4A100DBB3D0 /* OZZipException+Internals.h in Headers */,
8C59F3A71BAEE48600DBB3D0 /* deflate.h in Headers */,
8C59F3F61BAEE4A100DBB3D0 /* OZZipCompressionLevel.h in Headers */,
8C59F4001BAEE4A100DBB3D0 /* OZZipFileMode.h in Headers */,
8C59F3D71BAEE49400DBB3D0 /* zip.h in Headers */,
8C59F4051BAEE4A100DBB3D0 /* OZZipReadStream+NSError.h in Headers */,
8C59F4071BAEE4A100DBB3D0 /* OZZipWriteStream.h in Headers */,
8C59F3CE1BAEE49400DBB3D0 /* crypt.h in Headers */,
8C59F3FF1BAEE4A100DBB3D0 /* OZZipFile+Standard.h in Headers */,
8C59F3C21BAEE48600DBB3D0 /* zconf.h in Headers */,
8C59F3B91BAEE48600DBB3D0 /* inflate.h in Headers */,
8C59F4041BAEE4A100DBB3D0 /* OZZipReadStream+Internals.h in Headers */,
8C59F3C31BAEE48600DBB3D0 /* zlib.h in Headers */,
8C59F3AA1BAEE48600DBB3D0 /* gzguts.h in Headers */,
8C59F3F71BAEE4A100DBB3D0 /* OZZipException.h in Headers */,
8C59F3BC1BAEE48600DBB3D0 /* inftrees.h in Headers */,
8C59F4011BAEE4A100DBB3D0 /* OZZipReadStream.h in Headers */,
8C59F3D41BAEE49400DBB3D0 /* unzip.h in Headers */,
8C59F4061BAEE4A100DBB3D0 /* OZZipReadStream+Standard.h in Headers */,
8C59F40C1BAEE4A100DBB3D0 /* OZZipWriteStream+Standard.h in Headers */,
8C59F3D11BAEE49400DBB3D0 /* ioapi.h in Headers */,
8C59F3C61BAEE48600DBB3D0 /* zutil.h in Headers */,
8C59F3B51BAEE48600DBB3D0 /* inffast.h in Headers */,
8C59F3A41BAEE48600DBB3D0 /* crc32.h in Headers */,
8C59F3FB1BAEE4A100DBB3D0 /* OZZipFile.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -414,7 +487,8 @@
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0640;
LastSwiftUpdateCheck = 0700;
LastUpgradeCheck = 0700;
TargetAttributes = {
8CC2FC571B91E63E00D5E05F = {
CreatedOnToolsVersion = 6.4;
@@ -491,29 +565,29 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8CC2FC8F1B91E6FD00D5E05F /* ioapi.c in Sources */,
8CC2FC901B91E6FD00D5E05F /* unzip.c in Sources */,
8CC2FC911B91E6FD00D5E05F /* zip.c in Sources */,
8CC2FC921B91E6FD00D5E05F /* adler32.c in Sources */,
8CC2FC931B91E6FD00D5E05F /* compress.c in Sources */,
8CC2FC941B91E6FD00D5E05F /* crc32.c in Sources */,
8CC2FC951B91E6FD00D5E05F /* deflate.c in Sources */,
8CC2FC961B91E6FD00D5E05F /* gzclose.c in Sources */,
8CC2FC971B91E6FD00D5E05F /* gzlib.c in Sources */,
8CC2FC981B91E6FD00D5E05F /* gzread.c in Sources */,
8CC2FC991B91E6FD00D5E05F /* gzwrite.c in Sources */,
8CC2FC9A1B91E6FD00D5E05F /* infback.c in Sources */,
8CC2FC9B1B91E6FD00D5E05F /* inffast.c in Sources */,
8CC2FC9C1B91E6FD00D5E05F /* inflate.c in Sources */,
8CC2FC9D1B91E6FD00D5E05F /* inftrees.c in Sources */,
8CC2FC9E1B91E6FD00D5E05F /* trees.c in Sources */,
8CC2FC9F1B91E6FD00D5E05F /* uncompr.c in Sources */,
8CC2FCA01B91E6FD00D5E05F /* zutil.c in Sources */,
8CC2FC8A1B91E6F000D5E05F /* OZZipFile.m in Sources */,
8CC2FC8B1B91E6F000D5E05F /* OZZipException.m in Sources */,
8CC2FC8C1B91E6F000D5E05F /* OZZipWriteStream.m in Sources */,
8CC2FC8D1B91E6F000D5E05F /* OZFileInZipInfo.m in Sources */,
8CC2FC8E1B91E6F000D5E05F /* OZZipReadStream.m in Sources */,
8C59F3AD1BAEE48600DBB3D0 /* gzread.c in Sources */,
8C59F3F31BAEE4A100DBB3D0 /* OZFileInZipInfo.m in Sources */,
8C59F39E1BAEE48600DBB3D0 /* adler32.c in Sources */,
8C59F3C01BAEE48600DBB3D0 /* uncompr.c in Sources */,
8C59F4081BAEE4A100DBB3D0 /* OZZipWriteStream.m in Sources */,
8C59F3FC1BAEE4A100DBB3D0 /* OZZipFile.m in Sources */,
8C59F3C41BAEE48600DBB3D0 /* zutil.c in Sources */,
8C59F3AB1BAEE48600DBB3D0 /* gzlib.c in Sources */,
8C59F3AF1BAEE48600DBB3D0 /* gzwrite.c in Sources */,
8C59F3CF1BAEE49400DBB3D0 /* ioapi.c in Sources */,
8C59F3A81BAEE48600DBB3D0 /* gzclose.c in Sources */,
8C59F3A21BAEE48600DBB3D0 /* crc32.c in Sources */,
8C59F3A51BAEE48600DBB3D0 /* deflate.c in Sources */,
8C59F3D21BAEE49400DBB3D0 /* unzip.c in Sources */,
8C59F3BD1BAEE48600DBB3D0 /* trees.c in Sources */,
8C59F3B71BAEE48600DBB3D0 /* inflate.c in Sources */,
8C59F3F81BAEE4A100DBB3D0 /* OZZipException.m in Sources */,
8C59F3BA1BAEE48600DBB3D0 /* inftrees.c in Sources */,
8C59F3D51BAEE49400DBB3D0 /* zip.c in Sources */,
8C59F4021BAEE4A100DBB3D0 /* OZZipReadStream.m in Sources */,
8C59F3B11BAEE48600DBB3D0 /* infback.c in Sources */,
8C59F3A01BAEE48600DBB3D0 /* compress.c in Sources */,
8C59F3B31BAEE48600DBB3D0 /* inffast.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -522,6 +596,7 @@
buildActionMask = 2147483647;
files = (
8CC2FCB91B91EB3500D5E05F /* ObjectiveZip_Tests.m in Sources */,
8C59F3821BAEE3BC00DBB3D0 /* Objective-Zip_Swift_Tests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -529,29 +604,29 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8CC2FCA61B91E71700D5E05F /* ioapi.c in Sources */,
8CC2FCA71B91E71700D5E05F /* unzip.c in Sources */,
8CC2FCA81B91E71700D5E05F /* zip.c in Sources */,
8CC2FCA91B91E71700D5E05F /* adler32.c in Sources */,
8CC2FCAA1B91E71700D5E05F /* compress.c in Sources */,
8CC2FCAB1B91E71700D5E05F /* crc32.c in Sources */,
8CC2FCAC1B91E71700D5E05F /* deflate.c in Sources */,
8CC2FCAD1B91E71700D5E05F /* gzclose.c in Sources */,
8CC2FCAE1B91E71700D5E05F /* gzlib.c in Sources */,
8CC2FCAF1B91E71700D5E05F /* gzread.c in Sources */,
8CC2FCB01B91E71700D5E05F /* gzwrite.c in Sources */,
8CC2FCB11B91E71700D5E05F /* infback.c in Sources */,
8CC2FCB21B91E71700D5E05F /* inffast.c in Sources */,
8CC2FCB31B91E71700D5E05F /* inflate.c in Sources */,
8CC2FCB41B91E71700D5E05F /* inftrees.c in Sources */,
8CC2FCB51B91E71700D5E05F /* trees.c in Sources */,
8CC2FCB61B91E71700D5E05F /* uncompr.c in Sources */,
8CC2FCB71B91E71700D5E05F /* zutil.c in Sources */,
8CC2FCA11B91E70D00D5E05F /* OZZipFile.m in Sources */,
8CC2FCA21B91E70D00D5E05F /* OZZipException.m in Sources */,
8CC2FCA31B91E70D00D5E05F /* OZZipWriteStream.m in Sources */,
8CC2FCA41B91E70D00D5E05F /* OZFileInZipInfo.m in Sources */,
8CC2FCA51B91E70D00D5E05F /* OZZipReadStream.m in Sources */,
8C59F3AE1BAEE48600DBB3D0 /* gzread.c in Sources */,
8C59F3F41BAEE4A100DBB3D0 /* OZFileInZipInfo.m in Sources */,
8C59F39F1BAEE48600DBB3D0 /* adler32.c in Sources */,
8C59F3C11BAEE48600DBB3D0 /* uncompr.c in Sources */,
8C59F4091BAEE4A100DBB3D0 /* OZZipWriteStream.m in Sources */,
8C59F3FD1BAEE4A100DBB3D0 /* OZZipFile.m in Sources */,
8C59F3C51BAEE48600DBB3D0 /* zutil.c in Sources */,
8C59F3AC1BAEE48600DBB3D0 /* gzlib.c in Sources */,
8C59F3B01BAEE48600DBB3D0 /* gzwrite.c in Sources */,
8C59F3D01BAEE49400DBB3D0 /* ioapi.c in Sources */,
8C59F3A91BAEE48600DBB3D0 /* gzclose.c in Sources */,
8C59F3A31BAEE48600DBB3D0 /* crc32.c in Sources */,
8C59F3A61BAEE48600DBB3D0 /* deflate.c in Sources */,
8C59F3D31BAEE49400DBB3D0 /* unzip.c in Sources */,
8C59F3BE1BAEE48600DBB3D0 /* trees.c in Sources */,
8C59F3B81BAEE48600DBB3D0 /* inflate.c in Sources */,
8C59F3F91BAEE4A100DBB3D0 /* OZZipException.m in Sources */,
8C59F3BB1BAEE48600DBB3D0 /* inftrees.c in Sources */,
8C59F3D61BAEE49400DBB3D0 /* zip.c in Sources */,
8C59F4031BAEE4A100DBB3D0 /* OZZipReadStream.m in Sources */,
8C59F3B21BAEE48600DBB3D0 /* infback.c in Sources */,
8C59F3A11BAEE48600DBB3D0 /* compress.c in Sources */,
8C59F3B41BAEE48600DBB3D0 /* inffast.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -560,6 +635,7 @@
buildActionMask = 2147483647;
files = (
8CC2FCBA1B91EB3500D5E05F /* ObjectiveZip_Tests.m in Sources */,
8C59F3831BAEE3BC00DBB3D0 /* Objective-Zip_Swift_Tests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -698,10 +774,13 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
INFOPLIST_FILE = "Objective-Zip Tests/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 5.1;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = YES;
PRODUCT_BUNDLE_IDENTIFIER = "com.flyingdolphinstudio.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Objective-Zip Tests/Objective-Zip Tests-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
@@ -739,10 +818,12 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
INFOPLIST_FILE = "Objective-Zip Tests/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 5.1;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_BUNDLE_IDENTIFIER = "com.flyingdolphinstudio.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Objective-Zip Tests/Objective-Zip Tests-Bridging-Header.h";
VALIDATE_PRODUCT = YES;
};
name = Release;
@@ -764,6 +845,7 @@
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
@@ -807,6 +889,7 @@
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
@@ -868,10 +951,13 @@
GCC_WARN_UNUSED_FUNCTION = YES;
INFOPLIST_FILE = "Objective-Zip Tests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.7;
MACOSX_DEPLOYMENT_TARGET = 10.9;
MTL_ENABLE_DEBUG_INFO = YES;
PRODUCT_BUNDLE_IDENTIFIER = "com.flyingdolphinstudio.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
SWIFT_OBJC_BRIDGING_HEADER = "Objective-Zip Tests/Objective-Zip OS X Tests-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
@@ -910,16 +996,19 @@
GCC_WARN_UNUSED_FUNCTION = YES;
INFOPLIST_FILE = "Objective-Zip Tests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.7;
MACOSX_DEPLOYMENT_TARGET = 10.9;
MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_BUNDLE_IDENTIFIER = "com.flyingdolphinstudio.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
SWIFT_OBJC_BRIDGING_HEADER = "Objective-Zip Tests/Objective-Zip OS X Tests-Bridging-Header.h";
};
name = Release;
};
C01FCF4F08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;

View File

@@ -1,6 +1,6 @@
//
// OZFileInZipInfo+Internals.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 27/08/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

View File

@@ -1,6 +1,6 @@
//
// OZFileInZipInfo.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 27/12/09.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

View File

@@ -1,6 +1,6 @@
//
// OZFileInZipInfo.m
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 27/12/09.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

View File

@@ -1,6 +1,6 @@
//
// OZZipCompressionLevel.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 27/08/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.
@@ -39,7 +39,7 @@
@brief Compression level to be used to compress new files added to the zip
file.
*/
typedef enum {
typedef NS_ENUM(NSInteger, OZZipCompressionLevel) {
/**
@brief Compression level that compresses the new file somewhere inbetween
@@ -64,8 +64,7 @@ typedef enum {
possible, corresponding to the slowest compression.
*/
OZZipCompressionLevelBest= 9
} OZZipCompressionLevel;
};
#endif

View File

@@ -1,6 +1,6 @@
//
// OZZipException+Internals.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 27/08/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

View File

@@ -1,6 +1,6 @@
//
// OZZipException.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 25/12/09.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.
@@ -33,7 +33,7 @@
#import <Foundation/Foundation.h>
#define ERROR_NO_SUCH_FILE (-9001)
extern const NSInteger OZ_ERROR_NO_SUCH_FILE;
/**

View File

@@ -1,6 +1,6 @@
//
// OZZipException.m
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 25/12/09.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.
@@ -47,6 +47,12 @@
@end
#pragma mark -
#pragma mark OZZipException constants
const NSInteger OZ_ERROR_NO_SUCH_FILE= -9001;
#pragma mark -
#pragma mark OZZipException implementation

View File

@@ -1,6 +1,6 @@
//
// OZZipFile+NSError.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 09/09/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.
@@ -34,6 +34,17 @@
#import "OZZipFile.h"
/**
@brief Indicates the file could not be located in the zip file.
*/
static const NSInteger OZLocateFileResultNotFound= -1;
/**
@brief Indicates the file has been successfully located in the zip file.
*/
static const NSInteger OZLocateFileResultFound= 1;
@interface OZZipFile (NSError)
@@ -211,13 +222,16 @@
<code>readCurrentFileInZip</code>.</p>
@param error If passed, may be filled with an NSError is case the file can't
be located.
@return <code>YES</code> if the file has been located and selected,
<code>NO</code> if the specified file name is not present in the zip file or
the file could not be located due to an error.
@return <code>OZLocateFileResultFound</code> if the file has been located
and selected, <code>OZLocateFileResultNotFound</code> if the specified
file name is not present in the zip file, or <code>0</code> if the file could
not be located due to an error.
<br/>NOTE: return value convention is different in the standard (non-NSError
compliant) interface.
@throws OZZipException If the zip file has been opened with a mode other than
Unzip.
*/
- (BOOL) locateFileInZip:(nonnull NSString *)fileNameInZip error:(NSError * __autoreleasing __nullable * __nullable)error;
- (NSInteger) __attribute__((swift_error(nonnull_error))) locateFileInZip:(nonnull NSString *)fileNameInZip error:(NSError * __autoreleasing __nullable * __nullable)error;
/**
@brief Returns the number of files contained in the zip file.
@@ -228,7 +242,7 @@
@throws OZZipException If the zip file has been opened with a mode other
than Unzip.
*/
- (NSUInteger) numFilesInZipWithError:(NSError * __autoreleasing __nullable * __nullable)error;
- (NSUInteger) __attribute__((swift_error(nonnull_error))) numFilesInZipWithError:(NSError * __autoreleasing __nullable * __nullable)error;
/**
@brief Returns a list of OZFileInZipInfo with the information on all the files

View File

@@ -1,6 +1,6 @@
//
// OZZipFile+Standard.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 09/09/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.
@@ -199,6 +199,8 @@
<code>readCurrentFileInZip</code>.</p>
@return <code>YES</code> if the file has been located and selected,
<code>NO</code> if the specified file name is not present in the zip file.
<br/>NOTE: return value convention is different in NSError compliant
interface.
@throws OZZipException If the file can't be located due to an error or if the
zip file has been opened with a mode other than Unzip.
*/

View File

@@ -1,6 +1,6 @@
//
// OZZipFile.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 25/12/09.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

View File

@@ -1,6 +1,6 @@
//
// OZZipFile.m
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 25/12/09.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.
@@ -97,7 +97,7 @@
// alternatively, as internal (common) version is not exposed
_unzFile= (_legacy32BitMode ? unzOpen(path) : unzOpen64(path));
if (_unzFile == NULL)
@throw [OZZipException zipExceptionWithError:ERROR_NO_SUCH_FILE reason:@"Can't open '%@'", _fileName];
@throw [OZZipException zipExceptionWithError:OZ_ERROR_NO_SUCH_FILE reason:@"Can't open '%@'", _fileName];
break;
case OZZipFileModeCreate:
@@ -105,7 +105,7 @@
// Support for legacy 32 bit mode: here we use the common version
_zipFile= zipOpen3(path, APPEND_STATUS_CREATE, 0, NULL, NULL);
if (_zipFile == NULL)
@throw [OZZipException zipExceptionWithError:ERROR_NO_SUCH_FILE reason:@"Can't open '%@'", _fileName];
@throw [OZZipException zipExceptionWithError:OZ_ERROR_NO_SUCH_FILE reason:@"Can't open '%@'", _fileName];
break;
case OZZipFileModeAppend:
@@ -113,7 +113,7 @@
// Support for legacy 32 bit mode: here we use the common version
_zipFile= zipOpen3(path, APPEND_STATUS_ADDINZIP, 0, NULL, NULL);
if (_zipFile == NULL)
@throw [OZZipException zipExceptionWithError:ERROR_NO_SUCH_FILE reason:@"Can't open '%@'", _fileName];
@throw [OZZipException zipExceptionWithError:OZ_ERROR_NO_SUCH_FILE reason:@"Can't open '%@'", _fileName];
break;
default:
@@ -444,12 +444,13 @@
} ERROR_WRAP_END_AND_RETURN(error, NO);
}
- (BOOL) locateFileInZip:(NSString *)fileNameInZip error:(NSError * __autoreleasing *)error {
- (NSInteger) locateFileInZip:(NSString *)fileNameInZip error:(NSError * __autoreleasing *)error {
ERROR_WRAP_BEGIN {
return [self locateFileInZip:fileNameInZip];
BOOL located= [self locateFileInZip:fileNameInZip];
return (located ? OZLocateFileResultFound : OZLocateFileResultNotFound);
} ERROR_WRAP_END_AND_RETURN(error, NO);
} ERROR_WRAP_END_AND_RETURN(error, 0);
}
- (NSUInteger) numFilesInZipWithError:(NSError * __autoreleasing *)error {

View File

@@ -1,6 +1,6 @@
//
// OZZipFileMode.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 27/08/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.
@@ -37,7 +37,7 @@
/**
@brief Access mode for opening a zip file.
*/
typedef enum {
typedef NS_ENUM(NSInteger, OZZipFileMode) {
/**
@brief Acces mode for opening the zip file for reading.
@@ -54,8 +54,7 @@ typedef enum {
@brief Acces mode for opening the zip file for writing.
*/
OZZipFileModeAppend
} OZZipFileMode;
};
#endif

View File

@@ -1,6 +1,6 @@
//
// OZZipReadStream+Internals.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 27/08/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

View File

@@ -1,6 +1,6 @@
//
// OZZipReadStream+NSError.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 09/09/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.
@@ -34,6 +34,12 @@
#import "OZZipReadStream.h"
/**
@brief Indicates the end of the file has been reached.
*/
static const NSInteger OZReadStreamResultEndOfFile= -1;
@interface OZZipReadStream (NSError)
@@ -46,10 +52,13 @@
@param buffer The buffer where read and uncompressed data must be stored.
@param error If passed, may be filled with an NSError is case data could
not be read.
@return The number of uncompressed bytes read, <code>0</code> if the end of
the file has been reached or data could not be read due to an error.
@return The number of uncompressed bytes read, <code>OZReadStreamResultEndOfFile</code>
if the end of the file has been reached, or <code>0</code>
if data could not be read due to an error.
<br/>NOTE: return value convention is different in the standard (non-NSError
compliant) interface.
*/
- (NSUInteger) readDataWithBuffer:(nonnull NSMutableData *)buffer error:(NSError * __autoreleasing __nullable * __nullable)error;
- (NSInteger) __attribute__((swift_error(nonnull_error))) readDataWithBuffer:(nonnull NSMutableData *)buffer error:(NSError * __autoreleasing __nullable * __nullable)error;
/**
@brief Closes the read steam.

View File

@@ -1,6 +1,6 @@
//
// OZZipReadStream+Standard.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 09/09/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.
@@ -46,6 +46,8 @@
@param buffer The buffer where read and uncompressed data must be stored.
@return The number of uncompressed bytes read, <code>0</code> if the end of
the file has been reached.
<br/>NOTE: return value convention is different in NSError compliant
interface.
@throws OZZipException If the data could not be read due to an error.
*/
- (NSUInteger) readDataWithBuffer:(nonnull NSMutableData *)buffer;

View File

@@ -1,6 +1,6 @@
//
// OZZipReadStream.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 28/12/09.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

View File

@@ -1,6 +1,6 @@
//
// OZZipReadStream.m
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 28/12/09.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.
@@ -93,10 +93,11 @@
#pragma mark -
#pragma mark Reading data (NSError variants)
- (NSUInteger) readDataWithBuffer:(NSMutableData *)buffer error:(NSError * __autoreleasing *)error {
- (NSInteger) readDataWithBuffer:(NSMutableData *)buffer error:(NSError * __autoreleasing *)error {
ERROR_WRAP_BEGIN {
[self readDataWithBuffer:buffer];
NSUInteger bytesRead= [self readDataWithBuffer:buffer];
return (bytesRead == 0) ? OZReadStreamResultEndOfFile : bytesRead;
} ERROR_WRAP_END_AND_RETURN(error, 0);
}

View File

@@ -1,6 +1,6 @@
//
// OZZipWriteStream+Internals.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 27/08/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

View File

@@ -1,6 +1,6 @@
//
// OZZipWriteStream+NSError.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 09/09/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.
@@ -47,6 +47,8 @@
@param data The data to be compressed and written.
@param error If passed, may be filled with an NSError is case data could
not be written.
@return <code>YES</code> if data has been written, <code>NO</code> if
data could not be written due to an error.
*/
- (BOOL) writeData:(nonnull NSData *)data error:(NSError * __autoreleasing __nullable * __nullable)error;

View File

@@ -1,6 +1,6 @@
//
// OZZipWriteStream+Standard.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 09/09/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

View File

@@ -1,6 +1,6 @@
//
// OZZipWriteStream.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 25/12/09.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

View File

@@ -1,6 +1,6 @@
//
// OZZipWriteStream.m
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 25/12/09.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

View File

@@ -1,6 +1,6 @@
//
// Objective-Zip+NSError.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 09/09/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

View File

@@ -1,6 +1,6 @@
//
// Objective-Zip.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.3
//
// Created by Gianluca Bertani on 27/08/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

266
README.md
View File

@@ -29,19 +29,273 @@ informations.
Getting started
---------------
===============
Please see [Getting Started](https://github.com/gianlucabertani/Objective-Zip/blob/master/GETTING_STARTED.md).
Objective-Zip exposes basic functionalities to read and write zip files,
encapsulating both ZLib for the compression mechanism and MiniZip for
the zip wrapping.
Adding Objective-Zip to your project
------------------------------------
The library is distributed via CocoaPods, you can add a dependency in you pod
file with the following line:
pod 'objective-zip', '~> 1.0'
You can then access Objective-Zip classes with the following import
statement if you plan to use exception handling:
```objective-c
#import "Objective-Zip.h"
```
Alternatively you can use the following import statement if you plan to use
Apple's NSError pattern:
```objective-c
#import "Objective-Zip+NSError.h"
```
More on error handling at the end of this document.
Main concepts
-------------
Objective-Zip is centered on a class called (with a lack of fantasy)
OZZipFile. It can be created with the common Objective-C procedure of an
alloc followed by an init, specifying in the latter if the zip file is
being created, appended or unzipped:
```objective-c
OZZipFile *zipFile= [[OZZipFile alloc] initWithFileName:@"test.zip"
mode:OZZipFileModeCreate];
```
Creating and appending are both write-only modalities, while unzipping
is a read-only modality. You can not request reading operations on a
write-mode zip file, nor request writing operations on a read-mode zip
file.
Adding a file to a zip file
---------------------------
The ZipFile class has a couple of methods to add new files to a zip
file, one of which keeps the file in clear and the other encrypts it
with a password. Both methods return an instance of a OZZipWriteStream
class, which will be used solely for the scope of writing the content of
the file, and then must be closed:
```objective-c
OZZipWriteStream *stream= [zipFile writeFileInZipWithName:@"abc.txt"
compressionLevel:OZZipCompressionLevelBest];
[stream writeData:abcData];
[stream finishedWriting];
```
Reading a file from a zip file
------------------------------
The OZZipFile class, when used in unzip mode, must be treated like a
cursor: you position the instance on a file at a time, either by
step-forwarding or by locating the file by name. Once you are on the
correct file, you can obtain an instance of a OZZipReadStream that will
let you read the content (and then must be closed).
Since the file may not fit into memory, you can read it block by block using
a buffer:
```objective-c
OZZipFile *unzipFile= [[OZZipFile alloc] initWithFileName:@"test.zip"
mode:OZZipFileModeUnzip];
[unzipFile goToFirstFileInZip];
OZZipReadStream *read= [unzipFile readCurrentFileInZip];
NSMutableData *data= [[NSMutableData alloc] initWithLength:BUFFER_SIZE];
do {
// Reset buffer length
[buffer setLength:BUFFER_SIZE];
// Read bytes and check for end of file
int bytesRead= [read readDataWithBuffer:data];
if (bytesRead <= 0)
break;
[buffer setLength:bytesRead];
// Do something with buffer
} while (YES);
[read finishedReading];
```
Alternatively, if you know in advance the file will fit into memory, you may
preallocate a buffer big enough and read the all file at once. In the example
below the buffer is preallocated with precisely the uncompressed size of the
file:
```objective-c
OZZipFile *unzipFile= [[OZZipFile alloc] initWithFileName:@"test.zip"
mode:OZZipFileModeUnzip];
[unzipFile goToFirstFileInZip];
OZFileInZipInfo *info= [unzipFile getCurrentFileInZipInfo];
OZZipReadStream *read= [unzipFile readCurrentFileInZip];
NSMutableData *data= [[NSMutableData alloc] initWithLength:info.length];
[read readDataWithBuffer:data];
// Do something with data
[read finishedReading];
```
Note that the NSMutableData instance that acts as the read buffer must
have been set with a length greater than 0: the `readDataWithBuffer` API
will use that length to know how many bytes it can fetch from the zip
file.
Listing files in a zip file
---------------------------
When the ZipFile class is used in unzip mode, it can also list the files
contained in zip by filling an NSArray with instances of FileInZipInfo
class. You can then use its name property to locate the file inside the
zip and expand it:
```objective-c
OZZipFile *unzipFile= [[OZZipFile alloc] initWithFileName:@"test.zip"
mode:OZZipFileModeUnzip];
NSArray *infos= [unzipFile listFileInZipInfos];
for (OZFileInZipInfo *info in infos) {
NSLog(@"- %@ %@ %llu (%d)", info.name, info.date, info.size, info.level);
// Locate the file in the zip
[unzipFile locateFileInZip:info.name];
// Expand the file in memory
OZZipReadStream *read= [unzipFile readCurrentFileInZip];
NSMutableData *data= [[NSMutableData alloc] initWithLength:info.length];
int bytesRead= [read readDataWithBuffer:data];
[read finishedReading];
}
```
Note that the OZFileInZipInfo class provide two sizes:
- **length** is the original (uncompressed) file size, while
- **size** is the compressed file size.
Closing the zip file
--------------------
Remember, when you are done, to close your OZZipFile instance to avoid
file corruption problems:
```objective-c
[zipFile close];
```
File/folder hierarchy inide the zip
-----------------------------------
Please note that inside the zip files there is no representation of a
file-folder hierarchy: it is simply embedded in file names (i.e.: a file
with a name like "x/y/z/file.txt"). It is up to the program that
extracts files to consider these file names as expressing a structure and
rebuild it on the file system (and viceversa during creation). Common
zippers/unzippers simply follow this rule.
Error handling
--------------
Objective-Zip provides two kinds of error handling:
- standard exception handling;
- Apple's NSError pattern.
With standard exception handling, Objective-Zip will throw an exception of
class OZZipException any time an error occurs (programmer or runtime errors).
To use standard exception handling import Objective-Zip in your project with
this statement:
```objective-c
#import "Objective-Zip.h"
```
With Apple's NSError pattern, Objective-Zip will expect a NSError
pointer-to-pointer argument and will fill it with an NSError instance
whenever a runtime error occurs. Will revert to throwing an exception (of
OZZipException class) in case of programmer errors.
To use Apple's NSError pattern import Objective-Zip in your project with this
statement:
```objective-c
#import "Objective-Zip+NSError.h"
```
Apple's NSError pattern is of course mandatory with Swift programming
language, since it does not support exception handling.
Differences in the interface
----------------------------
Note that a few minor differences exist in the standard interface vs. the
NSError pattern interface. Specifically:
* `[OZZipFile locateFileInZip:error:]` returns a `NSInteger` in place of a
`BOOL`. Here the special values `OZLocateFileResultNotFound` and
`OZLocateFileResultNotFound`, respectively `1` and `-1`, are used in place of
`YES` and `NO`, since `0` is reserved for the case where an error occurred.
* `[OZZipReadStream readDataWithBuffer:error:]` similarly returns a
`NSInteger` in place of a `NSUInteger`. Here the special value
`OZReadStreamResultEndOfFile`, corresponding to `-1`, is used for the
end-of-file case, since `0` is again reserved for error occurrence.
License
-------
=======
The library is distributed under the New BSD License.
Version history
---------------
===============
Version 1.0.3:
- Fixed some memory leaks in MiniZip (contributed by @SheffieldKevin)
- Silenced a warning about shifting a negative value in ZLib (contributed by Martin Winter)
- Fixed throwing of errors so that it is compatible with Swift 3 (contributed by @andyj-at-aspin)
- Fixed typos and errors in README (contributed by @deni2s)
Version 1.0.2:
- Fixed interface for `locateFileInZip` and `readDataWithBuffer` in NSError
version so that they correctly support Swift error handling.
Version 1.0.1:
- Fixed compatibility bugs with Swift
- Added Swift unit tests
- Merged back GETTING STARTED in README
Version 1.0.0:
@@ -101,9 +355,9 @@ Version 0.7.0:
Compatibility
-------------
=============
Version 1.0.0 has been tested with iOS up to 8.4.1 and OS X up to 10.10.5, but
Version 1.0.3 has been tested with iOS up to 9.3 and OS X up to 10.11, but
should be compatible with earlier versions too, down to iOS 5.1 and OS X 10.7.
Le me know of any issues that should arise.

View File

@@ -1504,9 +1504,10 @@ z_streamp strm;
{
struct inflate_state FAR *state;
if (strm == Z_NULL || strm->state == Z_NULL) return -1L << 16;
if (strm == Z_NULL || strm->state == Z_NULL)
return (long)(((unsigned long)0 - 1) << 16);
state = (struct inflate_state FAR *)strm->state;
return ((long)(state->back) << 16) +
return (long)(((unsigned long)((long)state->back)) << 16) +
(state->mode == COPY ? state->length :
(state->mode == MATCH ? state->was - state->length : 0));
}

View File

@@ -3,7 +3,7 @@ Pod::Spec.new do |s|
# ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.name = "objective-zip"
s.version = "1.0.0"
s.version = "1.0.3"
s.summary = "An object-oriented friendly wrapper library for ZLib and MiniZip, in Objective-C for iOS and OS X"
s.description = <<-DESC
@@ -48,6 +48,16 @@ Pod::Spec.new do |s|
s.source_files = "Objective-Zip/**/*.{h,m}", "MiniZip/**/*.{h,c}", "ZLib/**/*.{h,c}"
# ――― Publich Headers ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.public_header_files = ["Objective-Zip/OZZipFile.h", "Objective-Zip/OZZipFile+Standard.h", "Objective-Zip/OZZipFile+NSError.h",
"Objective-Zip/OZZipFileMode.h", "Objective-Zip/OZZipCompressionLevel.h", "Objective-Zip/OZZipException.h",
"Objective-Zip/OZZipWriteStream.h", "Objective-Zip/OZZipWriteStream+Standard.h",
"Objective-Zip/OZZipWriteStream+NSError.h", "Objective-Zip/OZZipReadStream.h",
"Objective-Zip/OZZipReadStream+Standard.h", "Objective-Zip/OZZipReadStream+NSError.h",
"Objective-Zip/OZFileInZipInfo.h", "Objective-Zip/Objective-Zip.h", "Objective-Zip/Objective-Zip+NSError.h"]
# ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.requires_arc = true