sub getsockopt_darwin_gen { return &CORE::getsockopt if(@_ < 4); my $optlen = pop; my $optval = "\0" x $optlen; $optlen=pack('i',$optlen); my $rv=syscall(DARWIN_SYS_getsockopt,fileno($_[0]),$_[1],$_[2],$optval,$optlen); return $rv < 0 ? undef : substr($optval,0,unpack('i',$optlen)); }