Skip to content

Commit a79a73f

Browse files
committed
add some socket functions and a SOCKET type
1 parent c1ae35d commit a79a73f

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

src/windows/mod.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ pub type ino_t = u16;
5050
pub enum timezone {}
5151
pub type time64_t = i64;
5252

53+
pub type SOCKET = uintptr_t;
54+
5355
s! {
5456
// note this is the struct called stat64 in Windows. Not stat, nor stati64.
5557
pub struct stat {
@@ -93,6 +95,11 @@ s! {
9395
pub tv_sec: time_t,
9496
pub tv_nsec: c_long,
9597
}
98+
99+
pub struct sockaddr {
100+
pub sa_family: c_ushort,
101+
pub sa_data: [c_char; 14],
102+
}
96103
}
97104

98105
pub const INT_MIN: c_int = -2147483648;
@@ -301,6 +308,19 @@ extern {
301308
pub fn signal(signum: c_int, handler: sighandler_t) -> sighandler_t;
302309
pub fn raise(signum: c_int) -> c_int;
303310

311+
// winsock functions
312+
pub fn listen(s: SOCKET, backlog: c_int) -> c_int;
313+
pub fn accept(s: SOCKET, addr: *mut sockaddr, addrlen: *mut c_int) -> SOCKET;
314+
pub fn bind(s: SOCKET, name: *mut sockaddr, namelen: c_int) -> c_int;
315+
pub fn connect(s: SOCKET, name: *mut sockaddr, namelen: c_int) -> c_int;
316+
pub fn getpeername(s: SOCKET, name: *mut sockaddr, nameln: *mut c_int) -> c_int;
317+
pub fn getsockname(s: SOCKET, name: *mut sockaddr, nameln: *mut c_int) -> c_int;
318+
pub fn getsockopt(s: SOCKET, level: c_int, optname: c_int, optval: *mut c_char, optlen: *mut c_int) -> c_int;
319+
pub fn recvfrom(s: SOCKET, buf: *mut c_char, len: c_int, flags: c_int, from: *mut sockaddr, fromlen: *mut c_int) -> c_int;
320+
pub fn sendto(s: SOCKET, buf: *mut c_char, len: c_int, flags: c_int, to: *mut sockaddr, tolen: c_int) -> c_int;
321+
pub fn setsockopt(s: SOCKET, level: c_int, optname: c_int, optval: *mut c_char, optlen: c_int) -> c_int;
322+
pub fn socket(af: c_int, socket_type: c_int, protocol: c_int) -> SOCKET;
323+
304324
#[link_name = "_chmod"]
305325
pub fn chmod(path: *const c_char, mode: ::c_int) -> ::c_int;
306326
#[link_name = "_wchmod"]

0 commit comments

Comments
 (0)