From 76baba746cc20d0e25d03afae28d78fc2fb3c766 Mon Sep 17 00:00:00 2001 From: Max Goedjen Date: Fri, 19 Jun 2026 22:39:20 -0700 Subject: [PATCH] Fix compiler diff for unsafe --- .../SecretAgentKit/SocketController.swift | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) 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