diff --git a/.gitignore b/.gitignore index 8615121b2..0cfdf5001 100644 --- a/.gitignore +++ b/.gitignore @@ -23,7 +23,7 @@ DerivedData # you should judge for yourself, the pros and cons are mentioned at: # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control # -# Pods/ +Pods/ # Carthage # diff --git a/Example.xcodeproj/project.pbxproj b/Example.xcodeproj/project.pbxproj deleted file mode 100644 index b90fbe708..000000000 --- a/Example.xcodeproj/project.pbxproj +++ /dev/null @@ -1,387 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 995B45951AF7DCFB00F1C6EC /* book.epub in Resources */ = {isa = PBXBuildFile; fileRef = 995B45931AF7DCF800F1C6EC /* book.epub */; }; - 99EF28421AD58E1F007848FF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99EF28411AD58E1F007848FF /* AppDelegate.swift */; }; - 99EF28441AD58E1F007848FF /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99EF28431AD58E1F007848FF /* ViewController.swift */; }; - 99EF28471AD58E1F007848FF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 99EF28451AD58E1F007848FF /* Main.storyboard */; }; - 99EF28491AD58E1F007848FF /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 99EF28481AD58E1F007848FF /* Images.xcassets */; }; - 99EF284C1AD58E1F007848FF /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 99EF284A1AD58E1F007848FF /* LaunchScreen.xib */; }; - 99EF287A1AD5C5F0007848FF /* FolioReaderKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 99EF286E1AD58F68007848FF /* FolioReaderKit.framework */; }; - 99EF287C1AD5C64D007848FF /* FolioReaderKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 99EF286E1AD58F68007848FF /* FolioReaderKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 99EF286D1AD58F68007848FF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 99EF28681AD58F68007848FF /* FolioReaderKit.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 99EF28171AD588D6007848FF; - remoteInfo = FolioReaderKit; - }; - 99EF286F1AD58F68007848FF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 99EF28681AD58F68007848FF /* FolioReaderKit.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 99EF28221AD588D6007848FF; - remoteInfo = FolioReaderKitTests; - }; - 99EF28711AD58F9B007848FF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 99EF28681AD58F68007848FF /* FolioReaderKit.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 99EF28161AD588D6007848FF; - remoteInfo = FolioReaderKit; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 99EF287B1AD5C635007848FF /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 99EF287C1AD5C64D007848FF /* FolioReaderKit.framework in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 995B45931AF7DCF800F1C6EC /* book.epub */ = {isa = PBXFileReference; lastKnownFileType = file; path = book.epub; sourceTree = ""; }; - 99EF283C1AD58E1F007848FF /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 99EF28401AD58E1F007848FF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 99EF28411AD58E1F007848FF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 99EF28431AD58E1F007848FF /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - 99EF28461AD58E1F007848FF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 99EF28481AD58E1F007848FF /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - 99EF284B1AD58E1F007848FF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 99EF28681AD58F68007848FF /* FolioReaderKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = FolioReaderKit.xcodeproj; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 99EF28391AD58E1F007848FF /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 99EF287A1AD5C5F0007848FF /* FolioReaderKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 99EF28331AD58E1F007848FF = { - isa = PBXGroup; - children = ( - 99EF283E1AD58E1F007848FF /* Example */, - 99EF283D1AD58E1F007848FF /* Products */, - 99EF28681AD58F68007848FF /* FolioReaderKit.xcodeproj */, - ); - sourceTree = ""; - }; - 99EF283D1AD58E1F007848FF /* Products */ = { - isa = PBXGroup; - children = ( - 99EF283C1AD58E1F007848FF /* Example.app */, - ); - name = Products; - sourceTree = ""; - }; - 99EF283E1AD58E1F007848FF /* Example */ = { - isa = PBXGroup; - children = ( - 99EF28411AD58E1F007848FF /* AppDelegate.swift */, - 99EF28431AD58E1F007848FF /* ViewController.swift */, - 99EF28451AD58E1F007848FF /* Main.storyboard */, - 99EF28481AD58E1F007848FF /* Images.xcassets */, - 99EF284A1AD58E1F007848FF /* LaunchScreen.xib */, - 99EF283F1AD58E1F007848FF /* Supporting Files */, - ); - path = Example; - sourceTree = ""; - }; - 99EF283F1AD58E1F007848FF /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 995B45931AF7DCF800F1C6EC /* book.epub */, - 99EF28401AD58E1F007848FF /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 99EF28691AD58F68007848FF /* Products */ = { - isa = PBXGroup; - children = ( - 99EF286E1AD58F68007848FF /* FolioReaderKit.framework */, - 99EF28701AD58F68007848FF /* FolioReaderKitTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 99EF283B1AD58E1F007848FF /* Example */ = { - isa = PBXNativeTarget; - buildConfigurationList = 99EF285B1AD58E1F007848FF /* Build configuration list for PBXNativeTarget "Example" */; - buildPhases = ( - 99EF28381AD58E1F007848FF /* Sources */, - 99EF28391AD58E1F007848FF /* Frameworks */, - 99EF283A1AD58E1F007848FF /* Resources */, - 99EF287B1AD5C635007848FF /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - 99EF28721AD58F9B007848FF /* PBXTargetDependency */, - ); - name = Example; - productName = Example; - productReference = 99EF283C1AD58E1F007848FF /* Example.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 99EF28341AD58E1F007848FF /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0710; - LastUpgradeCheck = 0710; - ORGANIZATIONNAME = "Folio Reader"; - TargetAttributes = { - 99EF283B1AD58E1F007848FF = { - CreatedOnToolsVersion = 6.2; - }; - }; - }; - buildConfigurationList = 99EF28371AD58E1F007848FF /* Build configuration list for PBXProject "Example" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 99EF28331AD58E1F007848FF; - productRefGroup = 99EF283D1AD58E1F007848FF /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 99EF28691AD58F68007848FF /* Products */; - ProjectRef = 99EF28681AD58F68007848FF /* FolioReaderKit.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 99EF283B1AD58E1F007848FF /* Example */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 99EF286E1AD58F68007848FF /* FolioReaderKit.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = FolioReaderKit.framework; - remoteRef = 99EF286D1AD58F68007848FF /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 99EF28701AD58F68007848FF /* FolioReaderKitTests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = FolioReaderKitTests.xctest; - remoteRef = 99EF286F1AD58F68007848FF /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 99EF283A1AD58E1F007848FF /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 99EF28471AD58E1F007848FF /* Main.storyboard in Resources */, - 99EF284C1AD58E1F007848FF /* LaunchScreen.xib in Resources */, - 995B45951AF7DCFB00F1C6EC /* book.epub in Resources */, - 99EF28491AD58E1F007848FF /* Images.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 99EF28381AD58E1F007848FF /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 99EF28441AD58E1F007848FF /* ViewController.swift in Sources */, - 99EF28421AD58E1F007848FF /* AppDelegate.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 99EF28721AD58F9B007848FF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FolioReaderKit; - targetProxy = 99EF28711AD58F9B007848FF /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 99EF28451AD58E1F007848FF /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 99EF28461AD58E1F007848FF /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 99EF284A1AD58E1F007848FF /* LaunchScreen.xib */ = { - isa = PBXVariantGroup; - children = ( - 99EF284B1AD58E1F007848FF /* Base */, - ); - name = LaunchScreen.xib; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 99EF28591AD58E1F007848FF /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 99EF285A1AD58E1F007848FF /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 99EF285C1AD58E1F007848FF /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = Example/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.folioreader.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 99EF285D1AD58E1F007848FF /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = Example/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.folioreader.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 99EF28371AD58E1F007848FF /* Build configuration list for PBXProject "Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 99EF28591AD58E1F007848FF /* Debug */, - 99EF285A1AD58E1F007848FF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 99EF285B1AD58E1F007848FF /* Build configuration list for PBXNativeTarget "Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 99EF285C1AD58E1F007848FF /* Debug */, - 99EF285D1AD58E1F007848FF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 99EF28341AD58E1F007848FF /* Project object */; -} diff --git a/Example/Base.lproj/LaunchScreen.xib b/Example/Base.lproj/LaunchScreen.xib deleted file mode 100644 index aecf606ea..000000000 --- a/Example/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/Example.xcodeproj/project.pbxproj b/Example/Example.xcodeproj/project.pbxproj new file mode 100644 index 000000000..399929e6a --- /dev/null +++ b/Example/Example.xcodeproj/project.pbxproj @@ -0,0 +1,375 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 1A42C28D1C0E3882000F2137 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A42C28C1C0E3882000F2137 /* AppDelegate.swift */; }; + 1A42C28F1C0E3882000F2137 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A42C28E1C0E3882000F2137 /* ViewController.swift */; }; + 1A42C2921C0E3883000F2137 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1A42C2901C0E3883000F2137 /* Main.storyboard */; }; + 1A42C2941C0E3883000F2137 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1A42C2931C0E3883000F2137 /* Assets.xcassets */; }; + 1A42C29F1C0E39B3000F2137 /* book.epub in Resources */ = {isa = PBXBuildFile; fileRef = 1A42C29E1C0E39B3000F2137 /* book.epub */; }; + 1A42C2A21C0E3A8D000F2137 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1A42C2A01C0E3A8D000F2137 /* LaunchScreen.storyboard */; }; + F2DF7E310FE62B1F477F22A1 /* Pods.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37A980705BFFE71CCA6F9C31 /* Pods.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 03D9210FDD7C97E6298F7245 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; + 1A42C2891C0E3882000F2137 /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 1A42C28C1C0E3882000F2137 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 1A42C28E1C0E3882000F2137 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 1A42C2911C0E3883000F2137 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 1A42C2931C0E3883000F2137 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 1A42C2981C0E3883000F2137 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 1A42C29E1C0E39B3000F2137 /* book.epub */ = {isa = PBXFileReference; lastKnownFileType = file; path = book.epub; sourceTree = ""; }; + 1A42C2A11C0E3A8D000F2137 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 37A980705BFFE71CCA6F9C31 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8BCB174DF233A59B81E828D3 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1A42C2861C0E3882000F2137 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F2DF7E310FE62B1F477F22A1 /* Pods.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1A42C2801C0E3882000F2137 = { + isa = PBXGroup; + children = ( + 1A42C28B1C0E3882000F2137 /* Example */, + 1A42C28A1C0E3882000F2137 /* Products */, + FD06DBD55314F5656C9B1B47 /* Pods */, + D394FAB8B11D7C692E7BE00D /* Frameworks */, + ); + sourceTree = ""; + }; + 1A42C28A1C0E3882000F2137 /* Products */ = { + isa = PBXGroup; + children = ( + 1A42C2891C0E3882000F2137 /* Example.app */, + ); + name = Products; + sourceTree = ""; + }; + 1A42C28B1C0E3882000F2137 /* Example */ = { + isa = PBXGroup; + children = ( + 1A42C28C1C0E3882000F2137 /* AppDelegate.swift */, + 1A42C28E1C0E3882000F2137 /* ViewController.swift */, + 1A42C2901C0E3883000F2137 /* Main.storyboard */, + 1A42C2931C0E3883000F2137 /* Assets.xcassets */, + 1A42C2981C0E3883000F2137 /* Info.plist */, + 1A42C2A01C0E3A8D000F2137 /* LaunchScreen.storyboard */, + 1A42C29E1C0E39B3000F2137 /* book.epub */, + ); + path = Example; + sourceTree = ""; + }; + D394FAB8B11D7C692E7BE00D /* Frameworks */ = { + isa = PBXGroup; + children = ( + 37A980705BFFE71CCA6F9C31 /* Pods.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + FD06DBD55314F5656C9B1B47 /* Pods */ = { + isa = PBXGroup; + children = ( + 03D9210FDD7C97E6298F7245 /* Pods.debug.xcconfig */, + 8BCB174DF233A59B81E828D3 /* Pods.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1A42C2881C0E3882000F2137 /* Example */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1A42C29B1C0E3883000F2137 /* Build configuration list for PBXNativeTarget "Example" */; + buildPhases = ( + D73CA4A39E92155A6948FFC6 /* Check Pods Manifest.lock */, + 1A42C2851C0E3882000F2137 /* Sources */, + 1A42C2861C0E3882000F2137 /* Frameworks */, + 1A42C2871C0E3882000F2137 /* Resources */, + 6E798FB93F65253E182BC2D3 /* Embed Pods Frameworks */, + 16DB054A115C30C430C4BD2D /* Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Example; + productName = Example; + productReference = 1A42C2891C0E3882000F2137 /* Example.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 1A42C2811C0E3882000F2137 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0710; + LastUpgradeCheck = 0710; + ORGANIZATIONNAME = FolioReader; + TargetAttributes = { + 1A42C2881C0E3882000F2137 = { + CreatedOnToolsVersion = 7.1.1; + }; + }; + }; + buildConfigurationList = 1A42C2841C0E3882000F2137 /* Build configuration list for PBXProject "Example" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 1A42C2801C0E3882000F2137; + productRefGroup = 1A42C28A1C0E3882000F2137 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1A42C2881C0E3882000F2137 /* Example */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1A42C2871C0E3882000F2137 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1A42C2941C0E3883000F2137 /* Assets.xcassets in Resources */, + 1A42C2A21C0E3A8D000F2137 /* LaunchScreen.storyboard in Resources */, + 1A42C29F1C0E39B3000F2137 /* book.epub in Resources */, + 1A42C2921C0E3883000F2137 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 16DB054A115C30C430C4BD2D /* Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 6E798FB93F65253E182BC2D3 /* Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + D73CA4A39E92155A6948FFC6 /* Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1A42C2851C0E3882000F2137 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1A42C28F1C0E3882000F2137 /* ViewController.swift in Sources */, + 1A42C28D1C0E3882000F2137 /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 1A42C2901C0E3883000F2137 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 1A42C2911C0E3883000F2137 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 1A42C2A01C0E3A8D000F2137 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 1A42C2A11C0E3A8D000F2137 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 1A42C2991C0E3883000F2137 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.1; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 1A42C29A1C0E3883000F2137 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.1; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 1A42C29C1C0E3883000F2137 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 03D9210FDD7C97E6298F7245 /* Pods.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = Example/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.folioreader.Example; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 1A42C29D1C0E3883000F2137 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8BCB174DF233A59B81E828D3 /* Pods.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = Example/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.folioreader.Example; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1A42C2841C0E3882000F2137 /* Build configuration list for PBXProject "Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1A42C2991C0E3883000F2137 /* Debug */, + 1A42C29A1C0E3883000F2137 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1A42C29B1C0E3883000F2137 /* Build configuration list for PBXNativeTarget "Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1A42C29C1C0E3883000F2137 /* Debug */, + 1A42C29D1C0E3883000F2137 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 1A42C2811C0E3882000F2137 /* Project object */; +} diff --git a/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/Example.xcworkspace/contents.xcworkspacedata b/Example/Example.xcworkspace/contents.xcworkspacedata similarity index 77% rename from Example.xcworkspace/contents.xcworkspacedata rename to Example/Example.xcworkspace/contents.xcworkspacedata index a911d6984..a37cf193d 100644 --- a/Example.xcworkspace/contents.xcworkspacedata +++ b/Example/Example.xcworkspace/contents.xcworkspacedata @@ -2,9 +2,9 @@ + location = "group:Example.xcodeproj"> + location = "group:Pods/Pods.xcodeproj"> diff --git a/Example/AppDelegate.swift b/Example/Example/AppDelegate.swift similarity index 100% rename from Example/AppDelegate.swift rename to Example/Example/AppDelegate.swift diff --git a/Example/Images.xcassets/AppIcon.appiconset/Contents.json b/Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 54% rename from Example/Images.xcassets/AppIcon.appiconset/Contents.json rename to Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json index 118c98f74..36d2c80d8 100644 --- a/Example/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -29,6 +29,36 @@ "idiom" : "iphone", "size" : "60x60", "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" } ], "info" : { diff --git a/Example/Example/Base.lproj/LaunchScreen.storyboard b/Example/Example/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 000000000..585672139 --- /dev/null +++ b/Example/Example/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Base.lproj/Main.storyboard b/Example/Example/Base.lproj/Main.storyboard similarity index 100% rename from Example/Base.lproj/Main.storyboard rename to Example/Example/Base.lproj/Main.storyboard diff --git a/Example/Info.plist b/Example/Example/Info.plist similarity index 80% rename from Example/Info.plist rename to Example/Example/Info.plist index 6905cc67b..40c6215d9 100644 --- a/Example/Info.plist +++ b/Example/Example/Info.plist @@ -36,5 +36,12 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + diff --git a/Example/ViewController.swift b/Example/Example/ViewController.swift similarity index 90% rename from Example/ViewController.swift rename to Example/Example/ViewController.swift index f1caeb895..7605e4333 100644 --- a/Example/ViewController.swift +++ b/Example/Example/ViewController.swift @@ -25,9 +25,6 @@ class ViewController: UIViewController { // config.menuBackgroundColor = UIColor.lightGrayColor() let bookPath = NSBundle.mainBundle().pathForResource("book", ofType: "epub") - -// FolioReaderKit.presentReader(parentViewController: self, andConfig: config) FolioReader.presentReader(parentViewController: self, withEpubPath: bookPath!, andConfig: config) } -} - +} \ No newline at end of file diff --git a/Example/book.epub b/Example/Example/book.epub similarity index 100% rename from Example/book.epub rename to Example/Example/book.epub diff --git a/Example/Podfile b/Example/Podfile new file mode 100755 index 000000000..377d72cf0 --- /dev/null +++ b/Example/Podfile @@ -0,0 +1,6 @@ +platform :ios, '8.0' + +use_frameworks! +inhibit_all_warnings! + +pod 'FolioReaderKit', path: '../' diff --git a/Example/Podfile.lock b/Example/Podfile.lock new file mode 100644 index 000000000..d3366de29 --- /dev/null +++ b/Example/Podfile.lock @@ -0,0 +1,32 @@ +PODS: + - AEXML (2.0.1) + - FolioReaderKit (0.1.0): + - AEXML + - FontBlaster + - JSQWebViewController + - SSZipArchive + - UIMenuItem-CXAImageSupport + - ZFDragableModalTransition + - FontBlaster (2.0.2) + - JSQWebViewController (2.0.1) + - SSZipArchive (1.0.1) + - UIMenuItem-CXAImageSupport (0.0.1) + - ZFDragableModalTransition (0.5.1) + +DEPENDENCIES: + - FolioReaderKit (from `../`) + +EXTERNAL SOURCES: + FolioReaderKit: + :path: "../" + +SPEC CHECKSUMS: + AEXML: d6bb5b994521fcf3667ee8ccc1ed533f31b19218 + FolioReaderKit: 6428b0d09360b739c6a9f3f1ff694ffd10fdb486 + FontBlaster: 8165fef7f0556ba766836a2f5654a16cd0251e27 + JSQWebViewController: 2e416ae6604676510812bbda050d63a1488003a4 + SSZipArchive: 5f30a0af2cb3d48c0ff83b1e18029f7041ac3c38 + UIMenuItem-CXAImageSupport: 2945e2af4487414caad801ed8ff6ac8db274e986 + ZFDragableModalTransition: 048189eda437f91944ce6d5151618b8bf770196d + +COCOAPODS: 0.39.0 diff --git a/FolioReaderKit.podspec b/FolioReaderKit.podspec new file mode 100644 index 000000000..eb38f25e6 --- /dev/null +++ b/FolioReaderKit.podspec @@ -0,0 +1,42 @@ +Pod::Spec.new do |s| + s.name = "FolioReaderKit" + s.version = "0.1.0" + s.summary = "A Swift ePub reader and parser framework for iOS." + s.description = <<-DESC + Written in Swift. + The Best Open Source ePub Reader. + DESC + s.homepage = "https://github.com/FolioReader/FolioReaderKit" + # s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2" + s.license = 'GNU' + s.author = { "Heberti Almeida" => "hebertialmeida@gmail.com" } + s.source = { :git => "https://github.com/FolioReader/FolioReaderKit.git", :tag => s.version.to_s } + s.social_media_url = 'https://twitter.com/hebertialmeida' + + s.platform = :ios, '8.0' + s.requires_arc = true + + s.source_files = [ + 'Source/*.{h,swift}', + 'Source/**/*.swift', + 'Source/Vendor/**/*.{swift,h,m,map}', # Temporary + ] + s.resources = [ + 'Source/**/*.{js,css,xcdatamodeld}', + 'Source/Resources/Images/*.png', + 'Source/Resources/Fonts/**/*.{otf,ttf}' + ] + s.preserve_paths = 'Source/**/*.xcdatamodeld' + s.public_header_files = 'Source/*.h' + + s.libraries = "z" + s.frameworks = 'CoreData' + s.dependency 'SSZipArchive' + s.dependency 'UIMenuItem-CXAImageSupport' + s.dependency 'ZFDragableModalTransition' + s.dependency 'AEXML' + s.dependency 'FontBlaster' + s.dependency 'JSQWebViewController' + # s.dependency 'TGPControls' + # s.dependency 'SMSegmentView' +end diff --git a/FolioReaderKit.xcodeproj/project.pbxproj b/FolioReaderKit.xcodeproj/project.pbxproj deleted file mode 100644 index 4356c8ea1..000000000 --- a/FolioReaderKit.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1075 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 1A03BD811C07E32700E000E9 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A03BD801C07E32700E000E9 /* libz.tbd */; }; - 1A03BD971C07EF9000E000E9 /* Andada-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1A03BD841C07EF9000E000E9 /* Andada-Bold.otf */; }; - 1A03BD981C07EF9000E000E9 /* Andada-BoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1A03BD851C07EF9000E000E9 /* Andada-BoldItalic.otf */; }; - 1A03BD991C07EF9000E000E9 /* Andada-Italic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1A03BD861C07EF9000E000E9 /* Andada-Italic.otf */; }; - 1A03BD9A1C07EF9000E000E9 /* Andada-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1A03BD871C07EF9000E000E9 /* Andada-Regular.otf */; }; - 1A03BD9B1C07EF9000E000E9 /* Lato-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1A03BD891C07EF9000E000E9 /* Lato-Bold.ttf */; }; - 1A03BD9C1C07EF9000E000E9 /* Lato-BoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1A03BD8A1C07EF9000E000E9 /* Lato-BoldItalic.ttf */; }; - 1A03BD9D1C07EF9000E000E9 /* Lato-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1A03BD8B1C07EF9000E000E9 /* Lato-Italic.ttf */; }; - 1A03BD9E1C07EF9000E000E9 /* Lato-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1A03BD8C1C07EF9000E000E9 /* Lato-Regular.ttf */; }; - 1A03BD9F1C07EF9000E000E9 /* Lora-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1A03BD8E1C07EF9000E000E9 /* Lora-Bold.ttf */; }; - 1A03BDA01C07EF9000E000E9 /* Lora-BoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1A03BD8F1C07EF9000E000E9 /* Lora-BoldItalic.ttf */; }; - 1A03BDA11C07EF9000E000E9 /* Lora-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1A03BD901C07EF9000E000E9 /* Lora-Italic.ttf */; }; - 1A03BDA21C07EF9000E000E9 /* Lora-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1A03BD911C07EF9000E000E9 /* Lora-Regular.ttf */; }; - 1A03BDA31C07EF9000E000E9 /* Raleway-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1A03BD931C07EF9000E000E9 /* Raleway-Bold.ttf */; }; - 1A03BDA41C07EF9000E000E9 /* Raleway-BoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1A03BD941C07EF9000E000E9 /* Raleway-BoldItalic.ttf */; }; - 1A03BDA51C07EF9000E000E9 /* Raleway-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1A03BD951C07EF9000E000E9 /* Raleway-Italic.ttf */; }; - 1A03BDA61C07EF9000E000E9 /* Raleway-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1A03BD961C07EF9000E000E9 /* Raleway-Regular.ttf */; }; - 1A03BDA91C07F46000E000E9 /* FontBlaster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A03BDA81C07F46000E000E9 /* FontBlaster.swift */; }; - 1A2512521C0779D800604BB8 /* FolioReaderCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512051C0779D800604BB8 /* FolioReaderCenter.swift */; }; - 1A2512531C0779D800604BB8 /* FolioReaderConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512061C0779D800604BB8 /* FolioReaderConfig.swift */; }; - 1A2512541C0779D800604BB8 /* FolioReaderContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512071C0779D800604BB8 /* FolioReaderContainer.swift */; }; - 1A2512551C0779D800604BB8 /* FolioReaderFontsMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512081C0779D800604BB8 /* FolioReaderFontsMenu.swift */; }; - 1A2512561C0779D800604BB8 /* FolioReaderHighlightList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512091C0779D800604BB8 /* FolioReaderHighlightList.swift */; }; - 1A2512571C0779D800604BB8 /* FolioReaderKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A25120A1C0779D800604BB8 /* FolioReaderKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1A2512581C0779D800604BB8 /* FolioReaderKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A25120B1C0779D800604BB8 /* FolioReaderKit.swift */; }; - 1A2512591C0779D800604BB8 /* FolioReaderPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A25120C1C0779D800604BB8 /* FolioReaderPage.swift */; }; - 1A25125A1C0779D800604BB8 /* FolioReaderSidePanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A25120D1C0779D800604BB8 /* FolioReaderSidePanel.swift */; }; - 1A25125B1C0779D800604BB8 /* FolioReaderSidePanelCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A25120E1C0779D800604BB8 /* FolioReaderSidePanelCell.swift */; }; - 1A25125C1C0779D800604BB8 /* FRBook.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A25120F1C0779D800604BB8 /* FRBook.swift */; }; - 1A25125D1C0779D800604BB8 /* FREpubParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512101C0779D800604BB8 /* FREpubParser.swift */; }; - 1A25125E1C0779D800604BB8 /* FRHighlight.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512111C0779D800604BB8 /* FRHighlight.swift */; }; - 1A25125F1C0779D800604BB8 /* FRMediaType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512121C0779D800604BB8 /* FRMediaType.swift */; }; - 1A2512601C0779D800604BB8 /* FRMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512131C0779D800604BB8 /* FRMetadata.swift */; }; - 1A2512611C0779D800604BB8 /* FolioReaderPageIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512141C0779D800604BB8 /* FolioReaderPageIndicator.swift */; }; - 1A2512621C0779D800604BB8 /* FRResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512151C0779D800604BB8 /* FRResource.swift */; }; - 1A2512631C0779D800604BB8 /* FRResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512161C0779D800604BB8 /* FRResources.swift */; }; - 1A2512641C0779D800604BB8 /* FRSpine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512171C0779D800604BB8 /* FRSpine.swift */; }; - 1A2512651C0779D800604BB8 /* FRTocReference.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512181C0779D800604BB8 /* FRTocReference.swift */; }; - 1A2512661C0779D800604BB8 /* Bridge.js in Resources */ = {isa = PBXBuildFile; fileRef = 1A25121A1C0779D800604BB8 /* Bridge.js */; }; - 1A2512671C0779D800604BB8 /* blue-marker.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25121C1C0779D800604BB8 /* blue-marker.png */; }; - 1A2512681C0779D800604BB8 /* blue-marker@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25121D1C0779D800604BB8 /* blue-marker@2x.png */; }; - 1A2512691C0779D800604BB8 /* btn-navbar-menu.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25121E1C0779D800604BB8 /* btn-navbar-menu.png */; }; - 1A25126A1C0779D800604BB8 /* btn-navbar-menu@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25121F1C0779D800604BB8 /* btn-navbar-menu@2x.png */; }; - 1A25126B1C0779D800604BB8 /* btn-navbar-menu@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512201C0779D800604BB8 /* btn-navbar-menu@3x.png */; }; - 1A25126C1C0779D800604BB8 /* btn-navbar-share.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512211C0779D800604BB8 /* btn-navbar-share.png */; }; - 1A25126D1C0779D800604BB8 /* btn-navbar-share@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512221C0779D800604BB8 /* btn-navbar-share@2x.png */; }; - 1A25126E1C0779D800604BB8 /* btn-navbar-share@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512231C0779D800604BB8 /* btn-navbar-share@3x.png */; }; - 1A25126F1C0779D800604BB8 /* colors-marker.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512241C0779D800604BB8 /* colors-marker.png */; }; - 1A2512701C0779D800604BB8 /* colors-marker@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512251C0779D800604BB8 /* colors-marker@2x.png */; }; - 1A2512711C0779D800604BB8 /* colors-marker@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512261C0779D800604BB8 /* colors-marker@3x.png */; }; - 1A2512721C0779D800604BB8 /* green-marker.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512271C0779D800604BB8 /* green-marker.png */; }; - 1A2512731C0779D800604BB8 /* green-marker@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512281C0779D800604BB8 /* green-marker@2x.png */; }; - 1A2512741C0779D800604BB8 /* icon-close.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512291C0779D800604BB8 /* icon-close.png */; }; - 1A2512751C0779D800604BB8 /* icon-close@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25122A1C0779D800604BB8 /* icon-close@2x.png */; }; - 1A2512761C0779D800604BB8 /* icon-close@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25122B1C0779D800604BB8 /* icon-close@3x.png */; }; - 1A2512771C0779D800604BB8 /* icon-font-big.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25122C1C0779D800604BB8 /* icon-font-big.png */; }; - 1A2512781C0779D800604BB8 /* icon-font-big@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25122D1C0779D800604BB8 /* icon-font-big@2x.png */; }; - 1A2512791C0779D800604BB8 /* icon-font-big@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25122E1C0779D800604BB8 /* icon-font-big@3x.png */; }; - 1A25127A1C0779D800604BB8 /* icon-font-small.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25122F1C0779D800604BB8 /* icon-font-small.png */; }; - 1A25127B1C0779D800604BB8 /* icon-font-small@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512301C0779D800604BB8 /* icon-font-small@2x.png */; }; - 1A25127C1C0779D800604BB8 /* icon-font-small@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512311C0779D800604BB8 /* icon-font-small@3x.png */; }; - 1A25127D1C0779D800604BB8 /* icon-font.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512321C0779D800604BB8 /* icon-font.png */; }; - 1A25127E1C0779D800604BB8 /* icon-font@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512331C0779D800604BB8 /* icon-font@2x.png */; }; - 1A25127F1C0779D800604BB8 /* icon-font@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512341C0779D800604BB8 /* icon-font@3x.png */; }; - 1A2512801C0779D800604BB8 /* icon-highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512351C0779D800604BB8 /* icon-highlight.png */; }; - 1A2512811C0779D800604BB8 /* icon-highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512361C0779D800604BB8 /* icon-highlight@2x.png */; }; - 1A2512821C0779D800604BB8 /* icon-highlight@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512371C0779D800604BB8 /* icon-highlight@3x.png */; }; - 1A2512831C0779D800604BB8 /* icon-moon.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512381C0779D800604BB8 /* icon-moon.png */; }; - 1A2512841C0779D800604BB8 /* icon-moon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512391C0779D800604BB8 /* icon-moon@2x.png */; }; - 1A2512851C0779D800604BB8 /* icon-moon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25123A1C0779D800604BB8 /* icon-moon@3x.png */; }; - 1A2512861C0779D800604BB8 /* icon-search.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25123B1C0779D800604BB8 /* icon-search.png */; }; - 1A2512871C0779D800604BB8 /* icon-search@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25123C1C0779D800604BB8 /* icon-search@2x.png */; }; - 1A2512881C0779D800604BB8 /* icon-search@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25123D1C0779D800604BB8 /* icon-search@3x.png */; }; - 1A2512891C0779D800604BB8 /* icon-sun.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25123E1C0779D800604BB8 /* icon-sun.png */; }; - 1A25128A1C0779D800604BB8 /* icon-sun@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25123F1C0779D800604BB8 /* icon-sun@2x.png */; }; - 1A25128B1C0779D800604BB8 /* icon-sun@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512401C0779D800604BB8 /* icon-sun@3x.png */; }; - 1A25128C1C0779D800604BB8 /* no-marker.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512411C0779D800604BB8 /* no-marker.png */; }; - 1A25128D1C0779D800604BB8 /* no-marker@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512421C0779D800604BB8 /* no-marker@2x.png */; }; - 1A25128E1C0779D800604BB8 /* no-marker@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512431C0779D800604BB8 /* no-marker@3x.png */; }; - 1A25128F1C0779D800604BB8 /* pink-marker.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512441C0779D800604BB8 /* pink-marker.png */; }; - 1A2512901C0779D800604BB8 /* pink-marker@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512451C0779D800604BB8 /* pink-marker@2x.png */; }; - 1A2512911C0779D800604BB8 /* share-marker.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512461C0779D800604BB8 /* share-marker.png */; }; - 1A2512921C0779D800604BB8 /* share-marker@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512471C0779D800604BB8 /* share-marker@2x.png */; }; - 1A2512931C0779D800604BB8 /* share-marker@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512481C0779D800604BB8 /* share-marker@3x.png */; }; - 1A2512941C0779D800604BB8 /* underline-marker.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A2512491C0779D800604BB8 /* underline-marker.png */; }; - 1A2512951C0779D800604BB8 /* underline-marker@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25124A1C0779D800604BB8 /* underline-marker@2x.png */; }; - 1A2512961C0779D800604BB8 /* yellow-marker.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25124B1C0779D800604BB8 /* yellow-marker.png */; }; - 1A2512971C0779D800604BB8 /* yellow-marker@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A25124C1C0779D800604BB8 /* yellow-marker@2x.png */; }; - 1A2512981C0779D800604BB8 /* Style.css in Resources */ = {isa = PBXBuildFile; fileRef = 1A25124D1C0779D800604BB8 /* Style.css */; }; - 1A2512991C0779D800604BB8 /* SMSegment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512501C0779D800604BB8 /* SMSegment.swift */; }; - 1A25129A1C0779D800604BB8 /* SMSegmentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512511C0779D800604BB8 /* SMSegmentView.swift */; }; - 1A2512B31C07828000604BB8 /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512B21C07828000604BB8 /* WebViewController.swift */; }; - 1A2512CD1C07835600604BB8 /* crypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2512B61C07835600604BB8 /* crypt.h */; }; - 1A2512CE1C07835600604BB8 /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512B71C07835600604BB8 /* ioapi.c */; }; - 1A2512CF1C07835600604BB8 /* ioapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2512B81C07835600604BB8 /* ioapi.h */; }; - 1A2512D01C07835600604BB8 /* mztools.c in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512B91C07835600604BB8 /* mztools.c */; }; - 1A2512D11C07835600604BB8 /* mztools.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2512BA1C07835600604BB8 /* mztools.h */; }; - 1A2512D21C07835600604BB8 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512BB1C07835600604BB8 /* unzip.c */; }; - 1A2512D31C07835600604BB8 /* unzip.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2512BC1C07835600604BB8 /* unzip.h */; }; - 1A2512D41C07835600604BB8 /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512BD1C07835600604BB8 /* zip.c */; }; - 1A2512D51C07835600604BB8 /* zip.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2512BE1C07835600604BB8 /* zip.h */; }; - 1A2512D61C07835600604BB8 /* SSZipArchive.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2512C01C07835600604BB8 /* SSZipArchive.h */; }; - 1A2512D71C07835600604BB8 /* SSZipArchive.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512C11C07835600604BB8 /* SSZipArchive.m */; }; - 1A2512D81C07835600604BB8 /* TGPCamelLabels.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2512C41C07835600604BB8 /* TGPCamelLabels.h */; }; - 1A2512D91C07835600604BB8 /* TGPCamelLabels.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512C51C07835600604BB8 /* TGPCamelLabels.m */; }; - 1A2512DA1C07835600604BB8 /* TGPCamelLabels7.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2512C61C07835600604BB8 /* TGPCamelLabels7.h */; }; - 1A2512DB1C07835600604BB8 /* TGPCamelLabels7.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512C71C07835600604BB8 /* TGPCamelLabels7.m */; }; - 1A2512DC1C07835600604BB8 /* TGPControlsTicksProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2512C81C07835600604BB8 /* TGPControlsTicksProtocol.h */; }; - 1A2512DD1C07835600604BB8 /* TGPDiscreteSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2512C91C07835600604BB8 /* TGPDiscreteSlider.h */; }; - 1A2512DE1C07835600604BB8 /* TGPDiscreteSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512CA1C07835600604BB8 /* TGPDiscreteSlider.m */; }; - 1A2512DF1C07835600604BB8 /* TGPDiscreteSlider7.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2512CB1C07835600604BB8 /* TGPDiscreteSlider7.h */; }; - 1A2512E01C07835600604BB8 /* TGPDiscreteSlider7.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512CC1C07835600604BB8 /* TGPDiscreteSlider7.m */; }; - 1A2512E41C0783A900604BB8 /* UIMenuItem+CXAImageSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2512E21C0783A900604BB8 /* UIMenuItem+CXAImageSupport.h */; }; - 1A2512E51C0783A900604BB8 /* UIMenuItem+CXAImageSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512E31C0783A900604BB8 /* UIMenuItem+CXAImageSupport.m */; }; - 1A2512EB1C07849600604BB8 /* ZFModalTransitionAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2512E91C07849600604BB8 /* ZFModalTransitionAnimator.h */; }; - 1A2512EC1C07849600604BB8 /* ZFModalTransitionAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512EA1C07849600604BB8 /* ZFModalTransitionAnimator.m */; }; - 1A2512EF1C07891200604BB8 /* FolioReaderSharingProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512EE1C07891200604BB8 /* FolioReaderSharingProvider.swift */; }; - 1A2512F21C078ABE00604BB8 /* AEXML.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512F11C078ABE00604BB8 /* AEXML.swift */; }; - 1A2512F71C07907300604BB8 /* FolioReader.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512F51C07907300604BB8 /* FolioReader.xcdatamodeld */; }; - 1A2512F91C0790FA00604BB8 /* Highlight.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512F81C0790FA00604BB8 /* Highlight.swift */; }; - 1A2512FB1C07938A00604BB8 /* CoreDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2512FA1C07938900604BB8 /* CoreDataManager.swift */; }; - 99EF28231AD588D6007848FF /* FolioReaderKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 99EF28171AD588D6007848FF /* FolioReaderKit.framework */; }; - 99EF282A1AD588D6007848FF /* FolioReaderKitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99EF28291AD588D6007848FF /* FolioReaderKitTests.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 99EF28241AD588D6007848FF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 99EF280E1AD588D6007848FF /* Project object */; - proxyType = 1; - remoteGlobalIDString = 99EF28161AD588D6007848FF; - remoteInfo = FolioReaderKit; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 1A03BD801C07E32700E000E9 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; - 1A03BD841C07EF9000E000E9 /* Andada-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Andada-Bold.otf"; sourceTree = ""; }; - 1A03BD851C07EF9000E000E9 /* Andada-BoldItalic.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Andada-BoldItalic.otf"; sourceTree = ""; }; - 1A03BD861C07EF9000E000E9 /* Andada-Italic.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Andada-Italic.otf"; sourceTree = ""; }; - 1A03BD871C07EF9000E000E9 /* Andada-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Andada-Regular.otf"; sourceTree = ""; }; - 1A03BD891C07EF9000E000E9 /* Lato-Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Lato-Bold.ttf"; sourceTree = ""; }; - 1A03BD8A1C07EF9000E000E9 /* Lato-BoldItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Lato-BoldItalic.ttf"; sourceTree = ""; }; - 1A03BD8B1C07EF9000E000E9 /* Lato-Italic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Lato-Italic.ttf"; sourceTree = ""; }; - 1A03BD8C1C07EF9000E000E9 /* Lato-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Lato-Regular.ttf"; sourceTree = ""; }; - 1A03BD8E1C07EF9000E000E9 /* Lora-Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Lora-Bold.ttf"; sourceTree = ""; }; - 1A03BD8F1C07EF9000E000E9 /* Lora-BoldItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Lora-BoldItalic.ttf"; sourceTree = ""; }; - 1A03BD901C07EF9000E000E9 /* Lora-Italic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Lora-Italic.ttf"; sourceTree = ""; }; - 1A03BD911C07EF9000E000E9 /* Lora-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Lora-Regular.ttf"; sourceTree = ""; }; - 1A03BD931C07EF9000E000E9 /* Raleway-Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-Bold.ttf"; sourceTree = ""; }; - 1A03BD941C07EF9000E000E9 /* Raleway-BoldItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-BoldItalic.ttf"; sourceTree = ""; }; - 1A03BD951C07EF9000E000E9 /* Raleway-Italic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-Italic.ttf"; sourceTree = ""; }; - 1A03BD961C07EF9000E000E9 /* Raleway-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-Regular.ttf"; sourceTree = ""; }; - 1A03BDA81C07F46000E000E9 /* FontBlaster.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FontBlaster.swift; sourceTree = ""; }; - 1A2512051C0779D800604BB8 /* FolioReaderCenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FolioReaderCenter.swift; sourceTree = ""; }; - 1A2512061C0779D800604BB8 /* FolioReaderConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FolioReaderConfig.swift; sourceTree = ""; }; - 1A2512071C0779D800604BB8 /* FolioReaderContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FolioReaderContainer.swift; sourceTree = ""; }; - 1A2512081C0779D800604BB8 /* FolioReaderFontsMenu.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FolioReaderFontsMenu.swift; sourceTree = ""; }; - 1A2512091C0779D800604BB8 /* FolioReaderHighlightList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FolioReaderHighlightList.swift; sourceTree = ""; }; - 1A25120A1C0779D800604BB8 /* FolioReaderKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FolioReaderKit.h; sourceTree = ""; }; - 1A25120B1C0779D800604BB8 /* FolioReaderKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FolioReaderKit.swift; sourceTree = ""; }; - 1A25120C1C0779D800604BB8 /* FolioReaderPage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FolioReaderPage.swift; sourceTree = ""; }; - 1A25120D1C0779D800604BB8 /* FolioReaderSidePanel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FolioReaderSidePanel.swift; sourceTree = ""; }; - 1A25120E1C0779D800604BB8 /* FolioReaderSidePanelCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FolioReaderSidePanelCell.swift; sourceTree = ""; }; - 1A25120F1C0779D800604BB8 /* FRBook.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FRBook.swift; sourceTree = ""; }; - 1A2512101C0779D800604BB8 /* FREpubParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FREpubParser.swift; sourceTree = ""; }; - 1A2512111C0779D800604BB8 /* FRHighlight.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FRHighlight.swift; sourceTree = ""; }; - 1A2512121C0779D800604BB8 /* FRMediaType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FRMediaType.swift; sourceTree = ""; }; - 1A2512131C0779D800604BB8 /* FRMetadata.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FRMetadata.swift; sourceTree = ""; }; - 1A2512141C0779D800604BB8 /* FolioReaderPageIndicator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FolioReaderPageIndicator.swift; sourceTree = ""; }; - 1A2512151C0779D800604BB8 /* FRResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FRResource.swift; sourceTree = ""; }; - 1A2512161C0779D800604BB8 /* FRResources.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FRResources.swift; sourceTree = ""; }; - 1A2512171C0779D800604BB8 /* FRSpine.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FRSpine.swift; sourceTree = ""; }; - 1A2512181C0779D800604BB8 /* FRTocReference.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FRTocReference.swift; sourceTree = ""; }; - 1A25121A1C0779D800604BB8 /* Bridge.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = Bridge.js; sourceTree = ""; }; - 1A25121C1C0779D800604BB8 /* blue-marker.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "blue-marker.png"; sourceTree = ""; }; - 1A25121D1C0779D800604BB8 /* blue-marker@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "blue-marker@2x.png"; sourceTree = ""; }; - 1A25121E1C0779D800604BB8 /* btn-navbar-menu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "btn-navbar-menu.png"; sourceTree = ""; }; - 1A25121F1C0779D800604BB8 /* btn-navbar-menu@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "btn-navbar-menu@2x.png"; sourceTree = ""; }; - 1A2512201C0779D800604BB8 /* btn-navbar-menu@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "btn-navbar-menu@3x.png"; sourceTree = ""; }; - 1A2512211C0779D800604BB8 /* btn-navbar-share.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "btn-navbar-share.png"; sourceTree = ""; }; - 1A2512221C0779D800604BB8 /* btn-navbar-share@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "btn-navbar-share@2x.png"; sourceTree = ""; }; - 1A2512231C0779D800604BB8 /* btn-navbar-share@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "btn-navbar-share@3x.png"; sourceTree = ""; }; - 1A2512241C0779D800604BB8 /* colors-marker.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "colors-marker.png"; sourceTree = ""; }; - 1A2512251C0779D800604BB8 /* colors-marker@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "colors-marker@2x.png"; sourceTree = ""; }; - 1A2512261C0779D800604BB8 /* colors-marker@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "colors-marker@3x.png"; sourceTree = ""; }; - 1A2512271C0779D800604BB8 /* green-marker.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "green-marker.png"; sourceTree = ""; }; - 1A2512281C0779D800604BB8 /* green-marker@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "green-marker@2x.png"; sourceTree = ""; }; - 1A2512291C0779D800604BB8 /* icon-close.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-close.png"; sourceTree = ""; }; - 1A25122A1C0779D800604BB8 /* icon-close@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-close@2x.png"; sourceTree = ""; }; - 1A25122B1C0779D800604BB8 /* icon-close@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-close@3x.png"; sourceTree = ""; }; - 1A25122C1C0779D800604BB8 /* icon-font-big.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-font-big.png"; sourceTree = ""; }; - 1A25122D1C0779D800604BB8 /* icon-font-big@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-font-big@2x.png"; sourceTree = ""; }; - 1A25122E1C0779D800604BB8 /* icon-font-big@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-font-big@3x.png"; sourceTree = ""; }; - 1A25122F1C0779D800604BB8 /* icon-font-small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-font-small.png"; sourceTree = ""; }; - 1A2512301C0779D800604BB8 /* icon-font-small@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-font-small@2x.png"; sourceTree = ""; }; - 1A2512311C0779D800604BB8 /* icon-font-small@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-font-small@3x.png"; sourceTree = ""; }; - 1A2512321C0779D800604BB8 /* icon-font.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-font.png"; sourceTree = ""; }; - 1A2512331C0779D800604BB8 /* icon-font@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-font@2x.png"; sourceTree = ""; }; - 1A2512341C0779D800604BB8 /* icon-font@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-font@3x.png"; sourceTree = ""; }; - 1A2512351C0779D800604BB8 /* icon-highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-highlight.png"; sourceTree = ""; }; - 1A2512361C0779D800604BB8 /* icon-highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-highlight@2x.png"; sourceTree = ""; }; - 1A2512371C0779D800604BB8 /* icon-highlight@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-highlight@3x.png"; sourceTree = ""; }; - 1A2512381C0779D800604BB8 /* icon-moon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-moon.png"; sourceTree = ""; }; - 1A2512391C0779D800604BB8 /* icon-moon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-moon@2x.png"; sourceTree = ""; }; - 1A25123A1C0779D800604BB8 /* icon-moon@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-moon@3x.png"; sourceTree = ""; }; - 1A25123B1C0779D800604BB8 /* icon-search.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-search.png"; sourceTree = ""; }; - 1A25123C1C0779D800604BB8 /* icon-search@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-search@2x.png"; sourceTree = ""; }; - 1A25123D1C0779D800604BB8 /* icon-search@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-search@3x.png"; sourceTree = ""; }; - 1A25123E1C0779D800604BB8 /* icon-sun.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-sun.png"; sourceTree = ""; }; - 1A25123F1C0779D800604BB8 /* icon-sun@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-sun@2x.png"; sourceTree = ""; }; - 1A2512401C0779D800604BB8 /* icon-sun@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-sun@3x.png"; sourceTree = ""; }; - 1A2512411C0779D800604BB8 /* no-marker.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "no-marker.png"; sourceTree = ""; }; - 1A2512421C0779D800604BB8 /* no-marker@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "no-marker@2x.png"; sourceTree = ""; }; - 1A2512431C0779D800604BB8 /* no-marker@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "no-marker@3x.png"; sourceTree = ""; }; - 1A2512441C0779D800604BB8 /* pink-marker.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "pink-marker.png"; sourceTree = ""; }; - 1A2512451C0779D800604BB8 /* pink-marker@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "pink-marker@2x.png"; sourceTree = ""; }; - 1A2512461C0779D800604BB8 /* share-marker.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "share-marker.png"; sourceTree = ""; }; - 1A2512471C0779D800604BB8 /* share-marker@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "share-marker@2x.png"; sourceTree = ""; }; - 1A2512481C0779D800604BB8 /* share-marker@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "share-marker@3x.png"; sourceTree = ""; }; - 1A2512491C0779D800604BB8 /* underline-marker.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "underline-marker.png"; sourceTree = ""; }; - 1A25124A1C0779D800604BB8 /* underline-marker@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "underline-marker@2x.png"; sourceTree = ""; }; - 1A25124B1C0779D800604BB8 /* yellow-marker.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "yellow-marker.png"; sourceTree = ""; }; - 1A25124C1C0779D800604BB8 /* yellow-marker@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "yellow-marker@2x.png"; sourceTree = ""; }; - 1A25124D1C0779D800604BB8 /* Style.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = Style.css; sourceTree = ""; }; - 1A2512501C0779D800604BB8 /* SMSegment.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SMSegment.swift; sourceTree = ""; }; - 1A2512511C0779D800604BB8 /* SMSegmentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SMSegmentView.swift; sourceTree = ""; }; - 1A2512B21C07828000604BB8 /* WebViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebViewController.swift; sourceTree = ""; }; - 1A2512B61C07835600604BB8 /* crypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = ""; }; - 1A2512B71C07835600604BB8 /* ioapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = ""; }; - 1A2512B81C07835600604BB8 /* ioapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; - 1A2512B91C07835600604BB8 /* mztools.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mztools.c; sourceTree = ""; }; - 1A2512BA1C07835600604BB8 /* mztools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mztools.h; sourceTree = ""; }; - 1A2512BB1C07835600604BB8 /* unzip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; - 1A2512BC1C07835600604BB8 /* unzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; - 1A2512BD1C07835600604BB8 /* zip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = ""; }; - 1A2512BE1C07835600604BB8 /* zip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; - 1A2512C01C07835600604BB8 /* SSZipArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SSZipArchive.h; sourceTree = ""; }; - 1A2512C11C07835600604BB8 /* SSZipArchive.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SSZipArchive.m; sourceTree = ""; }; - 1A2512C41C07835600604BB8 /* TGPCamelLabels.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGPCamelLabels.h; sourceTree = ""; }; - 1A2512C51C07835600604BB8 /* TGPCamelLabels.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGPCamelLabels.m; sourceTree = ""; }; - 1A2512C61C07835600604BB8 /* TGPCamelLabels7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGPCamelLabels7.h; sourceTree = ""; }; - 1A2512C71C07835600604BB8 /* TGPCamelLabels7.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGPCamelLabels7.m; sourceTree = ""; }; - 1A2512C81C07835600604BB8 /* TGPControlsTicksProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGPControlsTicksProtocol.h; sourceTree = ""; }; - 1A2512C91C07835600604BB8 /* TGPDiscreteSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGPDiscreteSlider.h; sourceTree = ""; }; - 1A2512CA1C07835600604BB8 /* TGPDiscreteSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGPDiscreteSlider.m; sourceTree = ""; }; - 1A2512CB1C07835600604BB8 /* TGPDiscreteSlider7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGPDiscreteSlider7.h; sourceTree = ""; }; - 1A2512CC1C07835600604BB8 /* TGPDiscreteSlider7.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGPDiscreteSlider7.m; sourceTree = ""; }; - 1A2512E21C0783A900604BB8 /* UIMenuItem+CXAImageSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIMenuItem+CXAImageSupport.h"; sourceTree = ""; }; - 1A2512E31C0783A900604BB8 /* UIMenuItem+CXAImageSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIMenuItem+CXAImageSupport.m"; sourceTree = ""; }; - 1A2512E91C07849600604BB8 /* ZFModalTransitionAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZFModalTransitionAnimator.h; sourceTree = ""; }; - 1A2512EA1C07849600604BB8 /* ZFModalTransitionAnimator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZFModalTransitionAnimator.m; sourceTree = ""; }; - 1A2512EE1C07891200604BB8 /* FolioReaderSharingProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FolioReaderSharingProvider.swift; sourceTree = ""; }; - 1A2512F11C078ABE00604BB8 /* AEXML.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AEXML.swift; sourceTree = ""; }; - 1A2512F61C07907300604BB8 /* FolioReader.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = FolioReader.xcdatamodel; sourceTree = ""; }; - 1A2512F81C0790FA00604BB8 /* Highlight.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Highlight.swift; sourceTree = ""; }; - 1A2512FA1C07938900604BB8 /* CoreDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataManager.swift; sourceTree = ""; }; - 99EF28171AD588D6007848FF /* FolioReaderKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FolioReaderKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 99EF281B1AD588D6007848FF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 99EF28221AD588D6007848FF /* FolioReaderKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FolioReaderKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 99EF28281AD588D6007848FF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 99EF28291AD588D6007848FF /* FolioReaderKitTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FolioReaderKitTests.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 99EF28131AD588D6007848FF /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1A03BD811C07E32700E000E9 /* libz.tbd in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 99EF281F1AD588D6007848FF /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 99EF28231AD588D6007848FF /* FolioReaderKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 1A03BD821C07EF9000E000E9 /* Fonts */ = { - isa = PBXGroup; - children = ( - 1A03BD831C07EF9000E000E9 /* Andada */, - 1A03BD881C07EF9000E000E9 /* Lato */, - 1A03BD8D1C07EF9000E000E9 /* Lora */, - 1A03BD921C07EF9000E000E9 /* Raleway */, - ); - path = Fonts; - sourceTree = ""; - }; - 1A03BD831C07EF9000E000E9 /* Andada */ = { - isa = PBXGroup; - children = ( - 1A03BD841C07EF9000E000E9 /* Andada-Bold.otf */, - 1A03BD851C07EF9000E000E9 /* Andada-BoldItalic.otf */, - 1A03BD861C07EF9000E000E9 /* Andada-Italic.otf */, - 1A03BD871C07EF9000E000E9 /* Andada-Regular.otf */, - ); - path = Andada; - sourceTree = ""; - }; - 1A03BD881C07EF9000E000E9 /* Lato */ = { - isa = PBXGroup; - children = ( - 1A03BD891C07EF9000E000E9 /* Lato-Bold.ttf */, - 1A03BD8A1C07EF9000E000E9 /* Lato-BoldItalic.ttf */, - 1A03BD8B1C07EF9000E000E9 /* Lato-Italic.ttf */, - 1A03BD8C1C07EF9000E000E9 /* Lato-Regular.ttf */, - ); - path = Lato; - sourceTree = ""; - }; - 1A03BD8D1C07EF9000E000E9 /* Lora */ = { - isa = PBXGroup; - children = ( - 1A03BD8E1C07EF9000E000E9 /* Lora-Bold.ttf */, - 1A03BD8F1C07EF9000E000E9 /* Lora-BoldItalic.ttf */, - 1A03BD901C07EF9000E000E9 /* Lora-Italic.ttf */, - 1A03BD911C07EF9000E000E9 /* Lora-Regular.ttf */, - ); - path = Lora; - sourceTree = ""; - }; - 1A03BD921C07EF9000E000E9 /* Raleway */ = { - isa = PBXGroup; - children = ( - 1A03BD931C07EF9000E000E9 /* Raleway-Bold.ttf */, - 1A03BD941C07EF9000E000E9 /* Raleway-BoldItalic.ttf */, - 1A03BD951C07EF9000E000E9 /* Raleway-Italic.ttf */, - 1A03BD961C07EF9000E000E9 /* Raleway-Regular.ttf */, - ); - path = Raleway; - sourceTree = ""; - }; - 1A03BDA71C07F46000E000E9 /* FontBlaster */ = { - isa = PBXGroup; - children = ( - 1A03BDA81C07F46000E000E9 /* FontBlaster.swift */, - ); - name = FontBlaster; - path = FolioReaderKit/Vendor/FontBlaster; - sourceTree = SOURCE_ROOT; - }; - 1A0AAA421C08BC9C00C3BCA1 /* Model */ = { - isa = PBXGroup; - children = ( - 1A2512F51C07907300604BB8 /* FolioReader.xcdatamodeld */, - 1A2512FA1C07938900604BB8 /* CoreDataManager.swift */, - 1A2512F81C0790FA00604BB8 /* Highlight.swift */, - ); - name = Model; - sourceTree = ""; - }; - 1A2512191C0779D800604BB8 /* Resources */ = { - isa = PBXGroup; - children = ( - 1A25121A1C0779D800604BB8 /* Bridge.js */, - 1A25124D1C0779D800604BB8 /* Style.css */, - 1A03BD821C07EF9000E000E9 /* Fonts */, - 1A25121B1C0779D800604BB8 /* Images */, - ); - path = Resources; - sourceTree = ""; - }; - 1A25121B1C0779D800604BB8 /* Images */ = { - isa = PBXGroup; - children = ( - 1A25121C1C0779D800604BB8 /* blue-marker.png */, - 1A25121D1C0779D800604BB8 /* blue-marker@2x.png */, - 1A25121E1C0779D800604BB8 /* btn-navbar-menu.png */, - 1A25121F1C0779D800604BB8 /* btn-navbar-menu@2x.png */, - 1A2512201C0779D800604BB8 /* btn-navbar-menu@3x.png */, - 1A2512211C0779D800604BB8 /* btn-navbar-share.png */, - 1A2512221C0779D800604BB8 /* btn-navbar-share@2x.png */, - 1A2512231C0779D800604BB8 /* btn-navbar-share@3x.png */, - 1A2512241C0779D800604BB8 /* colors-marker.png */, - 1A2512251C0779D800604BB8 /* colors-marker@2x.png */, - 1A2512261C0779D800604BB8 /* colors-marker@3x.png */, - 1A2512271C0779D800604BB8 /* green-marker.png */, - 1A2512281C0779D800604BB8 /* green-marker@2x.png */, - 1A2512291C0779D800604BB8 /* icon-close.png */, - 1A25122A1C0779D800604BB8 /* icon-close@2x.png */, - 1A25122B1C0779D800604BB8 /* icon-close@3x.png */, - 1A25122C1C0779D800604BB8 /* icon-font-big.png */, - 1A25122D1C0779D800604BB8 /* icon-font-big@2x.png */, - 1A25122E1C0779D800604BB8 /* icon-font-big@3x.png */, - 1A25122F1C0779D800604BB8 /* icon-font-small.png */, - 1A2512301C0779D800604BB8 /* icon-font-small@2x.png */, - 1A2512311C0779D800604BB8 /* icon-font-small@3x.png */, - 1A2512321C0779D800604BB8 /* icon-font.png */, - 1A2512331C0779D800604BB8 /* icon-font@2x.png */, - 1A2512341C0779D800604BB8 /* icon-font@3x.png */, - 1A2512351C0779D800604BB8 /* icon-highlight.png */, - 1A2512361C0779D800604BB8 /* icon-highlight@2x.png */, - 1A2512371C0779D800604BB8 /* icon-highlight@3x.png */, - 1A2512381C0779D800604BB8 /* icon-moon.png */, - 1A2512391C0779D800604BB8 /* icon-moon@2x.png */, - 1A25123A1C0779D800604BB8 /* icon-moon@3x.png */, - 1A25123B1C0779D800604BB8 /* icon-search.png */, - 1A25123C1C0779D800604BB8 /* icon-search@2x.png */, - 1A25123D1C0779D800604BB8 /* icon-search@3x.png */, - 1A25123E1C0779D800604BB8 /* icon-sun.png */, - 1A25123F1C0779D800604BB8 /* icon-sun@2x.png */, - 1A2512401C0779D800604BB8 /* icon-sun@3x.png */, - 1A2512411C0779D800604BB8 /* no-marker.png */, - 1A2512421C0779D800604BB8 /* no-marker@2x.png */, - 1A2512431C0779D800604BB8 /* no-marker@3x.png */, - 1A2512441C0779D800604BB8 /* pink-marker.png */, - 1A2512451C0779D800604BB8 /* pink-marker@2x.png */, - 1A2512461C0779D800604BB8 /* share-marker.png */, - 1A2512471C0779D800604BB8 /* share-marker@2x.png */, - 1A2512481C0779D800604BB8 /* share-marker@3x.png */, - 1A2512491C0779D800604BB8 /* underline-marker.png */, - 1A25124A1C0779D800604BB8 /* underline-marker@2x.png */, - 1A25124B1C0779D800604BB8 /* yellow-marker.png */, - 1A25124C1C0779D800604BB8 /* yellow-marker@2x.png */, - ); - path = Images; - sourceTree = ""; - }; - 1A25124E1C0779D800604BB8 /* Vendor */ = { - isa = PBXGroup; - children = ( - 1A2512F01C078ABE00604BB8 /* AEXML */, - 1A03BDA71C07F46000E000E9 /* FontBlaster */, - 1A2512B11C07828000604BB8 /* JSQWebViewController */, - 1A25124F1C0779D800604BB8 /* SMSegmentView */, - 1A2512B41C07835600604BB8 /* SSZipArchive */, - 1A2512C21C07835600604BB8 /* TGPControls */, - 1A2512E11C0783A900604BB8 /* UIMenuItem-CXAImageSupport */, - 1A2512E71C07849600604BB8 /* ZFDragableModalTransition */, - ); - path = Vendor; - sourceTree = ""; - }; - 1A25124F1C0779D800604BB8 /* SMSegmentView */ = { - isa = PBXGroup; - children = ( - 1A2512501C0779D800604BB8 /* SMSegment.swift */, - 1A2512511C0779D800604BB8 /* SMSegmentView.swift */, - ); - path = SMSegmentView; - sourceTree = ""; - }; - 1A25129B1C0779E100604BB8 /* EPUBCore */ = { - isa = PBXGroup; - children = ( - 1A25120F1C0779D800604BB8 /* FRBook.swift */, - 1A2512101C0779D800604BB8 /* FREpubParser.swift */, - 1A2512111C0779D800604BB8 /* FRHighlight.swift */, - 1A2512121C0779D800604BB8 /* FRMediaType.swift */, - 1A2512131C0779D800604BB8 /* FRMetadata.swift */, - 1A2512151C0779D800604BB8 /* FRResource.swift */, - 1A2512161C0779D800604BB8 /* FRResources.swift */, - 1A2512171C0779D800604BB8 /* FRSpine.swift */, - 1A2512181C0779D800604BB8 /* FRTocReference.swift */, - ); - name = EPUBCore; - sourceTree = ""; - }; - 1A25129C1C077A0C00604BB8 /* Reader */ = { - isa = PBXGroup; - children = ( - 1A2512061C0779D800604BB8 /* FolioReaderConfig.swift */, - 1A2512071C0779D800604BB8 /* FolioReaderContainer.swift */, - 1A2512051C0779D800604BB8 /* FolioReaderCenter.swift */, - 1A25120D1C0779D800604BB8 /* FolioReaderSidePanel.swift */, - 1A25120E1C0779D800604BB8 /* FolioReaderSidePanelCell.swift */, - 1A25120C1C0779D800604BB8 /* FolioReaderPage.swift */, - 1A2512081C0779D800604BB8 /* FolioReaderFontsMenu.swift */, - 1A2512091C0779D800604BB8 /* FolioReaderHighlightList.swift */, - 1A2512EE1C07891200604BB8 /* FolioReaderSharingProvider.swift */, - 1A2512141C0779D800604BB8 /* FolioReaderPageIndicator.swift */, - ); - name = Reader; - sourceTree = ""; - }; - 1A2512B11C07828000604BB8 /* JSQWebViewController */ = { - isa = PBXGroup; - children = ( - 1A2512B21C07828000604BB8 /* WebViewController.swift */, - ); - path = JSQWebViewController; - sourceTree = ""; - }; - 1A2512B41C07835600604BB8 /* SSZipArchive */ = { - isa = PBXGroup; - children = ( - 1A03BD801C07E32700E000E9 /* libz.tbd */, - 1A2512B51C07835600604BB8 /* minizip */, - 1A2512C01C07835600604BB8 /* SSZipArchive.h */, - 1A2512C11C07835600604BB8 /* SSZipArchive.m */, - ); - path = SSZipArchive; - sourceTree = ""; - }; - 1A2512B51C07835600604BB8 /* minizip */ = { - isa = PBXGroup; - children = ( - 1A2512B61C07835600604BB8 /* crypt.h */, - 1A2512B71C07835600604BB8 /* ioapi.c */, - 1A2512B81C07835600604BB8 /* ioapi.h */, - 1A2512B91C07835600604BB8 /* mztools.c */, - 1A2512BA1C07835600604BB8 /* mztools.h */, - 1A2512BB1C07835600604BB8 /* unzip.c */, - 1A2512BC1C07835600604BB8 /* unzip.h */, - 1A2512BD1C07835600604BB8 /* zip.c */, - 1A2512BE1C07835600604BB8 /* zip.h */, - ); - path = minizip; - sourceTree = ""; - }; - 1A2512C21C07835600604BB8 /* TGPControls */ = { - isa = PBXGroup; - children = ( - 1A2512C41C07835600604BB8 /* TGPCamelLabels.h */, - 1A2512C51C07835600604BB8 /* TGPCamelLabels.m */, - 1A2512C61C07835600604BB8 /* TGPCamelLabels7.h */, - 1A2512C71C07835600604BB8 /* TGPCamelLabels7.m */, - 1A2512C81C07835600604BB8 /* TGPControlsTicksProtocol.h */, - 1A2512C91C07835600604BB8 /* TGPDiscreteSlider.h */, - 1A2512CA1C07835600604BB8 /* TGPDiscreteSlider.m */, - 1A2512CB1C07835600604BB8 /* TGPDiscreteSlider7.h */, - 1A2512CC1C07835600604BB8 /* TGPDiscreteSlider7.m */, - ); - path = TGPControls; - sourceTree = ""; - }; - 1A2512E11C0783A900604BB8 /* UIMenuItem-CXAImageSupport */ = { - isa = PBXGroup; - children = ( - 1A2512E21C0783A900604BB8 /* UIMenuItem+CXAImageSupport.h */, - 1A2512E31C0783A900604BB8 /* UIMenuItem+CXAImageSupport.m */, - ); - path = "UIMenuItem-CXAImageSupport"; - sourceTree = ""; - }; - 1A2512E71C07849600604BB8 /* ZFDragableModalTransition */ = { - isa = PBXGroup; - children = ( - 1A2512E91C07849600604BB8 /* ZFModalTransitionAnimator.h */, - 1A2512EA1C07849600604BB8 /* ZFModalTransitionAnimator.m */, - ); - path = ZFDragableModalTransition; - sourceTree = ""; - }; - 1A2512F01C078ABE00604BB8 /* AEXML */ = { - isa = PBXGroup; - children = ( - 1A2512F11C078ABE00604BB8 /* AEXML.swift */, - ); - path = AEXML; - sourceTree = ""; - }; - 99EF280D1AD588D6007848FF = { - isa = PBXGroup; - children = ( - 99EF28191AD588D6007848FF /* FolioReaderKit */, - 99EF28261AD588D6007848FF /* FolioReaderKitTests */, - 99EF28181AD588D6007848FF /* Products */, - ); - sourceTree = ""; - }; - 99EF28181AD588D6007848FF /* Products */ = { - isa = PBXGroup; - children = ( - 99EF28171AD588D6007848FF /* FolioReaderKit.framework */, - 99EF28221AD588D6007848FF /* FolioReaderKitTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 99EF28191AD588D6007848FF /* FolioReaderKit */ = { - isa = PBXGroup; - children = ( - 1A25120B1C0779D800604BB8 /* FolioReaderKit.swift */, - 1A0AAA421C08BC9C00C3BCA1 /* Model */, - 1A25129C1C077A0C00604BB8 /* Reader */, - 1A25129B1C0779E100604BB8 /* EPUBCore */, - 1A2512191C0779D800604BB8 /* Resources */, - 1A25124E1C0779D800604BB8 /* Vendor */, - 99EF281A1AD588D6007848FF /* Supporting Files */, - ); - path = FolioReaderKit; - sourceTree = ""; - }; - 99EF281A1AD588D6007848FF /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 1A25120A1C0779D800604BB8 /* FolioReaderKit.h */, - 99EF281B1AD588D6007848FF /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 99EF28261AD588D6007848FF /* FolioReaderKitTests */ = { - isa = PBXGroup; - children = ( - 99EF28291AD588D6007848FF /* FolioReaderKitTests.swift */, - 99EF28271AD588D6007848FF /* Supporting Files */, - ); - path = FolioReaderKitTests; - sourceTree = ""; - }; - 99EF28271AD588D6007848FF /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 99EF28281AD588D6007848FF /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 99EF28141AD588D6007848FF /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 1A2512D51C07835600604BB8 /* zip.h in Headers */, - 1A2512DC1C07835600604BB8 /* TGPControlsTicksProtocol.h in Headers */, - 1A2512DF1C07835600604BB8 /* TGPDiscreteSlider7.h in Headers */, - 1A2512D61C07835600604BB8 /* SSZipArchive.h in Headers */, - 1A2512CF1C07835600604BB8 /* ioapi.h in Headers */, - 1A2512DA1C07835600604BB8 /* TGPCamelLabels7.h in Headers */, - 1A2512EB1C07849600604BB8 /* ZFModalTransitionAnimator.h in Headers */, - 1A2512DD1C07835600604BB8 /* TGPDiscreteSlider.h in Headers */, - 1A2512E41C0783A900604BB8 /* UIMenuItem+CXAImageSupport.h in Headers */, - 1A2512D31C07835600604BB8 /* unzip.h in Headers */, - 1A2512571C0779D800604BB8 /* FolioReaderKit.h in Headers */, - 1A2512CD1C07835600604BB8 /* crypt.h in Headers */, - 1A2512D81C07835600604BB8 /* TGPCamelLabels.h in Headers */, - 1A2512D11C07835600604BB8 /* mztools.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 99EF28161AD588D6007848FF /* FolioReaderKit */ = { - isa = PBXNativeTarget; - buildConfigurationList = 99EF282D1AD588D6007848FF /* Build configuration list for PBXNativeTarget "FolioReaderKit" */; - buildPhases = ( - 99EF28121AD588D6007848FF /* Sources */, - 99EF28131AD588D6007848FF /* Frameworks */, - 99EF28141AD588D6007848FF /* Headers */, - 99EF28151AD588D6007848FF /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = FolioReaderKit; - productName = FolioReaderKit; - productReference = 99EF28171AD588D6007848FF /* FolioReaderKit.framework */; - productType = "com.apple.product-type.framework"; - }; - 99EF28211AD588D6007848FF /* FolioReaderKitTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 99EF28301AD588D6007848FF /* Build configuration list for PBXNativeTarget "FolioReaderKitTests" */; - buildPhases = ( - 99EF281E1AD588D6007848FF /* Sources */, - 99EF281F1AD588D6007848FF /* Frameworks */, - 99EF28201AD588D6007848FF /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 99EF28251AD588D6007848FF /* PBXTargetDependency */, - ); - name = FolioReaderKitTests; - productName = FolioReaderKitTests; - productReference = 99EF28221AD588D6007848FF /* FolioReaderKitTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 99EF280E1AD588D6007848FF /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0710; - LastUpgradeCheck = 0710; - ORGANIZATIONNAME = "Folio Reader"; - TargetAttributes = { - 99EF28161AD588D6007848FF = { - CreatedOnToolsVersion = 6.2; - }; - 99EF28211AD588D6007848FF = { - CreatedOnToolsVersion = 6.2; - }; - }; - }; - buildConfigurationList = 99EF28111AD588D6007848FF /* Build configuration list for PBXProject "FolioReaderKit" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 99EF280D1AD588D6007848FF; - productRefGroup = 99EF28181AD588D6007848FF /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 99EF28161AD588D6007848FF /* FolioReaderKit */, - 99EF28211AD588D6007848FF /* FolioReaderKitTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 99EF28151AD588D6007848FF /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1A03BD9C1C07EF9000E000E9 /* Lato-BoldItalic.ttf in Resources */, - 1A25127B1C0779D800604BB8 /* icon-font-small@2x.png in Resources */, - 1A2512721C0779D800604BB8 /* green-marker.png in Resources */, - 1A2512971C0779D800604BB8 /* yellow-marker@2x.png in Resources */, - 1A25128A1C0779D800604BB8 /* icon-sun@2x.png in Resources */, - 1A2512681C0779D800604BB8 /* blue-marker@2x.png in Resources */, - 1A25126B1C0779D800604BB8 /* btn-navbar-menu@3x.png in Resources */, - 1A2512701C0779D800604BB8 /* colors-marker@2x.png in Resources */, - 1A03BD9B1C07EF9000E000E9 /* Lato-Bold.ttf in Resources */, - 1A03BDA61C07EF9000E000E9 /* Raleway-Regular.ttf in Resources */, - 1A2512741C0779D800604BB8 /* icon-close.png in Resources */, - 1A2512881C0779D800604BB8 /* icon-search@3x.png in Resources */, - 1A25128E1C0779D800604BB8 /* no-marker@3x.png in Resources */, - 1A03BD991C07EF9000E000E9 /* Andada-Italic.otf in Resources */, - 1A03BD981C07EF9000E000E9 /* Andada-BoldItalic.otf in Resources */, - 1A2512711C0779D800604BB8 /* colors-marker@3x.png in Resources */, - 1A03BDA31C07EF9000E000E9 /* Raleway-Bold.ttf in Resources */, - 1A2512661C0779D800604BB8 /* Bridge.js in Resources */, - 1A2512811C0779D800604BB8 /* icon-highlight@2x.png in Resources */, - 1A2512671C0779D800604BB8 /* blue-marker.png in Resources */, - 1A2512891C0779D800604BB8 /* icon-sun.png in Resources */, - 1A25127C1C0779D800604BB8 /* icon-font-small@3x.png in Resources */, - 1A25127A1C0779D800604BB8 /* icon-font-small.png in Resources */, - 1A25128B1C0779D800604BB8 /* icon-sun@3x.png in Resources */, - 1A25126A1C0779D800604BB8 /* btn-navbar-menu@2x.png in Resources */, - 1A25128D1C0779D800604BB8 /* no-marker@2x.png in Resources */, - 1A25126C1C0779D800604BB8 /* btn-navbar-share.png in Resources */, - 1A2512841C0779D800604BB8 /* icon-moon@2x.png in Resources */, - 1A2512821C0779D800604BB8 /* icon-highlight@3x.png in Resources */, - 1A2512751C0779D800604BB8 /* icon-close@2x.png in Resources */, - 1A2512901C0779D800604BB8 /* pink-marker@2x.png in Resources */, - 1A2512691C0779D800604BB8 /* btn-navbar-menu.png in Resources */, - 1A2512761C0779D800604BB8 /* icon-close@3x.png in Resources */, - 1A03BDA21C07EF9000E000E9 /* Lora-Regular.ttf in Resources */, - 1A2512781C0779D800604BB8 /* icon-font-big@2x.png in Resources */, - 1A2512731C0779D800604BB8 /* green-marker@2x.png in Resources */, - 1A03BD9F1C07EF9000E000E9 /* Lora-Bold.ttf in Resources */, - 1A03BD9A1C07EF9000E000E9 /* Andada-Regular.otf in Resources */, - 1A25127E1C0779D800604BB8 /* icon-font@2x.png in Resources */, - 1A2512831C0779D800604BB8 /* icon-moon.png in Resources */, - 1A25126F1C0779D800604BB8 /* colors-marker.png in Resources */, - 1A2512981C0779D800604BB8 /* Style.css in Resources */, - 1A25126E1C0779D800604BB8 /* btn-navbar-share@3x.png in Resources */, - 1A03BDA11C07EF9000E000E9 /* Lora-Italic.ttf in Resources */, - 1A25127F1C0779D800604BB8 /* icon-font@3x.png in Resources */, - 1A2512911C0779D800604BB8 /* share-marker.png in Resources */, - 1A2512861C0779D800604BB8 /* icon-search.png in Resources */, - 1A03BDA51C07EF9000E000E9 /* Raleway-Italic.ttf in Resources */, - 1A03BD9D1C07EF9000E000E9 /* Lato-Italic.ttf in Resources */, - 1A2512941C0779D800604BB8 /* underline-marker.png in Resources */, - 1A2512931C0779D800604BB8 /* share-marker@3x.png in Resources */, - 1A2512771C0779D800604BB8 /* icon-font-big.png in Resources */, - 1A25127D1C0779D800604BB8 /* icon-font.png in Resources */, - 1A03BD971C07EF9000E000E9 /* Andada-Bold.otf in Resources */, - 1A25128F1C0779D800604BB8 /* pink-marker.png in Resources */, - 1A2512961C0779D800604BB8 /* yellow-marker.png in Resources */, - 1A2512921C0779D800604BB8 /* share-marker@2x.png in Resources */, - 1A2512951C0779D800604BB8 /* underline-marker@2x.png in Resources */, - 1A2512871C0779D800604BB8 /* icon-search@2x.png in Resources */, - 1A03BDA41C07EF9000E000E9 /* Raleway-BoldItalic.ttf in Resources */, - 1A2512791C0779D800604BB8 /* icon-font-big@3x.png in Resources */, - 1A2512851C0779D800604BB8 /* icon-moon@3x.png in Resources */, - 1A25126D1C0779D800604BB8 /* btn-navbar-share@2x.png in Resources */, - 1A03BD9E1C07EF9000E000E9 /* Lato-Regular.ttf in Resources */, - 1A25128C1C0779D800604BB8 /* no-marker.png in Resources */, - 1A03BDA01C07EF9000E000E9 /* Lora-BoldItalic.ttf in Resources */, - 1A2512801C0779D800604BB8 /* icon-highlight.png in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 99EF28201AD588D6007848FF /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 99EF28121AD588D6007848FF /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1A25129A1C0779D800604BB8 /* SMSegmentView.swift in Sources */, - 1A2512EC1C07849600604BB8 /* ZFModalTransitionAnimator.m in Sources */, - 1A2512B31C07828000604BB8 /* WebViewController.swift in Sources */, - 1A2512531C0779D800604BB8 /* FolioReaderConfig.swift in Sources */, - 1A2512DB1C07835600604BB8 /* TGPCamelLabels7.m in Sources */, - 1A25125E1C0779D800604BB8 /* FRHighlight.swift in Sources */, - 1A2512D21C07835600604BB8 /* unzip.c in Sources */, - 1A2512991C0779D800604BB8 /* SMSegment.swift in Sources */, - 1A2512E51C0783A900604BB8 /* UIMenuItem+CXAImageSupport.m in Sources */, - 1A2512E01C07835600604BB8 /* TGPDiscreteSlider7.m in Sources */, - 1A25125C1C0779D800604BB8 /* FRBook.swift in Sources */, - 1A2512611C0779D800604BB8 /* FolioReaderPageIndicator.swift in Sources */, - 1A2512F71C07907300604BB8 /* FolioReader.xcdatamodeld in Sources */, - 1A2512651C0779D800604BB8 /* FRTocReference.swift in Sources */, - 1A25125A1C0779D800604BB8 /* FolioReaderSidePanel.swift in Sources */, - 1A2512D01C07835600604BB8 /* mztools.c in Sources */, - 1A2512581C0779D800604BB8 /* FolioReaderKit.swift in Sources */, - 1A2512D71C07835600604BB8 /* SSZipArchive.m in Sources */, - 1A2512D91C07835600604BB8 /* TGPCamelLabels.m in Sources */, - 1A2512D41C07835600604BB8 /* zip.c in Sources */, - 1A2512541C0779D800604BB8 /* FolioReaderContainer.swift in Sources */, - 1A2512DE1C07835600604BB8 /* TGPDiscreteSlider.m in Sources */, - 1A2512FB1C07938A00604BB8 /* CoreDataManager.swift in Sources */, - 1A2512F91C0790FA00604BB8 /* Highlight.swift in Sources */, - 1A03BDA91C07F46000E000E9 /* FontBlaster.swift in Sources */, - 1A2512561C0779D800604BB8 /* FolioReaderHighlightList.swift in Sources */, - 1A2512551C0779D800604BB8 /* FolioReaderFontsMenu.swift in Sources */, - 1A25125B1C0779D800604BB8 /* FolioReaderSidePanelCell.swift in Sources */, - 1A2512591C0779D800604BB8 /* FolioReaderPage.swift in Sources */, - 1A2512F21C078ABE00604BB8 /* AEXML.swift in Sources */, - 1A2512621C0779D800604BB8 /* FRResource.swift in Sources */, - 1A2512641C0779D800604BB8 /* FRSpine.swift in Sources */, - 1A2512CE1C07835600604BB8 /* ioapi.c in Sources */, - 1A25125D1C0779D800604BB8 /* FREpubParser.swift in Sources */, - 1A2512601C0779D800604BB8 /* FRMetadata.swift in Sources */, - 1A2512EF1C07891200604BB8 /* FolioReaderSharingProvider.swift in Sources */, - 1A25125F1C0779D800604BB8 /* FRMediaType.swift in Sources */, - 1A2512521C0779D800604BB8 /* FolioReaderCenter.swift in Sources */, - 1A2512631C0779D800604BB8 /* FRResources.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 99EF281E1AD588D6007848FF /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 99EF282A1AD588D6007848FF /* FolioReaderKitTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 99EF28251AD588D6007848FF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 99EF28161AD588D6007848FF /* FolioReaderKit */; - targetProxy = 99EF28241AD588D6007848FF /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 99EF282B1AD588D6007848FF /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 99EF282C1AD588D6007848FF /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 99EF282E1AD588D6007848FF /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - EMBEDDED_CONTENT_CONTAINS_SWIFT = NO; - INFOPLIST_FILE = FolioReaderKit/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - OTHER_LDFLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = "com.folioreader.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - SWIFT_INCLUDE_PATHS = "${SRCROOT}/FolioReaderKit/Vendor"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 99EF282F1AD588D6007848FF /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - EMBEDDED_CONTENT_CONTAINS_SWIFT = NO; - INFOPLIST_FILE = FolioReaderKit/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - OTHER_LDFLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = "com.folioreader.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - SWIFT_INCLUDE_PATHS = "${SRCROOT}/FolioReaderKit/Vendor"; - }; - name = Release; - }; - 99EF28311AD588D6007848FF /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = FolioReaderKitTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.folioreader.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 99EF28321AD588D6007848FF /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = FolioReaderKitTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.folioreader.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 99EF28111AD588D6007848FF /* Build configuration list for PBXProject "FolioReaderKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 99EF282B1AD588D6007848FF /* Debug */, - 99EF282C1AD588D6007848FF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 99EF282D1AD588D6007848FF /* Build configuration list for PBXNativeTarget "FolioReaderKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 99EF282E1AD588D6007848FF /* Debug */, - 99EF282F1AD588D6007848FF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 99EF28301AD588D6007848FF /* Build configuration list for PBXNativeTarget "FolioReaderKitTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 99EF28311AD588D6007848FF /* Debug */, - 99EF28321AD588D6007848FF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCVersionGroup section */ - 1A2512F51C07907300604BB8 /* FolioReader.xcdatamodeld */ = { - isa = XCVersionGroup; - children = ( - 1A2512F61C07907300604BB8 /* FolioReader.xcdatamodel */, - ); - currentVersion = 1A2512F61C07907300604BB8 /* FolioReader.xcdatamodel */; - path = FolioReader.xcdatamodeld; - sourceTree = ""; - versionGroupType = wrapper.xcdatamodel; - }; -/* End XCVersionGroup section */ - }; - rootObject = 99EF280E1AD588D6007848FF /* Project object */; -} diff --git a/FolioReaderKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/FolioReaderKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 1728b9159..000000000 --- a/FolioReaderKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/FolioReaderKit/Info.plist b/FolioReaderKit/Info.plist deleted file mode 100644 index d3de8eefb..000000000 --- a/FolioReaderKit/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - NSPrincipalClass - - - diff --git a/FolioReaderKit/Vendor/AEXML/AEXML.swift b/FolioReaderKit/Vendor/AEXML/AEXML.swift deleted file mode 100644 index cf8e7a60d..000000000 --- a/FolioReaderKit/Vendor/AEXML/AEXML.swift +++ /dev/null @@ -1,434 +0,0 @@ -// -// AEXML.swift -// -// Copyright (c) 2014 Marko Tadić http://tadija.net -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import Foundation - -/** - This is base class for holding XML structure. - - You can access its structure by using subscript like this: - `element["foo"]["bar"]` would return `` element from `` XML as an `AEXMLElement` object. - */ -public class AEXMLElement: NSObject { - - // MARK: Properties - - /// Every `AEXMLElement` should have its parent element instead of `AEXMLDocument` which parent is `nil`. - public private(set) weak var parent: AEXMLElement? - - /// Child XML elements. - public private(set) var children: [AEXMLElement] = [AEXMLElement]() - - /// XML Element name (defaults to empty string). - public var name: String - - /// XML Element value. - public var value: String? - - /// XML Element attributes (defaults to empty dictionary). - public var attributes: [String : String] - - /// String representation of `value` property (if `value` is `nil` this is empty String). - public var stringValue: String { return value ?? String() } - - /// String representation of `value` property with special characters escaped (if `value` is `nil` this is empty String). - public var escapedStringValue: String { - // we need to make sure "&" is escaped first. Not doing this may break escaping the other characters - var escapedString = stringValue.stringByReplacingOccurrencesOfString("&", withString: "&", options: .LiteralSearch) - - // replace the other four special characters - let escapeChars = ["<" : "<", ">" : ">", "'" : "'", "\"" : """] - for (char, echar) in escapeChars { - escapedString = escapedString.stringByReplacingOccurrencesOfString(char, withString: echar, options: .LiteralSearch) - } - - return escapedString - } - - /// Boolean representation of `value` property (if `value` is "true" or 1 this is `True`, otherwise `False`). - public var boolValue: Bool { return stringValue.lowercaseString == "true" || Int(stringValue) == 1 ? true : false } - - /// Integer representation of `value` property (this is **0** if `value` can't be represented as Integer). - public var intValue: Int { return Int(stringValue) ?? 0 } - - /// Double representation of `value` property (this is **0.00** if `value` can't be represented as Double). - public var doubleValue: Double { return (stringValue as NSString).doubleValue } - - private struct Defaults { - static let name = String() - static let attributes = [String : String]() - } - - // MARK: Lifecycle - - /** - Designated initializer - all parameters are optional. - - :param: name XML element name. - :param: value XML element value - :param: attributes XML element attributes - - :returns: An initialized `AEXMLElement` object. - */ - public init(_ name: String? = nil, value: String? = nil, attributes: [String : String]? = nil) { - self.name = name ?? Defaults.name - self.value = value - self.attributes = attributes ?? Defaults.attributes - } - - // MARK: XML Read - - /// This element name is used when unable to find element. - public static let errorElementName = "AEXMLError" - - // The first element with given name **(AEXMLError element if not exists)**. - public subscript(key: String) -> AEXMLElement { - if name == AEXMLElement.errorElementName { - return self - } else { - let filtered = children.filter { $0.name == key } - return filtered.count > 0 ? filtered.first! : AEXMLElement(AEXMLElement.errorElementName, value: "element <\(key)> not found") - } - } - - /// Returns all of the elements with equal name as `self` **(nil if not exists)**. - public var all: [AEXMLElement]? { return parent?.children.filter { $0.name == self.name } } - - /// Returns the first element with equal name as `self` **(nil if not exists)**. - public var first: AEXMLElement? { return all?.first } - - /// Returns the last element with equal name as `self` **(nil if not exists)**. - public var last: AEXMLElement? { return all?.last } - - /// Returns number of all elements with equal name as `self`. - public var count: Int { return all?.count ?? 0 } - - private func allWithCondition(fulfillCondition: (element: AEXMLElement) -> Bool) -> [AEXMLElement]? { - var found = [AEXMLElement]() - if let elements = all { - for element in elements { - if fulfillCondition(element: element) { - found.append(element) - } - } - return found.count > 0 ? found : nil - } else { - return nil - } - } - - /** - Returns all elements with given value. - - :param: value XML element value. - - :returns: Optional Array of found XML elements. - */ - public func allWithValue(value: String) -> [AEXMLElement]? { - let found = allWithCondition { (element) -> Bool in - return element.value == value - } - return found - } - - /** - Returns all elements with given attributes. - - :param: attributes Dictionary of Keys and Values of attributes. - - :returns: Optional Array of found XML elements. - */ - public func allWithAttributes(attributes: [String : String]) -> [AEXMLElement]? { - let found = allWithCondition { (element) -> Bool in - var countAttributes = 0 - for (key, value) in attributes { - if element.attributes[key] == value { - countAttributes++ - } - } - return countAttributes == attributes.count - } - return found - } - - // MARK: XML Write - - /** - Adds child XML element to `self`. - - :param: child Child XML element to add. - - :returns: Child XML element with `self` as `parent`. - */ - public func addChild(child: AEXMLElement) -> AEXMLElement { - child.parent = self - children.append(child) - return child - } - - /** - Adds child XML element to `self`. - - :param: name Child XML element name. - :param: value Child XML element value. - :param: attributes Child XML element attributes. - - :returns: Child XML element with `self` as `parent`. - */ - public func addChild(name name: String, value: String? = nil, attributes: [String : String]? = nil) -> AEXMLElement { - let child = AEXMLElement(name, value: value, attributes: attributes) - return addChild(child) - } - - /// Removes `self` from `parent` XML element. - public func removeFromParent() { - parent?.removeChild(self) - } - - private func removeChild(child: AEXMLElement) { - if let childIndex = children.indexOf(child) { - children.removeAtIndex(childIndex) - } - } - - private var parentsCount: Int { - var count = 0 - var element = self - while let parent = element.parent { - count++ - element = parent - } - return count - } - - private func indentation(var count: Int) -> String { - var indent = String() - while count > 0 { - indent += "\t" - count-- - } - return indent - } - - /// Complete hierarchy of `self` and `children` in **XML** escaped and formatted String - public var xmlString: String { - var xml = String() - - // open element - xml += indentation(parentsCount - 1) - xml += "<\(name)" - - if attributes.count > 0 { - // insert attributes - for (key, value) in attributes { - xml += " \(key)=\"\(value)\"" - } - } - - if value == nil && children.count == 0 { - // close element - xml += " />" - } else { - if children.count > 0 { - // add children - xml += ">\n" - for child in children { - xml += "\(child.xmlString)\n" - } - // add indentation - xml += indentation(parentsCount - 1) - xml += "" - } else { - // insert string value and close element - xml += ">\(escapedStringValue)" - } - } - - return xml - } - -} - -// MARK: - - -/** -This class is inherited from `AEXMLElement` and has a few addons to represent **XML Document**. - -XML Parsing is also done with this object. -*/ -public class AEXMLDocument: AEXMLElement { - - // MARK: Properties - - /// This is only used for XML Document header (default value is 1.0). - public let version: Double - - /// This is only used for XML Document header (default value is "utf-8"). - public let encoding: String - - /// This is only used for XML Document header (default value is "no"). - public let standalone: String - - /// Root (the first child element) element of XML Document **(AEXMLError element if not exists)**. - public var root: AEXMLElement { return children.count == 1 ? children.first! : AEXMLElement(AEXMLElement.errorElementName, value: "XML Document must have root element.") } - - private struct Defaults { - static let version = 1.0 - static let encoding = "utf-8" - static let standalone = "no" - static let documentName = "AEXMLDocument" - } - - // MARK: Lifecycle - - /** - Designated initializer - Creates and returns XML Document object. - - :param: version Version value for XML Document header (defaults to 1.0). - :param: encoding Encoding value for XML Document header (defaults to "utf-8"). - :param: standalone Standalone value for XML Document header (defaults to "no"). - :param: root Root XML element for XML Document (defaults to `nil`). - - :returns: An initialized XML Document object. - */ - public init(version: Double = Defaults.version, encoding: String = Defaults.encoding, standalone: String = Defaults.standalone, root: AEXMLElement? = nil) { - // set document properties - self.version = version - self.encoding = encoding - self.standalone = standalone - - // init super with default name - super.init(Defaults.documentName) - - // document has no parent element - parent = nil - - // add root element to document (if any) - if let rootElement = root { - addChild(rootElement) - } - } - - /** - Convenience initializer - used for parsing XML data (by calling `loadXMLData:` internally). - - :param: version Version value for XML Document header (defaults to 1.0). - :param: encoding Encoding value for XML Document header (defaults to "utf-8"). - :param: standalone Standalone value for XML Document header (defaults to "no"). - :param: xmlData XML data to parse. - :param: error If there is an error reading in the data, upon return contains an `NSError` object that describes the problem. - - :returns: An initialized XML Document object containing the parsed data. Returns `nil` if the data could not be parsed. - */ - public convenience init(version: Double = Defaults.version, encoding: String = Defaults.encoding, standalone: String = Defaults.standalone, xmlData: NSData) throws { - self.init(version: version, encoding: encoding, standalone: standalone) - try loadXMLData(xmlData) - } - - // MARK: Read XML - - /** - Creates instance of `AEXMLParser` (private class which is simple wrapper around `NSXMLParser`) and starts parsing the given XML data. - - :param: data XML which should be parsed. - - :returns: `NSError` if parsing is not successfull, otherwise `nil`. - */ - public func loadXMLData(data: NSData) throws { - children.removeAll(keepCapacity: false) - let xmlParser = AEXMLParser(xmlDocument: self, xmlData: data) - try xmlParser.parse() - } - - // MARK: Override - - /// Override of `xmlString` property of `AEXMLElement` - it just inserts XML Document header at the beginning. - public override var xmlString: String { - var xml = "\n" - for child in children { - xml += child.xmlString - } - return xml - } - -} - -// MARK: - - -private class AEXMLParser: NSObject, NSXMLParserDelegate { - - // MARK: Properties - - let xmlDocument: AEXMLDocument - let xmlData: NSData - - var currentParent: AEXMLElement? - var currentElement: AEXMLElement? - var currentValue = String() - var parseError: NSError? - - // MARK: Lifecycle - - init(xmlDocument: AEXMLDocument, xmlData: NSData) { - self.xmlDocument = xmlDocument - self.xmlData = xmlData - currentParent = xmlDocument - super.init() - } - - // MARK: XML Parse - - func parse() throws { - let parser = NSXMLParser(data: xmlData) - parser.delegate = self - let success = parser.parse() - if !success { - throw parseError ?? NSError(domain: "net.tadija.AEXML", code: 1, userInfo: nil) - } - } - - // MARK: NSXMLParserDelegate - - @objc func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) { - currentValue = String() - currentElement = currentParent?.addChild(name: elementName, attributes: attributeDict) - currentParent = currentElement - } - - @objc func parser(parser: NSXMLParser, foundCharacters string: String) { - currentValue += string - let newValue = currentValue.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) - currentElement?.value = newValue == String() ? nil : newValue - } - - @objc func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { - currentParent = currentParent?.parent - currentElement = nil - } - - @objc func parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError) { - self.parseError = parseError - } - -} \ No newline at end of file diff --git a/FolioReaderKit/Vendor/FontBlaster/FontBlaster.swift b/FolioReaderKit/Vendor/FontBlaster/FontBlaster.swift deleted file mode 100755 index a1c74c2f5..000000000 --- a/FolioReaderKit/Vendor/FontBlaster/FontBlaster.swift +++ /dev/null @@ -1,178 +0,0 @@ -// -// FontBlaster.swift -// FontBlaster -// -// Created by Arthur Sabintsev on 5/5/15. -// Copyright (c) 2015 Arthur Ariel Sabintsev. All rights reserved. -// - -import Foundation -import CoreGraphics -import CoreText - -// MARK: Enumerations -/** - Limits the type of fonts that can be loaded into an application - - There are two options: - - TrueTypeFont - - OpenTypeFont -*/ -private enum SupportedFontExtensions: String { - case TrueTypeFont = ".ttf" - case OpenTypeFont = ".otf" -} - -// MARK: FontBlaster Class -/** - The FontBlaster Class. - - Only one class method can be accessed - - blast(_:) - Only one class variable can be accessed and modified - - debugEnabled -*/ -public class FontBlaster { - // Typealiases to better handle of the different aspects of loading a font - private typealias FontPath = String - private typealias FontName = String - private typealias FontExtension = String - private typealias Font = (FontPath, FontName, FontExtension) - - /** - Used to toggle debug println() statements - */ - public static var debugEnabled = false - - /** - Load all fonts found in a specific bundle. If no value is entered, it defaults to NSBundle.mainBundle(). - */ - public static func blast(bundle: NSBundle = NSBundle.mainBundle()) { - let path = bundle.bundlePath - loadFontsForBundleWithPath(path) - loadFontsFromBundlesFoundInBundle(path) - } -} - -// MARK: Helpers (Font Loading) -private extension FontBlaster { - /** - Loads all fonts found in a bundle. - - - parameter path: The absolute path to the bundle. - */ - class func loadFontsForBundleWithPath(path: String) { - do { - let contents = try NSFileManager.defaultManager().contentsOfDirectoryAtPath(path) - let fonts = fontsFromPath(path: path, contents: contents) - if !fonts.isEmpty { - for font in fonts { - loadFont(font) - } - } else { - printStatus("No fonts were found in the bundle path: \(path).") - } - } catch let error as NSError { - printStatus("There was an error loading fonts from the bundle. \nPath: \(path).\nError: \(error)") - } - } - - /** - Loads all fonts found in a bundle that is loaded within another bundle. - - - parameter path: The absolute path to the bundle. - */ - static func loadFontsFromBundlesFoundInBundle(path: String) { - do { - let contents = try NSFileManager.defaultManager().contentsOfDirectoryAtPath(path) - for item in contents { - if let url = NSURL(string: path) { - if item.containsString(".bundle") { - let urlPath = url.URLByAppendingPathComponent(item) - loadFontsForBundleWithPath(urlPath.absoluteString) - } - } - } - } catch let error as NSError { - printStatus("There was an error accessing bundle with path. \nPath: \(path).\nError: \(error)") - } - } - - /** - Loads a specific font. - - - parameter font: The font to load. - */ - static func loadFont(font: Font) { - let fontPath: FontPath = font.0 - let fontName: FontPath = font.1 - let fontExtension: FontPath = font.2 - - guard let fontFileURL = NSBundle(path: fontPath)?.URLForResource(fontName, withExtension: fontExtension) else { - printStatus("Could not unwrap the file URL for the resource with name: \(fontName) and extension \(fontExtension)") - return - } - - var fontError: Unmanaged? - if CTFontManagerRegisterFontsForURL(fontFileURL, CTFontManagerScope.Process, &fontError) { - printStatus("Successfully loaded font: '\(fontName)'.") - } else { - guard let fontError = fontError?.takeRetainedValue() else { - printStatus("Failed to load font '\(fontName)'.") - return - } - let errorDescription = CFErrorCopyDescription(fontError) - printStatus("Failed to load font '\(fontName)': \(errorDescription)") - } - } -} - -// MARK: Helpers (Miscellaneous) -private extension FontBlaster { - /** - Parses a font into its name and extension components. - - - parameter path: The absolute path to the font file. - - parameter contents: The contents of an NSBundle as an array of String objects. - - returns: A tuple with the font's name and extension. - */ - static func fontsFromPath(path path: String, contents: [NSString]) -> [Font] { - var fonts = [Font]() - for fontName in contents { - var parsedFont: (FontName, FontExtension)? - - if fontName.containsString(SupportedFontExtensions.TrueTypeFont.rawValue) || fontName.containsString(SupportedFontExtensions.OpenTypeFont.rawValue) { - parsedFont = fontFromName(fontName as String) - } - - if let parsedFont = parsedFont { - let font: Font = (path, parsedFont.0, parsedFont.1) - fonts.append(font) - } - } - - return fonts - } - - /** - Parses a font into its name and extension components. - - - parameter The: name of the font. - - returns: A tuple with the font's name and extension. - */ - static func fontFromName(name: String) -> (FontName, FontExtension) { - let components = name.characters.split{$0 == "."}.map { String($0) } - return (components[0], components[1]) - } - - /** - Prints debug messages to the console if debugEnabled is set to true. - - - parameter The: status to print to the console. - */ - static func printStatus(status: String) { - if debugEnabled == true { - print("[FontBlaster]: \(status)") - } - } -} diff --git a/FolioReaderKit/Vendor/JSQWebViewController/WebViewController.swift b/FolioReaderKit/Vendor/JSQWebViewController/WebViewController.swift deleted file mode 100755 index 018e05803..000000000 --- a/FolioReaderKit/Vendor/JSQWebViewController/WebViewController.swift +++ /dev/null @@ -1,229 +0,0 @@ -// -// Created by Jesse Squires -// http://www.jessesquires.com -// -// -// Documentation -// http://www.jessesquires.com/JSQWebViewController -// -// -// GitHub -// https://github.com/jessesquires/JSQWebViewController -// -// -// License -// Copyright (c) 2015 Jesse Squires -// Released under an MIT license: http://opensource.org/licenses/MIT -// - -import UIKit -import WebKit - - -private let TitleKeyPath = "title" - -private let EstimatedProgressKeyPath = "estimatedProgress" - - -/// An instance of `WebViewController` displays interactive web content. -public class WebViewController: UIViewController { - - // MARK: Properties - - /// Returns the web view for the controller. - public final var webView: WKWebView { - get { - return _webView - } - } - - /// Returns the progress view for the controller. - public final var progressBar: UIProgressView { - get { - return _progressBar - } - } - - /// The URL request for the web view. Upon setting this property, the web view immediately begins loading the request. - public final var urlRequest: NSURLRequest { - didSet { - webView.loadRequest(urlRequest) - } - } - - /** - Specifies whether or not to display the web view title as the navigation bar title. - The default is `false`, which sets the navigation bar title to the URL host name of the URL request. - */ - public final var displaysWebViewTitle: Bool = false - - // MARK: Private properties - - private lazy final var _webView: WKWebView = { [unowned self] in - // FIXME: prevent Swift bug, lazy property initialized twice from `init(coder:)` - // return existing webView if webView already added - let views = self.view.subviews.filter {$0 is WKWebView } as! [WKWebView] - if views.count != 0 { - return views.first! - } - - let webView = WKWebView(frame: CGRect.zero, configuration: self.configuration) - self.view.addSubview(webView) - webView.addObserver(self, forKeyPath: TitleKeyPath, options: .New, context: nil) - webView.addObserver(self, forKeyPath: EstimatedProgressKeyPath, options: .New, context: nil) - webView.allowsBackForwardNavigationGestures = true - if #available(iOS 9.0, *) { - webView.allowsLinkPreview = true - } - return webView - }() - - private lazy final var _progressBar: UIProgressView = { [unowned self] in - let progressBar = UIProgressView(progressViewStyle: .Bar) - progressBar.backgroundColor = .clearColor() - progressBar.trackTintColor = .clearColor() - self.view.addSubview(progressBar) - return progressBar - }() - - private final let configuration: WKWebViewConfiguration - - private final let activities: [UIActivity]? - - // MARK: Initialization - - /** - Constructs a new `WebViewController`. - - - parameter urlRequest: The URL request for the web view to load. - - parameter configuration: The configuration for the web view. - - parameter activities: The custom activities to display in the `UIActivityViewController` that is presented when the action button is tapped. - - - returns: A new `WebViewController` instance. - */ - public init(urlRequest: NSURLRequest, configuration: WKWebViewConfiguration = WKWebViewConfiguration(), activities: [UIActivity]? = nil) { - self.configuration = configuration - self.urlRequest = urlRequest - self.activities = activities - super.init(nibName: nil, bundle: nil) - } - - /** - Constructs a new `WebViewController`. - - - parameter url: The URL to display in the web view. - - - returns: A new `WebViewController` instance. - */ - public convenience init(url: NSURL) { - self.init(urlRequest: NSURLRequest(URL: url)) - } - - /// :nodoc: - public required init?(coder aDecoder: NSCoder) { - self.configuration = WKWebViewConfiguration() - self.urlRequest = NSURLRequest(URL: NSURL(string: "")!) - self.activities = nil - super.init(coder: aDecoder) - } - - deinit { - webView.removeObserver(self, forKeyPath: TitleKeyPath, context: nil) - webView.removeObserver(self, forKeyPath: EstimatedProgressKeyPath, context: nil) - } - - - // MARK: View lifecycle - - /// :nodoc: - public override func viewDidLoad() { - super.viewDidLoad() - title = urlRequest.URL?.host - - if presentingViewController?.presentedViewController != nil { - navigationItem.leftBarButtonItem = UIBarButtonItem( - barButtonSystemItem: .Done, - target: self, - action: Selector("didTapDoneButton:")) - } - - navigationItem.rightBarButtonItem = UIBarButtonItem( - barButtonSystemItem: .Action, - target: self, - action: Selector("didTapActionButton:")) - - webView.loadRequest(urlRequest) - } - - /// :nodoc: - public override func viewWillAppear(animated: Bool) { - assert(navigationController != nil, "\(WebViewController.self) must be presented in a \(UINavigationController.self)") - super.viewWillAppear(animated) - } - - /// :nodoc: - public override func viewDidDisappear(animated: Bool) { - super.viewDidDisappear(animated) - webView.stopLoading() - } - - /// :nodoc: - public override func viewDidLayoutSubviews() { - super.viewDidLayoutSubviews() - webView.frame = view.bounds - - let insets = UIEdgeInsets(top: topLayoutGuide.length, left: 0, bottom: 0, right: 0) - webView.scrollView.contentInset = insets - webView.scrollView.scrollIndicatorInsets = insets - - view.bringSubviewToFront(progressBar) - progressBar.frame = CGRect( - x: view.frame.minX, - y: topLayoutGuide.length, - width: view.frame.size.width, - height: 2) - } - - - // MARK: Actions - - internal final func didTapDoneButton(sender: UIBarButtonItem) { - dismissViewControllerAnimated(true, completion: nil) - } - - internal final func didTapActionButton(sender: UIBarButtonItem) { - if let url = urlRequest.URL { - let activityVC = UIActivityViewController(activityItems: [url], applicationActivities: activities) - activityVC.popoverPresentationController?.barButtonItem = sender - presentViewController(activityVC, animated: true, completion: nil) - } - } - - - // MARK: KVO - - /// :nodoc: - public override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer) { - guard let theKeyPath = keyPath where object as? WKWebView == webView else { - super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context) - return - } - - if displaysWebViewTitle && theKeyPath == TitleKeyPath { - title = webView.title - } - - if theKeyPath == EstimatedProgressKeyPath { - updateProgress() - } - } - - // MARK: Private - - private final func updateProgress() { - let completed = webView.estimatedProgress == 1.0 - progressBar.setProgress(completed ? 0.0 : Float(webView.estimatedProgress), animated: !completed) - UIApplication.sharedApplication().networkActivityIndicatorVisible = !completed - } - -} diff --git a/FolioReaderKit/Vendor/SSZipArchive/SSZipArchive.h b/FolioReaderKit/Vendor/SSZipArchive/SSZipArchive.h deleted file mode 100755 index 057908413..000000000 --- a/FolioReaderKit/Vendor/SSZipArchive/SSZipArchive.h +++ /dev/null @@ -1,69 +0,0 @@ -// -// SSZipArchive.h -// SSZipArchive -// -// Created by Sam Soffes on 7/21/10. -// Copyright (c) Sam Soffes 2010-2015. All rights reserved. -// - -#ifndef _SSZIPARCHIVE_H -#define _SSZIPARCHIVE_H - -#import -#include "unzip.h" - -@protocol SSZipArchiveDelegate; - -@interface SSZipArchive : NSObject - -// Unzip -+ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination; -+ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination delegate:(id)delegate; - -+ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination overwrite:(BOOL)overwrite password:(NSString *)password error:(NSError **)error; -+ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination overwrite:(BOOL)overwrite password:(NSString *)password error:(NSError **)error delegate:(id)delegate; - -+ (BOOL)unzipFileAtPath:(NSString *)path - toDestination:(NSString *)destination - progressHandler:(void (^)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler - completionHandler:(void (^)(NSString *path, BOOL succeeded, NSError *error))completionHandler; - -+ (BOOL)unzipFileAtPath:(NSString *)path - toDestination:(NSString *)destination - overwrite:(BOOL)overwrite - password:(NSString *)password - progressHandler:(void (^)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler - completionHandler:(void (^)(NSString *path, BOOL succeeded, NSError *error))completionHandler; - -// Zip -+ (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)filenames; -+ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath; -+ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath keepParentDirectory:(BOOL)keepParentDirectory; - -- (id)initWithPath:(NSString *)path; -- (BOOL)open; -- (BOOL)writeFile:(NSString *)path; -- (BOOL)writeFileAtPath:(NSString *)path withFileName:(NSString *)fileName; -- (BOOL)writeData:(NSData *)data filename:(NSString *)filename; -- (BOOL)close; - -@end - -@protocol SSZipArchiveDelegate - -@optional - -- (void)zipArchiveWillUnzipArchiveAtPath:(NSString *)path zipInfo:(unz_global_info)zipInfo; -- (void)zipArchiveDidUnzipArchiveAtPath:(NSString *)path zipInfo:(unz_global_info)zipInfo unzippedPath:(NSString *)unzippedPath; - -- (BOOL)zipArchiveShouldUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInfo:(unz_file_info)fileInfo; -- (void)zipArchiveWillUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInfo:(unz_file_info)fileInfo; -- (void)zipArchiveDidUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInfo:(unz_file_info)fileInfo; -- (void)zipArchiveDidUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath unzippedFilePath:(NSString *)unzippedFilePath; - -- (void)zipArchiveProgressEvent:(unsigned long long)loaded total:(unsigned long long)total; -- (void)zipArchiveDidUnzipArchiveFile:(NSString *)zipFile entryPath:(NSString *)entryPath destPath:(NSString *)destPath; - -@end - -#endif /* _SSZIPARCHIVE_H */ diff --git a/FolioReaderKit/Vendor/SSZipArchive/SSZipArchive.m b/FolioReaderKit/Vendor/SSZipArchive/SSZipArchive.m deleted file mode 100755 index aa83f07d7..000000000 --- a/FolioReaderKit/Vendor/SSZipArchive/SSZipArchive.m +++ /dev/null @@ -1,672 +0,0 @@ -// -// SSZipArchive.m -// SSZipArchive -// -// Created by Sam Soffes on 7/21/10. -// Copyright (c) Sam Soffes 2010-2015. All rights reserved. -// - -#import "SSZipArchive.h" -#include "zip.h" -#import "zlib.h" -#import "zconf.h" - -#include - -#define CHUNK 16384 - -@interface SSZipArchive () -+ (NSDate *)_dateWithMSDOSFormat:(UInt32)msdosDateTime; -@end - -@implementation SSZipArchive -{ - NSString *_path; - NSString *_filename; - zipFile _zip; -} - -#pragma mark - Unzipping - -+ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination -{ - return [self unzipFileAtPath:path toDestination:destination delegate:nil]; -} - -+ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination overwrite:(BOOL)overwrite password:(NSString *)password error:(NSError **)error -{ - return [self unzipFileAtPath:path toDestination:destination overwrite:overwrite password:password error:error delegate:nil progressHandler:nil completionHandler:nil]; -} - -+ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination delegate:(id)delegate -{ - return [self unzipFileAtPath:path toDestination:destination overwrite:YES password:nil error:nil delegate:delegate progressHandler:nil completionHandler:nil]; -} - -+ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination overwrite:(BOOL)overwrite password:(NSString *)password error:(NSError **)error delegate:(id)delegate -{ - return [self unzipFileAtPath:path toDestination:destination overwrite:overwrite password:password error:error delegate:delegate progressHandler:nil completionHandler:nil]; -} - -+ (BOOL)unzipFileAtPath:(NSString *)path - toDestination:(NSString *)destination - overwrite:(BOOL)overwrite - password:(NSString *)password - progressHandler:(void (^)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler - completionHandler:(void (^)(NSString *path, BOOL succeeded, NSError *error))completionHandler -{ - return [self unzipFileAtPath:path toDestination:destination overwrite:overwrite password:password error:nil delegate:nil progressHandler:progressHandler completionHandler:completionHandler]; -} - -+ (BOOL)unzipFileAtPath:(NSString *)path - toDestination:(NSString *)destination - progressHandler:(void (^)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler - completionHandler:(void (^)(NSString *path, BOOL succeeded, NSError *error))completionHandler -{ - return [self unzipFileAtPath:path toDestination:destination overwrite:YES password:nil error:nil delegate:nil progressHandler:progressHandler completionHandler:completionHandler]; -} - -+ (BOOL)unzipFileAtPath:(NSString *)path - toDestination:(NSString *)destination - overwrite:(BOOL)overwrite - password:(NSString *)password - error:(NSError **)error - delegate:(id)delegate - progressHandler:(void (^)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler - completionHandler:(void (^)(NSString *path, BOOL succeeded, NSError *error))completionHandler -{ - // Begin opening - zipFile zip = unzOpen((const char*)[path UTF8String]); - if (zip == NULL) - { - NSDictionary *userInfo = [NSDictionary dictionaryWithObject:@"failed to open zip file" forKey:NSLocalizedDescriptionKey]; - NSError *err = [NSError errorWithDomain:@"SSZipArchiveErrorDomain" code:-1 userInfo:userInfo]; - if (error) - { - *error = err; - } - if (completionHandler) - { - completionHandler(nil, NO, err); - } - return NO; - } - - NSDictionary * fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil]; - unsigned long long fileSize = [[fileAttributes objectForKey:NSFileSize] unsignedLongLongValue]; - unsigned long long currentPosition = 0; - - unz_global_info globalInfo = {0ul, 0ul}; - unzGetGlobalInfo(zip, &globalInfo); - - // Begin unzipping - if (unzGoToFirstFile(zip) != UNZ_OK) - { - NSDictionary *userInfo = [NSDictionary dictionaryWithObject:@"failed to open first file in zip file" forKey:NSLocalizedDescriptionKey]; - NSError *err = [NSError errorWithDomain:@"SSZipArchiveErrorDomain" code:-2 userInfo:userInfo]; - if (error) - { - *error = err; - } - if (completionHandler) - { - completionHandler(nil, NO, err); - } - return NO; - } - - BOOL success = YES; - BOOL canceled = NO; - int ret = 0; - unsigned char buffer[4096] = {0}; - NSFileManager *fileManager = [NSFileManager defaultManager]; - NSMutableSet *directoriesModificationDates = [[NSMutableSet alloc] init]; - - // Message delegate - if ([delegate respondsToSelector:@selector(zipArchiveWillUnzipArchiveAtPath:zipInfo:)]) { - [delegate zipArchiveWillUnzipArchiveAtPath:path zipInfo:globalInfo]; - } - if ([delegate respondsToSelector:@selector(zipArchiveProgressEvent:total:)]) { - [delegate zipArchiveProgressEvent:(NSInteger)currentPosition total:(NSInteger)fileSize]; - } - - NSInteger currentFileNumber = 0; - do { - @autoreleasepool { - if ([password length] == 0) { - ret = unzOpenCurrentFile(zip); - } else { - ret = unzOpenCurrentFilePassword(zip, [password cStringUsingEncoding:NSASCIIStringEncoding]); - } - - if (ret != UNZ_OK) { - success = NO; - break; - } - - // Reading data and write to file - unz_file_info fileInfo; - memset(&fileInfo, 0, sizeof(unz_file_info)); - - ret = unzGetCurrentFileInfo(zip, &fileInfo, NULL, 0, NULL, 0, NULL, 0); - if (ret != UNZ_OK) { - success = NO; - unzCloseCurrentFile(zip); - break; - } - - currentPosition += fileInfo.compressed_size; - - // Message delegate - if ([delegate respondsToSelector:@selector(zipArchiveShouldUnzipFileAtIndex:totalFiles:archivePath:fileInfo:)]) { - if (![delegate zipArchiveShouldUnzipFileAtIndex:currentFileNumber - totalFiles:(NSInteger)globalInfo.number_entry - archivePath:path fileInfo:fileInfo]) { - success = NO; - canceled = YES; - break; - } - } - if ([delegate respondsToSelector:@selector(zipArchiveWillUnzipFileAtIndex:totalFiles:archivePath:fileInfo:)]) { - [delegate zipArchiveWillUnzipFileAtIndex:currentFileNumber totalFiles:(NSInteger)globalInfo.number_entry - archivePath:path fileInfo:fileInfo]; - } - if ([delegate respondsToSelector:@selector(zipArchiveProgressEvent:total:)]) { - [delegate zipArchiveProgressEvent:(NSInteger)currentPosition total:(NSInteger)fileSize]; - } - - char *filename = (char *)malloc(fileInfo.size_filename + 1); - unzGetCurrentFileInfo(zip, &fileInfo, filename, fileInfo.size_filename + 1, NULL, 0, NULL, 0); - filename[fileInfo.size_filename] = '\0'; - - // - // Determine whether this is a symbolic link: - // - File is stored with 'version made by' value of UNIX (3), - // as per http://www.pkware.com/documents/casestudies/APPNOTE.TXT - // in the upper byte of the version field. - // - BSD4.4 st_mode constants are stored in the high 16 bits of the - // external file attributes (defacto standard, verified against libarchive) - // - // The original constants can be found here: - // http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.4BSD/usr/include/sys/stat.h - // - const uLong ZipUNIXVersion = 3; - const uLong BSD_SFMT = 0170000; - const uLong BSD_IFLNK = 0120000; - - BOOL fileIsSymbolicLink = NO; - if (((fileInfo.version >> 8) == ZipUNIXVersion) && BSD_IFLNK == (BSD_SFMT & (fileInfo.external_fa >> 16))) { - fileIsSymbolicLink = NO; - } - - // Check if it contains directory - NSString *strPath = [NSString stringWithCString:filename encoding:NSUTF8StringEncoding]; - BOOL isDirectory = NO; - if (filename[fileInfo.size_filename-1] == '/' || filename[fileInfo.size_filename-1] == '\\') { - isDirectory = YES; - } - free(filename); - - // Contains a path - if ([strPath rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"/\\"]].location != NSNotFound) { - strPath = [strPath stringByReplacingOccurrencesOfString:@"\\" withString:@"/"]; - } - - NSString *fullPath = [destination stringByAppendingPathComponent:strPath]; - NSError *err = nil; - NSDate *modDate = [[self class] _dateWithMSDOSFormat:(UInt32)fileInfo.dosDate]; - NSDictionary *directoryAttr = [NSDictionary dictionaryWithObjectsAndKeys:modDate, NSFileCreationDate, modDate, NSFileModificationDate, nil]; - - if (isDirectory) { - [fileManager createDirectoryAtPath:fullPath withIntermediateDirectories:YES attributes:directoryAttr error:&err]; - } else { - [fileManager createDirectoryAtPath:[fullPath stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:directoryAttr error:&err]; - } - if (nil != err) { - NSLog(@"[SSZipArchive] Error: %@", err.localizedDescription); - } - - if(!fileIsSymbolicLink) - [directoriesModificationDates addObject: [NSDictionary dictionaryWithObjectsAndKeys:fullPath, @"path", modDate, @"modDate", nil]]; - - if ([fileManager fileExistsAtPath:fullPath] && !isDirectory && !overwrite) { - unzCloseCurrentFile(zip); - ret = unzGoToNextFile(zip); - continue; - } - - if (!fileIsSymbolicLink) { - FILE *fp = fopen((const char*)[fullPath UTF8String], "wb"); - while (fp) { - int readBytes = unzReadCurrentFile(zip, buffer, 4096); - - if (readBytes > 0) { - fwrite(buffer, readBytes, 1, fp ); - } else { - break; - } - } - - if (fp) { - if ([[[fullPath pathExtension] lowercaseString] isEqualToString:@"zip"]) { - NSLog(@"Unzipping nested .zip file: %@", [fullPath lastPathComponent]); - if ([self unzipFileAtPath:fullPath toDestination:[fullPath stringByDeletingLastPathComponent] overwrite:overwrite password:password error:nil delegate:nil]) { - [[NSFileManager defaultManager] removeItemAtPath:fullPath error:nil]; - } - } - - fclose(fp); - - // Set the original datetime property - if (fileInfo.dosDate != 0) { - NSDate *orgDate = [[self class] _dateWithMSDOSFormat:(UInt32)fileInfo.dosDate]; - NSDictionary *attr = [NSDictionary dictionaryWithObject:orgDate forKey:NSFileModificationDate]; - - if (attr) { - if ([fileManager setAttributes:attr ofItemAtPath:fullPath error:nil] == NO) { - // Can't set attributes - NSLog(@"[SSZipArchive] Failed to set attributes - whilst setting modification date"); - } - } - } - - // Set the original permissions on the file - uLong permissions = fileInfo.external_fa >> 16; - if (permissions != 0) { - // Store it into a NSNumber - NSNumber *permissionsValue = @(permissions); - - // Retrieve any existing attributes - NSMutableDictionary *attrs = [[NSMutableDictionary alloc] initWithDictionary:[fileManager attributesOfItemAtPath:fullPath error:nil]]; - - // Set the value in the attributes dict - attrs[NSFilePosixPermissions] = permissionsValue; - - // Update attributes - if ([fileManager setAttributes:attrs ofItemAtPath:fullPath error:nil] == NO) { - // Unable to set the permissions attribute - NSLog(@"[SSZipArchive] Failed to set attributes - whilst setting permissions"); - } - -#if !__has_feature(objc_arc) - [attrs release]; -#endif - } - } - } - else - { - // Assemble the path for the symbolic link - NSMutableString* destinationPath = [NSMutableString string]; - int bytesRead = 0; - while((bytesRead = unzReadCurrentFile(zip, buffer, 4096)) > 0) - { - buffer[bytesRead] = (int)0; - [destinationPath appendString:[NSString stringWithUTF8String:(const char*)buffer]]; - } - - // Create the symbolic link (making sure it stays relative if it was relative before) - int symlinkError = symlink([destinationPath cStringUsingEncoding:NSUTF8StringEncoding], - [fullPath cStringUsingEncoding:NSUTF8StringEncoding]); - - if(symlinkError != 0) - { - NSLog(@"Failed to create symbolic link at \"%@\" to \"%@\". symlink() error code: %d", fullPath, destinationPath, errno); - } - } - - unzCloseCurrentFile( zip ); - ret = unzGoToNextFile( zip ); - - // Message delegate - if ([delegate respondsToSelector:@selector(zipArchiveDidUnzipFileAtIndex:totalFiles:archivePath:fileInfo:)]) { - [delegate zipArchiveDidUnzipFileAtIndex:currentFileNumber totalFiles:(NSInteger)globalInfo.number_entry - archivePath:path fileInfo:fileInfo]; - } else if ([delegate respondsToSelector: @selector(zipArchiveDidUnzipFileAtIndex:totalFiles:archivePath:unzippedFilePath:)]) { - [delegate zipArchiveDidUnzipFileAtIndex: currentFileNumber totalFiles: (NSInteger)globalInfo.number_entry - archivePath:path unzippedFilePath: fullPath]; - } - - currentFileNumber++; - if (progressHandler) - { - progressHandler(strPath, fileInfo, currentFileNumber, globalInfo.number_entry); - } - } - } while(ret == UNZ_OK && ret != UNZ_END_OF_LIST_OF_FILE); - - // Close - unzClose(zip); - - // The process of decompressing the .zip archive causes the modification times on the folders - // to be set to the present time. So, when we are done, they need to be explicitly set. - // set the modification date on all of the directories. - NSError * err = nil; - for (NSDictionary * d in directoriesModificationDates) { - if (![[NSFileManager defaultManager] setAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[d objectForKey:@"modDate"], NSFileModificationDate, nil] ofItemAtPath:[d objectForKey:@"path"] error:&err]) { - NSLog(@"[SSZipArchive] Set attributes failed for directory: %@.", [d objectForKey:@"path"]); - } - if (err) { - NSLog(@"[SSZipArchive] Error setting directory file modification date attribute: %@",err.localizedDescription); - } - } - -#if !__has_feature(objc_arc) - [directoriesModificationDates release]; -#endif - - // Message delegate - if (success && [delegate respondsToSelector:@selector(zipArchiveDidUnzipArchiveAtPath:zipInfo:unzippedPath:)]) { - [delegate zipArchiveDidUnzipArchiveAtPath:path zipInfo:globalInfo unzippedPath:destination]; - } - // final progress event = 100% - if (!canceled && [delegate respondsToSelector:@selector(zipArchiveProgressEvent:total:)]) { - [delegate zipArchiveProgressEvent:fileSize total:fileSize]; - } - - if (completionHandler) - { - completionHandler(path, YES, nil); - } - return success; -} - -#pragma mark - Zipping - -+ (BOOL)createZipFileAtPath:(NSString *)path withFilesAtPaths:(NSArray *)paths -{ - BOOL success = NO; - SSZipArchive *zipArchive = [[SSZipArchive alloc] initWithPath:path]; - if ([zipArchive open]) { - for (NSString *filePath in paths) { - [zipArchive writeFile:filePath]; - } - success = [zipArchive close]; - } - -#if !__has_feature(objc_arc) - [zipArchive release]; -#endif - - return success; -} - -+ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath { - return [self createZipFileAtPath:path withContentsOfDirectory:directoryPath keepParentDirectory:NO]; -} - - -+ (BOOL)createZipFileAtPath:(NSString *)path withContentsOfDirectory:(NSString *)directoryPath keepParentDirectory:(BOOL)keepParentDirectory { - BOOL success = NO; - - NSFileManager *fileManager = nil; - SSZipArchive *zipArchive = [[SSZipArchive alloc] initWithPath:path]; - - if ([zipArchive open]) { - // use a local filemanager (queue/thread compatibility) - fileManager = [[NSFileManager alloc] init]; - NSDirectoryEnumerator *dirEnumerator = [fileManager enumeratorAtPath:directoryPath]; - NSString *fileName; - while ((fileName = [dirEnumerator nextObject])) { - BOOL isDir; - NSString *fullFilePath = [directoryPath stringByAppendingPathComponent:fileName]; - [fileManager fileExistsAtPath:fullFilePath isDirectory:&isDir]; - if (!isDir) { - if (keepParentDirectory) - { - fileName = [[directoryPath lastPathComponent] stringByAppendingPathComponent:fileName]; - } - [zipArchive writeFileAtPath:fullFilePath withFileName:fileName]; - } - else - { - if([[NSFileManager defaultManager] subpathsOfDirectoryAtPath:fullFilePath error:nil].count == 0) - { - NSString *tempName = [fullFilePath stringByAppendingPathComponent:@".DS_Store"]; - [@"" writeToFile:tempName atomically:YES encoding:NSUTF8StringEncoding error:nil]; - [zipArchive writeFileAtPath:tempName withFileName:[fileName stringByAppendingPathComponent:@".DS_Store"]]; - [[NSFileManager defaultManager] removeItemAtPath:tempName error:nil]; - } - } - } - success = [zipArchive close]; - } - -#if !__has_feature(objc_arc) - [fileManager release]; - [zipArchive release]; -#endif - - return success; -} - - -- (id)initWithPath:(NSString *)path -{ - if ((self = [super init])) { - _path = [path copy]; - } - return self; -} - - -#if !__has_feature(objc_arc) -- (void)dealloc -{ - [_path release]; - [super dealloc]; -} -#endif - - -- (BOOL)open -{ - NSAssert((_zip == NULL), @"Attempting open an archive which is already open"); - _zip = zipOpen([_path UTF8String], APPEND_STATUS_CREATE); - return (NULL != _zip); -} - - -- (void)zipInfo:(zip_fileinfo*)zipInfo setDate:(NSDate*)date -{ - NSCalendar *currentCalendar = [NSCalendar currentCalendar]; -#if defined(__IPHONE_8_0) || defined(__MAC_10_10) - uint flags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; -#else - uint flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; -#endif - NSDateComponents *components = [currentCalendar components:flags fromDate:date]; - zipInfo->tmz_date.tm_sec = (unsigned int)components.second; - zipInfo->tmz_date.tm_min = (unsigned int)components.minute; - zipInfo->tmz_date.tm_hour = (unsigned int)components.hour; - zipInfo->tmz_date.tm_mday = (unsigned int)components.day; - zipInfo->tmz_date.tm_mon = (unsigned int)components.month - 1; - zipInfo->tmz_date.tm_year = (unsigned int)components.year; -} - -- (BOOL)writeFolderAtPath:(NSString *)path withFolderName:(NSString *)folderName -{ - NSAssert((_zip != NULL), @"Attempting to write to an archive which was never opened"); - - zip_fileinfo zipInfo = {{0}}; - - NSDictionary *attr = [[NSFileManager defaultManager] attributesOfItemAtPath:path error: nil]; - if( attr ) - { - NSDate *fileDate = (NSDate *)[attr objectForKey:NSFileModificationDate]; - if( fileDate ) - { - [self zipInfo:&zipInfo setDate: fileDate ]; - } - - // Write permissions into the external attributes, for details on this see here: http://unix.stackexchange.com/a/14727 - // Get the permissions value from the files attributes - NSNumber *permissionsValue = (NSNumber *)[attr objectForKey:NSFilePosixPermissions]; - if (permissionsValue) { - // Get the short value for the permissions - short permissionsShort = permissionsValue.shortValue; - - // Convert this into an octal by adding 010000, 010000 being the flag for a regular file - NSInteger permissionsOctal = 0100000 + permissionsShort; - - // Convert this into a long value - uLong permissionsLong = @(permissionsOctal).unsignedLongValue; - - // Store this into the external file attributes once it has been shifted 16 places left to form part of the second from last byte - zipInfo.external_fa = permissionsLong << 16L; - } - } - - unsigned int len = 0; - zipOpenNewFileInZip(_zip, [[folderName stringByAppendingString:@"/"] UTF8String], &zipInfo, NULL, 0, NULL, 0, NULL, Z_DEFLATED, Z_NO_COMPRESSION); - zipWriteInFileInZip(_zip, &len, 0); - zipCloseFileInZip(_zip); - return YES; -} - -- (BOOL)writeFile:(NSString *)path -{ - return [self writeFileAtPath:path withFileName:nil]; -} - -// supports writing files with logical folder/directory structure -// *path* is the absolute path of the file that will be compressed -// *fileName* is the relative name of the file how it is stored within the zip e.g. /folder/subfolder/text1.txt -- (BOOL)writeFileAtPath:(NSString *)path withFileName:(NSString *)fileName -{ - NSAssert((_zip != NULL), @"Attempting to write to an archive which was never opened"); - - FILE *input = fopen([path UTF8String], "r"); - if (NULL == input) { - return NO; - } - - const char *afileName; - if (!fileName) { - afileName = [path.lastPathComponent UTF8String]; - } - else { - afileName = [fileName UTF8String]; - } - - zip_fileinfo zipInfo = {{0}}; - - NSDictionary *attr = [[NSFileManager defaultManager] attributesOfItemAtPath:path error: nil]; - if( attr ) - { - NSDate *fileDate = (NSDate *)[attr objectForKey:NSFileModificationDate]; - if( fileDate ) - { - [self zipInfo:&zipInfo setDate: fileDate ]; - } - - // Write permissions into the external attributes, for details on this see here: http://unix.stackexchange.com/a/14727 - // Get the permissions value from the files attributes - NSNumber *permissionsValue = (NSNumber *)[attr objectForKey:NSFilePosixPermissions]; - if (permissionsValue) { - // Get the short value for the permissions - short permissionsShort = permissionsValue.shortValue; - - // Convert this into an octal by adding 010000, 010000 being the flag for a regular file - NSInteger permissionsOctal = 0100000 + permissionsShort; - - // Convert this into a long value - uLong permissionsLong = @(permissionsOctal).unsignedLongValue; - - // Store this into the external file attributes once it has been shifted 16 places left to form part of the second from last byte - zipInfo.external_fa = permissionsLong << 16L; - } - } - - zipOpenNewFileInZip(_zip, afileName, &zipInfo, NULL, 0, NULL, 0, NULL, Z_DEFLATED, Z_DEFAULT_COMPRESSION); - - void *buffer = malloc(CHUNK); - unsigned int len = 0; - - while (!feof(input)) - { - len = (unsigned int) fread(buffer, 1, CHUNK, input); - zipWriteInFileInZip(_zip, buffer, len); - } - - zipCloseFileInZip(_zip); - free(buffer); - return YES; -} - -- (BOOL)writeData:(NSData *)data filename:(NSString *)filename -{ - if (!_zip) { - return NO; - } - if (!data) { - return NO; - } - zip_fileinfo zipInfo = {{0,0,0,0,0,0},0,0,0}; - [self zipInfo:&zipInfo setDate:[NSDate date]]; - - zipOpenNewFileInZip(_zip, [filename UTF8String], &zipInfo, NULL, 0, NULL, 0, NULL, Z_DEFLATED, Z_DEFAULT_COMPRESSION); - - zipWriteInFileInZip(_zip, data.bytes, (unsigned int)data.length); - - zipCloseFileInZip(_zip); - return YES; -} - - -- (BOOL)close -{ - NSAssert((_zip != NULL), @"[SSZipArchive] Attempting to close an archive which was never opened"); - zipClose(_zip, NULL); - return YES; -} - -#pragma mark - Private - -// Format from http://newsgroups.derkeiler.com/Archive/Comp/comp.os.msdos.programmer/2009-04/msg00060.html -// Two consecutive words, or a longword, YYYYYYYMMMMDDDDD hhhhhmmmmmmsssss -// YYYYYYY is years from 1980 = 0 -// sssss is (seconds/2). -// -// 3658 = 0011 0110 0101 1000 = 0011011 0010 11000 = 27 2 24 = 2007-02-24 -// 7423 = 0111 0100 0010 0011 - 01110 100001 00011 = 14 33 2 = 14:33:06 -+ (NSDate *)_dateWithMSDOSFormat:(UInt32)msdosDateTime -{ - static const UInt32 kYearMask = 0xFE000000; - static const UInt32 kMonthMask = 0x1E00000; - static const UInt32 kDayMask = 0x1F0000; - static const UInt32 kHourMask = 0xF800; - static const UInt32 kMinuteMask = 0x7E0; - static const UInt32 kSecondMask = 0x1F; - - static NSCalendar *gregorian; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ -#if defined(__IPHONE_8_0) || defined(__MAC_10_10) - gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; -#else - gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; -#endif - }); - - NSDateComponents *components = [[NSDateComponents alloc] init]; - - NSAssert(0xFFFFFFFF == (kYearMask | kMonthMask | kDayMask | kHourMask | kMinuteMask | kSecondMask), @"[SSZipArchive] MSDOS date masks don't add up"); - - [components setYear:1980 + ((msdosDateTime & kYearMask) >> 25)]; - [components setMonth:(msdosDateTime & kMonthMask) >> 21]; - [components setDay:(msdosDateTime & kDayMask) >> 16]; - [components setHour:(msdosDateTime & kHourMask) >> 11]; - [components setMinute:(msdosDateTime & kMinuteMask) >> 5]; - [components setSecond:(msdosDateTime & kSecondMask) * 2]; - - NSDate *date = [NSDate dateWithTimeInterval:0 sinceDate:[gregorian dateFromComponents:components]]; - -#if !__has_feature(objc_arc) - [components release]; -#endif - - return date; -} - -@end diff --git a/FolioReaderKit/Vendor/SSZipArchive/minizip/crypt.h b/FolioReaderKit/Vendor/SSZipArchive/minizip/crypt.h deleted file mode 100755 index a01d08d93..000000000 --- a/FolioReaderKit/Vendor/SSZipArchive/minizip/crypt.h +++ /dev/null @@ -1,131 +0,0 @@ -/* crypt.h -- base code for crypt/uncrypt ZIPfile - - - Version 1.01e, February 12th, 2005 - - Copyright (C) 1998-2005 Gilles Vollant - - This code is a modified version of crypting code in Infozip distribution - - The encryption/decryption parts of this source code (as opposed to the - non-echoing password parts) were originally written in Europe. The - whole source package can be freely distributed, including from the USA. - (Prior to January 2000, re-export from the US was a violation of US law.) - - This encryption code is a direct transcription of the algorithm from - Roger Schlafly, described by Phil Katz in the file appnote.txt. This - file (appnote.txt) is distributed with the PKZIP program (even in the - version without encryption capabilities). - - If you don't need crypting in your application, just define symbols - NOCRYPT and NOUNCRYPT. - - This code support the "Traditional PKWARE Encryption". - - The new AES encryption added on Zip format by Winzip (see the page - http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong - Encryption is not supported. -*/ - -#define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8)) - -/*********************************************************************** - * Return the next byte in the pseudo-random sequence - */ -static int decrypt_byte(unsigned long* pkeys, const unsigned long* pcrc_32_tab) -{ - unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an - * unpredictable manner on 16-bit systems; not a problem - * with any known compiler so far, though */ - - temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2; - return (int)(((temp * (temp ^ 1)) >> 8) & 0xff); -} - -/*********************************************************************** - * Update the encryption keys with the next byte of plain text - */ -static int update_keys(unsigned long* pkeys,const unsigned long* pcrc_32_tab,int c) -{ - (*(pkeys+0)) = CRC32((*(pkeys+0)), c); - (*(pkeys+1)) += (*(pkeys+0)) & 0xff; - (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1; - { - register int keyshift = (int)((*(pkeys+1)) >> 24); - (*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift); - } - return c; -} - - -/*********************************************************************** - * Initialize the encryption keys and the random header according to - * the given password. - */ -static void init_keys(const char* passwd,unsigned long* pkeys,const unsigned long* pcrc_32_tab) -{ - *(pkeys+0) = 305419896L; - *(pkeys+1) = 591751049L; - *(pkeys+2) = 878082192L; - while (*passwd != '\0') { - update_keys(pkeys,pcrc_32_tab,(int)*passwd); - passwd++; - } -} - -#define zdecode(pkeys,pcrc_32_tab,c) \ - (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab))) - -#define zencode(pkeys,pcrc_32_tab,c,t) \ - (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c)) - -#ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED - -#define RAND_HEAD_LEN 12 - /* "last resort" source for second part of crypt seed pattern */ -# ifndef ZCR_SEED2 -# define ZCR_SEED2 3141592654UL /* use PI as default pattern */ -# endif - -static int crypthead(const char* passwd, /* password string */ - unsigned char* buf, /* where to write header */ - int bufSize, - unsigned long* pkeys, - const unsigned long* pcrc_32_tab, - unsigned long crcForCrypting) -{ - int n; /* index in random header */ - int t; /* temporary */ - int c; /* random byte */ - unsigned char header[RAND_HEAD_LEN-2]; /* random header */ - static unsigned calls = 0; /* ensure different random header each time */ - - if (bufSize> 7) & 0xff; - header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t); - } - /* Encrypt random header (last two bytes is high word of crc) */ - init_keys(passwd, pkeys, pcrc_32_tab); - for (n = 0; n < RAND_HEAD_LEN-2; n++) - { - buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t); - } - buf[n++] = (unsigned char)zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 16) & 0xff, t); - buf[n++] = (unsigned char)zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 24) & 0xff, t); - return n; -} - -#endif diff --git a/FolioReaderKit/Vendor/SSZipArchive/minizip/ioapi.c b/FolioReaderKit/Vendor/SSZipArchive/minizip/ioapi.c deleted file mode 100755 index b04a5d8cc..000000000 --- a/FolioReaderKit/Vendor/SSZipArchive/minizip/ioapi.c +++ /dev/null @@ -1,238 +0,0 @@ -/* ioapi.h -- IO base function header for compress/uncompress .zip - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - -*/ - -#if (defined(_WIN32)) - #define _CRT_SECURE_NO_WARNINGS -#endif - -#include "ioapi.h" - -voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode) -{ - if (pfilefunc->zfile_func64.zopen64_file != NULL) - return (*(pfilefunc->zfile_func64.zopen64_file)) (pfilefunc->zfile_func64.opaque,filename,mode); - else - { - return (*(pfilefunc->zopen32_file))(pfilefunc->zfile_func64.opaque,(const char*)filename,mode); - } -} - -long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin) -{ - if (pfilefunc->zfile_func64.zseek64_file != NULL) - return (*(pfilefunc->zfile_func64.zseek64_file)) (pfilefunc->zfile_func64.opaque,filestream,offset,origin); - else - { - uLong offsetTruncated = (uLong)offset; - if (offsetTruncated != offset) - return -1; - else - return (*(pfilefunc->zseek32_file))(pfilefunc->zfile_func64.opaque,filestream,offsetTruncated,origin); - } -} - -ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream) -{ - if (pfilefunc->zfile_func64.zseek64_file != NULL) - return (*(pfilefunc->zfile_func64.ztell64_file)) (pfilefunc->zfile_func64.opaque,filestream); - else - { - uLong tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream); - if ((tell_uLong) == ((uLong)-1)) - return (ZPOS64_T)-1; - else - return tell_uLong; - } -} - -void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32) -{ - p_filefunc64_32->zfile_func64.zopen64_file = NULL; - p_filefunc64_32->zopen32_file = p_filefunc32->zopen_file; - p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file; - p_filefunc64_32->zfile_func64.zread_file = p_filefunc32->zread_file; - p_filefunc64_32->zfile_func64.zwrite_file = p_filefunc32->zwrite_file; - p_filefunc64_32->zfile_func64.ztell64_file = NULL; - p_filefunc64_32->zfile_func64.zseek64_file = NULL; - p_filefunc64_32->zfile_func64.zclose_file = p_filefunc32->zclose_file; - -#ifndef __clang_analyzer__ - p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file; -#endif - - p_filefunc64_32->zfile_func64.opaque = p_filefunc32->opaque; - p_filefunc64_32->zseek32_file = p_filefunc32->zseek_file; - p_filefunc64_32->ztell32_file = p_filefunc32->ztell_file; -} - - - -static voidpf ZCALLBACK fopen_file_func OF((voidpf opaque, const char* filename, int mode)); -static uLong ZCALLBACK fread_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size)); -static uLong ZCALLBACK fwrite_file_func OF((voidpf opaque, voidpf stream, const void* buf,uLong size)); -static ZPOS64_T ZCALLBACK ftell64_file_func OF((voidpf opaque, voidpf stream)); -static long ZCALLBACK fseek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); -static int ZCALLBACK fclose_file_func OF((voidpf opaque, voidpf stream)); -static int ZCALLBACK ferror_file_func OF((voidpf opaque, voidpf stream)); - -static voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* filename, int mode) -{ - FILE* file = NULL; - const char* mode_fopen = NULL; - if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) - mode_fopen = "rb"; - else - if (mode & ZLIB_FILEFUNC_MODE_EXISTING) - mode_fopen = "r+b"; - else - if (mode & ZLIB_FILEFUNC_MODE_CREATE) - mode_fopen = "wb"; - - if ((filename!=NULL) && (mode_fopen != NULL)) - file = fopen(filename, mode_fopen); - return file; -} - -static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename, int mode) -{ - FILE* file = NULL; - const char* mode_fopen = NULL; - if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) - mode_fopen = "rb"; - else - if (mode & ZLIB_FILEFUNC_MODE_EXISTING) - mode_fopen = "r+b"; - else - if (mode & ZLIB_FILEFUNC_MODE_CREATE) - mode_fopen = "wb"; - - if ((filename!=NULL) && (mode_fopen != NULL)) - file = fopen64((const char*)filename, mode_fopen); - return file; -} - - -static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf, uLong size) -{ - uLong ret; - ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream); - return ret; -} - -static uLong ZCALLBACK fwrite_file_func (voidpf opaque, voidpf stream, const void* buf, uLong size) -{ - uLong ret; - ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream); - return ret; -} - -static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream) -{ - long ret; - ret = ftell((FILE *)stream); - return ret; -} - - -static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream) -{ - ZPOS64_T ret; - ret = ftello64((FILE *)stream); - return ret; -} - -static long ZCALLBACK fseek_file_func (voidpf opaque, voidpf stream, uLong offset, int origin) -{ - int fseek_origin=0; - long ret; - switch (origin) - { - case ZLIB_FILEFUNC_SEEK_CUR : - fseek_origin = SEEK_CUR; - break; - case ZLIB_FILEFUNC_SEEK_END : - fseek_origin = SEEK_END; - break; - case ZLIB_FILEFUNC_SEEK_SET : - fseek_origin = SEEK_SET; - break; - default: return -1; - } - ret = 0; - if (fseek((FILE *)stream, offset, fseek_origin) != 0) - ret = -1; - return ret; -} - -static long ZCALLBACK fseek64_file_func (voidpf opaque, voidpf stream, ZPOS64_T offset, int origin) -{ - int fseek_origin=0; - long ret; - switch (origin) - { - case ZLIB_FILEFUNC_SEEK_CUR : - fseek_origin = SEEK_CUR; - break; - case ZLIB_FILEFUNC_SEEK_END : - fseek_origin = SEEK_END; - break; - case ZLIB_FILEFUNC_SEEK_SET : - fseek_origin = SEEK_SET; - break; - default: return -1; - } - ret = 0; - - if(fseeko64((FILE *)stream, (long)offset, fseek_origin) != 0) - ret = -1; - return ret; -} - - -static int ZCALLBACK fclose_file_func (voidpf opaque, voidpf stream) -{ - int ret; - ret = fclose((FILE *)stream); - return ret; -} - -static int ZCALLBACK ferror_file_func (voidpf opaque, voidpf stream) -{ - int ret; - ret = ferror((FILE *)stream); - return ret; -} - -void fill_fopen_filefunc (pzlib_filefunc_def) - zlib_filefunc_def* pzlib_filefunc_def; -{ - pzlib_filefunc_def->zopen_file = fopen_file_func; - pzlib_filefunc_def->zread_file = fread_file_func; - pzlib_filefunc_def->zwrite_file = fwrite_file_func; - pzlib_filefunc_def->ztell_file = ftell_file_func; - pzlib_filefunc_def->zseek_file = fseek_file_func; - pzlib_filefunc_def->zclose_file = fclose_file_func; - pzlib_filefunc_def->zerror_file = ferror_file_func; - pzlib_filefunc_def->opaque = NULL; -} - -void fill_fopen64_filefunc (zlib_filefunc64_def* pzlib_filefunc_def) -{ - pzlib_filefunc_def->zopen64_file = fopen64_file_func; - pzlib_filefunc_def->zread_file = fread_file_func; - pzlib_filefunc_def->zwrite_file = fwrite_file_func; - pzlib_filefunc_def->ztell64_file = ftell64_file_func; - pzlib_filefunc_def->zseek64_file = fseek64_file_func; - pzlib_filefunc_def->zclose_file = fclose_file_func; - pzlib_filefunc_def->zerror_file = ferror_file_func; - pzlib_filefunc_def->opaque = NULL; -} diff --git a/FolioReaderKit/Vendor/SSZipArchive/minizip/ioapi.h b/FolioReaderKit/Vendor/SSZipArchive/minizip/ioapi.h deleted file mode 100755 index 7e20e9513..000000000 --- a/FolioReaderKit/Vendor/SSZipArchive/minizip/ioapi.h +++ /dev/null @@ -1,201 +0,0 @@ -/* ioapi.h -- IO base function header for compress/uncompress .zip - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - - Changes - - Oct-2009 - Defined ZPOS64_T to fpos_t on windows and u_int64_t on linux. (might need to find a better why for this) - Oct-2009 - Change to fseeko64, ftello64 and fopen64 so large files would work on linux. - More if/def section may be needed to support other platforms - Oct-2009 - Defined fxxxx64 calls to normal fopen/ftell/fseek so they would compile on windows. - (but you should use iowin32.c for windows instead) - -*/ - -#ifndef _ZLIBIOAPI64_H -#define _ZLIBIOAPI64_H - -#if (!defined(_WIN32)) && (!defined(WIN32)) - - // Linux needs this to support file operation on files larger then 4+GB - // But might need better if/def to select just the platforms that needs them. - - #ifndef __USE_FILE_OFFSET64 - #define __USE_FILE_OFFSET64 - #endif - #ifndef __USE_LARGEFILE64 - #define __USE_LARGEFILE64 - #endif - #ifndef _LARGEFILE64_SOURCE - #define _LARGEFILE64_SOURCE - #endif - #ifndef _FILE_OFFSET_BIT - #define _FILE_OFFSET_BIT 64 - #endif -#endif - -#include -#include -#include "zlib.h" - -#define USE_FILE32API -#if defined(USE_FILE32API) -#define fopen64 fopen -#define ftello64 ftell -#define fseeko64 fseek -#else -#ifdef _MSC_VER - #define fopen64 fopen - #if (_MSC_VER >= 1400) && (!(defined(NO_MSCVER_FILE64_FUNC))) - #define ftello64 _ftelli64 - #define fseeko64 _fseeki64 - #else // old MSC - #define ftello64 ftell - #define fseeko64 fseek - #endif -#endif -#endif - -/* -#ifndef ZPOS64_T - #ifdef _WIN32 - #define ZPOS64_T fpos_t - #else - #include - #define ZPOS64_T uint64_t - #endif -#endif -*/ - -#ifdef HAVE_MINIZIP64_CONF_H -#include "mz64conf.h" -#endif - -/* a type choosen by DEFINE */ -#ifdef HAVE_64BIT_INT_CUSTOM -typedef 64BIT_INT_CUSTOM_TYPE ZPOS64_T; -#else -#ifdef HAS_STDINT_H -#include "stdint.h" -typedef uint64_t ZPOS64_T; -#else - - -#if defined(_MSC_VER) || defined(__BORLANDC__) -typedef unsigned __int64 ZPOS64_T; -#else -typedef unsigned long long int ZPOS64_T; -#endif -#endif -#endif - - - -#ifdef __cplusplus -extern "C" { -#endif - - -#define ZLIB_FILEFUNC_SEEK_CUR (1) -#define ZLIB_FILEFUNC_SEEK_END (2) -#define ZLIB_FILEFUNC_SEEK_SET (0) - -#define ZLIB_FILEFUNC_MODE_READ (1) -#define ZLIB_FILEFUNC_MODE_WRITE (2) -#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3) - -#define ZLIB_FILEFUNC_MODE_EXISTING (4) -#define ZLIB_FILEFUNC_MODE_CREATE (8) - - -#ifndef ZCALLBACK - #if (defined(WIN32) || defined(_WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK) - #define ZCALLBACK CALLBACK - #else - #define ZCALLBACK - #endif -#endif - - - - -typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode)); -typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size)); -typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); -typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream)); -typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream)); - -typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream)); -typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin)); - - -/* here is the "old" 32 bits structure structure */ -typedef struct zlib_filefunc_def_s -{ - open_file_func zopen_file; - read_file_func zread_file; - write_file_func zwrite_file; - tell_file_func ztell_file; - seek_file_func zseek_file; - close_file_func zclose_file; - testerror_file_func zerror_file; - voidpf opaque; -} zlib_filefunc_def; - -typedef ZPOS64_T (ZCALLBACK *tell64_file_func) OF((voidpf opaque, voidpf stream)); -typedef long (ZCALLBACK *seek64_file_func) OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); -typedef voidpf (ZCALLBACK *open64_file_func) OF((voidpf opaque, const void* filename, int mode)); - -typedef struct zlib_filefunc64_def_s -{ - open64_file_func zopen64_file; - read_file_func zread_file; - write_file_func zwrite_file; - tell64_file_func ztell64_file; - seek64_file_func zseek64_file; - close_file_func zclose_file; - testerror_file_func zerror_file; - voidpf opaque; -} zlib_filefunc64_def; - -void fill_fopen64_filefunc OF((zlib_filefunc64_def* pzlib_filefunc_def)); -void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); - -/* now internal definition, only for zip.c and unzip.h */ -typedef struct zlib_filefunc64_32_def_s -{ - zlib_filefunc64_def zfile_func64; - open_file_func zopen32_file; - tell_file_func ztell32_file; - seek_file_func zseek32_file; -} zlib_filefunc64_32_def; - - -#define ZREAD64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zread_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size)) -#define ZWRITE64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zwrite_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size)) -//#define ZTELL64(filefunc,filestream) ((*((filefunc).ztell64_file)) ((filefunc).opaque,filestream)) -//#define ZSEEK64(filefunc,filestream,pos,mode) ((*((filefunc).zseek64_file)) ((filefunc).opaque,filestream,pos,mode)) -#define ZCLOSE64(filefunc,filestream) ((*((filefunc).zfile_func64.zclose_file)) ((filefunc).zfile_func64.opaque,filestream)) -#define ZERROR64(filefunc,filestream) ((*((filefunc).zfile_func64.zerror_file)) ((filefunc).zfile_func64.opaque,filestream)) - -voidpf call_zopen64 OF((const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)); -long call_zseek64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin)); -ZPOS64_T call_ztell64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream)); - -void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32); - -#define ZOPEN64(filefunc,filename,mode) (call_zopen64((&(filefunc)),(filename),(mode))) -#define ZTELL64(filefunc,filestream) (call_ztell64((&(filefunc)),(filestream))) -#define ZSEEK64(filefunc,filestream,pos,mode) (call_zseek64((&(filefunc)),(filestream),(pos),(mode))) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/FolioReaderKit/Vendor/SSZipArchive/minizip/mztools.c b/FolioReaderKit/Vendor/SSZipArchive/minizip/mztools.c deleted file mode 100755 index 80d50e008..000000000 --- a/FolioReaderKit/Vendor/SSZipArchive/minizip/mztools.c +++ /dev/null @@ -1,284 +0,0 @@ -/* - Additional tools for Minizip - Code: Xavier Roche '2004 - License: Same as ZLIB (www.gzip.org) -*/ - -/* Code */ -#include -#include -#include -#include "zlib.h" -#include "unzip.h" -#include "mztools.h" - -#define READ_8(adr) ((unsigned char)*(adr)) -#define READ_16(adr) ( READ_8(adr) | (READ_8(adr+1) << 8) ) -#define READ_32(adr) ( READ_16(adr) | (READ_16((adr)+2) << 16) ) - -#define WRITE_8(buff, n) do { \ - *((unsigned char*)(buff)) = (unsigned char) ((n) & 0xff); \ -} while(0) -#define WRITE_16(buff, n) do { \ - WRITE_8((unsigned char*)(buff), n); \ - WRITE_8(((unsigned char*)(buff)) + 1, (n) >> 8); \ -} while(0) -#define WRITE_32(buff, n) do { \ - WRITE_16((unsigned char*)(buff), (n) & 0xffff); \ - WRITE_16((unsigned char*)(buff) + 2, (n) >> 16); \ -} while(0) - -extern int ZEXPORT unzRepair(file, fileOut, fileOutTmp, nRecovered, bytesRecovered) -const char* file; -const char* fileOut; -const char* fileOutTmp; -uLong* nRecovered; -uLong* bytesRecovered; -{ - int err = Z_OK; - FILE* fpZip = fopen(file, "rb"); - FILE* fpOut = fopen(fileOut, "wb"); - FILE* fpOutCD = fopen(fileOutTmp, "wb"); - if (fpZip != NULL && fpOut != NULL) { - int entries = 0; - uLong totalBytes = 0; - char header[30]; - char filename[256]; - char extra[1024]; - int offset = 0; - int offsetCD = 0; - while ( fread(header, 1, 30, fpZip) == 30 ) { - int currentOffset = offset; - - /* File entry */ - if (READ_32(header) == 0x04034b50) { - unsigned int version = READ_16(header + 4); - unsigned int gpflag = READ_16(header + 6); - unsigned int method = READ_16(header + 8); - unsigned int filetime = READ_16(header + 10); - unsigned int filedate = READ_16(header + 12); - unsigned int crc = READ_32(header + 14); /* crc */ - unsigned int cpsize = READ_32(header + 18); /* compressed size */ - unsigned int uncpsize = READ_32(header + 22); /* uncompressed sz */ - unsigned int fnsize = READ_16(header + 26); /* file name length */ - unsigned int extsize = READ_16(header + 28); /* extra field length */ - filename[0] = extra[0] = '\0'; - - /* Header */ - if (fwrite(header, 1, 30, fpOut) == 30) { - offset += 30; - } else { - err = Z_ERRNO; - break; - } - - /* Filename */ - if (fnsize > 0) { - if (fread(filename, 1, fnsize, fpZip) == fnsize) { - if (fwrite(filename, 1, fnsize, fpOut) == fnsize) { - offset += fnsize; - } else { - err = Z_ERRNO; - break; - } - } else { - err = Z_ERRNO; - break; - } - } else { - err = Z_STREAM_ERROR; - break; - } - - /* Extra field */ - if (extsize > 0) { - if (fread(extra, 1, extsize, fpZip) == extsize) { - if (fwrite(extra, 1, extsize, fpOut) == extsize) { - offset += extsize; - } else { - err = Z_ERRNO; - break; - } - } else { - err = Z_ERRNO; - break; - } - } - - /* Data */ - { - int dataSize = cpsize; - if (dataSize == 0) { - dataSize = uncpsize; - } - if (dataSize > 0) { - char* data = malloc(dataSize); - if (data != NULL) { - if ((int)fread(data, 1, dataSize, fpZip) == dataSize) { - if ((int)fwrite(data, 1, dataSize, fpOut) == dataSize) { - offset += dataSize; - totalBytes += dataSize; - } else { - err = Z_ERRNO; - } - } else { - err = Z_ERRNO; - } - free(data); - if (err != Z_OK) { - break; - } - } else { - err = Z_MEM_ERROR; - break; - } - } - } - - /* Central directory entry */ - { - char centralDirectoryEntryHeader[46]; - //char* comment = ""; - //int comsize = (int) strlen(comment); - WRITE_32(centralDirectoryEntryHeader, 0x02014b50); - WRITE_16(centralDirectoryEntryHeader + 4, version); - WRITE_16(centralDirectoryEntryHeader + 6, version); - WRITE_16(centralDirectoryEntryHeader + 8, gpflag); - WRITE_16(centralDirectoryEntryHeader + 10, method); - WRITE_16(centralDirectoryEntryHeader + 12, filetime); - WRITE_16(centralDirectoryEntryHeader + 14, filedate); - WRITE_32(centralDirectoryEntryHeader + 16, crc); - WRITE_32(centralDirectoryEntryHeader + 20, cpsize); - WRITE_32(centralDirectoryEntryHeader + 24, uncpsize); - WRITE_16(centralDirectoryEntryHeader + 28, fnsize); - WRITE_16(centralDirectoryEntryHeader + 30, extsize); - WRITE_16(centralDirectoryEntryHeader + 32, 0 /*comsize*/); - WRITE_16(centralDirectoryEntryHeader + 34, 0); /* disk # */ - WRITE_16(centralDirectoryEntryHeader + 36, 0); /* int attrb */ - WRITE_32(centralDirectoryEntryHeader + 38, 0); /* ext attrb */ - WRITE_32(centralDirectoryEntryHeader + 42, currentOffset); - /* Header */ - if (fwrite(centralDirectoryEntryHeader, 1, 46, fpOutCD) == 46) { - offsetCD += 46; - - /* Filename */ - if (fnsize > 0) { - if (fwrite(filename, 1, fnsize, fpOutCD) == fnsize) { - offsetCD += fnsize; - } else { - err = Z_ERRNO; - break; - } - } else { - err = Z_STREAM_ERROR; - break; - } - - /* Extra field */ - if (extsize > 0) { - if (fwrite(extra, 1, extsize, fpOutCD) == extsize) { - offsetCD += extsize; - } else { - err = Z_ERRNO; - break; - } - } - - /* Comment field */ - /* - if (comsize > 0) { - if ((int)fwrite(comment, 1, comsize, fpOutCD) == comsize) { - offsetCD += comsize; - } else { - err = Z_ERRNO; - break; - } - } - */ - - } else { - err = Z_ERRNO; - break; - } - } - - /* Success */ - entries++; - - } else { - break; - } - } - - /* Final central directory */ - { - int entriesZip = entries; - char finalCentralDirectoryHeader[22]; - //char* comment = ""; // "ZIP File recovered by zlib/minizip/mztools"; - //int comsize = (int) strlen(comment); - if (entriesZip > 0xffff) { - entriesZip = 0xffff; - } - WRITE_32(finalCentralDirectoryHeader, 0x06054b50); - WRITE_16(finalCentralDirectoryHeader + 4, 0); /* disk # */ - WRITE_16(finalCentralDirectoryHeader + 6, 0); /* disk # */ - WRITE_16(finalCentralDirectoryHeader + 8, entriesZip); /* hack */ - WRITE_16(finalCentralDirectoryHeader + 10, entriesZip); /* hack */ - WRITE_32(finalCentralDirectoryHeader + 12, offsetCD); /* size of CD */ - WRITE_32(finalCentralDirectoryHeader + 16, offset); /* offset to CD */ - WRITE_16(finalCentralDirectoryHeader + 20, 0 /*comsize*/); /* comment */ - - /* Header */ - if (fwrite(finalCentralDirectoryHeader, 1, 22, fpOutCD) == 22) { - - /* Comment field */ - /* - if (comsize > 0) { - if ((int)fwrite(comment, 1, comsize, fpOutCD) != comsize) { - err = Z_ERRNO; - } - } - */ - } else { - err = Z_ERRNO; - } - } - - /* Final merge (file + central directory) */ - fclose(fpOutCD); - if (err == Z_OK) { - fpOutCD = fopen(fileOutTmp, "rb"); - if (fpOutCD != NULL) { - int nRead; - char buffer[8192]; - while ( (nRead = (int)fread(buffer, 1, sizeof(buffer), fpOutCD)) > 0) { - if ((int)fwrite(buffer, 1, nRead, fpOut) != nRead) { - err = Z_ERRNO; - break; - } - } - fclose(fpOutCD); - } - } - - /* Close */ - fclose(fpZip); - fclose(fpOut); - - /* Wipe temporary file */ - (void)remove(fileOutTmp); - - /* Number of recovered entries */ - if (err == Z_OK) { - if (nRecovered != NULL) { - *nRecovered = entries; - } - if (bytesRecovered != NULL) { - *bytesRecovered = totalBytes; - } - } - } else { - err = Z_STREAM_ERROR; - } - return err; -} diff --git a/FolioReaderKit/Vendor/SSZipArchive/minizip/mztools.h b/FolioReaderKit/Vendor/SSZipArchive/minizip/mztools.h deleted file mode 100755 index 88b34592b..000000000 --- a/FolioReaderKit/Vendor/SSZipArchive/minizip/mztools.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - Additional tools for Minizip - Code: Xavier Roche '2004 - License: Same as ZLIB (www.gzip.org) -*/ - -#ifndef _zip_tools_H -#define _zip_tools_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#include "unzip.h" - -/* Repair a ZIP file (missing central directory) - file: file to recover - fileOut: output file after recovery - fileOutTmp: temporary file name used for recovery -*/ -extern int ZEXPORT unzRepair(const char* file, - const char* fileOut, - const char* fileOutTmp, - uLong* nRecovered, - uLong* bytesRecovered); - -#endif diff --git a/FolioReaderKit/Vendor/SSZipArchive/minizip/unzip.c b/FolioReaderKit/Vendor/SSZipArchive/minizip/unzip.c deleted file mode 100755 index d81438eca..000000000 --- a/FolioReaderKit/Vendor/SSZipArchive/minizip/unzip.c +++ /dev/null @@ -1,2151 +0,0 @@ -/* unzip.c -- IO for uncompress .zip files using zlib - Version 1.1, February 14h, 2010 - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications of Unzip for Zip64 - Copyright (C) 2007-2008 Even Rouault - - Modifications for Zip64 support on both zip and unzip - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - - - ------------------------------------------------------------------------------------ - Decryption code comes from crypt.c by Info-ZIP but has been greatly reduced in terms of - compatibility with older software. The following is from the original crypt.c. - Code woven in by Terry Thorsen 1/2003. - - Copyright (c) 1990-2000 Info-ZIP. All rights reserved. - - See the accompanying file LICENSE, version 2000-Apr-09 or later - (the contents of which are also included in zip.h) for terms of use. - If, for some reason, all these files are missing, the Info-ZIP license - also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html - - crypt.c (full version) by Info-ZIP. Last revised: [see crypt.h] - - The encryption/decryption parts of this source code (as opposed to the - non-echoing password parts) were originally written in Europe. The - whole source package can be freely distributed, including from the USA. - (Prior to January 2000, re-export from the US was a violation of US law.) - - This encryption code is a direct transcription of the algorithm from - Roger Schlafly, described by Phil Katz in the file appnote.txt. This - file (appnote.txt) is distributed with the PKZIP program (even in the - version without encryption capabilities). - - ------------------------------------------------------------------------------------ - - Changes in unzip.c - - 2007-2008 - Even Rouault - Addition of cpl_unzGetCurrentFileZStreamPos - 2007-2008 - Even Rouault - Decoration of symbol names unz* -> cpl_unz* - 2007-2008 - Even Rouault - Remove old C style function prototypes - 2007-2008 - Even Rouault - Add unzip support for ZIP64 - - Copyright (C) 2007-2008 Even Rouault - - - Oct-2009 - Mathias Svensson - Removed cpl_* from symbol names (Even Rouault added them but since this is now moved to a new project (minizip64) I renamed them again). - Oct-2009 - Mathias Svensson - Fixed problem if uncompressed size was > 4G and compressed size was <4G - should only read the compressed/uncompressed size from the Zip64 format if - the size from normal header was 0xFFFFFFFF - Oct-2009 - Mathias Svensson - Applied some bug fixes from paches recived from Gilles Vollant - Oct-2009 - Mathias Svensson - Applied support to unzip files with compression mathod BZIP2 (bzip2 lib is required) - Patch created by Daniel Borca - - Jan-2010 - back to unzip and minizip 1.0 name scheme, with compatibility layer - - Copyright (C) 1998 - 2010 Gilles Vollant, Even Rouault, Mathias Svensson - -*/ - - -#include -#include -#include - -//#ifndef NOUNCRYPT -// #define NOUNCRYPT -//#endif - -#include "zlib.h" -#include "unzip.h" - -#ifdef STDC -# include -# include -# include -#endif -#ifdef NO_ERRNO_H - extern int errno; -#else -# include -#endif - - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - - -#ifndef CASESENSITIVITYDEFAULT_NO -# if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) -# define CASESENSITIVITYDEFAULT_NO -# endif -#endif - - -#ifndef UNZ_BUFSIZE -#define UNZ_BUFSIZE (16384) -#endif - -#ifndef UNZ_MAXFILENAMEINZIP -#define UNZ_MAXFILENAMEINZIP (256) -#endif - -#ifndef ALLOC -# define ALLOC(size) (malloc(size)) -#endif -#ifndef TRYFREE -# define TRYFREE(p) {if (p) free(p);} -#endif - -#define SIZECENTRALDIRITEM (0x2e) -#define SIZEZIPLOCALHEADER (0x1e) - - -const char unz_copyright[] = - " unzip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; - -/* unz_file_info_interntal contain internal info about a file in zipfile*/ -typedef struct unz_file_info64_internal_s -{ - ZPOS64_T offset_curfile;/* relative offset of local header 8 bytes */ -} unz_file_info64_internal; - - -/* file_in_zip_read_info_s contain internal information about a file in zipfile, - when reading and decompress it */ -typedef struct -{ - char *read_buffer; /* internal buffer for compressed data */ - z_stream stream; /* zLib stream structure for inflate */ - -#ifdef HAVE_BZIP2 - bz_stream bstream; /* bzLib stream structure for bziped */ -#endif - - ZPOS64_T pos_in_zipfile; /* position in byte on the zipfile, for fseek*/ - uLong stream_initialised; /* flag set if stream structure is initialised*/ - - ZPOS64_T offset_local_extrafield;/* offset of the local extra field */ - uInt size_local_extrafield;/* size of the local extra field */ - ZPOS64_T pos_local_extrafield; /* position in the local extra field in read*/ - ZPOS64_T total_out_64; - - uLong crc32; /* crc32 of all data uncompressed */ - uLong crc32_wait; /* crc32 we must obtain after decompress all */ - ZPOS64_T rest_read_compressed; /* number of byte to be decompressed */ - ZPOS64_T rest_read_uncompressed;/*number of byte to be obtained after decomp*/ - zlib_filefunc64_32_def z_filefunc; - voidpf filestream; /* io structore of the zipfile */ - uLong compression_method; /* compression method (0==store) */ - ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ - int raw; -} file_in_zip64_read_info_s; - - -/* unz64_s contain internal information about the zipfile -*/ -typedef struct -{ - zlib_filefunc64_32_def z_filefunc; - int is64bitOpenFunction; - voidpf filestream; /* io structore of the zipfile */ - unz_global_info64 gi; /* public global information */ - ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ - ZPOS64_T num_file; /* number of the current file in the zipfile*/ - ZPOS64_T pos_in_central_dir; /* pos of the current file in the central dir*/ - ZPOS64_T current_file_ok; /* flag about the usability of the current file*/ - ZPOS64_T central_pos; /* position of the beginning of the central dir*/ - - ZPOS64_T size_central_dir; /* size of the central directory */ - ZPOS64_T offset_central_dir; /* offset of start of central directory with - respect to the starting disk number */ - - unz_file_info64 cur_file_info; /* public info about the current file in zip*/ - unz_file_info64_internal cur_file_info_internal; /* private info about it*/ - file_in_zip64_read_info_s* pfile_in_zip_read; /* structure about the current - file if we are decompressing it */ - int encrypted; - - int isZip64; - -# ifndef NOUNCRYPT - unsigned long keys[3]; /* keys defining the pseudo-random sequence */ - const unsigned long* pcrc_32_tab; -# endif -} unz64_s; - - -#ifndef NOUNCRYPT -#include "crypt.h" -#endif - -/* =========================================================================== - Read a byte from a gz_stream; update next_in and avail_in. Return EOF - for end of file. - IN assertion: the stream s has been sucessfully opened for reading. -*/ - - -local int unz64local_getByte OF(( - const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - int *pi)); - -local int unz64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi) -{ - unsigned char c; - int err = (int)ZREAD64(*pzlib_filefunc_def,filestream,&c,1); - if (err==1) - { - *pi = (int)c; - return UNZ_OK; - } - else - { - if (ZERROR64(*pzlib_filefunc_def,filestream)) - return UNZ_ERRNO; - else - return UNZ_EOF; - } -} - - -/* =========================================================================== - Reads a long in LSB order from the given gz_stream. Sets -*/ -local int unz64local_getShort OF(( - const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - uLong *pX)); - -local int unz64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - uLong *pX) -{ - uLong x ; - int i = 0; - int err; - - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (uLong)i; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((uLong)i)<<8; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int unz64local_getLong OF(( - const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - uLong *pX)); - -local int unz64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - uLong *pX) -{ - uLong x ; - int i = 0; - int err; - - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (uLong)i; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((uLong)i)<<8; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((uLong)i)<<16; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<24; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int unz64local_getLong64 OF(( - const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - ZPOS64_T *pX)); - - -local int unz64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - ZPOS64_T *pX) -{ - ZPOS64_T x ; - int i = 0; - int err; - - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (ZPOS64_T)i; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<8; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<16; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<24; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<32; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<40; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<48; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<56; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -/* My own strcmpi / strcasecmp */ -local int strcmpcasenosensitive_internal (const char* fileName1, const char* fileName2) -{ - for (;;) - { - char c1=*(fileName1++); - char c2=*(fileName2++); - if ((c1>='a') && (c1<='z')) - c1 -= 0x20; - if ((c2>='a') && (c2<='z')) - c2 -= 0x20; - if (c1=='\0') - return ((c2=='\0') ? 0 : -1); - if (c2=='\0') - return 1; - if (c1c2) - return 1; - } -} - - -#ifdef CASESENSITIVITYDEFAULT_NO -#define CASESENSITIVITYDEFAULTVALUE 2 -#else -#define CASESENSITIVITYDEFAULTVALUE 1 -#endif - -#ifndef STRCMPCASENOSENTIVEFUNCTION -#define STRCMPCASENOSENTIVEFUNCTION strcmpcasenosensitive_internal -#endif - -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) - -*/ -extern int ZEXPORT unzStringFileNameCompare (const char* fileName1, - const char* fileName2, - int iCaseSensitivity) - -{ - if (iCaseSensitivity==0) - iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE; - - if (iCaseSensitivity==1) - return strcmp(fileName1,fileName2); - - return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2); -} - -#ifndef BUFREADCOMMENT -#define BUFREADCOMMENT (0x400) -#endif - -/* - Locate the Central directory of a zipfile (at the end, just before - the global comment) -*/ -local ZPOS64_T unz64local_SearchCentralDir OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)); -local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) -{ - unsigned char* buf; - ZPOS64_T uSizeFile; - ZPOS64_T uBackRead; - ZPOS64_T uMaxBack=0xffff; /* maximum size of global comment */ - ZPOS64_T uPosFound=0; - - if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) - return 0; - - - uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackReaduMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uLong)(uSizeFile-uReadPos); - if (ZSEEK64(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) - break; - - if (ZREAD64(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) - break; - - for (i=(int)uReadSize-3; (i--)>0;) - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && - ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) - { - uPosFound = uReadPos+i; - break; - } - - if (uPosFound!=0) - break; - } - TRYFREE(buf); - return uPosFound; -} - - -/* - Locate the Central directory 64 of a zipfile (at the end, just before - the global comment) -*/ -local ZPOS64_T unz64local_SearchCentralDir64 OF(( - const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream)); - -local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream) -{ - unsigned char* buf; - ZPOS64_T uSizeFile; - ZPOS64_T uBackRead; - ZPOS64_T uMaxBack=0xffff; /* maximum size of global comment */ - ZPOS64_T uPosFound=0; - uLong uL; - ZPOS64_T relativeOffset; - - if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) - return 0; - - - uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackReaduMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uLong)(uSizeFile-uReadPos); - if (ZSEEK64(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) - break; - - if (ZREAD64(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) - break; - - for (i=(int)uReadSize-3; (i--)>0;) - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && - ((*(buf+i+2))==0x06) && ((*(buf+i+3))==0x07)) - { - uPosFound = uReadPos+i; - break; - } - - if (uPosFound!=0) - break; - } - TRYFREE(buf); - if (uPosFound == 0) - return 0; - - /* Zip64 end of central directory locator */ - if (ZSEEK64(*pzlib_filefunc_def,filestream, uPosFound,ZLIB_FILEFUNC_SEEK_SET)!=0) - return 0; - - /* the signature, already checked */ - if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK) - return 0; - - /* number of the disk with the start of the zip64 end of central directory */ - if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK) - return 0; - if (uL != 0) - return 0; - - /* relative offset of the zip64 end of central directory record */ - if (unz64local_getLong64(pzlib_filefunc_def,filestream,&relativeOffset)!=UNZ_OK) - return 0; - - /* total number of disks */ - if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK) - return 0; - if (uL != 1) - return 0; - - /* Goto end of central directory record */ - if (ZSEEK64(*pzlib_filefunc_def,filestream, relativeOffset,ZLIB_FILEFUNC_SEEK_SET)!=0) - return 0; - - /* the signature */ - if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK) - return 0; - - if (uL != 0x06064b50) - return 0; - - return relativeOffset; -} - -/* - Open a Zip file. path contain the full pathname (by example, - on a Windows NT computer "c:\\test\\zlib114.zip" or on an Unix computer - "zlib/zlib114.zip". - If the zipfile cannot be opened (file doesn't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. -*/ -local unzFile unzOpenInternal (const void *path, - zlib_filefunc64_32_def* pzlib_filefunc64_32_def, - int is64bitOpenFunction) -{ - unz64_s us; - unz64_s *s; - ZPOS64_T central_pos; - uLong uL; - - uLong number_disk; /* number of the current dist, used for - spaning ZIP, unsupported, always 0*/ - uLong number_disk_with_CD; /* number the the disk with central dir, used - for spaning ZIP, unsupported, always 0*/ - ZPOS64_T number_entry_CD; /* total number of entries in - the central dir - (same than number_entry on nospan) */ - - int err=UNZ_OK; - - if (unz_copyright[0]!=' ') - return NULL; - - us.z_filefunc.zseek32_file = NULL; - us.z_filefunc.ztell32_file = NULL; - if (pzlib_filefunc64_32_def==NULL) - fill_fopen64_filefunc(&us.z_filefunc.zfile_func64); - else - us.z_filefunc = *pzlib_filefunc64_32_def; - us.is64bitOpenFunction = is64bitOpenFunction; - - - - us.filestream = ZOPEN64(us.z_filefunc, - path, - ZLIB_FILEFUNC_MODE_READ | - ZLIB_FILEFUNC_MODE_EXISTING); - if (us.filestream==NULL) - return NULL; - - central_pos = unz64local_SearchCentralDir64(&us.z_filefunc,us.filestream); - if (central_pos) - { - uLong uS; - ZPOS64_T uL64; - - us.isZip64 = 1; - - if (ZSEEK64(us.z_filefunc, us.filestream, - central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0) - err=UNZ_ERRNO; - - /* the signature, already checked */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - - /* size of zip64 end of central directory record */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream,&uL64)!=UNZ_OK) - err=UNZ_ERRNO; - - /* version made by */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&uS)!=UNZ_OK) - err=UNZ_ERRNO; - - /* version needed to extract */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&uS)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of this disk */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&number_disk)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of the disk with the start of the central directory */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&number_disk_with_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central directory on this disk */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream,&us.gi.number_entry)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central directory */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream,&number_entry_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - if ((number_entry_CD!=us.gi.number_entry) || - (number_disk_with_CD!=0) || - (number_disk!=0)) - err=UNZ_BADZIPFILE; - - /* size of the central directory */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream,&us.size_central_dir)!=UNZ_OK) - err=UNZ_ERRNO; - - /* offset of start of central directory with respect to the - starting disk number */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream,&us.offset_central_dir)!=UNZ_OK) - err=UNZ_ERRNO; - - us.gi.size_comment = 0; - } - else - { - central_pos = unz64local_SearchCentralDir(&us.z_filefunc,us.filestream); - if (central_pos==0) - err=UNZ_ERRNO; - - us.isZip64 = 0; - - if (ZSEEK64(us.z_filefunc, us.filestream, - central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0) - err=UNZ_ERRNO; - - /* the signature, already checked */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of this disk */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&number_disk)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of the disk with the start of the central directory */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&number_disk_with_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central dir on this disk */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - us.gi.number_entry = uL; - - /* total number of entries in the central dir */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - number_entry_CD = uL; - - if ((number_entry_CD!=us.gi.number_entry) || - (number_disk_with_CD!=0) || - (number_disk!=0)) - err=UNZ_BADZIPFILE; - - /* size of the central directory */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - us.size_central_dir = uL; - - /* offset of start of central directory with respect to the - starting disk number */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - us.offset_central_dir = uL; - - /* zipfile comment length */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&us.gi.size_comment)!=UNZ_OK) - err=UNZ_ERRNO; - } - - if ((central_pospfile_in_zip_read!=NULL) - unzCloseCurrentFile(file); - - ZCLOSE64(s->z_filefunc, s->filestream); - TRYFREE(s); - return UNZ_OK; -} - - -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ -extern int ZEXPORT unzGetGlobalInfo64 (unzFile file, unz_global_info64* pglobal_info) -{ - unz64_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - *pglobal_info=s->gi; - return UNZ_OK; -} - -extern int ZEXPORT unzGetGlobalInfo (unzFile file, unz_global_info* pglobal_info32) -{ - unz64_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - /* to do : check if number_entry is not truncated */ - pglobal_info32->number_entry = (uLong)s->gi.number_entry; - pglobal_info32->size_comment = s->gi.size_comment; - return UNZ_OK; -} -/* - Translate date/time from Dos format to tm_unz (readable more easilty) -*/ -local void unz64local_DosDateToTmuDate (ZPOS64_T ulDosDate, tm_unz* ptm) -{ - ZPOS64_T uDate; - uDate = (ZPOS64_T)(ulDosDate>>16); - ptm->tm_mday = (uInt)(uDate&0x1f) ; - ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ; - ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ; - - ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800); - ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ; - ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ; -} - -/* - Get Info about the current file in the zipfile, with internal only info -*/ -local int unz64local_GetCurrentFileInfoInternal OF((unzFile file, - unz_file_info64 *pfile_info, - unz_file_info64_internal - *pfile_info_internal, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); - -local int unz64local_GetCurrentFileInfoInternal (unzFile file, - unz_file_info64 *pfile_info, - unz_file_info64_internal - *pfile_info_internal, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize) -{ - unz64_s* s; - unz_file_info64 file_info; - unz_file_info64_internal file_info_internal; - int err=UNZ_OK; - uLong uMagic; - long lSeek=0; - uLong uL; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - if (ZSEEK64(s->z_filefunc, s->filestream, - s->pos_in_central_dir+s->byte_before_the_zipfile, - ZLIB_FILEFUNC_SEEK_SET)!=0) - err=UNZ_ERRNO; - - - /* we check the magic */ - if (err==UNZ_OK) - { - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK) - err=UNZ_ERRNO; - else if (uMagic!=0x02014b50) - err=UNZ_BADZIPFILE; - } - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.version) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.version_needed) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.flag) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.compression_method) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&file_info.dosDate) != UNZ_OK) - err=UNZ_ERRNO; - - unz64local_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date); - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&file_info.crc) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK) - err=UNZ_ERRNO; - file_info.compressed_size = uL; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK) - err=UNZ_ERRNO; - file_info.uncompressed_size = uL; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.size_filename) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_extra) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_comment) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.disk_num_start) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.internal_fa) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&file_info.external_fa) != UNZ_OK) - err=UNZ_ERRNO; - - // relative offset of local header - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK) - err=UNZ_ERRNO; - file_info_internal.offset_curfile = uL; - - lSeek+=file_info.size_filename; - if ((err==UNZ_OK) && (szFileName!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_filename0) && (fileNameBufferSize>0)) - if (ZREAD64(s->z_filefunc, s->filestream,szFileName,uSizeRead)!=uSizeRead) - err=UNZ_ERRNO; - lSeek -= uSizeRead; - } - - // Read extrafield - if ((err==UNZ_OK) && (extraField!=NULL)) - { - ZPOS64_T uSizeRead ; - if (file_info.size_file_extraz_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - } - - if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0)) - if (ZREAD64(s->z_filefunc, s->filestream,extraField,(uLong)uSizeRead)!=uSizeRead) - err=UNZ_ERRNO; - - lSeek += file_info.size_file_extra - (uLong)uSizeRead; - } - else - lSeek += file_info.size_file_extra; - - - if ((err==UNZ_OK) && (file_info.size_file_extra != 0)) - { - uLong acc = 0; - - // since lSeek now points to after the extra field we need to move back - lSeek -= file_info.size_file_extra; - - if (lSeek!=0) - { - if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - } - - while(acc < file_info.size_file_extra) - { - uLong headerId; - uLong dataSize; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&headerId) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&dataSize) != UNZ_OK) - err=UNZ_ERRNO; - - /* ZIP64 extra fields */ - if (headerId == 0x0001) - { - uLong uLZip64; - - if(file_info.uncompressed_size == (ZPOS64_T)(unsigned long)-1) - { - if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.uncompressed_size) != UNZ_OK) - err=UNZ_ERRNO; - } - - if(file_info.compressed_size == (ZPOS64_T)(unsigned long)-1) - { - if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK) - err=UNZ_ERRNO; - } - - if(file_info_internal.offset_curfile == (ZPOS64_T)(unsigned long)-1) - { - /* Relative Header offset */ - if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK) - err=UNZ_ERRNO; - } - - if(file_info.disk_num_start == (unsigned long)-1) - { - /* Disk Start Number */ - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uLZip64) != UNZ_OK) - err=UNZ_ERRNO; - } - - } - else - { - if (ZSEEK64(s->z_filefunc, s->filestream,dataSize,ZLIB_FILEFUNC_SEEK_CUR)!=0) - err=UNZ_ERRNO; - } - - acc += 2 + 2 + dataSize; - } - } - - if ((err==UNZ_OK) && (szComment!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_file_commentz_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) - { -#ifndef __clang_analyzer__ - lSeek=0; -#endif - } - else - err=UNZ_ERRNO; - } - - if ((file_info.size_file_comment>0) && (commentBufferSize>0)) - if (ZREAD64(s->z_filefunc, s->filestream,szComment,uSizeRead)!=uSizeRead) - err=UNZ_ERRNO; -#ifndef __clang_analyzer__ - lSeek+=file_info.size_file_comment - uSizeRead; -#endif - } -#ifndef __clang_analyzer__ - else - lSeek+=file_info.size_file_comment; -#endif - - - if ((err==UNZ_OK) && (pfile_info!=NULL)) - *pfile_info=file_info; - - if ((err==UNZ_OK) && (pfile_info_internal!=NULL)) - *pfile_info_internal=file_info_internal; - - return err; -} - - - -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. -*/ -extern int ZEXPORT unzGetCurrentFileInfo64 (unzFile file, - unz_file_info64 * pfile_info, - char * szFileName, uLong fileNameBufferSize, - void *extraField, uLong extraFieldBufferSize, - char* szComment, uLong commentBufferSize) -{ - return unz64local_GetCurrentFileInfoInternal(file,pfile_info,NULL, - szFileName,fileNameBufferSize, - extraField,extraFieldBufferSize, - szComment,commentBufferSize); -} - -extern int ZEXPORT unzGetCurrentFileInfo (unzFile file, - unz_file_info * pfile_info, - char * szFileName, uLong fileNameBufferSize, - void *extraField, uLong extraFieldBufferSize, - char* szComment, uLong commentBufferSize) -{ - int err; - unz_file_info64 file_info64; - err = unz64local_GetCurrentFileInfoInternal(file,&file_info64,NULL, - szFileName,fileNameBufferSize, - extraField,extraFieldBufferSize, - szComment,commentBufferSize); - if (err==UNZ_OK) - { - pfile_info->version = file_info64.version; - pfile_info->version_needed = file_info64.version_needed; - pfile_info->flag = file_info64.flag; - pfile_info->compression_method = file_info64.compression_method; - pfile_info->dosDate = file_info64.dosDate; - pfile_info->crc = file_info64.crc; - - pfile_info->size_filename = file_info64.size_filename; - pfile_info->size_file_extra = file_info64.size_file_extra; - pfile_info->size_file_comment = file_info64.size_file_comment; - - pfile_info->disk_num_start = file_info64.disk_num_start; - pfile_info->internal_fa = file_info64.internal_fa; - pfile_info->external_fa = file_info64.external_fa; - - pfile_info->tmu_date = file_info64.tmu_date, - - - pfile_info->compressed_size = (uLong)file_info64.compressed_size; - pfile_info->uncompressed_size = (uLong)file_info64.uncompressed_size; - - } - return err; -} -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ -extern int ZEXPORT unzGoToFirstFile (unzFile file) -{ - int err=UNZ_OK; - unz64_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - s->pos_in_central_dir=s->offset_central_dir; - s->num_file=0; - err=unz64local_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ -extern int ZEXPORT unzGoToNextFile (unzFile file) -{ - unz64_s* s; - int err; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - if (s->gi.number_entry != 0xffff) /* 2^16 files overflow hack */ - if (s->num_file+1==s->gi.number_entry) - return UNZ_END_OF_LIST_OF_FILE; - - s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + - s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ; - s->num_file++; - err = unz64local_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - - -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzipStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ -extern int ZEXPORT unzLocateFile (unzFile file, const char *szFileName, int iCaseSensitivity) -{ - unz64_s* s; - int err; - - /* We remember the 'current' position in the file so that we can jump - * back there if we fail. - */ - unz_file_info64 cur_file_infoSaved; - unz_file_info64_internal cur_file_info_internalSaved; - ZPOS64_T num_fileSaved; - ZPOS64_T pos_in_central_dirSaved; - - - if (file==NULL) - return UNZ_PARAMERROR; - - if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP) - return UNZ_PARAMERROR; - - s=(unz64_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - - /* Save the current state */ - num_fileSaved = s->num_file; - pos_in_central_dirSaved = s->pos_in_central_dir; - cur_file_infoSaved = s->cur_file_info; - cur_file_info_internalSaved = s->cur_file_info_internal; - - err = unzGoToFirstFile(file); - - while (err == UNZ_OK) - { - char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1]; - err = unzGetCurrentFileInfo64(file,NULL, - szCurrentFileName,sizeof(szCurrentFileName)-1, - NULL,0,NULL,0); - if (err == UNZ_OK) - { - if (unzStringFileNameCompare(szCurrentFileName, - szFileName,iCaseSensitivity)==0) - return UNZ_OK; - err = unzGoToNextFile(file); - } - } - - /* We failed, so restore the state of the 'current file' to where we - * were. - */ - s->num_file = num_fileSaved ; - s->pos_in_central_dir = pos_in_central_dirSaved ; - s->cur_file_info = cur_file_infoSaved; - s->cur_file_info_internal = cur_file_info_internalSaved; - return err; -} - - -/* -/////////////////////////////////////////// -// Contributed by Ryan Haksi (mailto://cryogen@infoserve.net) -// I need random access -// -// Further optimization could be realized by adding an ability -// to cache the directory in memory. The goal being a single -// comprehensive file read to put the file I need in a memory. -*/ - -/* -typedef struct unz_file_pos_s -{ - ZPOS64_T pos_in_zip_directory; // offset in file - ZPOS64_T num_of_file; // # of file -} unz_file_pos; -*/ - -extern int ZEXPORT unzGetFilePos64(unzFile file, unz64_file_pos* file_pos) -{ - unz64_s* s; - - if (file==NULL || file_pos==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - - file_pos->pos_in_zip_directory = s->pos_in_central_dir; - file_pos->num_of_file = s->num_file; - - return UNZ_OK; -} - -extern int ZEXPORT unzGetFilePos( - unzFile file, - unz_file_pos* file_pos) -{ - unz64_file_pos file_pos64; - int err = unzGetFilePos64(file,&file_pos64); - if (err==UNZ_OK) - { - file_pos->pos_in_zip_directory = (uLong)file_pos64.pos_in_zip_directory; - file_pos->num_of_file = (uLong)file_pos64.num_of_file; - } - return err; -} - -extern int ZEXPORT unzGoToFilePos64(unzFile file, const unz64_file_pos* file_pos) -{ - unz64_s* s; - int err; - - if (file==NULL || file_pos==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - - /* jump to the right spot */ - s->pos_in_central_dir = file_pos->pos_in_zip_directory; - s->num_file = file_pos->num_of_file; - - /* set the current file */ - err = unz64local_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - /* return results */ - s->current_file_ok = (err == UNZ_OK); - return err; -} - -extern int ZEXPORT unzGoToFilePos( - unzFile file, - unz_file_pos* file_pos) -{ - unz64_file_pos file_pos64; - if (file_pos == NULL) - return UNZ_PARAMERROR; - - file_pos64.pos_in_zip_directory = file_pos->pos_in_zip_directory; - file_pos64.num_of_file = file_pos->num_of_file; - return unzGoToFilePos64(file,&file_pos64); -} - -/* -// Unzip Helper Functions - should be here? -/////////////////////////////////////////// -*/ - -/* - Read the local header of the current zipfile - Check the coherency of the local header and info in the end of central - directory about this file - store in *piSizeVar the size of extra info in local header - (filename and size of extra field data) -*/ -local int unz64local_CheckCurrentFileCoherencyHeader (unz64_s* s, uInt* piSizeVar, - ZPOS64_T * poffset_local_extrafield, - uInt * psize_local_extrafield) -{ - uLong uMagic,uData,uFlags; - uLong size_filename; - uLong size_extra_field; - int err=UNZ_OK; - - *piSizeVar = 0; - *poffset_local_extrafield = 0; - *psize_local_extrafield = 0; - - if (ZSEEK64(s->z_filefunc, s->filestream,s->cur_file_info_internal.offset_curfile + - s->byte_before_the_zipfile,ZLIB_FILEFUNC_SEEK_SET)!=0) - return UNZ_ERRNO; - - - if (err==UNZ_OK) - { - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK) - err=UNZ_ERRNO; - else if (uMagic!=0x04034b50) - err=UNZ_BADZIPFILE; - } - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) - err=UNZ_ERRNO; -/* - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion)) - err=UNZ_BADZIPFILE; -*/ - if (unz64local_getShort(&s->z_filefunc, s->filestream,&uFlags) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method)) - err=UNZ_BADZIPFILE; - - if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) && -/* #ifdef HAVE_BZIP2 */ - (s->cur_file_info.compression_method!=Z_BZIP2ED) && -/* #endif */ - (s->cur_file_info.compression_method!=Z_DEFLATED)) - err=UNZ_BADZIPFILE; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* date/time */ - err=UNZ_ERRNO; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* crc */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) && ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size compr */ - err=UNZ_ERRNO; - else if (uData != 0xFFFFFFFF && (err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) && ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size uncompr */ - err=UNZ_ERRNO; - else if (uData != 0xFFFFFFFF && (err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) && ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&size_filename) != UNZ_OK) - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename)) - err=UNZ_BADZIPFILE; - - *piSizeVar += (uInt)size_filename; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&size_extra_field) != UNZ_OK) - err=UNZ_ERRNO; - *poffset_local_extrafield= s->cur_file_info_internal.offset_curfile + - SIZEZIPLOCALHEADER + size_filename; - *psize_local_extrafield = (uInt)size_extra_field; - - *piSizeVar += (uInt)size_extra_field; - - return err; -} - -/* - Open for reading data the current file in the zipfile. - If there is no error and the file is opened, the return value is UNZ_OK. -*/ -extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method, - int* level, int raw, const char* password) -{ - int err=UNZ_OK; - uInt iSizeVar; - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - ZPOS64_T offset_local_extrafield; /* offset of the local extra field */ - uInt size_local_extrafield; /* size of the local extra field */ -# ifndef NOUNCRYPT - char source[12]; -# else - if (password != NULL) - return UNZ_PARAMERROR; -# endif - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - if (!s->current_file_ok) - return UNZ_PARAMERROR; - - if (s->pfile_in_zip_read != NULL) - unzCloseCurrentFile(file); - - if (unz64local_CheckCurrentFileCoherencyHeader(s,&iSizeVar, &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK) - return UNZ_BADZIPFILE; - - pfile_in_zip_read_info = (file_in_zip64_read_info_s*)ALLOC(sizeof(file_in_zip64_read_info_s)); - if (pfile_in_zip_read_info==NULL) - return UNZ_INTERNALERROR; - - pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE); - pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; - pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; - pfile_in_zip_read_info->pos_local_extrafield=0; - pfile_in_zip_read_info->raw=raw; - pfile_in_zip_read_info->byte_before_the_zipfile = 0; - - if (pfile_in_zip_read_info->read_buffer==NULL) - { - TRYFREE(pfile_in_zip_read_info); - return UNZ_INTERNALERROR; - } - - pfile_in_zip_read_info->stream_initialised=0; - - if (method!=NULL) - *method = (int)s->cur_file_info.compression_method; - - if (level!=NULL) - { - *level = 6; - switch (s->cur_file_info.flag & 0x06) - { - case 6 : *level = 1; break; - case 4 : *level = 2; break; - case 2 : *level = 9; break; - } - } - - if ((s->cur_file_info.compression_method!=0) && -/* #ifdef HAVE_BZIP2 */ - (s->cur_file_info.compression_method!=Z_BZIP2ED) && -/* #endif */ - (s->cur_file_info.compression_method!=Z_DEFLATED)) - { -#ifndef __clang_analyzer__ - err=UNZ_BADZIPFILE; -#endif - } - - pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; - pfile_in_zip_read_info->crc32=0; - pfile_in_zip_read_info->total_out_64=0; - pfile_in_zip_read_info->compression_method = s->cur_file_info.compression_method; - pfile_in_zip_read_info->filestream=s->filestream; - pfile_in_zip_read_info->z_filefunc=s->z_filefunc; - pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile; - - pfile_in_zip_read_info->stream.total_out = 0; - - if ((s->cur_file_info.compression_method==Z_BZIP2ED) && (!raw)) - { -#ifdef HAVE_BZIP2 - pfile_in_zip_read_info->bstream.bzalloc = (void *(*) (void *, int, int))0; - pfile_in_zip_read_info->bstream.bzfree = (free_func)0; - pfile_in_zip_read_info->bstream.opaque = (voidpf)0; - pfile_in_zip_read_info->bstream.state = (voidpf)0; - - pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; - pfile_in_zip_read_info->stream.zfree = (free_func)0; - pfile_in_zip_read_info->stream.opaque = (voidpf)0; - pfile_in_zip_read_info->stream.next_in = (voidpf)0; - pfile_in_zip_read_info->stream.avail_in = 0; - - err=BZ2_bzDecompressInit(&pfile_in_zip_read_info->bstream, 0, 0); - if (err == Z_OK) - pfile_in_zip_read_info->stream_initialised=Z_BZIP2ED; - else - { - TRYFREE(pfile_in_zip_read_info); - return err; - } -#else - pfile_in_zip_read_info->raw=1; -#endif - } - else if ((s->cur_file_info.compression_method==Z_DEFLATED) && (!raw)) - { - pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; - pfile_in_zip_read_info->stream.zfree = (free_func)0; - pfile_in_zip_read_info->stream.opaque = (voidpf)0; - pfile_in_zip_read_info->stream.next_in = 0; - pfile_in_zip_read_info->stream.avail_in = 0; - - err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); - if (err == Z_OK) - pfile_in_zip_read_info->stream_initialised=Z_DEFLATED; - else - { - TRYFREE(pfile_in_zip_read_info); - return err; - } - /* windowBits is passed < 0 to tell that there is no zlib header. - * Note that in this case inflate *requires* an extra "dummy" byte - * after the compressed stream in order to complete decompression and - * return Z_STREAM_END. - * In unzip, i don't wait absolutely Z_STREAM_END because I known the - * size of both compressed and uncompressed data - */ - } - pfile_in_zip_read_info->rest_read_compressed = - s->cur_file_info.compressed_size ; - pfile_in_zip_read_info->rest_read_uncompressed = - s->cur_file_info.uncompressed_size ; - - - pfile_in_zip_read_info->pos_in_zipfile = - s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + - iSizeVar; - - pfile_in_zip_read_info->stream.avail_in = (uInt)0; - - s->pfile_in_zip_read = pfile_in_zip_read_info; - s->encrypted = 0; - -# ifndef NOUNCRYPT - if (password != NULL) - { - int i; - s->pcrc_32_tab = (const unsigned long*)get_crc_table(); - init_keys(password,s->keys,s->pcrc_32_tab); - if (ZSEEK64(s->z_filefunc, s->filestream, - s->pfile_in_zip_read->pos_in_zipfile + - s->pfile_in_zip_read->byte_before_the_zipfile, - SEEK_SET)!=0) - return UNZ_INTERNALERROR; - if(ZREAD64(s->z_filefunc, s->filestream,source, 12)<12) - return UNZ_INTERNALERROR; - - for (i = 0; i<12; i++) - zdecode(s->keys,s->pcrc_32_tab,source[i]); - - s->pfile_in_zip_read->pos_in_zipfile+=12; - s->encrypted=1; - } -# endif - - - return UNZ_OK; -} - -extern int ZEXPORT unzOpenCurrentFile (unzFile file) -{ - return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL); -} - -extern int ZEXPORT unzOpenCurrentFilePassword (unzFile file, const char* password) -{ - return unzOpenCurrentFile3(file, NULL, NULL, 0, password); -} - -extern int ZEXPORT unzOpenCurrentFile2 (unzFile file, int* method, int* level, int raw) -{ - return unzOpenCurrentFile3(file, method, level, raw, NULL); -} - -/** Addition for GDAL : START */ - -extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64( unzFile file) -{ - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - s=(unz64_s*)file; - if (file==NULL) - return 0; //UNZ_PARAMERROR; - pfile_in_zip_read_info=s->pfile_in_zip_read; - if (pfile_in_zip_read_info==NULL) - return 0; //UNZ_PARAMERROR; - return pfile_in_zip_read_info->pos_in_zipfile + - pfile_in_zip_read_info->byte_before_the_zipfile; -} - -/** Addition for GDAL : END */ - -/* - Read bytes from the current file. - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ -extern int ZEXPORT unzReadCurrentFile (unzFile file, voidp buf, unsigned len) -{ - int err=UNZ_OK; - uInt iRead = 0; - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - - if (pfile_in_zip_read_info->read_buffer == NULL) - return UNZ_END_OF_LIST_OF_FILE; - if (len==0) - return 0; - - pfile_in_zip_read_info->stream.next_out = (Bytef*)buf; - - pfile_in_zip_read_info->stream.avail_out = (uInt)len; - - // NOTE: - // This bit of code seems to try to set the amount of space in the output buffer based on the - // value stored in the headers stored in the .zip file. However, if those values are incorrect - // it may result in a loss of data when uncompresssing that file. The compressed data is still - // legit and will deflate without knowing the uncompressed code so this tidbit is unnecessary and - // may cause issues for some .zip files. - // - // It's removed in here to fix those issues. - // - // See: https://github.com/samsoffes/ssziparchive/issues/16 - // - - /* - if ((len>pfile_in_zip_read_info->rest_read_uncompressed) && - (!(pfile_in_zip_read_info->raw))) - pfile_in_zip_read_info->stream.avail_out = - (uInt)pfile_in_zip_read_info->rest_read_uncompressed; - */ - - if ((len>pfile_in_zip_read_info->rest_read_compressed+ - pfile_in_zip_read_info->stream.avail_in) && - (pfile_in_zip_read_info->raw)) - pfile_in_zip_read_info->stream.avail_out = - (uInt)pfile_in_zip_read_info->rest_read_compressed+ - pfile_in_zip_read_info->stream.avail_in; - - while (pfile_in_zip_read_info->stream.avail_out>0) - { - if ((pfile_in_zip_read_info->stream.avail_in==0) && - (pfile_in_zip_read_info->rest_read_compressed>0)) - { - uInt uReadThis = UNZ_BUFSIZE; - if (pfile_in_zip_read_info->rest_read_compressedrest_read_compressed; - if (uReadThis == 0) - return UNZ_EOF; - if (ZSEEK64(pfile_in_zip_read_info->z_filefunc, - pfile_in_zip_read_info->filestream, - pfile_in_zip_read_info->pos_in_zipfile + - pfile_in_zip_read_info->byte_before_the_zipfile, - ZLIB_FILEFUNC_SEEK_SET)!=0) - return UNZ_ERRNO; - if (ZREAD64(pfile_in_zip_read_info->z_filefunc, - pfile_in_zip_read_info->filestream, - pfile_in_zip_read_info->read_buffer, - uReadThis)!=uReadThis) - return UNZ_ERRNO; - - -# ifndef NOUNCRYPT - if(s->encrypted) - { - uInt i; - for(i=0;iread_buffer[i] = - zdecode(s->keys,s->pcrc_32_tab, - pfile_in_zip_read_info->read_buffer[i]); - } -# endif - - - pfile_in_zip_read_info->pos_in_zipfile += uReadThis; - - pfile_in_zip_read_info->rest_read_compressed-=uReadThis; - - pfile_in_zip_read_info->stream.next_in = - (Bytef*)pfile_in_zip_read_info->read_buffer; - pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis; - } - - if ((pfile_in_zip_read_info->compression_method==0) || (pfile_in_zip_read_info->raw)) - { - uInt uDoCopy,i ; - - if ((pfile_in_zip_read_info->stream.avail_in == 0) && - (pfile_in_zip_read_info->rest_read_compressed == 0)) - return (iRead==0) ? UNZ_EOF : iRead; - - if (pfile_in_zip_read_info->stream.avail_out < - pfile_in_zip_read_info->stream.avail_in) - uDoCopy = pfile_in_zip_read_info->stream.avail_out ; - else - uDoCopy = pfile_in_zip_read_info->stream.avail_in ; - - for (i=0;istream.next_out+i) = - *(pfile_in_zip_read_info->stream.next_in+i); - - pfile_in_zip_read_info->total_out_64 = pfile_in_zip_read_info->total_out_64 + uDoCopy; - - pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32, - pfile_in_zip_read_info->stream.next_out, - uDoCopy); - pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy; - pfile_in_zip_read_info->stream.avail_in -= uDoCopy; - pfile_in_zip_read_info->stream.avail_out -= uDoCopy; - pfile_in_zip_read_info->stream.next_out += uDoCopy; - pfile_in_zip_read_info->stream.next_in += uDoCopy; - pfile_in_zip_read_info->stream.total_out += uDoCopy; - iRead += uDoCopy; - } - else if (pfile_in_zip_read_info->compression_method==Z_BZIP2ED) - { -#ifdef HAVE_BZIP2 - uLong uTotalOutBefore,uTotalOutAfter; - const Bytef *bufBefore; - uLong uOutThis; - - pfile_in_zip_read_info->bstream.next_in = (char*)pfile_in_zip_read_info->stream.next_in; - pfile_in_zip_read_info->bstream.avail_in = pfile_in_zip_read_info->stream.avail_in; - pfile_in_zip_read_info->bstream.total_in_lo32 = pfile_in_zip_read_info->stream.total_in; - pfile_in_zip_read_info->bstream.total_in_hi32 = 0; - pfile_in_zip_read_info->bstream.next_out = (char*)pfile_in_zip_read_info->stream.next_out; - pfile_in_zip_read_info->bstream.avail_out = pfile_in_zip_read_info->stream.avail_out; - pfile_in_zip_read_info->bstream.total_out_lo32 = pfile_in_zip_read_info->stream.total_out; - pfile_in_zip_read_info->bstream.total_out_hi32 = 0; - - uTotalOutBefore = pfile_in_zip_read_info->bstream.total_out_lo32; - bufBefore = (const Bytef *)pfile_in_zip_read_info->bstream.next_out; - - err=BZ2_bzDecompress(&pfile_in_zip_read_info->bstream); - - uTotalOutAfter = pfile_in_zip_read_info->bstream.total_out_lo32; - uOutThis = uTotalOutAfter-uTotalOutBefore; - - pfile_in_zip_read_info->total_out_64 = pfile_in_zip_read_info->total_out_64 + uOutThis; - - pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32,bufBefore, (uInt)(uOutThis)); - pfile_in_zip_read_info->rest_read_uncompressed -= uOutThis; - iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); - - pfile_in_zip_read_info->stream.next_in = (Bytef*)pfile_in_zip_read_info->bstream.next_in; - pfile_in_zip_read_info->stream.avail_in = pfile_in_zip_read_info->bstream.avail_in; - pfile_in_zip_read_info->stream.total_in = pfile_in_zip_read_info->bstream.total_in_lo32; - pfile_in_zip_read_info->stream.next_out = (Bytef*)pfile_in_zip_read_info->bstream.next_out; - pfile_in_zip_read_info->stream.avail_out = pfile_in_zip_read_info->bstream.avail_out; - pfile_in_zip_read_info->stream.total_out = pfile_in_zip_read_info->bstream.total_out_lo32; - - if (err==BZ_STREAM_END) - return (iRead==0) ? UNZ_EOF : iRead; - if (err!=BZ_OK) - break; -#endif - } // end Z_BZIP2ED - else - { - ZPOS64_T uTotalOutBefore,uTotalOutAfter; - const Bytef *bufBefore; - ZPOS64_T uOutThis; - int flush=Z_SYNC_FLUSH; - - uTotalOutBefore = pfile_in_zip_read_info->stream.total_out; - bufBefore = pfile_in_zip_read_info->stream.next_out; - - /* - if ((pfile_in_zip_read_info->rest_read_uncompressed == - pfile_in_zip_read_info->stream.avail_out) && - (pfile_in_zip_read_info->rest_read_compressed == 0)) - flush = Z_FINISH; - */ - err=inflate(&pfile_in_zip_read_info->stream,flush); - - if ((err>=0) && (pfile_in_zip_read_info->stream.msg!=NULL)) - err = Z_DATA_ERROR; - - uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; - uOutThis = uTotalOutAfter-uTotalOutBefore; - - pfile_in_zip_read_info->total_out_64 = pfile_in_zip_read_info->total_out_64 + uOutThis; - - pfile_in_zip_read_info->crc32 = - crc32(pfile_in_zip_read_info->crc32,bufBefore, - (uInt)(uOutThis)); - - pfile_in_zip_read_info->rest_read_uncompressed -= - uOutThis; - - iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); - - if (err==Z_STREAM_END) - return (iRead==0) ? UNZ_EOF : iRead; - if (err!=Z_OK) - break; - } - } - - if (err==Z_OK) - return iRead; - return err; -} - - -/* - Give the current position in uncompressed data -*/ -extern z_off_t ZEXPORT unztell (unzFile file) -{ - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - return (z_off_t)pfile_in_zip_read_info->stream.total_out; -} - -extern ZPOS64_T ZEXPORT unztell64 (unzFile file) -{ - - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return (ZPOS64_T)-1; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return (ZPOS64_T)-1; - - return pfile_in_zip_read_info->total_out_64; -} - - -/* - return 1 if the end of file was reached, 0 elsewhere -*/ -extern int ZEXPORT unzeof (unzFile file) -{ - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - if (pfile_in_zip_read_info->rest_read_uncompressed == 0) - return 1; - else - return 0; -} - - - -/* -Read extra field from the current file (opened by unzOpenCurrentFile) -This is the local-header version of the extra field (sometimes, there is -more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field that can be read - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ -extern int ZEXPORT unzGetLocalExtrafield (unzFile file, voidp buf, unsigned len) -{ - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - uInt read_now; - ZPOS64_T size_to_read; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - size_to_read = (pfile_in_zip_read_info->size_local_extrafield - - pfile_in_zip_read_info->pos_local_extrafield); - - if (buf==NULL) - return (int)size_to_read; - - if (len>size_to_read) - read_now = (uInt)size_to_read; - else - read_now = (uInt)len ; - - if (read_now==0) - return 0; - - if (ZSEEK64(pfile_in_zip_read_info->z_filefunc, - pfile_in_zip_read_info->filestream, - pfile_in_zip_read_info->offset_local_extrafield + - pfile_in_zip_read_info->pos_local_extrafield, - ZLIB_FILEFUNC_SEEK_SET)!=0) - return UNZ_ERRNO; - - if (ZREAD64(pfile_in_zip_read_info->z_filefunc, - pfile_in_zip_read_info->filestream, - buf,read_now)!=read_now) - return UNZ_ERRNO; - - return (int)read_now; -} - -/* - Close the file in zip opened with unzipOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ -extern int ZEXPORT unzCloseCurrentFile (unzFile file) -{ - int err=UNZ_OK; - - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - - if ((pfile_in_zip_read_info->rest_read_uncompressed == 0) && - (!pfile_in_zip_read_info->raw)) - { - if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) - err=UNZ_CRCERROR; - } - - - TRYFREE(pfile_in_zip_read_info->read_buffer); - pfile_in_zip_read_info->read_buffer = NULL; - if (pfile_in_zip_read_info->stream_initialised == Z_DEFLATED) - inflateEnd(&pfile_in_zip_read_info->stream); -#ifdef HAVE_BZIP2 - else if (pfile_in_zip_read_info->stream_initialised == Z_BZIP2ED) - BZ2_bzDecompressEnd(&pfile_in_zip_read_info->bstream); -#endif - - - pfile_in_zip_read_info->stream_initialised = 0; - TRYFREE(pfile_in_zip_read_info); - - s->pfile_in_zip_read=NULL; - - return err; -} - - -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ -extern int ZEXPORT unzGetGlobalComment (unzFile file, char * szComment, uLong uSizeBuf) -{ - unz64_s* s; - uLong uReadThis ; - if (file==NULL) - return (int)UNZ_PARAMERROR; - s=(unz64_s*)file; - - uReadThis = uSizeBuf; - if (uReadThis>s->gi.size_comment) - uReadThis = s->gi.size_comment; - - if (ZSEEK64(s->z_filefunc,s->filestream,s->central_pos+22,ZLIB_FILEFUNC_SEEK_SET)!=0) - return UNZ_ERRNO; - - if (uReadThis>0) - { - *szComment='\0'; - if (ZREAD64(s->z_filefunc,s->filestream,szComment,uReadThis)!=uReadThis) - return UNZ_ERRNO; - } - - if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment)) - *(szComment+s->gi.size_comment)='\0'; - return (int)uReadThis; -} - -/* Additions by RX '2004 */ -extern ZPOS64_T ZEXPORT unzGetOffset64(unzFile file) -{ - unz64_s* s; - - if (file==NULL) - return 0; //UNZ_PARAMERROR; - s=(unz64_s*)file; - if (!s->current_file_ok) - return 0; - if (s->gi.number_entry != 0 && s->gi.number_entry != 0xffff) - if (s->num_file==s->gi.number_entry) - return 0; - return s->pos_in_central_dir; -} - -extern uLong ZEXPORT unzGetOffset (unzFile file) -{ - ZPOS64_T offset64; - - if (file==NULL) - return 0; //UNZ_PARAMERROR; - offset64 = unzGetOffset64(file); - return (uLong)offset64; -} - -extern int ZEXPORT unzSetOffset64(unzFile file, ZPOS64_T pos) -{ - unz64_s* s; - int err; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - - s->pos_in_central_dir = pos; - s->num_file = s->gi.number_entry; /* hack */ - err = unz64local_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - -extern int ZEXPORT unzSetOffset (unzFile file, uLong pos) -{ - return unzSetOffset64(file,pos); -} diff --git a/FolioReaderKit/Vendor/SSZipArchive/minizip/unzip.h b/FolioReaderKit/Vendor/SSZipArchive/minizip/unzip.h deleted file mode 100755 index 3183968b7..000000000 --- a/FolioReaderKit/Vendor/SSZipArchive/minizip/unzip.h +++ /dev/null @@ -1,437 +0,0 @@ -/* unzip.h -- IO for uncompress .zip files using zlib - Version 1.1, February 14h, 2010 - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications of Unzip for Zip64 - Copyright (C) 2007-2008 Even Rouault - - Modifications for Zip64 support on both zip and unzip - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - - --------------------------------------------------------------------------------- - - Condition of use and distribution are the same than zlib : - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - --------------------------------------------------------------------------------- - - Changes - - See header of unzip64.c - -*/ - -#ifndef _unz64_H -#define _unz64_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#ifndef _ZLIBIOAPI_H -#include "ioapi.h" -#endif - -#ifdef HAVE_BZIP2 -#include "bzlib.h" -#endif - -#define Z_BZIP2ED 12 - -#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) -/* like the STRICT of WIN32, we define a pointer that cannot be converted - from (void*) without cast */ -typedef struct TagunzFile__ { int unused; } unzFile__; -typedef unzFile__ *unzFile; -#else -typedef voidp unzFile; -#endif - - -#define UNZ_OK (0) -#define UNZ_END_OF_LIST_OF_FILE (-100) -#define UNZ_ERRNO (Z_ERRNO) -#define UNZ_EOF (0) -#define UNZ_PARAMERROR (-102) -#define UNZ_BADZIPFILE (-103) -#define UNZ_INTERNALERROR (-104) -#define UNZ_CRCERROR (-105) - -/* tm_unz contain date/time info */ -typedef struct tm_unz_s -{ - uInt tm_sec; /* seconds after the minute - [0,59] */ - uInt tm_min; /* minutes after the hour - [0,59] */ - uInt tm_hour; /* hours since midnight - [0,23] */ - uInt tm_mday; /* day of the month - [1,31] */ - uInt tm_mon; /* months since January - [0,11] */ - uInt tm_year; /* years - [1980..2044] */ -} tm_unz; - -/* unz_global_info structure contain global data about the ZIPfile - These data comes from the end of central dir */ -typedef struct unz_global_info64_s -{ - ZPOS64_T number_entry; /* total number of entries in - the central dir on this disk */ - uLong size_comment; /* size of the global comment of the zipfile */ -} unz_global_info64; - -typedef struct unz_global_info_s -{ - uLong number_entry; /* total number of entries in - the central dir on this disk */ - uLong size_comment; /* size of the global comment of the zipfile */ -} unz_global_info; - -/* unz_file_info contain information about a file in the zipfile */ -typedef struct unz_file_info64_s -{ - uLong version; /* version made by 2 bytes */ - uLong version_needed; /* version needed to extract 2 bytes */ - uLong flag; /* general purpose bit flag 2 bytes */ - uLong compression_method; /* compression method 2 bytes */ - uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ - uLong crc; /* crc-32 4 bytes */ - ZPOS64_T compressed_size; /* compressed size 8 bytes */ - ZPOS64_T uncompressed_size; /* uncompressed size 8 bytes */ - uLong size_filename; /* filename length 2 bytes */ - uLong size_file_extra; /* extra field length 2 bytes */ - uLong size_file_comment; /* file comment length 2 bytes */ - - uLong disk_num_start; /* disk number start 2 bytes */ - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ - - tm_unz tmu_date; -} unz_file_info64; - -typedef struct unz_file_info_s -{ - uLong version; /* version made by 2 bytes */ - uLong version_needed; /* version needed to extract 2 bytes */ - uLong flag; /* general purpose bit flag 2 bytes */ - uLong compression_method; /* compression method 2 bytes */ - uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ - uLong crc; /* crc-32 4 bytes */ - uLong compressed_size; /* compressed size 4 bytes */ - uLong uncompressed_size; /* uncompressed size 4 bytes */ - uLong size_filename; /* filename length 2 bytes */ - uLong size_file_extra; /* extra field length 2 bytes */ - uLong size_file_comment; /* file comment length 2 bytes */ - - uLong disk_num_start; /* disk number start 2 bytes */ - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ - - tm_unz tmu_date; -} unz_file_info; - -extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, - const char* fileName2, - int iCaseSensitivity)); -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) -*/ - - -extern unzFile ZEXPORT unzOpen OF((const char *path)); -extern unzFile ZEXPORT unzOpen64 OF((const void *path)); -/* - Open a Zip file. path contain the full pathname (by example, - on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer - "zlib/zlib113.zip". - If the zipfile cannot be opened (file don't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. - the "64" function take a const void* pointer, because the path is just the - value passed to the open64_file_func callback. - Under Windows, if UNICODE is defined, using fill_fopen64_filefunc, the path - is a pointer to a wide unicode string (LPCTSTR is LPCWSTR), so const char* - does not describe the reality -*/ - - -extern unzFile ZEXPORT unzOpen2 OF((const char *path, - zlib_filefunc_def* pzlib_filefunc_def)); -/* - Open a Zip file, like unzOpen, but provide a set of file low level API - for read/write the zip file (see ioapi.h) -*/ - -extern unzFile ZEXPORT unzOpen2_64 OF((const void *path, - zlib_filefunc64_def* pzlib_filefunc_def)); -/* - Open a Zip file, like unz64Open, but provide a set of file low level API - for read/write the zip file (see ioapi.h) -*/ - -extern int ZEXPORT unzClose OF((unzFile file)); -/* - Close a ZipFile opened with unzipOpen. - If there is files inside the .Zip opened with unzOpenCurrentFile (see later), - these files MUST be closed with unzipCloseCurrentFile before call unzipClose. - return UNZ_OK if there is no problem. */ - -extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, - unz_global_info *pglobal_info)); - -extern int ZEXPORT unzGetGlobalInfo64 OF((unzFile file, - unz_global_info64 *pglobal_info)); -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ - - -extern int ZEXPORT unzGetGlobalComment OF((unzFile file, - char *szComment, - uLong uSizeBuf)); -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ - - -/***************************************************************************/ -/* Unzip package allow you browse the directory of the zipfile */ - -extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ - -extern int ZEXPORT unzGoToNextFile OF((unzFile file)); -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ - -extern int ZEXPORT unzLocateFile OF((unzFile file, - const char *szFileName, - int iCaseSensitivity)); -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ - - -/* ****************************************** */ -/* Ryan supplied functions */ -/* unz_file_info contain information about a file in the zipfile */ -typedef struct unz_file_pos_s -{ - uLong pos_in_zip_directory; /* offset in zip file directory */ - uLong num_of_file; /* # of file */ -} unz_file_pos; - -extern int ZEXPORT unzGetFilePos( - unzFile file, - unz_file_pos* file_pos); - -extern int ZEXPORT unzGoToFilePos( - unzFile file, - unz_file_pos* file_pos); - -typedef struct unz64_file_pos_s -{ - ZPOS64_T pos_in_zip_directory; /* offset in zip file directory */ - ZPOS64_T num_of_file; /* # of file */ -} unz64_file_pos; - -extern int ZEXPORT unzGetFilePos64( - unzFile file, - unz64_file_pos* file_pos); - -extern int ZEXPORT unzGoToFilePos64( - unzFile file, - const unz64_file_pos* file_pos); - -/* ****************************************** */ - -extern int ZEXPORT unzGetCurrentFileInfo64 OF((unzFile file, - unz_file_info64 *pfile_info, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); - -extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, - unz_file_info *pfile_info, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); -/* - Get Info about the current file - if pfile_info!=NULL, the *pfile_info structure will contain somes info about - the current file - if szFileName!=NULL, the filemane string will be copied in szFileName - (fileNameBufferSize is the size of the buffer) - if extraField!=NULL, the extra field information will be copied in extraField - (extraFieldBufferSize is the size of the buffer). - This is the Central-header version of the extra field - if szComment!=NULL, the comment string of the file will be copied in szComment - (commentBufferSize is the size of the buffer) -*/ - - -/** Addition for GDAL : START */ - -extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file)); - -/** Addition for GDAL : END */ - - -/***************************************************************************/ -/* for reading the content of the current zipfile, you can open it, read data - from it, and close it (you can close it before reading all the file) - */ - -extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); -/* - Open for reading data the current file in the zipfile. - If there is no error, the return value is UNZ_OK. -*/ - -extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file, - const char* password)); -/* - Open for reading data the current file in the zipfile. - password is a crypting password - If there is no error, the return value is UNZ_OK. -*/ - -extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file, - int* method, - int* level, - int raw)); -/* - Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) - if raw==1 - *method will receive method of compression, *level will receive level of - compression - note : you can set level parameter as NULL (if you did not want known level, - but you CANNOT set method parameter as NULL -*/ - -extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file, - int* method, - int* level, - int raw, - const char* password)); -/* - Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) - if raw==1 - *method will receive method of compression, *level will receive level of - compression - note : you can set level parameter as NULL (if you did not want known level, - but you CANNOT set method parameter as NULL -*/ - - -extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); -/* - Close the file in zip opened with unzOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ - -extern int ZEXPORT unzReadCurrentFile OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read bytes from the current file (opened by unzOpenCurrentFile) - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ - -extern z_off_t ZEXPORT unztell OF((unzFile file)); - -extern ZPOS64_T ZEXPORT unztell64 OF((unzFile file)); -/* - Give the current position in uncompressed data -*/ - -extern int ZEXPORT unzeof OF((unzFile file)); -/* - return 1 if the end of file was reached, 0 elsewhere -*/ - -extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read extra field from the current file (opened by unzOpenCurrentFile) - This is the local-header version of the extra field (sometimes, there is - more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ - -/***************************************************************************/ - -/* Get the current file offset */ -extern ZPOS64_T ZEXPORT unzGetOffset64 (unzFile file); -extern uLong ZEXPORT unzGetOffset (unzFile file); - -/* Set the current file offset */ -extern int ZEXPORT unzSetOffset64 (unzFile file, ZPOS64_T pos); -extern int ZEXPORT unzSetOffset (unzFile file, uLong pos); - - - -#ifdef __cplusplus -} -#endif - -#endif /* _unz64_H */ diff --git a/FolioReaderKit/Vendor/SSZipArchive/minizip/zip.c b/FolioReaderKit/Vendor/SSZipArchive/minizip/zip.c deleted file mode 100755 index db501c188..000000000 --- a/FolioReaderKit/Vendor/SSZipArchive/minizip/zip.c +++ /dev/null @@ -1,2022 +0,0 @@ -/* zip.c -- IO on .zip files using zlib - Version 1.1, February 14h, 2010 - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - - Changes - Oct-2009 - Mathias Svensson - Remove old C style function prototypes - Oct-2009 - Mathias Svensson - Added Zip64 Support when creating new file archives - Oct-2009 - Mathias Svensson - Did some code cleanup and refactoring to get better overview of some functions. - Oct-2009 - Mathias Svensson - Added zipRemoveExtraInfoBlock to strip extra field data from its ZIP64 data - It is used when recreting zip archive with RAW when deleting items from a zip. - ZIP64 data is automaticly added to items that needs it, and existing ZIP64 data need to be removed. - Oct-2009 - Mathias Svensson - Added support for BZIP2 as compression mode (bzip2 lib is required) - Jan-2010 - back to unzip and minizip 1.0 name scheme, with compatibility layer - -*/ - - -#include -#include -#include -#include -#include "zlib.h" -#include "zip.h" - -#ifdef STDC -# include -# include -# include -#endif -#ifdef NO_ERRNO_H - extern int errno; -#else -# include -#endif - - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - -#ifndef VERSIONMADEBY -# define VERSIONMADEBY (0x0) /* platform depedent */ -#endif - -#ifndef Z_BUFSIZE -#define Z_BUFSIZE (64*1024) //(16384) -#endif - -#ifndef Z_MAXFILENAMEINZIP -#define Z_MAXFILENAMEINZIP (256) -#endif - -#ifndef ALLOC -# define ALLOC(size) (malloc(size)) -#endif -#ifndef TRYFREE -# define TRYFREE(p) {if (p) free(p);} -#endif - -/* -#define SIZECENTRALDIRITEM (0x2e) -#define SIZEZIPLOCALHEADER (0x1e) -*/ - -/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ - - -// NOT sure that this work on ALL platform -#define MAKEULONG64(a, b) ((ZPOS64_T)(((unsigned long)(a)) | ((ZPOS64_T)((unsigned long)(b))) << 32)) - -#ifndef SEEK_CUR -#define SEEK_CUR 1 -#endif - -#ifndef SEEK_END -#define SEEK_END 2 -#endif - -#ifndef SEEK_SET -#define SEEK_SET 0 -#endif - -#ifndef DEF_MEM_LEVEL -#if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -#else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -#endif -#endif -const char zip_copyright[] =" zip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; - - -#define SIZEDATA_INDATABLOCK (4096-(4*4)) - -#define LOCALHEADERMAGIC (0x04034b50) -#define CENTRALHEADERMAGIC (0x02014b50) -#define ENDHEADERMAGIC (0x06054b50) -#define ZIP64ENDHEADERMAGIC (0x6064b50) -#define ZIP64ENDLOCHEADERMAGIC (0x7064b50) - -#define FLAG_LOCALHEADER_OFFSET (0x06) -#define CRC_LOCALHEADER_OFFSET (0x0e) - -#define SIZECENTRALHEADER (0x2e) /* 46 */ - -typedef struct linkedlist_datablock_internal_s -{ - struct linkedlist_datablock_internal_s* next_datablock; - uLong avail_in_this_block; - uLong filled_in_this_block; - uLong unused; /* for future use and alignement */ - unsigned char data[SIZEDATA_INDATABLOCK]; -} linkedlist_datablock_internal; - -typedef struct linkedlist_data_s -{ - linkedlist_datablock_internal* first_block; - linkedlist_datablock_internal* last_block; -} linkedlist_data; - - -typedef struct -{ - z_stream stream; /* zLib stream structure for inflate */ -#ifdef HAVE_BZIP2 - bz_stream bstream; /* bzLib stream structure for bziped */ -#endif - - int stream_initialised; /* 1 is stream is initialised */ - uInt pos_in_buffered_data; /* last written byte in buffered_data */ - - ZPOS64_T pos_local_header; /* offset of the local header of the file - currenty writing */ - char* central_header; /* central header data for the current file */ - uLong size_centralExtra; - uLong size_centralheader; /* size of the central header for cur file */ - uLong size_centralExtraFree; /* Extra bytes allocated to the centralheader but that are not used */ - uLong flag; /* flag of the file currently writing */ - - int method; /* compression method of file currenty wr.*/ - int raw; /* 1 for directly writing raw data */ - Byte buffered_data[Z_BUFSIZE];/* buffer contain compressed data to be writ*/ - uLong dosDate; - uLong crc32; - int encrypt; - int zip64; /* Add ZIP64 extened information in the extra field */ - ZPOS64_T pos_zip64extrainfo; - ZPOS64_T totalCompressedData; - ZPOS64_T totalUncompressedData; -#ifndef NOCRYPT - unsigned long keys[3]; /* keys defining the pseudo-random sequence */ - const unsigned long* pcrc_32_tab; - int crypt_header_size; -#endif -} curfile64_info; - -typedef struct -{ - zlib_filefunc64_32_def z_filefunc; - voidpf filestream; /* io structore of the zipfile */ - linkedlist_data central_dir;/* datablock with central dir in construction*/ - int in_opened_file_inzip; /* 1 if a file in the zip is currently writ.*/ - curfile64_info ci; /* info on the file curretly writing */ - - ZPOS64_T begin_pos; /* position of the beginning of the zipfile */ - ZPOS64_T add_position_when_writting_offset; - ZPOS64_T number_entry; - -#ifndef NO_ADDFILEINEXISTINGZIP - char *globalcomment; -#endif - -} zip64_internal; - - -#ifndef NOCRYPT -#define INCLUDECRYPTINGCODE_IFCRYPTALLOWED -#include "crypt.h" -#endif - -local linkedlist_datablock_internal* allocate_new_datablock() -{ - linkedlist_datablock_internal* ldi; - ldi = (linkedlist_datablock_internal*) - ALLOC(sizeof(linkedlist_datablock_internal)); - if (ldi!=NULL) - { - ldi->next_datablock = NULL ; - ldi->filled_in_this_block = 0 ; - ldi->avail_in_this_block = SIZEDATA_INDATABLOCK ; - } - return ldi; -} - -local void free_datablock(linkedlist_datablock_internal* ldi) -{ - while (ldi!=NULL) - { - linkedlist_datablock_internal* ldinext = ldi->next_datablock; - TRYFREE(ldi); - ldi = ldinext; - } -} - -local void init_linkedlist(linkedlist_data* ll) -{ - ll->first_block = ll->last_block = NULL; -} - -local void free_linkedlist(linkedlist_data* ll) -{ - free_datablock(ll->first_block); - ll->first_block = ll->last_block = NULL; -} - - -local int add_data_in_datablock(linkedlist_data* ll, const void* buf, uLong len) -{ - linkedlist_datablock_internal* ldi; - const unsigned char* from_copy; - - if (ll==NULL) - return ZIP_INTERNALERROR; - - if (ll->last_block == NULL) - { - ll->first_block = ll->last_block = allocate_new_datablock(); - if (ll->first_block == NULL) - return ZIP_INTERNALERROR; - } - - ldi = ll->last_block; - from_copy = (unsigned char*)buf; - - while (len>0) - { - uInt copy_this; - uInt i; - unsigned char* to_copy; - - if (ldi->avail_in_this_block==0) - { - ldi->next_datablock = allocate_new_datablock(); - if (ldi->next_datablock == NULL) - return ZIP_INTERNALERROR; - ldi = ldi->next_datablock ; - ll->last_block = ldi; - } - - if (ldi->avail_in_this_block < len) - copy_this = (uInt)ldi->avail_in_this_block; - else - copy_this = (uInt)len; - - to_copy = &(ldi->data[ldi->filled_in_this_block]); - - for (i=0;ifilled_in_this_block += copy_this; - ldi->avail_in_this_block -= copy_this; - from_copy += copy_this ; - len -= copy_this; - } - return ZIP_OK; -} - - - -/****************************************************************************/ - -#ifndef NO_ADDFILEINEXISTINGZIP -/* =========================================================================== - Inputs a long in LSB order to the given file - nbByte == 1, 2 ,4 or 8 (byte, short or long, ZPOS64_T) -*/ - -local int zip64local_putValue OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte)); -local int zip64local_putValue (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte) -{ - unsigned char buf[8]; - int n; - for (n = 0; n < nbByte; n++) - { - buf[n] = (unsigned char)(x & 0xff); - x >>= 8; - } - if (x != 0) - { /* data overflow - hack for ZIP64 (X Roche) */ - for (n = 0; n < nbByte; n++) - { - buf[n] = 0xff; - } - } - - if (ZWRITE64(*pzlib_filefunc_def,filestream,buf,nbByte)!=(uLong)nbByte) - return ZIP_ERRNO; - else - return ZIP_OK; -} - -local void zip64local_putValue_inmemory OF((void* dest, ZPOS64_T x, int nbByte)); -local void zip64local_putValue_inmemory (void* dest, ZPOS64_T x, int nbByte) -{ - unsigned char* buf=(unsigned char*)dest; - int n; - for (n = 0; n < nbByte; n++) { - buf[n] = (unsigned char)(x & 0xff); - x >>= 8; - } - - if (x != 0) - { /* data overflow - hack for ZIP64 */ - for (n = 0; n < nbByte; n++) - { - buf[n] = 0xff; - } - } -} - -/****************************************************************************/ - - -local uLong zip64local_TmzDateToDosDate(const tm_zip* ptm) -{ - uLong year = (uLong)ptm->tm_year; - if (year>=1980) - year-=1980; - else if (year>=80) - year-=80; - return - (uLong) (((ptm->tm_mday) + (32 * (ptm->tm_mon+1)) + (512 * year)) << 16) | - ((ptm->tm_sec/2) + (32* ptm->tm_min) + (2048 * (uLong)ptm->tm_hour)); -} - - -/****************************************************************************/ - -local int zip64local_getByte OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi)); - -local int zip64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def,voidpf filestream,int* pi) -{ - unsigned char c; - int err = (int)ZREAD64(*pzlib_filefunc_def,filestream,&c,1); - if (err==1) - { - *pi = (int)c; - return ZIP_OK; - } - else - { - if (ZERROR64(*pzlib_filefunc_def,filestream)) - return ZIP_ERRNO; - else - return ZIP_EOF; - } -} - - -/* =========================================================================== - Reads a long in LSB order from the given gz_stream. Sets -*/ -local int zip64local_getShort OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); - -local int zip64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX) -{ - uLong x ; - int i = 0; - int err; - - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (uLong)i; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<8; - - if (err==ZIP_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int zip64local_getLong OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); - -local int zip64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX) -{ - uLong x ; - int i = 0; - int err; - - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (uLong)i; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<8; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<16; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<24; - - if (err==ZIP_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int zip64local_getLong64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX)); - - -local int zip64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX) -{ - ZPOS64_T x; - int i = 0; - int err; - - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (ZPOS64_T)i; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<8; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<16; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<24; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<32; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<40; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<48; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<56; - - if (err==ZIP_OK) - *pX = x; - else - *pX = 0; - - return err; -} - -#ifndef BUFREADCOMMENT -#define BUFREADCOMMENT (0x400) -#endif -/* - Locate the Central directory of a zipfile (at the end, just before - the global comment) -*/ -local ZPOS64_T zip64local_SearchCentralDir OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)); - -local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) -{ - unsigned char* buf; - ZPOS64_T uSizeFile; - ZPOS64_T uBackRead; - ZPOS64_T uMaxBack=0xffff; /* maximum size of global comment */ - ZPOS64_T uPosFound=0; - - if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) - return 0; - - - uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackReaduMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uLong)(uSizeFile-uReadPos); - if (ZSEEK64(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) - break; - - if (ZREAD64(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) - break; - - for (i=(int)uReadSize-3; (i--)>0;) - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && - ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) - { - uPosFound = uReadPos+i; - break; - } - - if (uPosFound!=0) - break; - } - TRYFREE(buf); - return uPosFound; -} - -/* -Locate the End of Zip64 Central directory locator and from there find the CD of a zipfile (at the end, just before -the global comment) -*/ -local ZPOS64_T zip64local_SearchCentralDir64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)); - -local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) -{ - unsigned char* buf; - ZPOS64_T uSizeFile; - ZPOS64_T uBackRead; - ZPOS64_T uMaxBack=0xffff; /* maximum size of global comment */ - ZPOS64_T uPosFound=0; - uLong uL; - ZPOS64_T relativeOffset; - - if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) - return 0; - - uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackReaduMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uLong)(uSizeFile-uReadPos); - if (ZSEEK64(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) - break; - - if (ZREAD64(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) - break; - - for (i=(int)uReadSize-3; (i--)>0;) - { - // Signature "0x07064b50" Zip64 end of central directory locater - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && ((*(buf+i+2))==0x06) && ((*(buf+i+3))==0x07)) - { - uPosFound = uReadPos+i; - break; - } - } - - if (uPosFound!=0) - break; - } - - TRYFREE(buf); - if (uPosFound == 0) - return 0; - - /* Zip64 end of central directory locator */ - if (ZSEEK64(*pzlib_filefunc_def,filestream, uPosFound,ZLIB_FILEFUNC_SEEK_SET)!=0) - return 0; - - /* the signature, already checked */ - if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK) - return 0; - - /* number of the disk with the start of the zip64 end of central directory */ - if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK) - return 0; - if (uL != 0) - return 0; - - /* relative offset of the zip64 end of central directory record */ - if (zip64local_getLong64(pzlib_filefunc_def,filestream,&relativeOffset)!=ZIP_OK) - return 0; - - /* total number of disks */ - if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK) - return 0; - if (uL != 1) - return 0; - - /* Goto Zip64 end of central directory record */ - if (ZSEEK64(*pzlib_filefunc_def,filestream, relativeOffset,ZLIB_FILEFUNC_SEEK_SET)!=0) - return 0; - - /* the signature */ - if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK) - return 0; - - if (uL != 0x06064b50) // signature of 'Zip64 end of central directory' - return 0; - - return relativeOffset; -} - -int LoadCentralDirectoryRecord(zip64_internal* pziinit); -int LoadCentralDirectoryRecord(zip64_internal* pziinit) -{ - int err=ZIP_OK; - ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ - - ZPOS64_T size_central_dir; /* size of the central directory */ - ZPOS64_T offset_central_dir; /* offset of start of central directory */ - ZPOS64_T central_pos; - uLong uL; - - uLong number_disk; /* number of the current dist, used for - spaning ZIP, unsupported, always 0*/ - uLong number_disk_with_CD; /* number the the disk with central dir, used - for spaning ZIP, unsupported, always 0*/ - ZPOS64_T number_entry; - ZPOS64_T number_entry_CD; /* total number of entries in - the central dir - (same than number_entry on nospan) */ - uLong VersionMadeBy; - uLong VersionNeeded; - uLong size_comment; - - int hasZIP64Record = 0; - - // check first if we find a ZIP64 record - central_pos = zip64local_SearchCentralDir64(&pziinit->z_filefunc,pziinit->filestream); - if(central_pos > 0) - { - hasZIP64Record = 1; - } - else if(central_pos == 0) - { - central_pos = zip64local_SearchCentralDir(&pziinit->z_filefunc,pziinit->filestream); - } - -/* disable to allow appending to empty ZIP archive - if (central_pos==0) - err=ZIP_ERRNO; -*/ - - if(hasZIP64Record) - { - ZPOS64_T sizeEndOfCentralDirectory; - if (ZSEEK64(pziinit->z_filefunc, pziinit->filestream, central_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) - err=ZIP_ERRNO; - - /* the signature, already checked */ - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream,&uL)!=ZIP_OK) - err=ZIP_ERRNO; - - /* size of zip64 end of central directory record */ - if (zip64local_getLong64(&pziinit->z_filefunc, pziinit->filestream, &sizeEndOfCentralDirectory)!=ZIP_OK) - err=ZIP_ERRNO; - - /* version made by */ - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream, &VersionMadeBy)!=ZIP_OK) - err=ZIP_ERRNO; - - /* version needed to extract */ - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream, &VersionNeeded)!=ZIP_OK) - err=ZIP_ERRNO; - - /* number of this disk */ - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream,&number_disk)!=ZIP_OK) - err=ZIP_ERRNO; - - /* number of the disk with the start of the central directory */ - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream,&number_disk_with_CD)!=ZIP_OK) - err=ZIP_ERRNO; - - /* total number of entries in the central directory on this disk */ - if (zip64local_getLong64(&pziinit->z_filefunc, pziinit->filestream, &number_entry)!=ZIP_OK) - err=ZIP_ERRNO; - - /* total number of entries in the central directory */ - if (zip64local_getLong64(&pziinit->z_filefunc, pziinit->filestream,&number_entry_CD)!=ZIP_OK) - err=ZIP_ERRNO; - - if ((number_entry_CD!=number_entry) || (number_disk_with_CD!=0) || (number_disk!=0)) - err=ZIP_BADZIPFILE; - - /* size of the central directory */ - if (zip64local_getLong64(&pziinit->z_filefunc, pziinit->filestream,&size_central_dir)!=ZIP_OK) - err=ZIP_ERRNO; - - /* offset of start of central directory with respect to the - starting disk number */ - if (zip64local_getLong64(&pziinit->z_filefunc, pziinit->filestream,&offset_central_dir)!=ZIP_OK) - err=ZIP_ERRNO; - - // TODO.. - // read the comment from the standard central header. - size_comment = 0; - } - else - { - // Read End of central Directory info - if (ZSEEK64(pziinit->z_filefunc, pziinit->filestream, central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0) - err=ZIP_ERRNO; - - /* the signature, already checked */ - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream,&uL)!=ZIP_OK) - err=ZIP_ERRNO; - - /* number of this disk */ - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream,&number_disk)!=ZIP_OK) - err=ZIP_ERRNO; - - /* number of the disk with the start of the central directory */ - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream,&number_disk_with_CD)!=ZIP_OK) - err=ZIP_ERRNO; - - /* total number of entries in the central dir on this disk */ - number_entry = 0; - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream, &uL)!=ZIP_OK) - err=ZIP_ERRNO; - else - number_entry = uL; - - /* total number of entries in the central dir */ - number_entry_CD = 0; - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream, &uL)!=ZIP_OK) - err=ZIP_ERRNO; - else - number_entry_CD = uL; - - if ((number_entry_CD!=number_entry) || (number_disk_with_CD!=0) || (number_disk!=0)) - err=ZIP_BADZIPFILE; - - /* size of the central directory */ - size_central_dir = 0; - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream, &uL)!=ZIP_OK) - err=ZIP_ERRNO; - else - size_central_dir = uL; - - /* offset of start of central directory with respect to the starting disk number */ - offset_central_dir = 0; - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream, &uL)!=ZIP_OK) - err=ZIP_ERRNO; - else - offset_central_dir = uL; - - - /* zipfile global comment length */ - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream, &size_comment)!=ZIP_OK) - err=ZIP_ERRNO; - } - - if ((central_posz_filefunc, pziinit->filestream); - return ZIP_ERRNO; - } - - if (size_comment>0) - { - pziinit->globalcomment = (char*)ALLOC(size_comment+1); - if (pziinit->globalcomment) - { - size_comment = ZREAD64(pziinit->z_filefunc, pziinit->filestream, pziinit->globalcomment,size_comment); - pziinit->globalcomment[size_comment]=0; - } - } - - byte_before_the_zipfile = central_pos - (offset_central_dir+size_central_dir); - pziinit->add_position_when_writting_offset = byte_before_the_zipfile; - - { - ZPOS64_T size_central_dir_to_read = size_central_dir; - size_t buf_size = SIZEDATA_INDATABLOCK; - void* buf_read = (void*)ALLOC(buf_size); - if (ZSEEK64(pziinit->z_filefunc, pziinit->filestream, offset_central_dir + byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) - err=ZIP_ERRNO; - - while ((size_central_dir_to_read>0) && (err==ZIP_OK)) - { - ZPOS64_T read_this = SIZEDATA_INDATABLOCK; - if (read_this > size_central_dir_to_read) - read_this = size_central_dir_to_read; - - if (ZREAD64(pziinit->z_filefunc, pziinit->filestream,buf_read,(uLong)read_this) != read_this) - err=ZIP_ERRNO; - - if (err==ZIP_OK) - err = add_data_in_datablock(&pziinit->central_dir,buf_read, (uLong)read_this); - - size_central_dir_to_read-=read_this; - } - TRYFREE(buf_read); - } - pziinit->begin_pos = byte_before_the_zipfile; - pziinit->number_entry = number_entry_CD; - - if (ZSEEK64(pziinit->z_filefunc, pziinit->filestream, offset_central_dir+byte_before_the_zipfile,ZLIB_FILEFUNC_SEEK_SET) != 0) - err=ZIP_ERRNO; - - return err; -} - - -#endif /* !NO_ADDFILEINEXISTINGZIP*/ - - -/************************************************************/ -extern zipFile ZEXPORT zipOpen3 (const void *pathname, int append, zipcharpc* globalcomment, zlib_filefunc64_32_def* pzlib_filefunc64_32_def); -extern zipFile ZEXPORT zipOpen3 (const void *pathname, int append, zipcharpc* globalcomment, zlib_filefunc64_32_def* pzlib_filefunc64_32_def) -{ - zip64_internal ziinit; - zip64_internal* zi; - int err=ZIP_OK; - - ziinit.z_filefunc.zseek32_file = NULL; - ziinit.z_filefunc.ztell32_file = NULL; - if (pzlib_filefunc64_32_def==NULL) - fill_fopen64_filefunc(&ziinit.z_filefunc.zfile_func64); - else - ziinit.z_filefunc = *pzlib_filefunc64_32_def; - - ziinit.filestream = ZOPEN64(ziinit.z_filefunc, - pathname, - (append == APPEND_STATUS_CREATE) ? - (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_CREATE) : - (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_EXISTING)); - - if (ziinit.filestream == NULL) - return NULL; - - if (append == APPEND_STATUS_CREATEAFTER) - ZSEEK64(ziinit.z_filefunc,ziinit.filestream,0,SEEK_END); - - ziinit.begin_pos = ZTELL64(ziinit.z_filefunc,ziinit.filestream); - ziinit.in_opened_file_inzip = 0; - ziinit.ci.stream_initialised = 0; - ziinit.number_entry = 0; - ziinit.add_position_when_writting_offset = 0; - init_linkedlist(&(ziinit.central_dir)); - - - - zi = (zip64_internal*)ALLOC(sizeof(zip64_internal)); - if (zi==NULL) - { - ZCLOSE64(ziinit.z_filefunc,ziinit.filestream); - return NULL; - } - - /* now we add file in a zipfile */ -# ifndef NO_ADDFILEINEXISTINGZIP - ziinit.globalcomment = NULL; - if (append == APPEND_STATUS_ADDINZIP) - { - // Read and Cache Central Directory Records - err = LoadCentralDirectoryRecord(&ziinit); - } - - if (globalcomment) - { - *globalcomment = ziinit.globalcomment; - } -# endif /* !NO_ADDFILEINEXISTINGZIP*/ - - if (err != ZIP_OK) - { -# ifndef NO_ADDFILEINEXISTINGZIP - TRYFREE(ziinit.globalcomment); -# endif /* !NO_ADDFILEINEXISTINGZIP*/ - TRYFREE(zi); - return NULL; - } - else - { - *zi = ziinit; - return (zipFile)zi; - } -} - -extern zipFile ZEXPORT zipOpen2 (const char *pathname, int append, zipcharpc* globalcomment, zlib_filefunc_def* pzlib_filefunc32_def) -{ - if (pzlib_filefunc32_def != NULL) - { - zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; - fill_zlib_filefunc64_32_def_from_filefunc32(&zlib_filefunc64_32_def_fill,pzlib_filefunc32_def); - return zipOpen3(pathname, append, globalcomment, &zlib_filefunc64_32_def_fill); - } - else - return zipOpen3(pathname, append, globalcomment, NULL); -} - -extern zipFile ZEXPORT zipOpen2_64 (const void *pathname, int append, zipcharpc* globalcomment, zlib_filefunc64_def* pzlib_filefunc_def) -{ - if (pzlib_filefunc_def != NULL) - { - zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; - zlib_filefunc64_32_def_fill.zfile_func64 = *pzlib_filefunc_def; - zlib_filefunc64_32_def_fill.ztell32_file = NULL; - zlib_filefunc64_32_def_fill.zseek32_file = NULL; - return zipOpen3(pathname, append, globalcomment, &zlib_filefunc64_32_def_fill); - } - else - return zipOpen3(pathname, append, globalcomment, NULL); -} - - - -extern zipFile ZEXPORT zipOpen (const char* pathname, int append) -{ - return zipOpen3((const void*)pathname,append,NULL,NULL); -} - -extern zipFile ZEXPORT zipOpen64 (const void* pathname, int append) -{ - return zipOpen3(pathname,append,NULL,NULL); -} - -int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_extrafield_local, const void* extrafield_local); -int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_extrafield_local, const void* extrafield_local) -{ - /* write the local header */ - int err; - uInt size_filename = (uInt)strlen(filename); - uInt size_extrafield = size_extrafield_local; - - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)LOCALHEADERMAGIC, 4); - - if (err==ZIP_OK) - { - if(zi->ci.zip64) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)45,2);/* version needed to extract */ - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)20,2);/* version needed to extract */ - } - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.flag,2); - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.method,2); - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.dosDate,4); - - // CRC / Compressed size / Uncompressed size will be filled in later and rewritten later - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* crc 32, unknown */ - if (err==ZIP_OK) - { - if(zi->ci.zip64) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xFFFFFFFF,4); /* compressed size, unknown */ - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* compressed size, unknown */ - } - if (err==ZIP_OK) - { - if(zi->ci.zip64) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xFFFFFFFF,4); /* uncompressed size, unknown */ - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* uncompressed size, unknown */ - } - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_filename,2); - - if(zi->ci.zip64) - { - size_extrafield += 20; - } - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_extrafield,2); - - if ((err==ZIP_OK) && (size_filename > 0)) - { - if (ZWRITE64(zi->z_filefunc,zi->filestream,filename,size_filename)!=size_filename) - err = ZIP_ERRNO; - } - - if ((err==ZIP_OK) && (size_extrafield_local > 0)) - { - if (ZWRITE64(zi->z_filefunc, zi->filestream, extrafield_local, size_extrafield_local) != size_extrafield_local) - err = ZIP_ERRNO; - } - - - if ((err==ZIP_OK) && (zi->ci.zip64)) - { - // write the Zip64 extended info - short HeaderID = 1; - short DataSize = 16; - ZPOS64_T CompressedSize = 0; - ZPOS64_T UncompressedSize = 0; - - // Remember position of Zip64 extended info for the local file header. (needed when we update size after done with file) - zi->ci.pos_zip64extrainfo = ZTELL64(zi->z_filefunc,zi->filestream); - -#ifndef __clang_analyzer__ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)HeaderID,2); - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)DataSize,2); - - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)UncompressedSize,8); - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)CompressedSize,8); -#endif - } - - return err; -} - -/* - NOTE. - When writing RAW the ZIP64 extended information in extrafield_local and extrafield_global needs to be stripped - before calling this function it can be done with zipRemoveExtraInfoBlock - - It is not done here because then we need to realloc a new buffer since parameters are 'const' and I want to minimize - unnecessary allocations. - */ -extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw, - int windowBits,int memLevel, int strategy, - const char* password, uLong crcForCrypting, - uLong versionMadeBy, uLong flagBase, int zip64) -{ - zip64_internal* zi; - uInt size_filename; - uInt size_comment; - uInt i; - int err = ZIP_OK; - -# ifdef NOCRYPT - if (password != NULL) - return ZIP_PARAMERROR; -# endif - - if (file == NULL) - return ZIP_PARAMERROR; - -#ifdef HAVE_BZIP2 - if ((method!=0) && (method!=Z_DEFLATED) && (method!=Z_BZIP2ED)) - return ZIP_PARAMERROR; -#else - if ((method!=0) && (method!=Z_DEFLATED)) - return ZIP_PARAMERROR; -#endif - - zi = (zip64_internal*)file; - - if (zi->in_opened_file_inzip == 1) - { - err = zipCloseFileInZip (file); - if (err != ZIP_OK) - return err; - } - - if (filename==NULL) - filename="-"; - - if (comment==NULL) - size_comment = 0; - else - size_comment = (uInt)strlen(comment); - - size_filename = (uInt)strlen(filename); - - if (zipfi == NULL) - zi->ci.dosDate = 0; - else - { - if (zipfi->dosDate != 0) - zi->ci.dosDate = zipfi->dosDate; - else - zi->ci.dosDate = zip64local_TmzDateToDosDate(&zipfi->tmz_date); - } - - zi->ci.flag = flagBase; - if (level==8 || level==9) - zi->ci.flag |= 2; - if (level==2) - zi->ci.flag |= 4; - if (level==1) - zi->ci.flag |= 6; - if (password != NULL) - zi->ci.flag |= 1; - - zi->ci.crc32 = 0; - zi->ci.method = method; - zi->ci.encrypt = 0; - zi->ci.stream_initialised = 0; - zi->ci.pos_in_buffered_data = 0; - zi->ci.raw = raw; - zi->ci.pos_local_header = ZTELL64(zi->z_filefunc,zi->filestream); - - zi->ci.size_centralheader = SIZECENTRALHEADER + size_filename + size_extrafield_global + size_comment; - zi->ci.size_centralExtraFree = 32; // Extra space we have reserved in case we need to add ZIP64 extra info data - - zi->ci.central_header = (char*)ALLOC((uInt)zi->ci.size_centralheader + zi->ci.size_centralExtraFree); - - zi->ci.size_centralExtra = size_extrafield_global; - zip64local_putValue_inmemory(zi->ci.central_header,(uLong)CENTRALHEADERMAGIC,4); - /* version info */ - zip64local_putValue_inmemory(zi->ci.central_header+4,(uLong)versionMadeBy,2); - zip64local_putValue_inmemory(zi->ci.central_header+6,(uLong)20,2); - zip64local_putValue_inmemory(zi->ci.central_header+8,(uLong)zi->ci.flag,2); - zip64local_putValue_inmemory(zi->ci.central_header+10,(uLong)zi->ci.method,2); - zip64local_putValue_inmemory(zi->ci.central_header+12,(uLong)zi->ci.dosDate,4); - zip64local_putValue_inmemory(zi->ci.central_header+16,(uLong)0,4); /*crc*/ - zip64local_putValue_inmemory(zi->ci.central_header+20,(uLong)0,4); /*compr size*/ - zip64local_putValue_inmemory(zi->ci.central_header+24,(uLong)0,4); /*uncompr size*/ - zip64local_putValue_inmemory(zi->ci.central_header+28,(uLong)size_filename,2); - zip64local_putValue_inmemory(zi->ci.central_header+30,(uLong)size_extrafield_global,2); - zip64local_putValue_inmemory(zi->ci.central_header+32,(uLong)size_comment,2); - zip64local_putValue_inmemory(zi->ci.central_header+34,(uLong)0,2); /*disk nm start*/ - - if (zipfi==NULL) - zip64local_putValue_inmemory(zi->ci.central_header+36,(uLong)0,2); - else - zip64local_putValue_inmemory(zi->ci.central_header+36,(uLong)zipfi->internal_fa,2); - - if (zipfi==NULL) - zip64local_putValue_inmemory(zi->ci.central_header+38,(uLong)0,4); - else - zip64local_putValue_inmemory(zi->ci.central_header+38,(uLong)zipfi->external_fa,4); - - if(zi->ci.pos_local_header >= 0xffffffff) - zip64local_putValue_inmemory(zi->ci.central_header+42,(uLong)0xffffffff,4); - else - zip64local_putValue_inmemory(zi->ci.central_header+42,(uLong)zi->ci.pos_local_header - zi->add_position_when_writting_offset,4); - - for (i=0;ici.central_header+SIZECENTRALHEADER+i) = *(filename+i); - - for (i=0;ici.central_header+SIZECENTRALHEADER+size_filename+i) = - *(((const char*)extrafield_global)+i); - - for (i=0;ici.central_header+SIZECENTRALHEADER+size_filename+ - size_extrafield_global+i) = *(comment+i); - if (zi->ci.central_header == NULL) - return ZIP_INTERNALERROR; - - zi->ci.zip64 = zip64; - zi->ci.totalCompressedData = 0; - zi->ci.totalUncompressedData = 0; - zi->ci.pos_zip64extrainfo = 0; - - err = Write_LocalFileHeader(zi, filename, size_extrafield_local, extrafield_local); - -#ifdef HAVE_BZIP2 - zi->ci.bstream.avail_in = (uInt)0; - zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.bstream.next_out = (char*)zi->ci.buffered_data; - zi->ci.bstream.total_in_hi32 = 0; - zi->ci.bstream.total_in_lo32 = 0; - zi->ci.bstream.total_out_hi32 = 0; - zi->ci.bstream.total_out_lo32 = 0; -#endif - - zi->ci.stream.avail_in = (uInt)0; - zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.stream.next_out = zi->ci.buffered_data; - zi->ci.stream.total_in = 0; - zi->ci.stream.total_out = 0; - zi->ci.stream.data_type = Z_BINARY; - -#ifdef HAVE_BZIP2 - if ((err==ZIP_OK) && (zi->ci.method == Z_DEFLATED || zi->ci.method == Z_BZIP2ED) && (!zi->ci.raw)) -#else - if ((err==ZIP_OK) && (zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) -#endif - { - if(zi->ci.method == Z_DEFLATED) - { - zi->ci.stream.zalloc = (alloc_func)0; - zi->ci.stream.zfree = (free_func)0; - zi->ci.stream.opaque = (voidpf)0; - - if (windowBits>0) - windowBits = -windowBits; - - err = deflateInit2(&zi->ci.stream, level, Z_DEFLATED, windowBits, memLevel, strategy); - - if (err==Z_OK) - zi->ci.stream_initialised = Z_DEFLATED; - } - else if(zi->ci.method == Z_BZIP2ED) - { -#ifdef HAVE_BZIP2 - // Init BZip stuff here - zi->ci.bstream.bzalloc = 0; - zi->ci.bstream.bzfree = 0; - zi->ci.bstream.opaque = (voidpf)0; - - err = BZ2_bzCompressInit(&zi->ci.bstream, level, 0,35); - if(err == BZ_OK) - zi->ci.stream_initialised = Z_BZIP2ED; -#endif - } - - } - -# ifndef NOCRYPT - zi->ci.crypt_header_size = 0; - if ((err==Z_OK) && (password != NULL)) - { - unsigned char bufHead[RAND_HEAD_LEN]; - unsigned int sizeHead; - zi->ci.encrypt = 1; - zi->ci.pcrc_32_tab = (const unsigned long*)get_crc_table(); - /*init_keys(password,zi->ci.keys,zi->ci.pcrc_32_tab);*/ - - sizeHead=crypthead(password,bufHead,RAND_HEAD_LEN,zi->ci.keys,zi->ci.pcrc_32_tab,crcForCrypting); - zi->ci.crypt_header_size = sizeHead; - - if (ZWRITE64(zi->z_filefunc,zi->filestream,bufHead,sizeHead) != sizeHead) - err = ZIP_ERRNO; - } -# endif - - if (err==Z_OK) - zi->in_opened_file_inzip = 1; - return err; -} - -extern int ZEXPORT zipOpenNewFileInZip4 (zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw, - int windowBits,int memLevel, int strategy, - const char* password, uLong crcForCrypting, - uLong versionMadeBy, uLong flagBase) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, raw, - windowBits, memLevel, strategy, - password, crcForCrypting, versionMadeBy, flagBase, 0); -} - -extern int ZEXPORT zipOpenNewFileInZip3 (zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw, - int windowBits,int memLevel, int strategy, - const char* password, uLong crcForCrypting) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, raw, - windowBits, memLevel, strategy, - password, crcForCrypting, VERSIONMADEBY, 0, 0); -} - -extern int ZEXPORT zipOpenNewFileInZip3_64(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw, - int windowBits,int memLevel, int strategy, - const char* password, uLong crcForCrypting, int zip64) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, raw, - windowBits, memLevel, strategy, - password, crcForCrypting, VERSIONMADEBY, 0, zip64); -} - -extern int ZEXPORT zipOpenNewFileInZip2(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, raw, - -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, - NULL, 0, VERSIONMADEBY, 0, 0); -} - -extern int ZEXPORT zipOpenNewFileInZip2_64(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw, int zip64) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, raw, - -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, - NULL, 0, VERSIONMADEBY, 0, zip64); -} - -extern int ZEXPORT zipOpenNewFileInZip64 (zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void*extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int zip64) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, 0, - -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, - NULL, 0, VERSIONMADEBY, 0, zip64); -} - -extern int ZEXPORT zipOpenNewFileInZip (zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void*extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, 0, - -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, - NULL, 0, VERSIONMADEBY, 0, 0); -} - -local int zip64FlushWriteBuffer(zip64_internal* zi) -{ - int err=ZIP_OK; - - if (zi->ci.encrypt != 0) - { -#ifndef NOCRYPT - uInt i; - int t; - for (i=0;ici.pos_in_buffered_data;i++) - zi->ci.buffered_data[i] = zencode(zi->ci.keys, zi->ci.pcrc_32_tab, zi->ci.buffered_data[i],t); -#endif - } - - if (ZWRITE64(zi->z_filefunc,zi->filestream,zi->ci.buffered_data,zi->ci.pos_in_buffered_data) != zi->ci.pos_in_buffered_data) - err = ZIP_ERRNO; - - zi->ci.totalCompressedData += zi->ci.pos_in_buffered_data; - -#ifdef HAVE_BZIP2 - if(zi->ci.method == Z_BZIP2ED) - { - zi->ci.totalUncompressedData += zi->ci.bstream.total_in_lo32; - zi->ci.bstream.total_in_lo32 = 0; - zi->ci.bstream.total_in_hi32 = 0; - } - else -#endif - { - zi->ci.totalUncompressedData += zi->ci.stream.total_in; - zi->ci.stream.total_in = 0; - } - - - zi->ci.pos_in_buffered_data = 0; - - return err; -} - -extern int ZEXPORT zipWriteInFileInZip (zipFile file,const void* buf,unsigned int len) -{ - zip64_internal* zi; - int err=ZIP_OK; - - if (file == NULL) - return ZIP_PARAMERROR; - zi = (zip64_internal*)file; - - if (zi->in_opened_file_inzip == 0) - return ZIP_PARAMERROR; - - zi->ci.crc32 = crc32(zi->ci.crc32,buf,(uInt)len); - -#ifdef HAVE_BZIP2 - if(zi->ci.method == Z_BZIP2ED && (!zi->ci.raw)) - { - zi->ci.bstream.next_in = (void*)buf; - zi->ci.bstream.avail_in = len; - err = BZ_RUN_OK; - - while ((err==BZ_RUN_OK) && (zi->ci.bstream.avail_in>0)) - { - if (zi->ci.bstream.avail_out == 0) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; - zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.bstream.next_out = (char*)zi->ci.buffered_data; - } - - - if(err != BZ_RUN_OK) - break; - - if ((zi->ci.method == Z_BZIP2ED) && (!zi->ci.raw)) - { - uLong uTotalOutBefore_lo = zi->ci.bstream.total_out_lo32; -// uLong uTotalOutBefore_hi = zi->ci.bstream.total_out_hi32; - err=BZ2_bzCompress(&zi->ci.bstream, BZ_RUN); - - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.bstream.total_out_lo32 - uTotalOutBefore_lo) ; - } - } - - if(err == BZ_RUN_OK) - err = ZIP_OK; - } - else -#endif - { - zi->ci.stream.next_in = (Bytef*)buf; - zi->ci.stream.avail_in = len; - - while ((err==ZIP_OK) && (zi->ci.stream.avail_in>0)) - { - if (zi->ci.stream.avail_out == 0) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; - zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.stream.next_out = zi->ci.buffered_data; - } - - - if(err != ZIP_OK) - break; - - if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) - { - uLong uTotalOutBefore = zi->ci.stream.total_out; - err=deflate(&zi->ci.stream, Z_NO_FLUSH); - if(uTotalOutBefore > zi->ci.stream.total_out) - { - int bBreak = 0; - bBreak++; - } - - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ; - } - else - { - uInt copy_this,i; - if (zi->ci.stream.avail_in < zi->ci.stream.avail_out) - copy_this = zi->ci.stream.avail_in; - else - copy_this = zi->ci.stream.avail_out; - - for (i = 0; i < copy_this; i++) - *(((char*)zi->ci.stream.next_out)+i) = - *(((const char*)zi->ci.stream.next_in)+i); - { - zi->ci.stream.avail_in -= copy_this; - zi->ci.stream.avail_out-= copy_this; - zi->ci.stream.next_in+= copy_this; - zi->ci.stream.next_out+= copy_this; - zi->ci.stream.total_in+= copy_this; - zi->ci.stream.total_out+= copy_this; - zi->ci.pos_in_buffered_data += copy_this; - } - } - }// while(...) - } - - return err; -} - -extern int ZEXPORT zipCloseFileInZipRaw (zipFile file, uLong uncompressed_size, uLong crc32) -{ - return zipCloseFileInZipRaw64 (file, uncompressed_size, crc32); -} - -extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_size, uLong crc32) -{ - zip64_internal* zi; - ZPOS64_T compressed_size; - uLong invalidValue = 0xffffffff; - short datasize = 0; - int err=ZIP_OK; - - if (file == NULL) - return ZIP_PARAMERROR; - zi = (zip64_internal*)file; - - if (zi->in_opened_file_inzip == 0) - return ZIP_PARAMERROR; - zi->ci.stream.avail_in = 0; - - if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) - { - while (err==ZIP_OK) - { - uLong uTotalOutBefore; - if (zi->ci.stream.avail_out == 0) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - { -#ifndef __clang_analyzer__ - err = ZIP_ERRNO; -#endif - } - zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; -#ifndef __clang_analyzer__ - zi->ci.stream.next_out = zi->ci.buffered_data; -#endif - } - uTotalOutBefore = zi->ci.stream.total_out; - err=deflate(&zi->ci.stream, Z_FINISH); - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ; - } - } - else if ((zi->ci.method == Z_BZIP2ED) && (!zi->ci.raw)) - { -#ifdef HAVE_BZIP2 - err = BZ_FINISH_OK; - while (err==BZ_FINISH_OK) - { - uLong uTotalOutBefore; - if (zi->ci.bstream.avail_out == 0) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; - zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.bstream.next_out = (char*)zi->ci.buffered_data; - } - uTotalOutBefore = zi->ci.bstream.total_out_lo32; - err=BZ2_bzCompress(&zi->ci.bstream, BZ_FINISH); - if(err == BZ_STREAM_END) - err = Z_STREAM_END; - - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.bstream.total_out_lo32 - uTotalOutBefore); - } - - if(err == BZ_FINISH_OK) - err = ZIP_OK; -#endif - } - - if (err==Z_STREAM_END) - err=ZIP_OK; /* this is normal */ - - if ((zi->ci.pos_in_buffered_data>0) && (err==ZIP_OK)) - { - if (zip64FlushWriteBuffer(zi)==ZIP_ERRNO) - err = ZIP_ERRNO; - } - - if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) - { - int tmp_err = deflateEnd(&zi->ci.stream); - if (err == ZIP_OK) - err = tmp_err; - zi->ci.stream_initialised = 0; - } -#ifdef HAVE_BZIP2 - else if((zi->ci.method == Z_BZIP2ED) && (!zi->ci.raw)) - { - int tmperr = BZ2_bzCompressEnd(&zi->ci.bstream); - if (err==ZIP_OK) - err = tmperr; - zi->ci.stream_initialised = 0; - } -#endif - - if (!zi->ci.raw) - { - crc32 = (uLong)zi->ci.crc32; - uncompressed_size = zi->ci.totalUncompressedData; - } - compressed_size = zi->ci.totalCompressedData; - -# ifndef NOCRYPT - compressed_size += zi->ci.crypt_header_size; -# endif - - // update Current Item crc and sizes, - if(compressed_size >= 0xffffffff || uncompressed_size >= 0xffffffff || zi->ci.pos_local_header >= 0xffffffff) - { - /*version Made by*/ - zip64local_putValue_inmemory(zi->ci.central_header+4,(uLong)45,2); - /*version needed*/ - zip64local_putValue_inmemory(zi->ci.central_header+6,(uLong)45,2); - - } - - zip64local_putValue_inmemory(zi->ci.central_header+16,crc32,4); /*crc*/ - - - if(compressed_size >= 0xffffffff) - zip64local_putValue_inmemory(zi->ci.central_header+20, invalidValue,4); /*compr size*/ - else - zip64local_putValue_inmemory(zi->ci.central_header+20, compressed_size,4); /*compr size*/ - - /// set internal file attributes field - if (zi->ci.stream.data_type == Z_ASCII) - zip64local_putValue_inmemory(zi->ci.central_header+36,(uLong)Z_ASCII,2); - - if(uncompressed_size >= 0xffffffff) - zip64local_putValue_inmemory(zi->ci.central_header+24, invalidValue,4); /*uncompr size*/ - else - zip64local_putValue_inmemory(zi->ci.central_header+24, uncompressed_size,4); /*uncompr size*/ - - // Add ZIP64 extra info field for uncompressed size - if(uncompressed_size >= 0xffffffff) - datasize += 8; - - // Add ZIP64 extra info field for compressed size - if(compressed_size >= 0xffffffff) - datasize += 8; - - // Add ZIP64 extra info field for relative offset to local file header of current file - if(zi->ci.pos_local_header >= 0xffffffff) - datasize += 8; - - if(datasize > 0) - { - char* p = NULL; - - if((uLong)(datasize + 4) > zi->ci.size_centralExtraFree) - { - // we can not write more data to the buffer that we have room for. - return ZIP_BADZIPFILE; - } - - p = zi->ci.central_header + zi->ci.size_centralheader; - - // Add Extra Information Header for 'ZIP64 information' - zip64local_putValue_inmemory(p, 0x0001, 2); // HeaderID - p += 2; - zip64local_putValue_inmemory(p, datasize, 2); // DataSize - p += 2; - - if(uncompressed_size >= 0xffffffff) - { - zip64local_putValue_inmemory(p, uncompressed_size, 8); - p += 8; - } - - if(compressed_size >= 0xffffffff) - { - zip64local_putValue_inmemory(p, compressed_size, 8); - p += 8; - } - - if(zi->ci.pos_local_header >= 0xffffffff) - { - zip64local_putValue_inmemory(p, zi->ci.pos_local_header, 8); -#ifndef __clang_analyzer__ - p += 8; -#endif - } - - // Update how much extra free space we got in the memory buffer - // and increase the centralheader size so the new ZIP64 fields are included - // ( 4 below is the size of HeaderID and DataSize field ) - zi->ci.size_centralExtraFree -= datasize + 4; - zi->ci.size_centralheader += datasize + 4; - - // Update the extra info size field - zi->ci.size_centralExtra += datasize + 4; - zip64local_putValue_inmemory(zi->ci.central_header+30,(uLong)zi->ci.size_centralExtra,2); - } - - if (err==ZIP_OK) - err = add_data_in_datablock(&zi->central_dir, zi->ci.central_header, (uLong)zi->ci.size_centralheader); - - free(zi->ci.central_header); - - if (err==ZIP_OK) - { - // Update the LocalFileHeader with the new values. - - ZPOS64_T cur_pos_inzip = ZTELL64(zi->z_filefunc,zi->filestream); - - if (ZSEEK64(zi->z_filefunc,zi->filestream, zi->ci.pos_local_header + 14,ZLIB_FILEFUNC_SEEK_SET)!=0) - err = ZIP_ERRNO; - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,crc32,4); /* crc 32, unknown */ - - if(uncompressed_size >= 0xffffffff) - { - if(zi->ci.pos_zip64extrainfo > 0) - { - // Update the size in the ZIP64 extended field. - if (ZSEEK64(zi->z_filefunc,zi->filestream, zi->ci.pos_zip64extrainfo + 4,ZLIB_FILEFUNC_SEEK_SET)!=0) - err = ZIP_ERRNO; - - if (err==ZIP_OK) /* compressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, uncompressed_size, 8); - - if (err==ZIP_OK) /* uncompressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, compressed_size, 8); - } - } - else - { - if (err==ZIP_OK) /* compressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,compressed_size,4); - - if (err==ZIP_OK) /* uncompressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,uncompressed_size,4); - } - - if (ZSEEK64(zi->z_filefunc,zi->filestream, cur_pos_inzip,ZLIB_FILEFUNC_SEEK_SET)!=0) - err = ZIP_ERRNO; - } - - zi->number_entry ++; - zi->in_opened_file_inzip = 0; - - return err; -} - -extern int ZEXPORT zipCloseFileInZip (zipFile file) -{ - return zipCloseFileInZipRaw (file,0,0); -} - -int Write_Zip64EndOfCentralDirectoryLocator(zip64_internal* zi, ZPOS64_T zip64eocd_pos_inzip); -int Write_Zip64EndOfCentralDirectoryLocator(zip64_internal* zi, ZPOS64_T zip64eocd_pos_inzip) -{ - int err = ZIP_OK; - ZPOS64_T pos = zip64eocd_pos_inzip - zi->add_position_when_writting_offset; - - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)ZIP64ENDLOCHEADERMAGIC,4); - - /*num disks*/ - if (err==ZIP_OK) /* number of the disk with the start of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); - - /*relative offset*/ - if (err==ZIP_OK) /* Relative offset to the Zip64EndOfCentralDirectory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream, pos,8); - - /*total disks*/ /* Do not support spawning of disk so always say 1 here*/ - if (err==ZIP_OK) /* number of the disk with the start of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)1,4); - - return err; -} - -int Write_Zip64EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip); -int Write_Zip64EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip) -{ - int err = ZIP_OK; - - uLong Zip64DataSize = 44; - - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)ZIP64ENDHEADERMAGIC,4); - - if (err==ZIP_OK) /* size of this 'zip64 end of central directory' */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(ZPOS64_T)Zip64DataSize,8); // why ZPOS64_T of this ? - - if (err==ZIP_OK) /* version made by */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)45,2); - - if (err==ZIP_OK) /* version needed */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)45,2); - - if (err==ZIP_OK) /* number of this disk */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); - - if (err==ZIP_OK) /* number of the disk with the start of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); - - if (err==ZIP_OK) /* total number of entries in the central dir on this disk */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, zi->number_entry, 8); - - if (err==ZIP_OK) /* total number of entries in the central dir */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, zi->number_entry, 8); - - if (err==ZIP_OK) /* size of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(ZPOS64_T)size_centraldir,8); - - if (err==ZIP_OK) /* offset of start of central directory with respect to the starting disk number */ - { - ZPOS64_T pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; - err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (ZPOS64_T)pos,8); - } - return err; -} - -int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip); -int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip) -{ - int err = ZIP_OK; - - /*signature*/ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)ENDHEADERMAGIC,4); - - if (err==ZIP_OK) /* number of this disk */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,2); - - if (err==ZIP_OK) /* number of the disk with the start of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,2); - - if (err==ZIP_OK) /* total number of entries in the central dir on this disk */ - { - { - if(zi->number_entry >= 0xFFFF) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xffff,2); // use value in ZIP64 record - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->number_entry,2); - } - } - - if (err==ZIP_OK) /* total number of entries in the central dir */ - { - if(zi->number_entry >= 0xFFFF) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xffff,2); // use value in ZIP64 record - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->number_entry,2); - } - - if (err==ZIP_OK) /* size of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_centraldir,4); - - if (err==ZIP_OK) /* offset of start of central directory with respect to the starting disk number */ - { - ZPOS64_T pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; - if(pos >= 0xffffffff) - { - err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)0xffffffff,4); - } - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)(centraldir_pos_inzip - zi->add_position_when_writting_offset),4); - } - - return err; -} - -int Write_GlobalComment(zip64_internal* zi, const char* global_comment); -int Write_GlobalComment(zip64_internal* zi, const char* global_comment) -{ - int err = ZIP_OK; - uInt size_global_comment = 0; - - if(global_comment != NULL) - size_global_comment = (uInt)strlen(global_comment); - - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_global_comment,2); - - if (err == ZIP_OK && size_global_comment > 0) - { - if (ZWRITE64(zi->z_filefunc,zi->filestream, global_comment, size_global_comment) != size_global_comment) - err = ZIP_ERRNO; - } - return err; -} - -extern int ZEXPORT zipClose (zipFile file, const char* global_comment) -{ - zip64_internal* zi; - int err = 0; - uLong size_centraldir = 0; - ZPOS64_T centraldir_pos_inzip; - ZPOS64_T pos; - - if (file == NULL) - return ZIP_PARAMERROR; - - zi = (zip64_internal*)file; - - if (zi->in_opened_file_inzip == 1) - { - err = zipCloseFileInZip (file); - } - -#ifndef NO_ADDFILEINEXISTINGZIP - if (global_comment==NULL) - global_comment = zi->globalcomment; -#endif - - centraldir_pos_inzip = ZTELL64(zi->z_filefunc,zi->filestream); - - if (err==ZIP_OK) - { - linkedlist_datablock_internal* ldi = zi->central_dir.first_block; - while (ldi!=NULL) - { - if ((err==ZIP_OK) && (ldi->filled_in_this_block>0)) - { - if (ZWRITE64(zi->z_filefunc,zi->filestream, ldi->data, ldi->filled_in_this_block) != ldi->filled_in_this_block) - err = ZIP_ERRNO; - } - - size_centraldir += ldi->filled_in_this_block; - ldi = ldi->next_datablock; - } - } - free_linkedlist(&(zi->central_dir)); - - pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; - if(pos >= 0xffffffff) - { - ZPOS64_T Zip64EOCDpos = ZTELL64(zi->z_filefunc,zi->filestream); - Write_Zip64EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip); - - Write_Zip64EndOfCentralDirectoryLocator(zi, Zip64EOCDpos); - } - - if (err==ZIP_OK) - err = Write_EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip); - - if(err == ZIP_OK) - err = Write_GlobalComment(zi, global_comment); - - if (ZCLOSE64(zi->z_filefunc,zi->filestream) != 0) - if (err == ZIP_OK) - err = ZIP_ERRNO; - -#ifndef NO_ADDFILEINEXISTINGZIP - TRYFREE(zi->globalcomment); -#endif - TRYFREE(zi); - - return err; -} - -extern int ZEXPORT zipRemoveExtraInfoBlock (char* pData, int* dataLen, short sHeader) -{ - char* p = pData; - int size = 0; - char* pNewHeader; - char* pTmp; - short header; - short dataSize; - - int retVal = ZIP_OK; - - if(pData == NULL || *dataLen < 4) - return ZIP_PARAMERROR; - - pNewHeader = (char*)ALLOC(*dataLen); - pTmp = pNewHeader; - - while(p < (pData + *dataLen)) - { - header = *(short*)p; - dataSize = *(((short*)p)+1); - - if( header == sHeader ) // Header found. - { - p += dataSize + 4; // skip it. do not copy to temp buffer - } - else - { - // Extra Info block should not be removed, So copy it to the temp buffer. - memcpy(pTmp, p, dataSize + 4); - p += dataSize + 4; - size += dataSize + 4; - } - - } - - if(size < *dataLen) - { - // clean old extra info block. - memset(pData,0, *dataLen); - - // copy the new extra info block over the old - if(size > 0) - memcpy(pData, pNewHeader, size); - - // set the new extra info size - *dataLen = size; - - retVal = ZIP_OK; - } - else - retVal = ZIP_ERRNO; - - TRYFREE(pNewHeader); - - return retVal; -} diff --git a/FolioReaderKit/Vendor/SSZipArchive/minizip/zip.h b/FolioReaderKit/Vendor/SSZipArchive/minizip/zip.h deleted file mode 100755 index eec1082b3..000000000 --- a/FolioReaderKit/Vendor/SSZipArchive/minizip/zip.h +++ /dev/null @@ -1,362 +0,0 @@ -/* zip.h -- IO on .zip files using zlib - Version 1.1, February 14h, 2010 - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - - --------------------------------------------------------------------------- - - Condition of use and distribution are the same than zlib : - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - --------------------------------------------------------------------------- - - Changes - - See header of zip.h - -*/ - -#ifndef _zip12_H -#define _zip12_H - -#ifdef __cplusplus -extern "C" { -#endif - -//#define HAVE_BZIP2 - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#ifndef _ZLIBIOAPI_H -#include "ioapi.h" -#endif - -#ifdef HAVE_BZIP2 -#include "bzlib.h" -#endif - -#define Z_BZIP2ED 12 - -#if defined(STRICTZIP) || defined(STRICTZIPUNZIP) -/* like the STRICT of WIN32, we define a pointer that cannot be converted - from (void*) without cast */ -typedef struct TagzipFile__ { int unused; } zipFile__; -typedef zipFile__ *zipFile; -#else -typedef voidp zipFile; -#endif - -#define ZIP_OK (0) -#define ZIP_EOF (0) -#define ZIP_ERRNO (Z_ERRNO) -#define ZIP_PARAMERROR (-102) -#define ZIP_BADZIPFILE (-103) -#define ZIP_INTERNALERROR (-104) - -#ifndef DEF_MEM_LEVEL -# if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -# else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -# endif -#endif -/* default memLevel */ - -/* tm_zip contain date/time info */ -typedef struct tm_zip_s -{ - uInt tm_sec; /* seconds after the minute - [0,59] */ - uInt tm_min; /* minutes after the hour - [0,59] */ - uInt tm_hour; /* hours since midnight - [0,23] */ - uInt tm_mday; /* day of the month - [1,31] */ - uInt tm_mon; /* months since January - [0,11] */ - uInt tm_year; /* years - [1980..2044] */ -} tm_zip; - -typedef struct -{ - tm_zip tmz_date; /* date in understandable format */ - uLong dosDate; /* if dos_date == 0, tmu_date is used */ -/* uLong flag; */ /* general purpose bit flag 2 bytes */ - - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ -} zip_fileinfo; - -typedef const char* zipcharpc; - - -#define APPEND_STATUS_CREATE (0) -#define APPEND_STATUS_CREATEAFTER (1) -#define APPEND_STATUS_ADDINZIP (2) - -extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append)); -extern zipFile ZEXPORT zipOpen64 OF((const void *pathname, int append)); -/* - Create a zipfile. - pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on - an Unix computer "zlib/zlib113.zip". - if the file pathname exist and append==APPEND_STATUS_CREATEAFTER, the zip - will be created at the end of the file. - (useful if the file contain a self extractor code) - if the file pathname exist and append==APPEND_STATUS_ADDINZIP, we will - add files in existing zip (be sure you don't add file that doesn't exist) - If the zipfile cannot be opened, the return value is NULL. - Else, the return value is a zipFile Handle, usable with other function - of this zip package. -*/ - -/* Note : there is no delete function into a zipfile. - If you want delete file into a zipfile, you must open a zipfile, and create another - Of couse, you can use RAW reading and writing to copy the file you did not want delte -*/ - -extern zipFile ZEXPORT zipOpen2 OF((const char *pathname, - int append, - zipcharpc* globalcomment, - zlib_filefunc_def* pzlib_filefunc_def)); - -extern zipFile ZEXPORT zipOpen2_64 OF((const void *pathname, - int append, - zipcharpc* globalcomment, - zlib_filefunc64_def* pzlib_filefunc_def)); - -extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level)); - -extern int ZEXPORT zipOpenNewFileInZip64 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int zip64)); - -/* - Open a file in the ZIP for writing. - filename : the filename in zip (if NULL, '-' without quote will be used - *zipfi contain supplemental information - if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local - contains the extrafield data the the local header - if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global - contains the extrafield data the the local header - if comment != NULL, comment contain the comment string - method contain the compression method (0 for store, Z_DEFLATED for deflate) - level contain the level of compression (can be Z_DEFAULT_COMPRESSION) - zip64 is set to 1 if a zip64 extended information block should be added to the local file header. - this MUST be '1' if the uncompressed size is >= 0xffffffff. - -*/ - - -extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw)); - - -extern int ZEXPORT zipOpenNewFileInZip2_64 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw, - int zip64)); -/* - Same than zipOpenNewFileInZip, except if raw=1, we write raw file - */ - -extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw, - int windowBits, - int memLevel, - int strategy, - const char* password, - uLong crcForCrypting)); - -extern int ZEXPORT zipOpenNewFileInZip3_64 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw, - int windowBits, - int memLevel, - int strategy, - const char* password, - uLong crcForCrypting, - int zip64 - )); - -/* - Same than zipOpenNewFileInZip2, except - windowBits,memLevel,,strategy : see parameter strategy in deflateInit2 - password : crypting password (NULL for no crypting) - crcForCrypting : crc of file to compress (needed for crypting) - */ - -extern int ZEXPORT zipOpenNewFileInZip4 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw, - int windowBits, - int memLevel, - int strategy, - const char* password, - uLong crcForCrypting, - uLong versionMadeBy, - uLong flagBase - )); - - -extern int ZEXPORT zipOpenNewFileInZip4_64 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw, - int windowBits, - int memLevel, - int strategy, - const char* password, - uLong crcForCrypting, - uLong versionMadeBy, - uLong flagBase, - int zip64 - )); -/* - Same than zipOpenNewFileInZip4, except - versionMadeBy : value for Version made by field - flag : value for flag field (compression level info will be added) - */ - - -extern int ZEXPORT zipWriteInFileInZip OF((zipFile file, - const void* buf, - unsigned len)); -/* - Write data in the zipfile -*/ - -extern int ZEXPORT zipCloseFileInZip OF((zipFile file)); -/* - Close the current file in the zipfile -*/ - -extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file, - uLong uncompressed_size, - uLong crc32)); - -extern int ZEXPORT zipCloseFileInZipRaw64 OF((zipFile file, - ZPOS64_T uncompressed_size, - uLong crc32)); - -/* - Close the current file in the zipfile, for file opened with - parameter raw=1 in zipOpenNewFileInZip2 - uncompressed_size and crc32 are value for the uncompressed size -*/ - -extern int ZEXPORT zipClose OF((zipFile file, - const char* global_comment)); -/* - Close the zipfile -*/ - - -extern int ZEXPORT zipRemoveExtraInfoBlock OF((char* pData, int* dataLen, short sHeader)); -/* - zipRemoveExtraInfoBlock - Added by Mathias Svensson - - Remove extra information block from a extra information data for the local file header or central directory header - - It is needed to remove ZIP64 extra information blocks when before data is written if using RAW mode. - - 0x0001 is the signature header for the ZIP64 extra information blocks - - usage. - Remove ZIP64 Extra information from a central director extra field data - zipRemoveExtraInfoBlock(pCenDirExtraFieldData, &nCenDirExtraFieldDataLen, 0x0001); - - Remove ZIP64 Extra information from a Local File Header extra field data - zipRemoveExtraInfoBlock(pLocalHeaderExtraFieldData, &nLocalHeaderExtraFieldDataLen, 0x0001); -*/ - -#ifdef __cplusplus -} -#endif - -#endif /* _zip64_H */ diff --git a/FolioReaderKit/Vendor/SSZipArchive/module.map b/FolioReaderKit/Vendor/SSZipArchive/module.map deleted file mode 100644 index f1474a700..000000000 --- a/FolioReaderKit/Vendor/SSZipArchive/module.map +++ /dev/null @@ -1,4 +0,0 @@ -module SSZipArchive [system] { - header "../SSZipArchive/SSZipArchive.h" - export * -} \ No newline at end of file diff --git a/FolioReaderKit/Vendor/TGPControls/module.map b/FolioReaderKit/Vendor/TGPControls/module.map deleted file mode 100644 index 631109651..000000000 --- a/FolioReaderKit/Vendor/TGPControls/module.map +++ /dev/null @@ -1,4 +0,0 @@ -module TGPControls [system] { - header "../TGPControls/TGPDiscreteSlider7.h" - export * -} \ No newline at end of file diff --git a/FolioReaderKit/Vendor/UIMenuItem-CXAImageSupport/UIMenuItem+CXAImageSupport.h b/FolioReaderKit/Vendor/UIMenuItem-CXAImageSupport/UIMenuItem+CXAImageSupport.h deleted file mode 100644 index 7a7a7df6c..000000000 --- a/FolioReaderKit/Vendor/UIMenuItem-CXAImageSupport/UIMenuItem+CXAImageSupport.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// UIMenuItem+CXAImageSupport.h -// UIMenuItem+CXAImageSupport -// -// Created by CHEN Xian'an on 1/3/13. -// Copyright (c) 2013 lazyapps. All rights reserved. -// - -#import - -@interface UIMenuItem (CXAImageSupport) - -- (id)cxa_initWithTitle:(NSString *)title action:(SEL)action image:(UIImage *)image; -- (id)cxa_initWithTitle:(NSString *)title action:(SEL)action image:(UIImage *)image hidesShadow:(BOOL)hidesShadow; -- (void)cxa_setImage:(UIImage *)image forTitle:(NSString *)title; -- (void)cxa_setImage:(UIImage *)image hidesShadow:(BOOL)hidesShadow forTitle:(NSString *)title; - -@end diff --git a/FolioReaderKit/Vendor/UIMenuItem-CXAImageSupport/UIMenuItem+CXAImageSupport.m b/FolioReaderKit/Vendor/UIMenuItem-CXAImageSupport/UIMenuItem+CXAImageSupport.m deleted file mode 100644 index 9d6adc0fb..000000000 --- a/FolioReaderKit/Vendor/UIMenuItem-CXAImageSupport/UIMenuItem+CXAImageSupport.m +++ /dev/null @@ -1,177 +0,0 @@ -// -// UIMenuItem+CXAImageSupport.m -// UIMenuItem+CXAImageSupport -// -// Created by CHEN Xian'an on 1/3/13. -// Copyright (c) 2013 lazyapps. All rights reserved. -// - -#import "UIMenuItem+CXAImageSupport.h" -#import - -#define INVISIBLE_IDENTIFIER @"\uFEFF\u200B" - -static NSMutableDictionary *titleImagePairs; -static NSMutableDictionary *titleHidesShadowPairs; - -@interface NSString (CXAImageSupport) - -- (NSString *)cxa_stringByWrappingInvisibleIdentifiers; -- (BOOL)cxa_doesWrapInvisibleIdentifiers; - -@end - -#pragma mark - UIMenuItem CXAImageSupport category -@implementation UIMenuItem (CXAImageSupport) - -+ (void)load -{ - static dispatch_once_t once; - dispatch_once(&once, ^{ - titleImagePairs = [@{} mutableCopy]; - titleHidesShadowPairs = [@{} mutableCopy]; - }); -} - -+ (void)dealloc -{ - titleImagePairs = nil; - titleHidesShadowPairs = nil; -} - -- (id)cxa_initWithTitle:(NSString *)title - action:(SEL)action - image:(UIImage *)image -{ - return [self cxa_initWithTitle:title action:action image:image hidesShadow:NO]; -} - -- (id)cxa_initWithTitle:(NSString *)title - action:(SEL)action - image:(UIImage *)image - hidesShadow:(BOOL)hidesShadow -{ - id item = [self initWithTitle:@"" action:action]; - if (item) - [item cxa_setImage:image hidesShadow:hidesShadow forTitle:title]; - - return item; -} - -- (void)cxa_setImage:(UIImage *)image - forTitle:(NSString *)title -{ - [self cxa_setImage:image hidesShadow:NO forTitle:title]; -} - -- (void)cxa_setImage:(UIImage *)image - hidesShadow:(BOOL)hidesShadow - forTitle:(NSString *)title -{ - if (!title) - @throw [NSException exceptionWithName:@"UIMenuItem+CXAImageSupport" reason:@"title can't be nil" userInfo:nil]; - - title = [title cxa_stringByWrappingInvisibleIdentifiers]; - self.title = title; - titleImagePairs[title] = image; - titleHidesShadowPairs[title] = hidesShadow ? @YES : @NO; -} - -@end - -#pragma mark - NSString helper category -@implementation NSString (CXAImageSupport) - -- (NSString *)cxa_stringByWrappingInvisibleIdentifiers -{ - return [NSString stringWithFormat:@"%@%@%@", INVISIBLE_IDENTIFIER, self, INVISIBLE_IDENTIFIER]; -} - -- (BOOL)cxa_doesWrapInvisibleIdentifiers -{ - BOOL doesStartMatch = [self rangeOfString:INVISIBLE_IDENTIFIER options:NSAnchoredSearch].location != NSNotFound; - if (!doesStartMatch) - return NO; - - BOOL doesEndMatch = [self rangeOfString:INVISIBLE_IDENTIFIER options:NSAnchoredSearch | NSBackwardsSearch].location != NSNotFound; - return doesEndMatch; -} - -@end - -#pragma mark - Method swizzling - -static void (*origDrawTextInRect)(id, SEL, CGRect); -static void newDrawTextInRect(id, SEL, CGRect); -static void (*origSetFrame)(id, SEL, CGRect); -static void newSetFrame(id, SEL, CGRect); -static CGSize (*origSizeWithFont)(id, SEL, id); -static CGSize newSizeWithFont(id, SEL, id); - -@interface UILabel (CXAImageSupport) @end - -@implementation UILabel (CXAImageSupport) - -+ (void)load -{ - Method origMethod = class_getInstanceMethod(self, @selector(drawTextInRect:)); - origDrawTextInRect = (void *)method_getImplementation(origMethod); - if (!class_addMethod(self, @selector(drawTextInRect:), (IMP)newDrawTextInRect, method_getTypeEncoding(origMethod))) - method_setImplementation(origMethod, (IMP)newDrawTextInRect); - - origMethod = class_getInstanceMethod(self, @selector(setFrame:)); - origSetFrame = (void *)method_getImplementation(origMethod); - if (!class_addMethod(self, @selector(setFrame:), (IMP)newSetFrame, method_getTypeEncoding(origMethod))) - method_setImplementation(origMethod, (IMP)newSetFrame); - - origMethod = class_getInstanceMethod([NSString class], @selector(sizeWithFont:)); - origSizeWithFont = (void *)method_getImplementation(origMethod); - if (!class_addMethod([NSString class], @selector(sizeWithFont:), (IMP)newSizeWithFont, method_getTypeEncoding(origMethod))) - method_setImplementation(origMethod, (IMP)newSizeWithFont); -} - -@end - -static void newDrawTextInRect(UILabel *self, SEL _cmd, CGRect rect) -{ - if (![self.text cxa_doesWrapInvisibleIdentifiers] || - !titleImagePairs[self.text]){ - origDrawTextInRect(self, @selector(drawTextInRect:), rect); - return; - } - - UIImage *img = titleImagePairs[self.text]; - CGSize size = img.size; - CGPoint point = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds)); - point.x = ceilf(point.x - size.width/2); - point.y = ceilf(point.y - size.height/2); - - BOOL drawsShadow = ![titleHidesShadowPairs[self.text] boolValue]; - CGContextRef context = UIGraphicsGetCurrentContext(); - if (drawsShadow){ - CGContextSaveGState(context); - CGContextSetShadowWithColor(context, CGSizeMake(0, -1), 0, [[UIColor blackColor] colorWithAlphaComponent:1./3.].CGColor); - } - - [img drawAtPoint:point]; - if (drawsShadow) - CGContextRestoreGState(context); -} - -static void newSetFrame(UILabel *self, SEL _cmd, CGRect rect) -{ - if ([self.text cxa_doesWrapInvisibleIdentifiers] && - titleImagePairs[self.text]) - rect = self.superview.bounds; - - origSetFrame(self, @selector(setFrame:), rect); -} - -static CGSize newSizeWithFont(NSString *self, SEL _cmd, UIFont *font) -{ - if ([self cxa_doesWrapInvisibleIdentifiers] && - titleImagePairs[self]) - return [titleImagePairs[self] size]; - - return origSizeWithFont(self, _cmd, font); -} diff --git a/FolioReaderKit/Vendor/UIMenuItem-CXAImageSupport/module.map b/FolioReaderKit/Vendor/UIMenuItem-CXAImageSupport/module.map deleted file mode 100644 index cdc90bc5d..000000000 --- a/FolioReaderKit/Vendor/UIMenuItem-CXAImageSupport/module.map +++ /dev/null @@ -1,4 +0,0 @@ -module UIMenuItem_CXAImageSupport [system] { - header "../UIMenuItem-CXAImageSupport/UIMenuItem+CXAImageSupport.h" - export * -} \ No newline at end of file diff --git a/FolioReaderKit/Vendor/ZFDragableModalTransition/ZFModalTransitionAnimator.h b/FolioReaderKit/Vendor/ZFDragableModalTransition/ZFModalTransitionAnimator.h deleted file mode 100644 index b3443c504..000000000 --- a/FolioReaderKit/Vendor/ZFDragableModalTransition/ZFModalTransitionAnimator.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// ZFModalTransitionAnimator.h -// -// Created by Amornchai Kanokpullwad on 5/10/14. -// Copyright (c) 2014 zoonref. All rights reserved. -// - -#import -#import -#import - -typedef NS_ENUM(NSUInteger, ZFModalTransitonDirection) { - ZFModalTransitonDirectionBottom, - ZFModalTransitonDirectionLeft, - ZFModalTransitonDirectionRight, -}; - -@interface ZFDetectScrollViewEndGestureRecognizer : UIPanGestureRecognizer -@property (nonatomic, weak) UIScrollView *scrollview; -@end - -@interface ZFModalTransitionAnimator : UIPercentDrivenInteractiveTransition - -@property (nonatomic, assign, getter=isDragable) BOOL dragable; -@property BOOL bounces; -@property ZFModalTransitonDirection direction; -@property CGFloat behindViewScale; -@property CGFloat behindViewAlpha; -@property CGFloat transitionDuration; - -- (id)initWithModalViewController:(UIViewController *)modalViewController; -- (void)setContentScrollView:(UIScrollView *)scrollView; - -@end diff --git a/FolioReaderKit/Vendor/ZFDragableModalTransition/ZFModalTransitionAnimator.m b/FolioReaderKit/Vendor/ZFDragableModalTransition/ZFModalTransitionAnimator.m deleted file mode 100644 index 4a4712edd..000000000 --- a/FolioReaderKit/Vendor/ZFDragableModalTransition/ZFModalTransitionAnimator.m +++ /dev/null @@ -1,504 +0,0 @@ -// -// ZFModalTransitionAnimator.m -// -// Created by Amornchai Kanokpullwad on 5/10/14. -// Copyright (c) 2014 zoonref. All rights reserved. -// - -#import "ZFModalTransitionAnimator.h" - -@interface ZFModalTransitionAnimator () -@property (nonatomic, weak) UIViewController *modalController; -@property (nonatomic, strong) ZFDetectScrollViewEndGestureRecognizer *gesture; -@property (nonatomic, strong) id transitionContext; -@property CGFloat panLocationStart; -@property BOOL isDismiss; -@property BOOL isInteractive; -@property CATransform3D tempTransform; -@end - -@implementation ZFModalTransitionAnimator - -- (instancetype)initWithModalViewController:(UIViewController *)modalViewController -{ - self = [super init]; - if (self) { - _modalController = modalViewController; - _direction = ZFModalTransitonDirectionBottom; - _dragable = NO; - _bounces = YES; - _behindViewScale = 0.9f; - _behindViewAlpha = 1.0f; - _transitionDuration = 0.8f; - - [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(orientationChanged:) - name:UIApplicationDidChangeStatusBarFrameNotification - object:nil]; - } - return self; -} - --(void)dealloc -{ - [[NSNotificationCenter defaultCenter] removeObserver:self]; - [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; -} - -- (void)setDragable:(BOOL)dragable -{ - _dragable = dragable; - if (_dragable) { - self.gesture = [[ZFDetectScrollViewEndGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; - self.gesture.delegate = self; - [self.modalController.view addGestureRecognizer:self.gesture]; - } else { - if (self.gesture) { - [self.modalController.view removeGestureRecognizer:self.gesture]; - self.gesture = nil; - } - } -} - -- (void)setContentScrollView:(UIScrollView *)scrollView -{ - self.gesture.scrollview = scrollView; -} - -- (void)animationEnded:(BOOL)transitionCompleted -{ - // Reset to our default state - self.isInteractive = NO; - self.transitionContext = nil; -} - -- (NSTimeInterval)transitionDuration:(id)transitionContext -{ - return self.transitionDuration; -} - -- (void)animateTransition:(id)transitionContext -{ - if (self.isInteractive) { - return; - } - // Grab the from and to view controllers from the context - UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; - UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; - - UIView *containerView = [transitionContext containerView]; - - if (!self.isDismiss) { - - CGRect startRect; - - [containerView addSubview:toViewController.view]; - - toViewController.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; - - if (self.direction == ZFModalTransitonDirectionBottom) { - startRect = CGRectMake(0, - CGRectGetHeight(containerView.frame), - CGRectGetWidth(containerView.bounds), - CGRectGetHeight(containerView.bounds)); - } else if (self.direction == ZFModalTransitonDirectionLeft) { - startRect = CGRectMake(-CGRectGetWidth(containerView.frame), - 0, - CGRectGetWidth(containerView.bounds), - CGRectGetHeight(containerView.bounds)); - } else if (self.direction == ZFModalTransitonDirectionRight) { - startRect = CGRectMake(CGRectGetWidth(containerView.frame), - 0, - CGRectGetWidth(containerView.bounds), - CGRectGetHeight(containerView.bounds)); - } - - CGPoint transformedPoint = CGPointApplyAffineTransform(startRect.origin, toViewController.view.transform); - toViewController.view.frame = CGRectMake(transformedPoint.x, transformedPoint.y, startRect.size.width, startRect.size.height); - - [fromViewController beginAppearanceTransition:NO animated:YES]; - - [UIView animateWithDuration:[self transitionDuration:transitionContext] - delay:0 - usingSpringWithDamping:0.8 - initialSpringVelocity:0.1 - options:UIViewAnimationOptionCurveEaseOut - animations:^{ - fromViewController.view.transform = CGAffineTransformScale(fromViewController.view.transform, self.behindViewScale, self.behindViewScale); - fromViewController.view.alpha = self.behindViewAlpha; - - toViewController.view.frame = CGRectMake(0,0, - CGRectGetWidth(toViewController.view.frame), - CGRectGetHeight(toViewController.view.frame)); - } completion:^(BOOL finished) { - [fromViewController endAppearanceTransition]; - [transitionContext completeTransition:![transitionContext transitionWasCancelled]]; - }]; - } else { - - [containerView bringSubviewToFront:fromViewController.view]; - - if (![self isPriorToIOS8]) { - toViewController.view.layer.transform = CATransform3DScale(toViewController.view.layer.transform, self.behindViewScale, self.behindViewScale, 1); - } - - toViewController.view.alpha = self.behindViewAlpha; - - CGRect endRect; - - if (self.direction == ZFModalTransitonDirectionBottom) { - endRect = CGRectMake(0, - CGRectGetHeight(fromViewController.view.bounds), - CGRectGetWidth(fromViewController.view.frame), - CGRectGetHeight(fromViewController.view.frame)); - } else if (self.direction == ZFModalTransitonDirectionLeft) { - endRect = CGRectMake(-CGRectGetWidth(fromViewController.view.bounds), - 0, - CGRectGetWidth(fromViewController.view.frame), - CGRectGetHeight(fromViewController.view.frame)); - } else if (self.direction == ZFModalTransitonDirectionRight) { - endRect = CGRectMake(CGRectGetWidth(fromViewController.view.bounds), - 0, - CGRectGetWidth(fromViewController.view.frame), - CGRectGetHeight(fromViewController.view.frame)); - } - - CGPoint transformedPoint = CGPointApplyAffineTransform(endRect.origin, fromViewController.view.transform); - endRect = CGRectMake(transformedPoint.x, transformedPoint.y, endRect.size.width, endRect.size.height); - - [toViewController beginAppearanceTransition:YES animated:YES]; - - [UIView animateWithDuration:[self transitionDuration:transitionContext] - delay:0 - usingSpringWithDamping:0.8 - initialSpringVelocity:0.1 - options:UIViewAnimationOptionCurveEaseOut - animations:^{ - CGFloat scaleBack = (1 / self.behindViewScale); - toViewController.view.layer.transform = CATransform3DScale(toViewController.view.layer.transform, scaleBack, scaleBack, 1); - toViewController.view.alpha = 1.0f; - fromViewController.view.frame = endRect; - } completion:^(BOOL finished) { - [toViewController endAppearanceTransition]; - [transitionContext completeTransition:![transitionContext transitionWasCancelled]]; - }]; - } -} - -# pragma mark - Gesture - -- (void)handlePan:(UIPanGestureRecognizer *)recognizer -{ - // Location reference - CGPoint location = [recognizer locationInView:self.modalController.view.window]; - location = CGPointApplyAffineTransform(location, CGAffineTransformInvert(recognizer.view.transform)); - // Velocity reference - CGPoint velocity = [recognizer velocityInView:[self.modalController.view window]]; - velocity = CGPointApplyAffineTransform(velocity, CGAffineTransformInvert(recognizer.view.transform)); - - if (recognizer.state == UIGestureRecognizerStateBegan) { - self.isInteractive = YES; - if (self.direction == ZFModalTransitonDirectionBottom) { - self.panLocationStart = location.y; - } else { - self.panLocationStart = location.x; - } - [self.modalController dismissViewControllerAnimated:YES completion:nil]; - - } else if (recognizer.state == UIGestureRecognizerStateChanged) { - CGFloat animationRatio = 0; - - if (self.direction == ZFModalTransitonDirectionBottom) { - animationRatio = (location.y - self.panLocationStart) / (CGRectGetHeight([self.modalController view].bounds)); - } else if (self.direction == ZFModalTransitonDirectionLeft) { - animationRatio = (self.panLocationStart - location.x) / (CGRectGetWidth([self.modalController view].bounds)); - } else if (self.direction == ZFModalTransitonDirectionRight) { - animationRatio = (location.x - self.panLocationStart) / (CGRectGetWidth([self.modalController view].bounds)); - } - - [self updateInteractiveTransition:animationRatio]; - - } else if (recognizer.state == UIGestureRecognizerStateEnded) { - - CGFloat velocityForSelectedDirection; - - if (self.direction == ZFModalTransitonDirectionBottom) { - velocityForSelectedDirection = velocity.y; - } else { - velocityForSelectedDirection = velocity.x; - } - - if (velocityForSelectedDirection > 100 - && (self.direction == ZFModalTransitonDirectionRight - || self.direction == ZFModalTransitonDirectionBottom)) { - [self finishInteractiveTransition]; - } else if (velocityForSelectedDirection < -100 && self.direction == ZFModalTransitonDirectionLeft) { - [self finishInteractiveTransition]; - } else { - [self cancelInteractiveTransition]; - } - self.isInteractive = NO; - } -} - -#pragma mark - - --(void)startInteractiveTransition:(id)transitionContext -{ - self.transitionContext = transitionContext; - - UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; - UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; - - [toViewController beginAppearanceTransition:YES animated:YES]; - - if (![self isPriorToIOS8]) { - toViewController.view.layer.transform = CATransform3DScale(toViewController.view.layer.transform, self.behindViewScale, self.behindViewScale, 1); - } - - self.tempTransform = toViewController.view.layer.transform; - - toViewController.view.alpha = self.behindViewAlpha; - [[transitionContext containerView] bringSubviewToFront:fromViewController.view]; -} - -- (void)updateInteractiveTransition:(CGFloat)percentComplete -{ - if (!self.bounces && percentComplete < 0) { - percentComplete = 0; - } - - id transitionContext = self.transitionContext; - - UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; - UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; - CATransform3D transform = CATransform3DMakeScale( - 1 + (((1 / self.behindViewScale) - 1) * percentComplete), - 1 + (((1 / self.behindViewScale) - 1) * percentComplete), 1); - toViewController.view.layer.transform = CATransform3DConcat(self.tempTransform, transform); - - toViewController.view.alpha = self.behindViewAlpha + ((1 - self.behindViewAlpha) * percentComplete); - - CGRect updateRect; - if (self.direction == ZFModalTransitonDirectionBottom) { - updateRect = CGRectMake(0, - (CGRectGetHeight(fromViewController.view.bounds) * percentComplete), - CGRectGetWidth(fromViewController.view.frame), - CGRectGetHeight(fromViewController.view.frame)); - } else if (self.direction == ZFModalTransitonDirectionLeft) { - updateRect = CGRectMake(-(CGRectGetWidth(fromViewController.view.bounds) * percentComplete), - 0, - CGRectGetWidth(fromViewController.view.frame), - CGRectGetHeight(fromViewController.view.frame)); - } else if (self.direction == ZFModalTransitonDirectionRight) { - updateRect = CGRectMake(CGRectGetWidth(fromViewController.view.bounds) * percentComplete, - 0, - CGRectGetWidth(fromViewController.view.frame), - CGRectGetHeight(fromViewController.view.frame)); - } - - // reset to zero if x and y has unexpected value to prevent crash - if (isnan(updateRect.origin.x) || isinf(updateRect.origin.x)) { - updateRect.origin.x = 0; - } - if (isnan(updateRect.origin.y) || isinf(updateRect.origin.y)) { - updateRect.origin.y = 0; - } - - CGPoint transformedPoint = CGPointApplyAffineTransform(updateRect.origin, fromViewController.view.transform); - updateRect = CGRectMake(transformedPoint.x, transformedPoint.y, updateRect.size.width, updateRect.size.height); - - fromViewController.view.frame = updateRect; -} - -- (void)finishInteractiveTransition -{ - id transitionContext = self.transitionContext; - - UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; - UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; - - CGRect endRect; - - if (self.direction == ZFModalTransitonDirectionBottom) { - endRect = CGRectMake(0, - CGRectGetHeight(fromViewController.view.bounds), - CGRectGetWidth(fromViewController.view.frame), - CGRectGetHeight(fromViewController.view.frame)); - } else if (self.direction == ZFModalTransitonDirectionLeft) { - endRect = CGRectMake(-CGRectGetWidth(fromViewController.view.bounds), - 0, - CGRectGetWidth(fromViewController.view.frame), - CGRectGetHeight(fromViewController.view.frame)); - } else if (self.direction == ZFModalTransitonDirectionRight) { - endRect = CGRectMake(CGRectGetWidth(fromViewController.view.bounds), - 0, - CGRectGetWidth(fromViewController.view.frame), - CGRectGetHeight(fromViewController.view.frame)); - } - - CGPoint transformedPoint = CGPointApplyAffineTransform(endRect.origin, fromViewController.view.transform); - endRect = CGRectMake(transformedPoint.x, transformedPoint.y, endRect.size.width, endRect.size.height); - - [UIView animateWithDuration:[self transitionDuration:transitionContext] - delay:0 - usingSpringWithDamping:0.8 - initialSpringVelocity:0.1 - options:UIViewAnimationOptionCurveEaseOut - animations:^{ - CGFloat scaleBack = (1 / self.behindViewScale); - toViewController.view.layer.transform = CATransform3DScale(self.tempTransform, scaleBack, scaleBack, 1); - toViewController.view.alpha = 1.0f; - fromViewController.view.frame = endRect; - } completion:^(BOOL finished) { - [toViewController endAppearanceTransition]; - [transitionContext completeTransition:YES]; - }]; -} - -- (void)cancelInteractiveTransition -{ - id transitionContext = self.transitionContext; - - UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; - UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; - - [toViewController beginAppearanceTransition:NO animated:YES]; - - [UIView animateWithDuration:0.4 - delay:0 - usingSpringWithDamping:0.8 - initialSpringVelocity:0.1 - options:UIViewAnimationOptionCurveEaseOut - animations:^{ - toViewController.view.layer.transform = self.tempTransform; - toViewController.view.alpha = self.behindViewAlpha; - - fromViewController.view.frame = CGRectMake(0,0, - CGRectGetWidth(fromViewController.view.frame), - CGRectGetHeight(fromViewController.view.frame)); - } completion:^(BOOL finished) { - [toViewController endAppearanceTransition]; - [transitionContext completeTransition:NO]; - }]; -} - -#pragma mark - UIViewControllerTransitioningDelegate Methods - -- (id )animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source -{ - self.isDismiss = NO; - return self; -} - -- (id )animationControllerForDismissedController:(UIViewController *)dismissed -{ - self.isDismiss = YES; - return self; -} - -- (id )interactionControllerForPresentation:(id )animator -{ - return nil; -} - -- (id )interactionControllerForDismissal:(id )animator -{ - // Return nil if we are not interactive - if (self.isInteractive && self.dragable) { - self.isDismiss = YES; - return self; - } - - return nil; -} - -#pragma mark - Gesture Delegate - -- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer -{ - if (self.direction == ZFModalTransitonDirectionBottom) { - return YES; - } - return NO; -} - -- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer -{ - if (self.direction == ZFModalTransitonDirectionBottom) { - return YES; - } - return NO; -} - -#pragma mark - Utils - -- (BOOL)isPriorToIOS8 -{ - NSComparisonResult order = [[UIDevice currentDevice].systemVersion compare: @"8.0" options: NSNumericSearch]; - if (order == NSOrderedSame || order == NSOrderedDescending) { - // OS version >= 8.0 - return YES; - } - return NO; -} - -#pragma mark - Orientation - -- (void)orientationChanged:(NSNotification *)notification -{ - UIViewController *backViewController = self.modalController.presentingViewController; - backViewController.view.bounds = backViewController.view.window.bounds; - if (![self isPriorToIOS8]) { - backViewController.view.layer.transform = CATransform3DScale(backViewController.view.layer.transform, self.behindViewScale, self.behindViewScale, 1); - } -} - -@end - -// Gesture Class Implement -@interface ZFDetectScrollViewEndGestureRecognizer () -@property (nonatomic, strong) NSNumber *isFail; -@end - -@implementation ZFDetectScrollViewEndGestureRecognizer - -- (void)reset -{ - [super reset]; - self.isFail = nil; -} - -- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event -{ - [super touchesMoved:touches withEvent:event]; - - if (!self.scrollview) { - return; - } - - if (self.state == UIGestureRecognizerStateFailed) return; - CGPoint nowPoint = [touches.anyObject locationInView:self.view]; - CGPoint prevPoint = [touches.anyObject previousLocationInView:self.view]; - - if (self.isFail) { - if (self.isFail.boolValue) { - self.state = UIGestureRecognizerStateFailed; - } - return; - } - - CGFloat topVerticalOffset = -self.scrollview.contentInset.top; - - if (nowPoint.y > prevPoint.y && self.scrollview.contentOffset.y <= topVerticalOffset) { - self.isFail = @NO; - } else if (self.scrollview.contentOffset.y >= topVerticalOffset) { - self.state = UIGestureRecognizerStateFailed; - self.isFail = @YES; - } else { - self.isFail = @NO; - } -} - -@end diff --git a/FolioReaderKit/Vendor/ZFDragableModalTransition/module.map b/FolioReaderKit/Vendor/ZFDragableModalTransition/module.map deleted file mode 100644 index 88670b9a4..000000000 --- a/FolioReaderKit/Vendor/ZFDragableModalTransition/module.map +++ /dev/null @@ -1,4 +0,0 @@ -module ZFDragableModalTransition [system] { - header "../ZFDragableModalTransition/ZFModalTransitionAnimator.h" - export * -} \ No newline at end of file diff --git a/FolioReaderKitTests/FolioReaderKitTests.swift b/FolioReaderKitTests/FolioReaderKitTests.swift deleted file mode 100644 index 243cc4528..000000000 --- a/FolioReaderKitTests/FolioReaderKitTests.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// FolioReaderKitTests.swift -// FolioReaderKitTests -// -// Created by Heberti Almeida on 08/04/15. -// Copyright (c) 2015 Folio Reader. All rights reserved. -// - -import UIKit -import XCTest - -class FolioReaderKitTests: XCTestCase { - - override func setUp() { - super.setUp() - // Put setup code here. This method is called before the invocation of each test method in the class. - } - - override func tearDown() { - // Put teardown code here. This method is called after the invocation of each test method in the class. - super.tearDown() - } - - func testExample() { - // This is an example of a functional test case. - XCTAssert(true, "Pass") - } - - func testPerformanceExample() { - // This is an example of a performance test case. - self.measureBlock() { - // Put the code you want to measure the time of here. - } - } - -} diff --git a/FolioReaderKitTests/Info.plist b/FolioReaderKitTests/Info.plist deleted file mode 100644 index ba72822e8..000000000 --- a/FolioReaderKitTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/FolioReaderKit/FRBook.swift b/Source/EPUBCore/FRBook.swift similarity index 100% rename from FolioReaderKit/FRBook.swift rename to Source/EPUBCore/FRBook.swift diff --git a/FolioReaderKit/FREpubParser.swift b/Source/EPUBCore/FREpubParser.swift similarity index 99% rename from FolioReaderKit/FREpubParser.swift rename to Source/EPUBCore/FREpubParser.swift index 791259594..d756b507f 100755 --- a/FolioReaderKit/FREpubParser.swift +++ b/Source/EPUBCore/FREpubParser.swift @@ -8,6 +8,7 @@ import UIKit import SSZipArchive +import AEXML class FREpubParser: NSObject, SSZipArchiveDelegate { let book = FRBook() diff --git a/FolioReaderKit/FRHighlight.swift b/Source/EPUBCore/FRHighlight.swift similarity index 100% rename from FolioReaderKit/FRHighlight.swift rename to Source/EPUBCore/FRHighlight.swift diff --git a/FolioReaderKit/FRMediaType.swift b/Source/EPUBCore/FRMediaType.swift similarity index 100% rename from FolioReaderKit/FRMediaType.swift rename to Source/EPUBCore/FRMediaType.swift diff --git a/FolioReaderKit/FRMetadata.swift b/Source/EPUBCore/FRMetadata.swift similarity index 100% rename from FolioReaderKit/FRMetadata.swift rename to Source/EPUBCore/FRMetadata.swift diff --git a/FolioReaderKit/FRResource.swift b/Source/EPUBCore/FRResource.swift similarity index 100% rename from FolioReaderKit/FRResource.swift rename to Source/EPUBCore/FRResource.swift diff --git a/FolioReaderKit/FRResources.swift b/Source/EPUBCore/FRResources.swift similarity index 100% rename from FolioReaderKit/FRResources.swift rename to Source/EPUBCore/FRResources.swift diff --git a/FolioReaderKit/FRSpine.swift b/Source/EPUBCore/FRSpine.swift similarity index 100% rename from FolioReaderKit/FRSpine.swift rename to Source/EPUBCore/FRSpine.swift diff --git a/FolioReaderKit/FRTocReference.swift b/Source/EPUBCore/FRTocReference.swift similarity index 100% rename from FolioReaderKit/FRTocReference.swift rename to Source/EPUBCore/FRTocReference.swift diff --git a/FolioReaderKit/FolioReaderCenter.swift b/Source/FolioReaderCenter.swift similarity index 99% rename from FolioReaderKit/FolioReaderCenter.swift rename to Source/FolioReaderCenter.swift index f6605db78..4708af5a3 100755 --- a/FolioReaderKit/FolioReaderCenter.swift +++ b/Source/FolioReaderCenter.swift @@ -214,8 +214,8 @@ class FolioReaderCenter: UIViewController, UICollectionViewDelegate, UICollectio var html = try? String(contentsOfFile: resource.fullHref, encoding: NSUTF8StringEncoding) // Inject CSS - let jsFilePath = NSBundle(forClass: self.dynamicType).pathForResource("Bridge", ofType: "js") - let cssFilePath = NSBundle(forClass: self.dynamicType).pathForResource("Style", ofType: "css") + let jsFilePath = NSBundle.frameworkBundle().pathForResource("Bridge", ofType: "js") + let cssFilePath = NSBundle.frameworkBundle().pathForResource("Style", ofType: "css") let cssTag = "" let jsTag = "" diff --git a/FolioReaderKit/FolioReaderConfig.swift b/Source/FolioReaderConfig.swift similarity index 100% rename from FolioReaderKit/FolioReaderConfig.swift rename to Source/FolioReaderConfig.swift diff --git a/FolioReaderKit/FolioReaderContainer.swift b/Source/FolioReaderContainer.swift similarity index 99% rename from FolioReaderKit/FolioReaderContainer.swift rename to Source/FolioReaderContainer.swift index 3f874e316..e7ecbc18a 100755 --- a/FolioReaderKit/FolioReaderContainer.swift +++ b/Source/FolioReaderContainer.swift @@ -7,7 +7,7 @@ // import UIKit -import QuartzCore +import FontBlaster var readerConfig: FolioReaderConfig! var epubPath: String? diff --git a/FolioReaderKit/FolioReaderFontsMenu.swift b/Source/FolioReaderFontsMenu.swift similarity index 100% rename from FolioReaderKit/FolioReaderFontsMenu.swift rename to Source/FolioReaderFontsMenu.swift diff --git a/FolioReaderKit/FolioReaderHighlightList.swift b/Source/FolioReaderHighlightList.swift similarity index 100% rename from FolioReaderKit/FolioReaderHighlightList.swift rename to Source/FolioReaderHighlightList.swift diff --git a/FolioReaderKit/FolioReaderKit.h b/Source/FolioReaderKit.h similarity index 100% rename from FolioReaderKit/FolioReaderKit.h rename to Source/FolioReaderKit.h diff --git a/FolioReaderKit/FolioReaderKit.swift b/Source/FolioReaderKit.swift similarity index 99% rename from FolioReaderKit/FolioReaderKit.swift rename to Source/FolioReaderKit.swift index 3be0d9a42..9c5c90998 100755 --- a/FolioReaderKit/FolioReaderKit.swift +++ b/Source/FolioReaderKit.swift @@ -122,7 +122,7 @@ public class FolioReader { extension NSBundle { class func frameworkBundle() -> NSBundle { - return NSBundle(identifier: "com.folioreader.FolioReaderKit")! + return NSBundle(forClass: FolioReader.self) } } diff --git a/FolioReaderKit/FolioReaderPage.swift b/Source/FolioReaderPage.swift similarity index 99% rename from FolioReaderKit/FolioReaderPage.swift rename to Source/FolioReaderPage.swift index 927a248b0..2d84a1d21 100755 --- a/FolioReaderKit/FolioReaderPage.swift +++ b/Source/FolioReaderPage.swift @@ -9,6 +9,7 @@ import UIKit import SafariServices import UIMenuItem_CXAImageSupport +import JSQWebViewController @objc protocol FolioPageDelegate { optional func pageDidLoad(page: FolioReaderPage) diff --git a/FolioReaderKit/FolioReaderPageIndicator.swift b/Source/FolioReaderPageIndicator.swift similarity index 100% rename from FolioReaderKit/FolioReaderPageIndicator.swift rename to Source/FolioReaderPageIndicator.swift diff --git a/FolioReaderKit/FolioReaderSharingProvider.swift b/Source/FolioReaderSharingProvider.swift similarity index 100% rename from FolioReaderKit/FolioReaderSharingProvider.swift rename to Source/FolioReaderSharingProvider.swift diff --git a/FolioReaderKit/FolioReaderSidePanel.swift b/Source/FolioReaderSidePanel.swift similarity index 100% rename from FolioReaderKit/FolioReaderSidePanel.swift rename to Source/FolioReaderSidePanel.swift diff --git a/FolioReaderKit/FolioReaderSidePanelCell.swift b/Source/FolioReaderSidePanelCell.swift similarity index 100% rename from FolioReaderKit/FolioReaderSidePanelCell.swift rename to Source/FolioReaderSidePanelCell.swift diff --git a/FolioReaderKit/CoreDataManager.swift b/Source/Models/CoreDataManager.swift similarity index 100% rename from FolioReaderKit/CoreDataManager.swift rename to Source/Models/CoreDataManager.swift diff --git a/FolioReaderKit/FolioReader.xcdatamodeld/FolioReader.xcdatamodel/contents b/Source/Models/FolioReader.xcdatamodeld/FolioReader.xcdatamodel/contents similarity index 100% rename from FolioReaderKit/FolioReader.xcdatamodeld/FolioReader.xcdatamodel/contents rename to Source/Models/FolioReader.xcdatamodeld/FolioReader.xcdatamodel/contents diff --git a/FolioReaderKit/Highlight.swift b/Source/Models/Highlight.swift similarity index 100% rename from FolioReaderKit/Highlight.swift rename to Source/Models/Highlight.swift diff --git a/FolioReaderKit/Resources/Bridge.js b/Source/Resources/Bridge.js similarity index 100% rename from FolioReaderKit/Resources/Bridge.js rename to Source/Resources/Bridge.js diff --git a/FolioReaderKit/Resources/Fonts/Andada/Andada-Bold.otf b/Source/Resources/Fonts/Andada/Andada-Bold.otf similarity index 100% rename from FolioReaderKit/Resources/Fonts/Andada/Andada-Bold.otf rename to Source/Resources/Fonts/Andada/Andada-Bold.otf diff --git a/FolioReaderKit/Resources/Fonts/Andada/Andada-BoldItalic.otf b/Source/Resources/Fonts/Andada/Andada-BoldItalic.otf similarity index 100% rename from FolioReaderKit/Resources/Fonts/Andada/Andada-BoldItalic.otf rename to Source/Resources/Fonts/Andada/Andada-BoldItalic.otf diff --git a/FolioReaderKit/Resources/Fonts/Andada/Andada-Italic.otf b/Source/Resources/Fonts/Andada/Andada-Italic.otf similarity index 100% rename from FolioReaderKit/Resources/Fonts/Andada/Andada-Italic.otf rename to Source/Resources/Fonts/Andada/Andada-Italic.otf diff --git a/FolioReaderKit/Resources/Fonts/Andada/Andada-Regular.otf b/Source/Resources/Fonts/Andada/Andada-Regular.otf similarity index 100% rename from FolioReaderKit/Resources/Fonts/Andada/Andada-Regular.otf rename to Source/Resources/Fonts/Andada/Andada-Regular.otf diff --git a/FolioReaderKit/Resources/Fonts/Lato/Lato-Bold.ttf b/Source/Resources/Fonts/Lato/Lato-Bold.ttf similarity index 100% rename from FolioReaderKit/Resources/Fonts/Lato/Lato-Bold.ttf rename to Source/Resources/Fonts/Lato/Lato-Bold.ttf diff --git a/FolioReaderKit/Resources/Fonts/Lato/Lato-BoldItalic.ttf b/Source/Resources/Fonts/Lato/Lato-BoldItalic.ttf similarity index 100% rename from FolioReaderKit/Resources/Fonts/Lato/Lato-BoldItalic.ttf rename to Source/Resources/Fonts/Lato/Lato-BoldItalic.ttf diff --git a/FolioReaderKit/Resources/Fonts/Lato/Lato-Italic.ttf b/Source/Resources/Fonts/Lato/Lato-Italic.ttf similarity index 100% rename from FolioReaderKit/Resources/Fonts/Lato/Lato-Italic.ttf rename to Source/Resources/Fonts/Lato/Lato-Italic.ttf diff --git a/FolioReaderKit/Resources/Fonts/Lato/Lato-Regular.ttf b/Source/Resources/Fonts/Lato/Lato-Regular.ttf similarity index 100% rename from FolioReaderKit/Resources/Fonts/Lato/Lato-Regular.ttf rename to Source/Resources/Fonts/Lato/Lato-Regular.ttf diff --git a/FolioReaderKit/Resources/Fonts/Lora/Lora-Bold.ttf b/Source/Resources/Fonts/Lora/Lora-Bold.ttf similarity index 100% rename from FolioReaderKit/Resources/Fonts/Lora/Lora-Bold.ttf rename to Source/Resources/Fonts/Lora/Lora-Bold.ttf diff --git a/FolioReaderKit/Resources/Fonts/Lora/Lora-BoldItalic.ttf b/Source/Resources/Fonts/Lora/Lora-BoldItalic.ttf similarity index 100% rename from FolioReaderKit/Resources/Fonts/Lora/Lora-BoldItalic.ttf rename to Source/Resources/Fonts/Lora/Lora-BoldItalic.ttf diff --git a/FolioReaderKit/Resources/Fonts/Lora/Lora-Italic.ttf b/Source/Resources/Fonts/Lora/Lora-Italic.ttf similarity index 100% rename from FolioReaderKit/Resources/Fonts/Lora/Lora-Italic.ttf rename to Source/Resources/Fonts/Lora/Lora-Italic.ttf diff --git a/FolioReaderKit/Resources/Fonts/Lora/Lora-Regular.ttf b/Source/Resources/Fonts/Lora/Lora-Regular.ttf similarity index 100% rename from FolioReaderKit/Resources/Fonts/Lora/Lora-Regular.ttf rename to Source/Resources/Fonts/Lora/Lora-Regular.ttf diff --git a/FolioReaderKit/Resources/Fonts/Raleway/Raleway-Bold.ttf b/Source/Resources/Fonts/Raleway/Raleway-Bold.ttf similarity index 100% rename from FolioReaderKit/Resources/Fonts/Raleway/Raleway-Bold.ttf rename to Source/Resources/Fonts/Raleway/Raleway-Bold.ttf diff --git a/FolioReaderKit/Resources/Fonts/Raleway/Raleway-BoldItalic.ttf b/Source/Resources/Fonts/Raleway/Raleway-BoldItalic.ttf similarity index 100% rename from FolioReaderKit/Resources/Fonts/Raleway/Raleway-BoldItalic.ttf rename to Source/Resources/Fonts/Raleway/Raleway-BoldItalic.ttf diff --git a/FolioReaderKit/Resources/Fonts/Raleway/Raleway-Italic.ttf b/Source/Resources/Fonts/Raleway/Raleway-Italic.ttf similarity index 100% rename from FolioReaderKit/Resources/Fonts/Raleway/Raleway-Italic.ttf rename to Source/Resources/Fonts/Raleway/Raleway-Italic.ttf diff --git a/FolioReaderKit/Resources/Fonts/Raleway/Raleway-Regular.ttf b/Source/Resources/Fonts/Raleway/Raleway-Regular.ttf similarity index 100% rename from FolioReaderKit/Resources/Fonts/Raleway/Raleway-Regular.ttf rename to Source/Resources/Fonts/Raleway/Raleway-Regular.ttf diff --git a/FolioReaderKit/Resources/Images/blue-marker.png b/Source/Resources/Images/blue-marker.png similarity index 100% rename from FolioReaderKit/Resources/Images/blue-marker.png rename to Source/Resources/Images/blue-marker.png diff --git a/FolioReaderKit/Resources/Images/blue-marker@2x.png b/Source/Resources/Images/blue-marker@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/blue-marker@2x.png rename to Source/Resources/Images/blue-marker@2x.png diff --git a/FolioReaderKit/Resources/Images/btn-navbar-menu.png b/Source/Resources/Images/btn-navbar-menu.png similarity index 100% rename from FolioReaderKit/Resources/Images/btn-navbar-menu.png rename to Source/Resources/Images/btn-navbar-menu.png diff --git a/FolioReaderKit/Resources/Images/btn-navbar-menu@2x.png b/Source/Resources/Images/btn-navbar-menu@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/btn-navbar-menu@2x.png rename to Source/Resources/Images/btn-navbar-menu@2x.png diff --git a/FolioReaderKit/Resources/Images/btn-navbar-menu@3x.png b/Source/Resources/Images/btn-navbar-menu@3x.png similarity index 100% rename from FolioReaderKit/Resources/Images/btn-navbar-menu@3x.png rename to Source/Resources/Images/btn-navbar-menu@3x.png diff --git a/FolioReaderKit/Resources/Images/btn-navbar-share.png b/Source/Resources/Images/btn-navbar-share.png similarity index 100% rename from FolioReaderKit/Resources/Images/btn-navbar-share.png rename to Source/Resources/Images/btn-navbar-share.png diff --git a/FolioReaderKit/Resources/Images/btn-navbar-share@2x.png b/Source/Resources/Images/btn-navbar-share@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/btn-navbar-share@2x.png rename to Source/Resources/Images/btn-navbar-share@2x.png diff --git a/FolioReaderKit/Resources/Images/btn-navbar-share@3x.png b/Source/Resources/Images/btn-navbar-share@3x.png similarity index 100% rename from FolioReaderKit/Resources/Images/btn-navbar-share@3x.png rename to Source/Resources/Images/btn-navbar-share@3x.png diff --git a/FolioReaderKit/Resources/Images/colors-marker.png b/Source/Resources/Images/colors-marker.png similarity index 100% rename from FolioReaderKit/Resources/Images/colors-marker.png rename to Source/Resources/Images/colors-marker.png diff --git a/FolioReaderKit/Resources/Images/colors-marker@2x.png b/Source/Resources/Images/colors-marker@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/colors-marker@2x.png rename to Source/Resources/Images/colors-marker@2x.png diff --git a/FolioReaderKit/Resources/Images/colors-marker@3x.png b/Source/Resources/Images/colors-marker@3x.png similarity index 100% rename from FolioReaderKit/Resources/Images/colors-marker@3x.png rename to Source/Resources/Images/colors-marker@3x.png diff --git a/FolioReaderKit/Resources/Images/green-marker.png b/Source/Resources/Images/green-marker.png similarity index 100% rename from FolioReaderKit/Resources/Images/green-marker.png rename to Source/Resources/Images/green-marker.png diff --git a/FolioReaderKit/Resources/Images/green-marker@2x.png b/Source/Resources/Images/green-marker@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/green-marker@2x.png rename to Source/Resources/Images/green-marker@2x.png diff --git a/FolioReaderKit/Resources/Images/icon-close.png b/Source/Resources/Images/icon-close.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-close.png rename to Source/Resources/Images/icon-close.png diff --git a/FolioReaderKit/Resources/Images/icon-close@2x.png b/Source/Resources/Images/icon-close@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-close@2x.png rename to Source/Resources/Images/icon-close@2x.png diff --git a/FolioReaderKit/Resources/Images/icon-close@3x.png b/Source/Resources/Images/icon-close@3x.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-close@3x.png rename to Source/Resources/Images/icon-close@3x.png diff --git a/FolioReaderKit/Resources/Images/icon-font-big.png b/Source/Resources/Images/icon-font-big.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-font-big.png rename to Source/Resources/Images/icon-font-big.png diff --git a/FolioReaderKit/Resources/Images/icon-font-big@2x.png b/Source/Resources/Images/icon-font-big@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-font-big@2x.png rename to Source/Resources/Images/icon-font-big@2x.png diff --git a/FolioReaderKit/Resources/Images/icon-font-big@3x.png b/Source/Resources/Images/icon-font-big@3x.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-font-big@3x.png rename to Source/Resources/Images/icon-font-big@3x.png diff --git a/FolioReaderKit/Resources/Images/icon-font-small.png b/Source/Resources/Images/icon-font-small.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-font-small.png rename to Source/Resources/Images/icon-font-small.png diff --git a/FolioReaderKit/Resources/Images/icon-font-small@2x.png b/Source/Resources/Images/icon-font-small@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-font-small@2x.png rename to Source/Resources/Images/icon-font-small@2x.png diff --git a/FolioReaderKit/Resources/Images/icon-font-small@3x.png b/Source/Resources/Images/icon-font-small@3x.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-font-small@3x.png rename to Source/Resources/Images/icon-font-small@3x.png diff --git a/FolioReaderKit/Resources/Images/icon-font.png b/Source/Resources/Images/icon-font.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-font.png rename to Source/Resources/Images/icon-font.png diff --git a/FolioReaderKit/Resources/Images/icon-font@2x.png b/Source/Resources/Images/icon-font@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-font@2x.png rename to Source/Resources/Images/icon-font@2x.png diff --git a/FolioReaderKit/Resources/Images/icon-font@3x.png b/Source/Resources/Images/icon-font@3x.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-font@3x.png rename to Source/Resources/Images/icon-font@3x.png diff --git a/FolioReaderKit/Resources/Images/icon-highlight.png b/Source/Resources/Images/icon-highlight.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-highlight.png rename to Source/Resources/Images/icon-highlight.png diff --git a/FolioReaderKit/Resources/Images/icon-highlight@2x.png b/Source/Resources/Images/icon-highlight@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-highlight@2x.png rename to Source/Resources/Images/icon-highlight@2x.png diff --git a/FolioReaderKit/Resources/Images/icon-highlight@3x.png b/Source/Resources/Images/icon-highlight@3x.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-highlight@3x.png rename to Source/Resources/Images/icon-highlight@3x.png diff --git a/FolioReaderKit/Resources/Images/icon-moon.png b/Source/Resources/Images/icon-moon.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-moon.png rename to Source/Resources/Images/icon-moon.png diff --git a/FolioReaderKit/Resources/Images/icon-moon@2x.png b/Source/Resources/Images/icon-moon@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-moon@2x.png rename to Source/Resources/Images/icon-moon@2x.png diff --git a/FolioReaderKit/Resources/Images/icon-moon@3x.png b/Source/Resources/Images/icon-moon@3x.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-moon@3x.png rename to Source/Resources/Images/icon-moon@3x.png diff --git a/FolioReaderKit/Resources/Images/icon-search.png b/Source/Resources/Images/icon-search.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-search.png rename to Source/Resources/Images/icon-search.png diff --git a/FolioReaderKit/Resources/Images/icon-search@2x.png b/Source/Resources/Images/icon-search@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-search@2x.png rename to Source/Resources/Images/icon-search@2x.png diff --git a/FolioReaderKit/Resources/Images/icon-search@3x.png b/Source/Resources/Images/icon-search@3x.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-search@3x.png rename to Source/Resources/Images/icon-search@3x.png diff --git a/FolioReaderKit/Resources/Images/icon-sun.png b/Source/Resources/Images/icon-sun.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-sun.png rename to Source/Resources/Images/icon-sun.png diff --git a/FolioReaderKit/Resources/Images/icon-sun@2x.png b/Source/Resources/Images/icon-sun@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-sun@2x.png rename to Source/Resources/Images/icon-sun@2x.png diff --git a/FolioReaderKit/Resources/Images/icon-sun@3x.png b/Source/Resources/Images/icon-sun@3x.png similarity index 100% rename from FolioReaderKit/Resources/Images/icon-sun@3x.png rename to Source/Resources/Images/icon-sun@3x.png diff --git a/FolioReaderKit/Resources/Images/no-marker.png b/Source/Resources/Images/no-marker.png similarity index 100% rename from FolioReaderKit/Resources/Images/no-marker.png rename to Source/Resources/Images/no-marker.png diff --git a/FolioReaderKit/Resources/Images/no-marker@2x.png b/Source/Resources/Images/no-marker@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/no-marker@2x.png rename to Source/Resources/Images/no-marker@2x.png diff --git a/FolioReaderKit/Resources/Images/no-marker@3x.png b/Source/Resources/Images/no-marker@3x.png similarity index 100% rename from FolioReaderKit/Resources/Images/no-marker@3x.png rename to Source/Resources/Images/no-marker@3x.png diff --git a/FolioReaderKit/Resources/Images/pink-marker.png b/Source/Resources/Images/pink-marker.png similarity index 100% rename from FolioReaderKit/Resources/Images/pink-marker.png rename to Source/Resources/Images/pink-marker.png diff --git a/FolioReaderKit/Resources/Images/pink-marker@2x.png b/Source/Resources/Images/pink-marker@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/pink-marker@2x.png rename to Source/Resources/Images/pink-marker@2x.png diff --git a/FolioReaderKit/Resources/Images/share-marker.png b/Source/Resources/Images/share-marker.png similarity index 100% rename from FolioReaderKit/Resources/Images/share-marker.png rename to Source/Resources/Images/share-marker.png diff --git a/FolioReaderKit/Resources/Images/share-marker@2x.png b/Source/Resources/Images/share-marker@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/share-marker@2x.png rename to Source/Resources/Images/share-marker@2x.png diff --git a/FolioReaderKit/Resources/Images/share-marker@3x.png b/Source/Resources/Images/share-marker@3x.png similarity index 100% rename from FolioReaderKit/Resources/Images/share-marker@3x.png rename to Source/Resources/Images/share-marker@3x.png diff --git a/FolioReaderKit/Resources/Images/underline-marker.png b/Source/Resources/Images/underline-marker.png similarity index 100% rename from FolioReaderKit/Resources/Images/underline-marker.png rename to Source/Resources/Images/underline-marker.png diff --git a/FolioReaderKit/Resources/Images/underline-marker@2x.png b/Source/Resources/Images/underline-marker@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/underline-marker@2x.png rename to Source/Resources/Images/underline-marker@2x.png diff --git a/FolioReaderKit/Resources/Images/yellow-marker.png b/Source/Resources/Images/yellow-marker.png similarity index 100% rename from FolioReaderKit/Resources/Images/yellow-marker.png rename to Source/Resources/Images/yellow-marker.png diff --git a/FolioReaderKit/Resources/Images/yellow-marker@2x.png b/Source/Resources/Images/yellow-marker@2x.png similarity index 100% rename from FolioReaderKit/Resources/Images/yellow-marker@2x.png rename to Source/Resources/Images/yellow-marker@2x.png diff --git a/FolioReaderKit/Resources/style.css b/Source/Resources/Style.css similarity index 100% rename from FolioReaderKit/Resources/style.css rename to Source/Resources/Style.css diff --git a/FolioReaderKit/Vendor/SMSegmentView/SMSegment.swift b/Source/Vendor/SMSegmentView/SMSegment.swift similarity index 100% rename from FolioReaderKit/Vendor/SMSegmentView/SMSegment.swift rename to Source/Vendor/SMSegmentView/SMSegment.swift diff --git a/FolioReaderKit/Vendor/SMSegmentView/SMSegmentView.swift b/Source/Vendor/SMSegmentView/SMSegmentView.swift similarity index 100% rename from FolioReaderKit/Vendor/SMSegmentView/SMSegmentView.swift rename to Source/Vendor/SMSegmentView/SMSegmentView.swift diff --git a/FolioReaderKit/Vendor/TGPControls/TGPCamelLabels.h b/Source/Vendor/TGPControls/TGPCamelLabels.h old mode 100644 new mode 100755 similarity index 100% rename from FolioReaderKit/Vendor/TGPControls/TGPCamelLabels.h rename to Source/Vendor/TGPControls/TGPCamelLabels.h diff --git a/FolioReaderKit/Vendor/TGPControls/TGPCamelLabels.m b/Source/Vendor/TGPControls/TGPCamelLabels.m old mode 100644 new mode 100755 similarity index 100% rename from FolioReaderKit/Vendor/TGPControls/TGPCamelLabels.m rename to Source/Vendor/TGPControls/TGPCamelLabels.m diff --git a/FolioReaderKit/Vendor/TGPControls/TGPCamelLabels7.h b/Source/Vendor/TGPControls/TGPCamelLabels7.h old mode 100644 new mode 100755 similarity index 100% rename from FolioReaderKit/Vendor/TGPControls/TGPCamelLabels7.h rename to Source/Vendor/TGPControls/TGPCamelLabels7.h diff --git a/FolioReaderKit/Vendor/TGPControls/TGPCamelLabels7.m b/Source/Vendor/TGPControls/TGPCamelLabels7.m old mode 100644 new mode 100755 similarity index 100% rename from FolioReaderKit/Vendor/TGPControls/TGPCamelLabels7.m rename to Source/Vendor/TGPControls/TGPCamelLabels7.m diff --git a/FolioReaderKit/Vendor/TGPControls/TGPControlsTicksProtocol.h b/Source/Vendor/TGPControls/TGPControlsTicksProtocol.h old mode 100644 new mode 100755 similarity index 100% rename from FolioReaderKit/Vendor/TGPControls/TGPControlsTicksProtocol.h rename to Source/Vendor/TGPControls/TGPControlsTicksProtocol.h diff --git a/FolioReaderKit/Vendor/TGPControls/TGPDiscreteSlider.h b/Source/Vendor/TGPControls/TGPDiscreteSlider.h old mode 100644 new mode 100755 similarity index 100% rename from FolioReaderKit/Vendor/TGPControls/TGPDiscreteSlider.h rename to Source/Vendor/TGPControls/TGPDiscreteSlider.h diff --git a/FolioReaderKit/Vendor/TGPControls/TGPDiscreteSlider.m b/Source/Vendor/TGPControls/TGPDiscreteSlider.m old mode 100644 new mode 100755 similarity index 100% rename from FolioReaderKit/Vendor/TGPControls/TGPDiscreteSlider.m rename to Source/Vendor/TGPControls/TGPDiscreteSlider.m diff --git a/FolioReaderKit/Vendor/TGPControls/TGPDiscreteSlider7.h b/Source/Vendor/TGPControls/TGPDiscreteSlider7.h old mode 100644 new mode 100755 similarity index 100% rename from FolioReaderKit/Vendor/TGPControls/TGPDiscreteSlider7.h rename to Source/Vendor/TGPControls/TGPDiscreteSlider7.h diff --git a/FolioReaderKit/Vendor/TGPControls/TGPDiscreteSlider7.m b/Source/Vendor/TGPControls/TGPDiscreteSlider7.m old mode 100644 new mode 100755 similarity index 100% rename from FolioReaderKit/Vendor/TGPControls/TGPDiscreteSlider7.m rename to Source/Vendor/TGPControls/TGPDiscreteSlider7.m diff --git a/Source/Vendor/TGPControls/module.map b/Source/Vendor/TGPControls/module.map new file mode 100755 index 000000000..b11500012 --- /dev/null +++ b/Source/Vendor/TGPControls/module.map @@ -0,0 +1,4 @@ +module TGPControls { + header "TGPDiscreteSlider7.h" + export * +} \ No newline at end of file