Improve error handling and messages when writing and reading to/from filehandles.

And use NSStringEncoding as type for encoding.
This commit is contained in:
Kare Morstol
2015-09-14 19:48:07 +02:00
parent d49bd67109
commit 04a1e03e7a
2 changed files with 10 additions and 7 deletions
+1 -1
View File
@@ -8,7 +8,7 @@
import Foundation
public protocol ShellContextType {
var encoding: UInt {get set}
var encoding: NSStringEncoding {get set}
var env: [String: String] {get set}
var stdin: NSFileHandle {get set}
+9 -6
View File
@@ -9,22 +9,22 @@ import Foundation
extension NSFileHandle {
public func readSome (encoding encoding: UInt = main.encoding) -> String? {
public func readSome (encoding encoding: NSStringEncoding = main.encoding) -> String? {
let data: NSData = self.availableData
guard data.length > 0 else { return nil }
guard let result = NSString(data: data, encoding: encoding) else {
exit(errormessage: "Fatal error - could not convert stream to text.")
exit(errormessage: "Could not convert binary data to text.")
}
return result as String
}
public func read (encoding encoding: UInt = main.encoding) -> String {
public func read (encoding encoding: NSStringEncoding = main.encoding) -> String {
let data: NSData = self.readDataToEndOfFile()
guard let result = NSString(data: data, encoding: encoding) else {
exit(errormessage: "Fatal error - could not convert stream to text.")
exit(errormessage: "Could not convert binary data to text.")
}
return result as String
@@ -33,8 +33,11 @@ extension NSFileHandle {
extension NSFileHandle {
public func write <T> (x: T, encoding: UInt = main.encoding) {
writeData(String(x).dataUsingEncoding(encoding, allowLossyConversion:false)!)
public func write <T> (x: T, encoding: NSStringEncoding = main.encoding) {
guard let data = String(x).dataUsingEncoding(encoding, allowLossyConversion:false) else {
exit(errormessage: "Could not convert text to binary data.")
}
self.writeData(data)
}
public func writeln <T> (x: T, encoding: UInt = main.encoding) {