mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
31 lines
809 B
Ruby
31 lines
809 B
Ruby
![]() |
# typed: strict
|
||
|
# frozen_string_literal: true
|
||
|
|
||
|
require "socket"
|
||
|
|
||
|
module OS
|
||
|
module Mac
|
||
|
# Wrapper around UNIXSocket to allow > 104 characters on macOS.
|
||
|
module UNIXSocketExt
|
||
|
extend T::Helpers
|
||
|
|
||
|
requires_ancestor { Kernel }
|
||
|
|
||
|
sig { params(path: String).returns(String) }
|
||
|
def sockaddr_un(path)
|
||
|
if path.bytesize > 252 # largest size that can fit into a single-byte length
|
||
|
raise ArgumentError, "too long unix socket path (#{path.bytesize} bytes given but 252 bytes max)"
|
||
|
end
|
||
|
|
||
|
[
|
||
|
path.bytesize + 3, # = length (1 byte) + family (1 byte) + path (variable) + null terminator (1 byte)
|
||
|
1, # AF_UNIX
|
||
|
path,
|
||
|
].pack("CCZ*")
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
Utils::UNIXSocketExt.singleton_class.prepend(OS::Mac::UNIXSocketExt)
|