5 Commits
1.0.0 ... 1.0.1

Author SHA1 Message Date
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
33 changed files with 1078 additions and 503 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

@@ -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,476 @@
//
// 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)!
var error : NSError?
let bytesRead1 = read1.readDataWithBuffer(data1, error:&error)
if error != nil {
throw error!
}
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 = read2.readDataWithBuffer(data2, error:&error)
if error != nil {
throw error!
}
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)")
}
}
func test02ZipAndUnzip5GB() {
// TODO Remove to enable this test, but be careful: takes 5 minutes and consumes 5 GB of disk space
return
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++) {
var error : NSError?
let bytesRead = read.readDataWithBuffer(buffer, error:&error)
if error != nil {
throw error!
}
XCTAssertEqual(UInt(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)!
var error : NSError?
let bytesRead = read.readDataWithBuffer(buffer, error:&error)
if error != nil {
throw error!
}
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)!
var error : NSError?
let bytesRead = read.readDataWithBuffer(buffer, error:&error)
if error != nil {
throw error!
}
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];
@@ -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...");
@@ -448,7 +448,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 +469,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.1
//
// 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.1
//
// 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.1
//
// 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.1
//
// 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.1
//
// 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.1
//
// 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.1
//
// 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.1
//
// Created by Gianluca Bertani on 09/09/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

View File

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

View File

@@ -1,6 +1,6 @@
//
// OZZipFile.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.1
//
// 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.1
//
// 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:

View File

@@ -1,6 +1,6 @@
//
// OZZipFileMode.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.1
//
// 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.1
//
// 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.1
//
// Created by Gianluca Bertani on 09/09/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

View File

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

View File

@@ -1,6 +1,6 @@
//
// OZZipReadStream.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.1
//
// 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.1
//
// Created by Gianluca Bertani on 28/12/09.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.
@@ -96,7 +96,7 @@
- (NSUInteger) readDataWithBuffer:(NSMutableData *)buffer error:(NSError * __autoreleasing *)error {
ERROR_WRAP_BEGIN {
[self readDataWithBuffer:buffer];
return [self readDataWithBuffer:buffer];
} 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.1
//
// 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.1
//
// Created by Gianluca Bertani on 09/09/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

View File

@@ -1,6 +1,6 @@
//
// OZZipWriteStream+Standard.h
// Objective-Zip v. 1.0.0
// Objective-Zip v. 1.0.1
//
// 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.1
//
// 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.1
//
// 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.1
//
// 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.1
//
// Created by Gianluca Bertani on 27/08/15.
// Copyright 2009-2015 Gianluca Bertani. All rights reserved.

240
README.md
View File

@@ -29,19 +29,247 @@ informations.
Getting started
---------------
===============
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];
```
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.
Please see [Getting Started](https://github.com/gianlucabertani/Objective-Zip/blob/master/GETTING_STARTED.md).
License
-------
=======
The library is distributed under the New BSD License.
Version history
---------------
===============
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 +329,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.1 has been tested with iOS up to 9.0 and OS X up to 10.10.5, 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

@@ -3,7 +3,7 @@ Pod::Spec.new do |s|
# ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.name = "objective-zip"
s.version = "1.0.0"
s.version = "1.0.1"
s.summary = "An object-oriented friendly wrapper library for ZLib and MiniZip, in Objective-C for iOS and OS X"
s.description = <<-DESC