diff --git a/FoundationKit.xcodeproj/project.pbxproj b/FoundationKit.xcodeproj/project.pbxproj index 532ce46..ce55c6b 100644 --- a/FoundationKit.xcodeproj/project.pbxproj +++ b/FoundationKit.xcodeproj/project.pbxproj @@ -159,6 +159,8 @@ C5EF038613C98EC100953F2B /* NKSynthesizeSingletonTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NKSynthesizeSingletonTests.m; sourceTree = ""; }; DC410CFF13C39BFD00C90C19 /* libFoundationKitMac.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFoundationKitMac.a; sourceTree = BUILT_PRODUCTS_DIR; }; DC410D0213C39BFD00C90C19 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + DC5BFFD914364EFC008FA197 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = ""; }; + DC5BFFDC14364F4C008FA197 /* FKUnzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FKUnzip.h; sourceTree = ""; }; DCB0126F13C4AE9400AB692F /* NSError+FKAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSError+FKAdditions.h"; sourceTree = ""; }; DCB0127013C4AE9400AB692F /* NSError+FKAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSError+FKAdditions.m"; sourceTree = ""; }; DCF68FBC13C74ADB0057517A /* NSObject+FKSwizzle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+FKSwizzle.h"; sourceTree = ""; }; @@ -302,6 +304,7 @@ DCF68FBD13C74ADB0057517A /* NSObject+FKSwizzle.m */, C5AAAA7713C9A33F00E44CE7 /* NSString+FKAdditions.h */, C5AAAA7813C9A33F00E44CE7 /* NSString+FKAdditions.m */, + DC5BFFDC14364F4C008FA197 /* FKUnzip.h */, 39CFA6131422500400DC3E57 /* NSUserDefaults+FKAdditions.h */, 39CFA6141422500500DC3E57 /* NSUserDefaults+FKAdditions.m */, ); @@ -354,6 +357,7 @@ DC410D0113C39BFD00C90C19 /* Frameworks */ = { isa = PBXGroup; children = ( + DC5BFFD914364EFC008FA197 /* libz.dylib */, 392D3C43142FC5E9003AFB81 /* AudioToolbox.framework */, 392D3C45142FC5F2003AFB81 /* AudioUnit.framework */, 392D3C46142FC5F2003AFB81 /* CoreAudio.framework */, diff --git a/Sources/FKUnzip.h b/Sources/FKUnzip.h new file mode 100644 index 0000000..cd2cc18 --- /dev/null +++ b/Sources/FKUnzip.h @@ -0,0 +1,28 @@ +// Part of FoundationKit http://foundationk.it + +#import + +typedef enum { + FKUnzipFileTypeGzip = 1 +} FKUnzipFileType; + +NS_INLINE BOOL FKUnzip(FKUnzipFileType ftype, NSString *src, NSString *dst) { + if (ftype == FKUnzipFileTypeGzip) { + static unsigned rchunk = 16384; + BOOL result = YES; + gzFile file = gzopen([src UTF8String], "rb"); + FILE *dest = fopen([dst UTF8String], "w"); + unsigned char buffer[rchunk]; + int uncompressedLength; + while ((uncompressedLength = gzread(file, buffer, rchunk)) ) { + if (fwrite(buffer, 1, uncompressedLength, dest) != uncompressedLength || ferror(dest)) { + result = NO; + break; + } + } + fclose(dest); + gzclose(file); + return result; + } + return NO; +} \ No newline at end of file diff --git a/Sources/FoundationKit.h b/Sources/FoundationKit.h index e1dae33..ca06717 100644 --- a/Sources/FoundationKit.h +++ b/Sources/FoundationKit.h @@ -18,6 +18,7 @@ #import "FKMath.h" #import "FKShorthands.h" #import "FKSynthesizeSingleton.h" +#import "FKUnzip.h" #import "FKPaths.h" #import "FKMutableIntArray.h"