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.
This commit is contained in:
Timofey Solomko
2017-07-16 00:13:54 +03:00
parent 070af415f6
commit 61c3db34cc
+11 -2
View File
@@ -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)