diff --git a/Sources/Packages/Sources/SecretAgentKit/SocketController.swift b/Sources/Packages/Sources/SecretAgentKit/SocketController.swift index 0649a38..cff1e03 100644 --- a/Sources/Packages/Sources/SecretAgentKit/SocketController.swift +++ b/Sources/Packages/Sources/SecretAgentKit/SocketController.swift @@ -149,14 +149,7 @@ private extension SocketPort { convenience init(path: String) { var addr = sockaddr_un() - - let length = unsafe withUnsafeMutablePointer(to: &addr.sun_path.0) { pointer in - unsafe path.withCString { cstring in - let len = unsafe strlen(cstring) - unsafe strncpy(pointer, cstring, len) - return len - } - } + let length = addr.setPath(path) // This doesn't seem to be _strictly_ neccessary with SocketPort. // but just for good form. addr.sun_family = sa_family_t(AF_UNIX) @@ -169,6 +162,30 @@ private extension SocketPort { } +private extension sockaddr_un { + + mutating func setPath(_ path: String) -> Int { +#if compiler(<6.4) + unsafe withUnsafeMutablePointer(to: &addr.sun_path.0) { pointer in + unsafe path.withCString { cstring in + let len = unsafe strlen(cstring) + unsafe strncpy(pointer, cstring, len) + return len + } + } +#else + withUnsafeMutablePointer(to: &self.sun_path.0) { pointer in + path.withCString { cstring in + let len = unsafe strlen(cstring) + unsafe strncpy(pointer, cstring, len) + return len + } + } +#endif + } + +} + // Changes the header from `UnsafeMutablePointer?>?` -> `UnsafeMutablePointer?>!` @_silgen_name("launch_activate_socket") func launch_activate_socket(_ name: UnsafePointer, _ fds: UnsafeMutablePointer?>!, _ cnt: UnsafeMutablePointer!) -> Int32