From 61c3db34cc42e8d3b4cc00abb2f5209aa3ab3523 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sun, 16 Jul 2017 00:11:58 +0300 Subject: [PATCH] Fix linux compatibility issues in Zip Swift on Linux requires explicitly include CoreFoundation; there are some problems with CFStringEncodings enum and you have to use raw constants; CFStringEncoding is different type than raw constant of encoding number. --- Sources/ZipCommon.swift | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Sources/ZipCommon.swift b/Sources/ZipCommon.swift index 2fea4240..8c3b8c40 100644 --- a/Sources/ZipCommon.swift +++ b/Sources/ZipCommon.swift @@ -5,10 +5,19 @@ import Foundation +#if os(Linux) + import CoreFoundation +#endif + class ZipCommon { - static let cp437Encoding = CFStringEncoding(CFStringEncodings.dosLatinUS.rawValue) - static let cp437Available = CFStringIsEncodingAvailable(cp437Encoding) + #if os(Linux) + static let cp437Encoding: CFStringEncoding = UInt32(truncatingBitPattern: UInt(kCFStringEncodingDOSLatinUS)) + static let cp437Available: Bool = CFStringIsEncodingAvailable(cp437Encoding) + #else + static let cp437Encoding = CFStringEncoding(CFStringEncodings.dosLatinUS.rawValue) + static let cp437Available = CFStringIsEncodingAvailable(cp437Encoding) + #endif static func getStringField(_ pointerData: DataWithPointer, _ length: Int, _ useUtf8: Bool) -> String? { let bytes = pointerData.bytes(count: length)