From a79a73f8bf9a68a2fdfc8b7648d3ac4a0536f95c Mon Sep 17 00:00:00 2001 From: Mackenzie Clark <mackenzie.a.z.c@gmail.com> Date: Sat, 22 Dec 2018 23:37:53 -0800 Subject: [PATCH] add some socket functions and a SOCKET type --- src/windows/mod.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/windows/mod.rs b/src/windows/mod.rs index e4db343e..7101a509 100644 --- a/src/windows/mod.rs +++ b/src/windows/mod.rs @@ -50,6 +50,8 @@ pub type ino_t = u16; pub enum timezone {} pub type time64_t = i64; +pub type SOCKET = uintptr_t; + s! { // note this is the struct called stat64 in Windows. Not stat, nor stati64. pub struct stat { @@ -93,6 +95,11 @@ s! { pub tv_sec: time_t, pub tv_nsec: c_long, } + + pub struct sockaddr { + pub sa_family: c_ushort, + pub sa_data: [c_char; 14], + } } pub const INT_MIN: c_int = -2147483648; @@ -301,6 +308,19 @@ extern { pub fn signal(signum: c_int, handler: sighandler_t) -> sighandler_t; pub fn raise(signum: c_int) -> c_int; + // winsock functions + pub fn listen(s: SOCKET, backlog: c_int) -> c_int; + pub fn accept(s: SOCKET, addr: *mut sockaddr, addrlen: *mut c_int) -> SOCKET; + pub fn bind(s: SOCKET, name: *mut sockaddr, namelen: c_int) -> c_int; + pub fn connect(s: SOCKET, name: *mut sockaddr, namelen: c_int) -> c_int; + pub fn getpeername(s: SOCKET, name: *mut sockaddr, nameln: *mut c_int) -> c_int; + pub fn getsockname(s: SOCKET, name: *mut sockaddr, nameln: *mut c_int) -> c_int; + pub fn getsockopt(s: SOCKET, level: c_int, optname: c_int, optval: *mut c_char, optlen: *mut c_int) -> c_int; + pub fn recvfrom(s: SOCKET, buf: *mut c_char, len: c_int, flags: c_int, from: *mut sockaddr, fromlen: *mut c_int) -> c_int; + pub fn sendto(s: SOCKET, buf: *mut c_char, len: c_int, flags: c_int, to: *mut sockaddr, tolen: c_int) -> c_int; + pub fn setsockopt(s: SOCKET, level: c_int, optname: c_int, optval: *mut c_char, optlen: c_int) -> c_int; + pub fn socket(af: c_int, socket_type: c_int, protocol: c_int) -> SOCKET; + #[link_name = "_chmod"] pub fn chmod(path: *const c_char, mode: ::c_int) -> ::c_int; #[link_name = "_wchmod"] -- GitLab