shithub: mc

Download patch

ref: 552823815f7c52c16111045b638ba8bab322e7ac
parent: 690ab7aa8e6c56a4ae8a2bd5bce58d1df681234e
author: Ori Bernstein <[email protected]>
date: Mon May 11 15:12:20 EDT 2020

add OSX recvfrom, fix UDP announce (thanks Int21h)

system call to libsys for OS X and also made a minor
edit to announcesock so it would work with UDP.

--- a/lib/std/listen+posixy.myr
+++ b/lib/std/listen+posixy.myr
@@ -91,8 +91,10 @@
 	if sys.bind(sock, sa, sz) < 0
 		-> `Err "failed to bind socket"
 	;;
-	if sys.listen((sock : sys.fd), 10) < 0
-		-> `Err "unable to listen on socket"
+	if proto == sys.Sockstream
+		if sys.listen((sock : sys.fd), 10) < 0
+			-> `Err "unable to listen on socket"
+		;;
 	;;
 	-> `Ok mk([.lfd=(sock : fd)])
 }
--- a/lib/sys/sys+osx-x64.myr
+++ b/lib/sys/sys+osx-x64.myr
@@ -813,6 +813,7 @@
 	const bind	: (sock : fd, addr : sockaddr#, len : size -> int)
 	const setsockopt	: (sock : fd, lev : sockproto, opt : sockopt, val : void#, len : size -> int)
 	const getsockopt	: (sock : fd, lev : sockproto, opt : sockopt, val : void#, len : size# -> int)
+	const recvfrom	: (sock : fd, buf : byte[:], flags : int, addr : sockaddr#, addr_len : size# -> int)
 
 	/* memory mapping */
 	const munmap	: (addr:byte#, len:size -> int64)
@@ -1005,6 +1006,7 @@
 const bind	= {sock, addr, len;	-> (syscall(Sysbind, a(sock), a(addr), a(len)) : int)}
 const setsockopt	= {sock, lev, opt, val, len;	-> (syscall(Syssetsockopt, a(sock), a(lev), a(opt), a(val), a(len)) : int)}
 const getsockopt	= {sock, lev, opt, val, len;	-> (syscall(Syssetsockopt, a(sock), a(lev), a(opt), a(val), a(len)) : int)}
+const recvfrom	= {sock, buf, flags, addr, addr_len;	-> (syscall(Sysrecvfrom, a(sock), (buf : byte#), a(buf.len), a(flags), a(addr), a(addr_len)) : int)}
 
 /* memory management */
 const munmap	= {addr, len;		-> syscall(Sysmunmap, a(addr), a(len))}