File tree 1 file changed +12
-3
lines changed
1 file changed +12
-3
lines changed Original file line number Diff line number Diff line change @@ -14,10 +14,17 @@ actor TunnelHandle {
14
14
var readFD : Int32 { tunnelWritePipe. fileHandleForReading. fileDescriptor }
15
15
16
16
init ( dylibPath: URL ) throws ( TunnelHandleError) {
17
- dylibHandle = dlopen ( dylibPath. path, RTLD_NOW | RTLD_LOCAL)
17
+ guard let dylibHandle = dlopen ( dylibPath. path, RTLD_NOW | RTLD_LOCAL) else {
18
+ var errStr = " UNKNOWN "
19
+ let e = dlerror ( )
20
+ if e != nil {
21
+ errStr = String ( cString: e!)
22
+ }
23
+ throw . dylib( errStr)
24
+ }
25
+ self . dylibHandle = dylibHandle
18
26
19
- let startSym = dlsym ( dylibHandle, startSymbol)
20
- guard startSym != nil else {
27
+ guard let startSym = dlsym ( dylibHandle, startSymbol) else {
21
28
var errStr = " UNKNOWN "
22
29
let e = dlerror ( )
23
30
if e != nil {
@@ -41,11 +48,13 @@ actor TunnelHandle {
41
48
}
42
49
43
50
enum TunnelHandleError : Error {
51
+ case dylib( String )
44
52
case symbol( String , String )
45
53
case openTunnel( OpenTunnelError )
46
54
47
55
var description : String {
48
56
switch self {
57
+ case let . dylib( d) : return d
49
58
case let . symbol( symbol, message) : return " \( symbol) : \( message) "
50
59
case let . openTunnel( error) : return " OpenTunnel: \( error. message) "
51
60
}
You can’t perform that action at this time.
0 commit comments