module unix #include // Select represents a select operation enum Select { read write except } // SocketType are the available sockets // enum SocketType { // dgram = C.SOCK_DGRAM // stream = C.SOCK_STREAM // seqpacket = C.SOCK_SEQPACKET // } struct C.sockaddr { sa_family u16 } const max_sun_path = 104 // 104 for macos, 108 for linux => use the minimum struct C.sockaddr_un { mut: // sun_len byte // only on macos sun_family int sun_path [104]char // on linux that is 108 } struct C.addrinfo { mut: ai_family int ai_socktype int ai_flags int ai_protocol int ai_addrlen int ai_addr voidptr ai_canonname voidptr ai_next voidptr } struct C.sockaddr_storage { } // fn C.socket() int // fn C.setsockopt() int // fn C.htonl() int // fn C.htons() int // fn C.bind() int // fn C.listen() int // fn C.accept() int // fn C.getaddrinfo() int // fn C.connect() int // fn C.send() int // fn C.sendto() int // fn C.recv() int // fn C.recvfrom() int // fn C.shutdown() int // fn C.ntohs() int // fn C.getpeername() int // fn C.inet_ntop(af int, src voidptr, dst charptr, dst_size int) charptr fn C.WSAAddressToStringA() int // fn C.getsockname() int // defined in builtin // fn C.read() int // fn C.close() int fn C.ioctlsocket() int // fn C.fcntl() int // fn C.@select() int // fn C.FD_ZERO() // fn C.FD_SET() // fn C.FD_ISSET() bool [typedef] struct C.fd_set {}