From ebfd8ca1dac81755451a22e364daa851992b386e Mon Sep 17 00:00:00 2001 From: rowanbeentje Date: Mon, 12 Apr 2010 00:08:40 +0000 Subject: Add a new SPFileHandle class to support gzip compression and writing on a background thread, and integrate for SQL import: - Implement streaming reading of gzip-compressed files for SQL import - Support exporting SQL dumps into a gzip-compressed file - SPFileHandle supports the most-used subset of NSFileHandle commands for easy integration - Integrate zlib 1.2.4 for improved gzip streaming performance (and support for custom buffer sizes and file offset positions) This implements Issue #571 . --- sequel-pro.xcodeproj/project.pbxproj | 54 ++++++++++++++++++++++++++++++------ 1 file changed, 45 insertions(+), 9 deletions(-) (limited to 'sequel-pro.xcodeproj/project.pbxproj') diff --git a/sequel-pro.xcodeproj/project.pbxproj b/sequel-pro.xcodeproj/project.pbxproj index 5ff51aa9..d6348536 100644 --- a/sequel-pro.xcodeproj/project.pbxproj +++ b/sequel-pro.xcodeproj/project.pbxproj @@ -30,7 +30,6 @@ 17B7B578101601C300F057DE /* libmysqlclient.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 17B7B576101601C300F057DE /* libmysqlclient.a */; }; 17B7B5901016028F00F057DE /* libcrypto.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 17B7B58F1016028F00F057DE /* libcrypto.dylib */; }; 17B7B592101602AE00F057DE /* libssl.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 17B7B591101602AE00F057DE /* libssl.dylib */; }; - 17B7B594101602D200F057DE /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 17B7B593101602D200F057DE /* libz.dylib */; }; 17B7B595101602D800F057DE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */; }; 17B7B5991016038400F057DE /* MCPKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17B7B5621016012700F057DE /* MCPKit.framework */; }; 17B7B5D3101603B200F057DE /* MCPConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 17B7B5C4101603B200F057DE /* MCPConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -138,6 +137,7 @@ 582A01E9107C0C170027D42B /* SPNotLoaded.m in Sources */ = {isa = PBXBuildFile; fileRef = 582A01E8107C0C170027D42B /* SPNotLoaded.m */; }; 582A05A9108A5CCF0027D42B /* ProgressIndicatorLayer.xib in Resources */ = {isa = PBXBuildFile; fileRef = 582A05A7108A5CCF0027D42B /* ProgressIndicatorLayer.xib */; }; 583B77D4103870C800B21F7E /* MCPStreamingResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 583B779810386B0200B21F7E /* MCPStreamingResult.m */; }; + 583CE52D11725642008F148E /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 583CE52C11725642008F148E /* libz.dylib */; }; 584095191107CB6600260CFD /* SPAlertSheets.m in Sources */ = {isa = PBXBuildFile; fileRef = 584095181107CB6600260CFD /* SPAlertSheets.m */; }; 5841423F0F97E11000A34B47 /* NoodleLineNumberView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5841423E0F97E11000A34B47 /* NoodleLineNumberView.m */; }; 584192A1101E57BB0089807F /* NSMutableArray-MultipleSort.m in Sources */ = {isa = PBXBuildFile; fileRef = 584192A0101E57BB0089807F /* NSMutableArray-MultipleSort.m */; }; @@ -148,6 +148,7 @@ 586F457E0FDB280100B428D7 /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 296DC8BE0F9091DF002A3258 /* libicucore.dylib */; }; 5870868410FA3E9C00D58E1C /* SPDataStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5870868310FA3E9C00D58E1C /* SPDataStorage.m */; }; 5885940F0F7AEE6000ED0E67 /* sparkle-public-key.pem in Resources */ = {isa = PBXBuildFile; fileRef = 5885940E0F7AEE6000ED0E67 /* sparkle-public-key.pem */; }; + 5885CF4A116A63B200A85ACB /* SPFileHandle.m in Sources */ = {isa = PBXBuildFile; fileRef = 5885CF49116A63B200A85ACB /* SPFileHandle.m */; }; 588B2CC80FE5641E00EC5FC0 /* ssh-connected.png in Resources */ = {isa = PBXBuildFile; fileRef = 588B2CC50FE5641E00EC5FC0 /* ssh-connected.png */; }; 588B2CC90FE5641E00EC5FC0 /* ssh-connecting.png in Resources */ = {isa = PBXBuildFile; fileRef = 588B2CC60FE5641E00EC5FC0 /* ssh-connecting.png */; }; 588B2CCA0FE5641E00EC5FC0 /* ssh-disconnected.png in Resources */ = {isa = PBXBuildFile; fileRef = 588B2CC70FE5641E00EC5FC0 /* ssh-disconnected.png */; }; @@ -252,7 +253,6 @@ BCA6F631100FA7D700E80253 /* FieldEditorSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCA6F62F100FA7D700E80253 /* FieldEditorSheet.xib */; }; BCB56197106F893F00167321 /* ContentFilters.plist in Resources */ = {isa = PBXBuildFile; fileRef = BCB56196106F893F00167321 /* ContentFilters.plist */; }; BCB5619B106F8A1B00167321 /* EditorQuickLookTypes.plist in Resources */ = {isa = PBXBuildFile; fileRef = BCB5619A106F8A1B00167321 /* EditorQuickLookTypes.plist */; }; - BCC5CC3C103EEE49007CE557 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 17B7B593101602D200F057DE /* libz.dylib */; }; BCCBD7FC104408B000D4C50A /* SaveSPFAccessory.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCCBD7FA104408B000D4C50A /* SaveSPFAccessory.xib */; }; BCCDED68115940CB00285E65 /* sync_arrows_01.tiff in Resources */ = {isa = PBXBuildFile; fileRef = BCCDED62115940CB00285E65 /* sync_arrows_01.tiff */; }; BCCDED69115940CB00285E65 /* sync_arrows_02.tiff in Resources */ = {isa = PBXBuildFile; fileRef = BCCDED63115940CB00285E65 /* sync_arrows_02.tiff */; }; @@ -352,7 +352,6 @@ 17B7B58B1016022C00F057DE /* MCPKit-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "MCPKit-Info.plist"; sourceTree = ""; }; 17B7B58F1016028F00F057DE /* libcrypto.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcrypto.dylib; path = /usr/lib/libcrypto.dylib; sourceTree = ""; }; 17B7B591101602AE00F057DE /* libssl.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libssl.dylib; path = /usr/lib/libssl.dylib; sourceTree = ""; }; - 17B7B593101602D200F057DE /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = ""; }; 17B7B59C101603A400F057DE /* MCPAttribute.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCPAttribute.h; sourceTree = ""; }; 17B7B59D101603A400F057DE /* MCPAttribute.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MCPAttribute.m; sourceTree = ""; }; 17B7B59E101603A400F057DE /* MCPClassDescription+MCPEntreprise.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MCPClassDescription+MCPEntreprise.h"; sourceTree = ""; }; @@ -545,6 +544,8 @@ 582A05A8108A5CCF0027D42B /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Interfaces/English.lproj/ProgressIndicatorLayer.xib; sourceTree = ""; }; 583B779710386B0200B21F7E /* MCPStreamingResult.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = MCPStreamingResult.h; sourceTree = ""; }; 583B779810386B0200B21F7E /* MCPStreamingResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MCPStreamingResult.m; sourceTree = ""; }; + 583CE39C11722B84008F148E /* zlib.1.2.4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = zlib.1.2.4.h; path = Frameworks/zlib/zlib.1.2.4.h; sourceTree = SOURCE_ROOT; }; + 583CE52C11725642008F148E /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; 584094CC1107BD0500260CFD /* SPAlertSheets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPAlertSheets.h; sourceTree = ""; }; 584095181107CB6600260CFD /* SPAlertSheets.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPAlertSheets.m; sourceTree = ""; }; 5841423D0F97E11000A34B47 /* NoodleLineNumberView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NoodleLineNumberView.h; sourceTree = ""; }; @@ -558,6 +559,8 @@ 5870868310FA3E9C00D58E1C /* SPDataStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPDataStorage.m; sourceTree = ""; }; 588593F30F7AEC9500ED0E67 /* package-application.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "package-application.sh"; sourceTree = ""; }; 5885940E0F7AEE6000ED0E67 /* sparkle-public-key.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "sparkle-public-key.pem"; sourceTree = ""; }; + 5885CF48116A63B200A85ACB /* SPFileHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPFileHandle.h; sourceTree = ""; }; + 5885CF49116A63B200A85ACB /* SPFileHandle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPFileHandle.m; sourceTree = ""; }; 588B2CC50FE5641E00EC5FC0 /* ssh-connected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ssh-connected.png"; sourceTree = ""; }; 588B2CC60FE5641E00EC5FC0 /* ssh-connecting.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ssh-connecting.png"; sourceTree = ""; }; 588B2CC70FE5641E00EC5FC0 /* ssh-disconnected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ssh-disconnected.png"; sourceTree = ""; }; @@ -703,8 +706,8 @@ 17B7B578101601C300F057DE /* libmysqlclient.a in Frameworks */, 17B7B5901016028F00F057DE /* libcrypto.dylib in Frameworks */, 17B7B592101602AE00F057DE /* libssl.dylib in Frameworks */, - 17B7B594101602D200F057DE /* libz.dylib in Frameworks */, 17B7B595101602D800F057DE /* Cocoa.framework in Frameworks */, + 583CE52D11725642008F148E /* libz.dylib in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -735,7 +738,6 @@ 4DECC3350EC2A170008D359E /* Sparkle.framework in Frameworks */, 296DC89F0F8FD336002A3258 /* WebKit.framework in Frameworks */, 17B7B5991016038400F057DE /* MCPKit.framework in Frameworks */, - BCC5CC3C103EEE49007CE557 /* libz.dylib in Frameworks */, 58C458DF10CF188F00E6E13E /* libcrypto.dylib in Frameworks */, B52ECDDC10DDACE9009DC3E8 /* BWToolkitFramework.framework in Frameworks */, 586EBD2411418D7C00B3DE45 /* FeedbackReporter.framework in Frameworks */, @@ -757,7 +759,7 @@ 296DC8BE0F9091DF002A3258 /* libicucore.dylib */, 17B7B58F1016028F00F057DE /* libcrypto.dylib */, 17B7B591101602AE00F057DE /* libssl.dylib */, - 17B7B593101602D200F057DE /* libz.dylib */, + 583CE52C11725642008F148E /* libz.dylib */, ); name = "Linked Frameworks"; sourceTree = ""; @@ -1183,6 +1185,7 @@ 17E6416E0EF01F3B001BC333 /* Other */ = { isa = PBXGroup; children = ( + 583CE39511722B70008F148E /* Compression */, 296DC8A40F90914B002A3258 /* MGTemplateEngine */, 17128B890FE6DFFA0035DD75 /* QuickLook */, 173284E51088FEC20062E892 /* Data */, @@ -1441,6 +1444,16 @@ path = UnitTests; sourceTree = ""; }; + 583CE39511722B70008F148E /* Compression */ = { + isa = PBXGroup; + children = ( + 583CE39C11722B84008F148E /* zlib.1.2.4.h */, + 5885CF48116A63B200A85ACB /* SPFileHandle.h */, + 5885CF49116A63B200A85ACB /* SPFileHandle.m */, + ); + name = Compression; + sourceTree = ""; + }; 58DA884E103E1597000B98DF /* Debugging & Support */ = { isa = PBXGroup; children = ( @@ -1897,6 +1910,7 @@ BC2777A011514B940034DF6A /* SPNavigatorController.m in Sources */, 589582151154F8F400EDCC28 /* SPMainThreadTrampoline.m in Sources */, BC4DF1981158FB280059FABD /* SPNavigatorOutlineView.m in Sources */, + 5885CF4A116A63B200A85ACB /* SPFileHandle.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2164,6 +2178,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/Frameworks/MCPKit/MySQL/lib\"", + "\"$(SRCROOT)/Frameworks/zlib\"", ); OTHER_LDFLAGS = ( "-framework", @@ -2193,6 +2208,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/Frameworks/MCPKit/MySQL/lib\"", + "\"$(SRCROOT)/Frameworks/zlib\"", ); OTHER_LDFLAGS = ( "-framework", @@ -2221,6 +2237,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/Frameworks/MCPKit/MySQL/lib\"", + "\"$(SRCROOT)/Frameworks/zlib\"", ); OTHER_LDFLAGS = ( "-framework", @@ -2359,7 +2376,11 @@ GCC_PREFIX_HEADER = "Source/Sequel-Pro.pch"; INFOPLIST_FILE = Resources/Info.plist; INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/Frameworks/MCPKit/MySQL/lib\""; + LIBRARY_SEARCH_PATHS = ( + "\"$(SRCROOT)/Frameworks/MCPKit/MySQL/lib\"", + "\"$(SRCROOT)/Frameworks/zlib\"", + ); + OTHER_LDFLAGS = "$(SRCROOT)/Frameworks/zlib/libz.a"; PRODUCT_NAME = "Sequel Pro"; SEPARATE_STRIP = NO; }; @@ -2449,7 +2470,14 @@ GCC_PREFIX_HEADER = "Source/Sequel-Pro.pch"; INFOPLIST_FILE = Resources/Info.plist; INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/Frameworks/MCPKit/MySQL/lib\""; + LIBRARY_SEARCH_PATHS = ( + "\"$(SRCROOT)/Frameworks/MCPKit/MySQL/lib\"", + "\"$(SRCROOT)/Frameworks/zlib\"", + ); + OTHER_LDFLAGS = ( + "$(SRCROOT)/Frameworks/zlib/libz.a", + "-lcrypto", + ); PRODUCT_NAME = "Sequel Pro"; SEPARATE_STRIP = NO; }; @@ -2471,7 +2499,14 @@ GCC_PREFIX_HEADER = "Source/Sequel-Pro.pch"; INFOPLIST_FILE = Resources/Info.plist; INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/Frameworks/MCPKit/MySQL/lib\""; + LIBRARY_SEARCH_PATHS = ( + "\"$(SRCROOT)/Frameworks/MCPKit/MySQL/lib\"", + "\"$(SRCROOT)/Frameworks/zlib\"", + ); + OTHER_LDFLAGS = ( + "$(SRCROOT)/Frameworks/zlib/libz.a", + "-lcrypto", + ); PRODUCT_NAME = "Sequel Pro"; SEPARATE_STRIP = NO; }; @@ -2493,6 +2528,7 @@ LEXFLAGS = ""; LEX_INSERT_LINE_DIRECTIVES = YES; LEX_SUPPRESS_DEFAULT_RULE = NO; + LIBRARY_SEARCH_PATHS = ""; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = "-lcrypto"; PREBINDING = NO; -- cgit v1.2.3