big rename
This commit is contained in:
parent
fc5153e9b0
commit
dcffbb052a
5 changed files with 158 additions and 146 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Nimrod's Runtime Library
|
# Nim's Runtime Library
|
||||||
# (c) Copyright 2012 Andreas Rumpf
|
# (c) Copyright 2012 Andreas Rumpf
|
||||||
#
|
#
|
||||||
# See the file "copying.txt", included in this
|
# See the file "copying.txt", included in this
|
||||||
|
|
@ -384,12 +384,12 @@ type
|
||||||
sched_ss_max_repl*: cint ## Maximum pending replenishments for
|
sched_ss_max_repl*: cint ## Maximum pending replenishments for
|
||||||
## sporadic server.
|
## sporadic server.
|
||||||
|
|
||||||
Ttimeval* {.importc: "struct timeval", header: "<sys/select.h>",
|
Timeval* {.importc: "struct timeval", header: "<sys/select.h>",
|
||||||
final, pure.} = object ## struct timeval
|
final, pure.} = object ## struct timeval
|
||||||
tv_sec*: int ## Seconds.
|
tv_sec*: int ## Seconds.
|
||||||
tv_usec*: int ## Microseconds.
|
tv_usec*: int ## Microseconds.
|
||||||
TFdSet* {.importc: "fd_set", header: "<sys/select.h>",
|
FdSet* {.importc: "fd_set", header: "<sys/select.h>",
|
||||||
final, pure.} = object
|
final, pure.} = object
|
||||||
Tmcontext* {.importc: "mcontext_t", header: "<ucontext.h>",
|
Tmcontext* {.importc: "mcontext_t", header: "<ucontext.h>",
|
||||||
final, pure.} = object
|
final, pure.} = object
|
||||||
Tucontext* {.importc: "ucontext_t", header: "<ucontext.h>",
|
Tucontext* {.importc: "ucontext_t", header: "<ucontext.h>",
|
||||||
|
|
@ -422,11 +422,11 @@ when hasSpawnH:
|
||||||
header: "<spawn.h>", final, pure.} = object
|
header: "<spawn.h>", final, pure.} = object
|
||||||
|
|
||||||
type
|
type
|
||||||
TSocklen* {.importc: "socklen_t", header: "<sys/socket.h>".} = cuint
|
Socklen* {.importc: "socklen_t", header: "<sys/socket.h>".} = cuint
|
||||||
TSa_Family* {.importc: "sa_family_t", header: "<sys/socket.h>".} = cint
|
TSa_Family* {.importc: "sa_family_t", header: "<sys/socket.h>".} = cint
|
||||||
|
|
||||||
TSockAddr* {.importc: "struct sockaddr", header: "<sys/socket.h>",
|
SockAddr* {.importc: "struct sockaddr", header: "<sys/socket.h>",
|
||||||
pure, final.} = object ## struct sockaddr
|
pure, final.} = object ## struct sockaddr
|
||||||
sa_family*: TSa_Family ## Address family.
|
sa_family*: TSa_Family ## Address family.
|
||||||
sa_data*: array [0..255, char] ## Socket address (variable-length data).
|
sa_data*: array [0..255, char] ## Socket address (variable-length data).
|
||||||
|
|
||||||
|
|
@ -474,15 +474,15 @@ type
|
||||||
TInAddrT* {.importc: "in_addr_t", pure, final,
|
TInAddrT* {.importc: "in_addr_t", pure, final,
|
||||||
header: "<netinet/in.h>".} = int32 ## unsigned!
|
header: "<netinet/in.h>".} = int32 ## unsigned!
|
||||||
|
|
||||||
TInAddr* {.importc: "struct in_addr", pure, final,
|
InAddr* {.importc: "struct in_addr", pure, final,
|
||||||
header: "<netinet/in.h>".} = object ## struct in_addr
|
header: "<netinet/in.h>".} = object ## struct in_addr
|
||||||
s_addr*: TInAddrScalar
|
s_addr*: TInAddrScalar
|
||||||
|
|
||||||
Tsockaddr_in* {.importc: "struct sockaddr_in", pure, final,
|
Sockaddr_in* {.importc: "struct sockaddr_in", pure, final,
|
||||||
header: "<netinet/in.h>".} = object ## struct sockaddr_in
|
header: "<netinet/in.h>".} = object ## struct sockaddr_in
|
||||||
sin_family*: TSa_Family ## AF_INET.
|
sin_family*: TSa_Family ## AF_INET.
|
||||||
sin_port*: TInPort ## Port number.
|
sin_port*: TInPort ## Port number.
|
||||||
sin_addr*: TInAddr ## IP address.
|
sin_addr*: InAddr ## IP address.
|
||||||
|
|
||||||
TIn6Addr* {.importc: "struct in6_addr", pure, final,
|
TIn6Addr* {.importc: "struct in6_addr", pure, final,
|
||||||
header: "<netinet/in.h>".} = object ## struct in6_addr
|
header: "<netinet/in.h>".} = object ## struct in6_addr
|
||||||
|
|
@ -501,7 +501,7 @@ type
|
||||||
ipv6mr_multiaddr*: TIn6Addr ## IPv6 multicast address.
|
ipv6mr_multiaddr*: TIn6Addr ## IPv6 multicast address.
|
||||||
ipv6mr_interface*: cint ## Interface index.
|
ipv6mr_interface*: cint ## Interface index.
|
||||||
|
|
||||||
Thostent* {.importc: "struct hostent", pure, final,
|
Hostent* {.importc: "struct hostent", pure, final,
|
||||||
header: "<netdb.h>".} = object ## struct hostent
|
header: "<netdb.h>".} = object ## struct hostent
|
||||||
h_name*: cstring ## Official name of the host.
|
h_name*: cstring ## Official name of the host.
|
||||||
h_aliases*: cstringArray ## A pointer to an array of pointers to
|
h_aliases*: cstringArray ## A pointer to an array of pointers to
|
||||||
|
|
@ -531,8 +531,8 @@ type
|
||||||
## a null pointer.
|
## a null pointer.
|
||||||
p_proto*: cint ## The protocol number.
|
p_proto*: cint ## The protocol number.
|
||||||
|
|
||||||
TServent* {.importc: "struct servent", pure, final,
|
Servent* {.importc: "struct servent", pure, final,
|
||||||
header: "<netdb.h>".} = object ## struct servent
|
header: "<netdb.h>".} = object ## struct servent
|
||||||
s_name*: cstring ## Official name of the service.
|
s_name*: cstring ## Official name of the service.
|
||||||
s_aliases*: cstringArray ## A pointer to an array of pointers to
|
s_aliases*: cstringArray ## A pointer to an array of pointers to
|
||||||
## alternative service names, terminated by
|
## alternative service names, terminated by
|
||||||
|
|
@ -542,16 +542,16 @@ type
|
||||||
s_proto*: cstring ## The name of the protocol to use when
|
s_proto*: cstring ## The name of the protocol to use when
|
||||||
## contacting the service.
|
## contacting the service.
|
||||||
|
|
||||||
Taddrinfo* {.importc: "struct addrinfo", pure, final,
|
AddrInfo* {.importc: "struct addrinfo", pure, final,
|
||||||
header: "<netdb.h>".} = object ## struct addrinfo
|
header: "<netdb.h>".} = object ## struct addrinfo
|
||||||
ai_flags*: cint ## Input flags.
|
ai_flags*: cint ## Input flags.
|
||||||
ai_family*: cint ## Address family of socket.
|
ai_family*: cint ## Address family of socket.
|
||||||
ai_socktype*: cint ## Socket type.
|
ai_socktype*: cint ## Socket type.
|
||||||
ai_protocol*: cint ## Protocol of socket.
|
ai_protocol*: cint ## Protocol of socket.
|
||||||
ai_addrlen*: TSocklen ## Length of socket address.
|
ai_addrlen*: Socklen ## Length of socket address.
|
||||||
ai_addr*: ptr TSockAddr ## Socket address of socket.
|
ai_addr*: ptr SockAddr ## Socket address of socket.
|
||||||
ai_canonname*: cstring ## Canonical name of service location.
|
ai_canonname*: cstring ## Canonical name of service location.
|
||||||
ai_next*: ptr Taddrinfo ## Pointer to next in list.
|
ai_next*: ptr AddrInfo ## Pointer to next in list.
|
||||||
|
|
||||||
TPollfd* {.importc: "struct pollfd", pure, final,
|
TPollfd* {.importc: "struct pollfd", pure, final,
|
||||||
header: "<poll.h>".} = object ## struct pollfd
|
header: "<poll.h>".} = object ## struct pollfd
|
||||||
|
|
@ -561,6 +561,11 @@ type
|
||||||
|
|
||||||
Tnfds* {.importc: "nfds_t", header: "<poll.h>".} = cint
|
Tnfds* {.importc: "nfds_t", header: "<poll.h>".} = cint
|
||||||
|
|
||||||
|
{.deprecated: [TSockaddr_in: Sockaddr_in, TAddrinfo: AddrInfo,
|
||||||
|
TSockAddr: SockAddr, TSockLen: SockLen, TTimeval: Timeval,
|
||||||
|
TFdSet: FdSet, Thostent: Hostent, TServent: Servent,
|
||||||
|
TInAddr: InAddr, Tin6_addr: In6_addr, Tsockaddr_in6: Sockaddr_in6].}
|
||||||
|
|
||||||
var
|
var
|
||||||
errno* {.importc, header: "<errno.h>".}: cint ## error variable
|
errno* {.importc, header: "<errno.h>".}: cint ## error variable
|
||||||
h_errno* {.importc, header: "<netdb.h>".}: cint
|
h_errno* {.importc, header: "<netdb.h>".}: cint
|
||||||
|
|
@ -1787,18 +1792,18 @@ proc ntohl*(a1: int32): int32 {.importc, header: "<arpa/inet.h>".}
|
||||||
proc ntohs*(a1: int16): int16 {.importc, header: "<arpa/inet.h>".}
|
proc ntohs*(a1: int16): int16 {.importc, header: "<arpa/inet.h>".}
|
||||||
|
|
||||||
proc inet_addr*(a1: cstring): TInAddrT {.importc, header: "<arpa/inet.h>".}
|
proc inet_addr*(a1: cstring): TInAddrT {.importc, header: "<arpa/inet.h>".}
|
||||||
proc inet_ntoa*(a1: TInAddr): cstring {.importc, header: "<arpa/inet.h>".}
|
proc inet_ntoa*(a1: InAddr): cstring {.importc, header: "<arpa/inet.h>".}
|
||||||
proc inet_ntop*(a1: cint, a2: pointer, a3: cstring, a4: int32): cstring {.
|
proc inet_ntop*(a1: cint, a2: pointer, a3: cstring, a4: int32): cstring {.
|
||||||
importc, header: "<arpa/inet.h>".}
|
importc, header: "<arpa/inet.h>".}
|
||||||
proc inet_pton*(a1: cint, a2: cstring, a3: pointer): cint {.
|
proc inet_pton*(a1: cint, a2: cstring, a3: pointer): cint {.
|
||||||
importc, header: "<arpa/inet.h>".}
|
importc, header: "<arpa/inet.h>".}
|
||||||
|
|
||||||
var
|
var
|
||||||
in6addr_any* {.importc, header: "<netinet/in.h>".}: TIn6Addr
|
in6addr_any* {.importc, header: "<netinet/in.h>".}: In6_addr
|
||||||
in6addr_loopback* {.importc, header: "<netinet/in.h>".}: TIn6Addr
|
in6addr_loopback* {.importc, header: "<netinet/in.h>".}: In6_addr
|
||||||
|
|
||||||
proc IN6ADDR_ANY_INIT* (): TIn6Addr {.importc, header: "<netinet/in.h>".}
|
proc IN6ADDR_ANY_INIT* (): In6_addr {.importc, header: "<netinet/in.h>".}
|
||||||
proc IN6ADDR_LOOPBACK_INIT* (): TIn6Addr {.importc, header: "<netinet/in.h>".}
|
proc IN6ADDR_LOOPBACK_INIT* (): In6_addr {.importc, header: "<netinet/in.h>".}
|
||||||
|
|
||||||
# dirent.h
|
# dirent.h
|
||||||
proc closedir*(a1: ptr TDIR): cint {.importc, header: "<dirent.h>".}
|
proc closedir*(a1: ptr TDIR): cint {.importc, header: "<dirent.h>".}
|
||||||
|
|
@ -1817,7 +1822,7 @@ proc dlopen*(a1: cstring, a2: cint): pointer {.importc, header: "<dlfcn.h>".}
|
||||||
proc dlsym*(a1: pointer, a2: cstring): pointer {.importc, header: "<dlfcn.h>".}
|
proc dlsym*(a1: pointer, a2: cstring): pointer {.importc, header: "<dlfcn.h>".}
|
||||||
|
|
||||||
proc creat*(a1: cstring, a2: TMode): cint {.importc, header: "<fcntl.h>".}
|
proc creat*(a1: cstring, a2: TMode): cint {.importc, header: "<fcntl.h>".}
|
||||||
proc fcntl*(a1: cint | TSocketHandle, a2: cint): cint {.varargs, importc, header: "<fcntl.h>".}
|
proc fcntl*(a1: cint | SocketHandle, a2: cint): cint {.varargs, importc, header: "<fcntl.h>".}
|
||||||
proc open*(a1: cstring, a2: cint): cint {.varargs, importc, header: "<fcntl.h>".}
|
proc open*(a1: cstring, a2: cint): cint {.varargs, importc, header: "<fcntl.h>".}
|
||||||
proc posix_fadvise*(a1: cint, a2, a3: TOff, a4: cint): cint {.
|
proc posix_fadvise*(a1: cint, a2, a3: TOff, a4: cint): cint {.
|
||||||
importc, header: "<fcntl.h>".}
|
importc, header: "<fcntl.h>".}
|
||||||
|
|
@ -2095,7 +2100,7 @@ proc access*(a1: cstring, a2: cint): cint {.importc, header: "<unistd.h>".}
|
||||||
proc alarm*(a1: cint): cint {.importc, header: "<unistd.h>".}
|
proc alarm*(a1: cint): cint {.importc, header: "<unistd.h>".}
|
||||||
proc chdir*(a1: cstring): cint {.importc, header: "<unistd.h>".}
|
proc chdir*(a1: cstring): cint {.importc, header: "<unistd.h>".}
|
||||||
proc chown*(a1: cstring, a2: Tuid, a3: TGid): cint {.importc, header: "<unistd.h>".}
|
proc chown*(a1: cstring, a2: Tuid, a3: TGid): cint {.importc, header: "<unistd.h>".}
|
||||||
proc close*(a1: cint | TSocketHandle): cint {.importc, header: "<unistd.h>".}
|
proc close*(a1: cint | SocketHandle): cint {.importc, header: "<unistd.h>".}
|
||||||
proc confstr*(a1: cint, a2: cstring, a3: int): int {.importc, header: "<unistd.h>".}
|
proc confstr*(a1: cint, a2: cstring, a3: int): int {.importc, header: "<unistd.h>".}
|
||||||
proc crypt*(a1, a2: cstring): cstring {.importc, header: "<unistd.h>".}
|
proc crypt*(a1, a2: cstring): cstring {.importc, header: "<unistd.h>".}
|
||||||
proc ctermid*(a1: cstring): cstring {.importc, header: "<unistd.h>".}
|
proc ctermid*(a1: cstring): cstring {.importc, header: "<unistd.h>".}
|
||||||
|
|
@ -2374,15 +2379,15 @@ proc sched_yield*(): cint {.importc, header: "<sched.h>".}
|
||||||
proc strerror*(errnum: cint): cstring {.importc, header: "<string.h>".}
|
proc strerror*(errnum: cint): cstring {.importc, header: "<string.h>".}
|
||||||
proc hstrerror*(herrnum: cint): cstring {.importc, header: "<netdb.h>".}
|
proc hstrerror*(herrnum: cint): cstring {.importc, header: "<netdb.h>".}
|
||||||
|
|
||||||
proc FD_CLR*(a1: cint, a2: var TFdSet) {.importc, header: "<sys/select.h>".}
|
proc FD_CLR*(a1: cint, a2: var FdSet) {.importc, header: "<sys/select.h>".}
|
||||||
proc FD_ISSET*(a1: cint | TSocketHandle, a2: var TFdSet): cint {.
|
proc FD_ISSET*(a1: cint | SocketHandle, a2: var FdSet): cint {.
|
||||||
importc, header: "<sys/select.h>".}
|
importc, header: "<sys/select.h>".}
|
||||||
proc FD_SET*(a1: cint | TSocketHandle, a2: var TFdSet) {.importc, header: "<sys/select.h>".}
|
proc fdSet*(a1: cint | SocketHandle, a2: var FdSet) {.importc, header: "<sys/select.h>".}
|
||||||
proc FD_ZERO*(a1: var TFdSet) {.importc, header: "<sys/select.h>".}
|
proc FD_ZERO*(a1: var FdSet) {.importc, header: "<sys/select.h>".}
|
||||||
|
|
||||||
proc pselect*(a1: cint, a2, a3, a4: ptr TFdSet, a5: ptr Ttimespec,
|
proc pselect*(a1: cint, a2, a3, a4: ptr FdSet, a5: ptr Ttimespec,
|
||||||
a6: var Tsigset): cint {.importc, header: "<sys/select.h>".}
|
a6: var Tsigset): cint {.importc, header: "<sys/select.h>".}
|
||||||
proc select*(a1: cint | TSocketHandle, a2, a3, a4: ptr TFdSet, a5: ptr Ttimeval): cint {.
|
proc select*(a1: cint | SocketHandle, a2, a3, a4: ptr FdSet, a5: ptr Timeval): cint {.
|
||||||
importc, header: "<sys/select.h>".}
|
importc, header: "<sys/select.h>".}
|
||||||
|
|
||||||
when hasSpawnH:
|
when hasSpawnH:
|
||||||
|
|
@ -2458,48 +2463,48 @@ proc CMSG_FIRSTHDR*(mhdr: ptr Tmsghdr): ptr Tcmsghdr {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
|
|
||||||
const
|
const
|
||||||
INVALID_SOCKET* = TSocketHandle(-1)
|
INVALID_SOCKET* = SocketHandle(-1)
|
||||||
|
|
||||||
proc `==`*(x, y: TSocketHandle): bool {.borrow.}
|
proc `==`*(x, y: SocketHandle): bool {.borrow.}
|
||||||
|
|
||||||
proc accept*(a1: TSocketHandle, a2: ptr TSockAddr, a3: ptr TSocklen): TSocketHandle {.
|
proc accept*(a1: SocketHandle, a2: ptr SockAddr, a3: ptr Socklen): SocketHandle {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
|
|
||||||
proc bindSocket*(a1: TSocketHandle, a2: ptr TSockAddr, a3: TSocklen): cint {.
|
proc bindSocket*(a1: SocketHandle, a2: ptr SockAddr, a3: Socklen): cint {.
|
||||||
importc: "bind", header: "<sys/socket.h>".}
|
importc: "bind", header: "<sys/socket.h>".}
|
||||||
## is Posix's ``bind``, because ``bind`` is a reserved word
|
## is Posix's ``bind``, because ``bind`` is a reserved word
|
||||||
|
|
||||||
proc connect*(a1: TSocketHandle, a2: ptr TSockAddr, a3: TSocklen): cint {.
|
proc connect*(a1: SocketHandle, a2: ptr SockAddr, a3: Socklen): cint {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
proc getpeername*(a1: TSocketHandle, a2: ptr TSockAddr, a3: ptr TSocklen): cint {.
|
proc getpeername*(a1: SocketHandle, a2: ptr SockAddr, a3: ptr Socklen): cint {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
proc getsockname*(a1: TSocketHandle, a2: ptr TSockAddr, a3: ptr TSocklen): cint {.
|
proc getsockname*(a1: SocketHandle, a2: ptr SockAddr, a3: ptr Socklen): cint {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
|
|
||||||
proc getsockopt*(a1: TSocketHandle, a2, a3: cint, a4: pointer, a5: ptr TSocklen): cint {.
|
proc getsockopt*(a1: SocketHandle, a2, a3: cint, a4: pointer, a5: ptr Socklen): cint {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
|
|
||||||
proc listen*(a1: TSocketHandle, a2: cint): cint {.
|
proc listen*(a1: SocketHandle, a2: cint): cint {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
proc recv*(a1: TSocketHandle, a2: pointer, a3: int, a4: cint): int {.
|
proc recv*(a1: SocketHandle, a2: pointer, a3: int, a4: cint): int {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
proc recvfrom*(a1: TSocketHandle, a2: pointer, a3: int, a4: cint,
|
proc recvfrom*(a1: SocketHandle, a2: pointer, a3: int, a4: cint,
|
||||||
a5: ptr TSockAddr, a6: ptr TSocklen): int {.
|
a5: ptr SockAddr, a6: ptr Socklen): int {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
proc recvmsg*(a1: TSocketHandle, a2: ptr Tmsghdr, a3: cint): int {.
|
proc recvmsg*(a1: SocketHandle, a2: ptr Tmsghdr, a3: cint): int {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
proc send*(a1: TSocketHandle, a2: pointer, a3: int, a4: cint): int {.
|
proc send*(a1: SocketHandle, a2: pointer, a3: int, a4: cint): int {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
proc sendmsg*(a1: TSocketHandle, a2: ptr Tmsghdr, a3: cint): int {.
|
proc sendmsg*(a1: SocketHandle, a2: ptr Tmsghdr, a3: cint): int {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
proc sendto*(a1: TSocketHandle, a2: pointer, a3: int, a4: cint, a5: ptr TSockAddr,
|
proc sendto*(a1: SocketHandle, a2: pointer, a3: int, a4: cint, a5: ptr SockAddr,
|
||||||
a6: TSocklen): int {.
|
a6: Socklen): int {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
proc setsockopt*(a1: TSocketHandle, a2, a3: cint, a4: pointer, a5: TSocklen): cint {.
|
proc setsockopt*(a1: SocketHandle, a2, a3: cint, a4: pointer, a5: Socklen): cint {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
proc shutdown*(a1: TSocketHandle, a2: cint): cint {.
|
proc shutdown*(a1: SocketHandle, a2: cint): cint {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
proc socket*(a1, a2, a3: cint): TSocketHandle {.
|
proc socket*(a1, a2, a3: cint): SocketHandle {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
proc sockatmark*(a1: cint): cint {.
|
proc sockatmark*(a1: cint): cint {.
|
||||||
importc, header: "<sys/socket.h>".}
|
importc, header: "<sys/socket.h>".}
|
||||||
|
|
@ -2512,40 +2517,40 @@ proc if_indextoname*(a1: cint, a2: cstring): cstring {.
|
||||||
proc if_nameindex*(): ptr Tif_nameindex {.importc, header: "<net/if.h>".}
|
proc if_nameindex*(): ptr Tif_nameindex {.importc, header: "<net/if.h>".}
|
||||||
proc if_freenameindex*(a1: ptr Tif_nameindex) {.importc, header: "<net/if.h>".}
|
proc if_freenameindex*(a1: ptr Tif_nameindex) {.importc, header: "<net/if.h>".}
|
||||||
|
|
||||||
proc IN6_IS_ADDR_UNSPECIFIED* (a1: ptr TIn6Addr): cint {.
|
proc IN6_IS_ADDR_UNSPECIFIED* (a1: ptr In6_addr): cint {.
|
||||||
importc, header: "<netinet/in.h>".}
|
importc, header: "<netinet/in.h>".}
|
||||||
## Unspecified address.
|
## Unspecified address.
|
||||||
proc IN6_IS_ADDR_LOOPBACK* (a1: ptr TIn6Addr): cint {.
|
proc IN6_IS_ADDR_LOOPBACK* (a1: ptr In6_addr): cint {.
|
||||||
importc, header: "<netinet/in.h>".}
|
importc, header: "<netinet/in.h>".}
|
||||||
## Loopback address.
|
## Loopback address.
|
||||||
proc IN6_IS_ADDR_MULTICAST* (a1: ptr TIn6Addr): cint {.
|
proc IN6_IS_ADDR_MULTICAST* (a1: ptr In6_addr): cint {.
|
||||||
importc, header: "<netinet/in.h>".}
|
importc, header: "<netinet/in.h>".}
|
||||||
## Multicast address.
|
## Multicast address.
|
||||||
proc IN6_IS_ADDR_LINKLOCAL* (a1: ptr TIn6Addr): cint {.
|
proc IN6_IS_ADDR_LINKLOCAL* (a1: ptr In6_addr): cint {.
|
||||||
importc, header: "<netinet/in.h>".}
|
importc, header: "<netinet/in.h>".}
|
||||||
## Unicast link-local address.
|
## Unicast link-local address.
|
||||||
proc IN6_IS_ADDR_SITELOCAL* (a1: ptr TIn6Addr): cint {.
|
proc IN6_IS_ADDR_SITELOCAL* (a1: ptr In6_addr): cint {.
|
||||||
importc, header: "<netinet/in.h>".}
|
importc, header: "<netinet/in.h>".}
|
||||||
## Unicast site-local address.
|
## Unicast site-local address.
|
||||||
proc IN6_IS_ADDR_V4MAPPED* (a1: ptr TIn6Addr): cint {.
|
proc IN6_IS_ADDR_V4MAPPED* (a1: ptr In6_addr): cint {.
|
||||||
importc, header: "<netinet/in.h>".}
|
importc, header: "<netinet/in.h>".}
|
||||||
## IPv4 mapped address.
|
## IPv4 mapped address.
|
||||||
proc IN6_IS_ADDR_V4COMPAT* (a1: ptr TIn6Addr): cint {.
|
proc IN6_IS_ADDR_V4COMPAT* (a1: ptr In6_addr): cint {.
|
||||||
importc, header: "<netinet/in.h>".}
|
importc, header: "<netinet/in.h>".}
|
||||||
## IPv4-compatible address.
|
## IPv4-compatible address.
|
||||||
proc IN6_IS_ADDR_MC_NODELOCAL* (a1: ptr TIn6Addr): cint {.
|
proc IN6_IS_ADDR_MC_NODELOCAL* (a1: ptr In6_addr): cint {.
|
||||||
importc, header: "<netinet/in.h>".}
|
importc, header: "<netinet/in.h>".}
|
||||||
## Multicast node-local address.
|
## Multicast node-local address.
|
||||||
proc IN6_IS_ADDR_MC_LINKLOCAL* (a1: ptr TIn6Addr): cint {.
|
proc IN6_IS_ADDR_MC_LINKLOCAL* (a1: ptr In6_addr): cint {.
|
||||||
importc, header: "<netinet/in.h>".}
|
importc, header: "<netinet/in.h>".}
|
||||||
## Multicast link-local address.
|
## Multicast link-local address.
|
||||||
proc IN6_IS_ADDR_MC_SITELOCAL* (a1: ptr TIn6Addr): cint {.
|
proc IN6_IS_ADDR_MC_SITELOCAL* (a1: ptr In6_addr): cint {.
|
||||||
importc, header: "<netinet/in.h>".}
|
importc, header: "<netinet/in.h>".}
|
||||||
## Multicast site-local address.
|
## Multicast site-local address.
|
||||||
proc IN6_IS_ADDR_MC_ORGLOCAL* (a1: ptr TIn6Addr): cint {.
|
proc IN6_IS_ADDR_MC_ORGLOCAL* (a1: ptr In6_addr): cint {.
|
||||||
importc, header: "<netinet/in.h>".}
|
importc, header: "<netinet/in.h>".}
|
||||||
## Multicast organization-local address.
|
## Multicast organization-local address.
|
||||||
proc IN6_IS_ADDR_MC_GLOBAL* (a1: ptr TIn6Addr): cint {.
|
proc IN6_IS_ADDR_MC_GLOBAL* (a1: ptr In6_addr): cint {.
|
||||||
importc, header: "<netinet/in.h>".}
|
importc, header: "<netinet/in.h>".}
|
||||||
## Multicast global address.
|
## Multicast global address.
|
||||||
|
|
||||||
|
|
@ -2553,21 +2558,21 @@ proc endhostent*() {.importc, header: "<netdb.h>".}
|
||||||
proc endnetent*() {.importc, header: "<netdb.h>".}
|
proc endnetent*() {.importc, header: "<netdb.h>".}
|
||||||
proc endprotoent*() {.importc, header: "<netdb.h>".}
|
proc endprotoent*() {.importc, header: "<netdb.h>".}
|
||||||
proc endservent*() {.importc, header: "<netdb.h>".}
|
proc endservent*() {.importc, header: "<netdb.h>".}
|
||||||
proc freeaddrinfo*(a1: ptr Taddrinfo) {.importc, header: "<netdb.h>".}
|
proc freeaddrinfo*(a1: ptr AddrInfo) {.importc, header: "<netdb.h>".}
|
||||||
|
|
||||||
proc gai_strerror*(a1: cint): cstring {.importc, header: "<netdb.h>".}
|
proc gai_strerror*(a1: cint): cstring {.importc, header: "<netdb.h>".}
|
||||||
|
|
||||||
proc getaddrinfo*(a1, a2: cstring, a3: ptr Taddrinfo,
|
proc getaddrinfo*(a1, a2: cstring, a3: ptr AddrInfo,
|
||||||
a4: var ptr Taddrinfo): cint {.importc, header: "<netdb.h>".}
|
a4: var ptr AddrInfo): cint {.importc, header: "<netdb.h>".}
|
||||||
|
|
||||||
proc gethostbyaddr*(a1: pointer, a2: TSocklen, a3: cint): ptr Thostent {.
|
proc gethostbyaddr*(a1: pointer, a2: Socklen, a3: cint): ptr Hostent {.
|
||||||
importc, header: "<netdb.h>".}
|
importc, header: "<netdb.h>".}
|
||||||
proc gethostbyname*(a1: cstring): ptr Thostent {.importc, header: "<netdb.h>".}
|
proc gethostbyname*(a1: cstring): ptr Hostent {.importc, header: "<netdb.h>".}
|
||||||
proc gethostent*(): ptr Thostent {.importc, header: "<netdb.h>".}
|
proc gethostent*(): ptr Hostent {.importc, header: "<netdb.h>".}
|
||||||
|
|
||||||
proc getnameinfo*(a1: ptr TSockAddr, a2: TSocklen,
|
proc getnameinfo*(a1: ptr SockAddr, a2: Socklen,
|
||||||
a3: cstring, a4: TSocklen, a5: cstring,
|
a3: cstring, a4: Socklen, a5: cstring,
|
||||||
a6: TSocklen, a7: cint): cint {.importc, header: "<netdb.h>".}
|
a6: Socklen, a7: cint): cint {.importc, header: "<netdb.h>".}
|
||||||
|
|
||||||
proc getnetbyaddr*(a1: int32, a2: cint): ptr Tnetent {.importc, header: "<netdb.h>".}
|
proc getnetbyaddr*(a1: int32, a2: cint): ptr Tnetent {.importc, header: "<netdb.h>".}
|
||||||
proc getnetbyname*(a1: cstring): ptr Tnetent {.importc, header: "<netdb.h>".}
|
proc getnetbyname*(a1: cstring): ptr Tnetent {.importc, header: "<netdb.h>".}
|
||||||
|
|
@ -2577,10 +2582,10 @@ proc getprotobyname*(a1: cstring): ptr TProtoent {.importc, header: "<netdb.h>".
|
||||||
proc getprotobynumber*(a1: cint): ptr TProtoent {.importc, header: "<netdb.h>".}
|
proc getprotobynumber*(a1: cint): ptr TProtoent {.importc, header: "<netdb.h>".}
|
||||||
proc getprotoent*(): ptr TProtoent {.importc, header: "<netdb.h>".}
|
proc getprotoent*(): ptr TProtoent {.importc, header: "<netdb.h>".}
|
||||||
|
|
||||||
proc getservbyname*(a1, a2: cstring): ptr TServent {.importc, header: "<netdb.h>".}
|
proc getservbyname*(a1, a2: cstring): ptr Servent {.importc, header: "<netdb.h>".}
|
||||||
proc getservbyport*(a1: cint, a2: cstring): ptr TServent {.
|
proc getservbyport*(a1: cint, a2: cstring): ptr Servent {.
|
||||||
importc, header: "<netdb.h>".}
|
importc, header: "<netdb.h>".}
|
||||||
proc getservent*(): ptr TServent {.importc, header: "<netdb.h>".}
|
proc getservent*(): ptr Servent {.importc, header: "<netdb.h>".}
|
||||||
|
|
||||||
proc sethostent*(a1: cint) {.importc, header: "<netdb.h>".}
|
proc sethostent*(a1: cint) {.importc, header: "<netdb.h>".}
|
||||||
proc setnetent*(a1: cint) {.importc, header: "<netdb.h>".}
|
proc setnetent*(a1: cint) {.importc, header: "<netdb.h>".}
|
||||||
|
|
@ -2593,7 +2598,7 @@ proc poll*(a1: ptr TPollfd, a2: Tnfds, a3: int): cint {.
|
||||||
proc realpath*(name, resolved: cstring): cstring {.
|
proc realpath*(name, resolved: cstring): cstring {.
|
||||||
importc: "realpath", header: "<stdlib.h>".}
|
importc: "realpath", header: "<stdlib.h>".}
|
||||||
|
|
||||||
proc utimes*(path: cstring, times: ptr array [2, Ttimeval]): int {.
|
proc utimes*(path: cstring, times: ptr array [2, Timeval]): int {.
|
||||||
importc: "utimes", header: "<sys/time.h>".}
|
importc: "utimes", header: "<sys/time.h>".}
|
||||||
## Sets file access and modification times.
|
## Sets file access and modification times.
|
||||||
##
|
##
|
||||||
|
|
|
||||||
|
|
@ -1814,7 +1814,7 @@ proc sleep*(milsecs: int) {.rtl, extern: "nos$1", tags: [TimeEffect].} =
|
||||||
winlean.sleep(int32(milsecs))
|
winlean.sleep(int32(milsecs))
|
||||||
else:
|
else:
|
||||||
var a, b: Ttimespec
|
var a, b: Ttimespec
|
||||||
a.tv_sec = TTime(milsecs div 1000)
|
a.tv_sec = Time(milsecs div 1000)
|
||||||
a.tv_nsec = (milsecs mod 1000) * 1000 * 1000
|
a.tv_nsec = (milsecs mod 1000) * 1000 * 1000
|
||||||
discard posix.nanosleep(a, b)
|
discard posix.nanosleep(a, b)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -162,7 +162,7 @@ proc close*(socket: SocketHandle) =
|
||||||
# TODO: These values should not be discarded. An EOS should be raised.
|
# TODO: These values should not be discarded. An EOS should be raised.
|
||||||
# http://stackoverflow.com/questions/12463473/what-happens-if-you-call-close-on-a-bsd-socket-multiple-times
|
# http://stackoverflow.com/questions/12463473/what-happens-if-you-call-close-on-a-bsd-socket-multiple-times
|
||||||
|
|
||||||
proc bindAddr*(socket: SocketHandle, name: ptr SockAddr, namelen: SockLen): cint =
|
proc bindAddr*(socket: SocketHandle, name: ptr SockAddr, namelen: Socklen): cint =
|
||||||
result = bindSocket(socket, name, namelen)
|
result = bindSocket(socket, name, namelen)
|
||||||
|
|
||||||
proc listen*(socket: SocketHandle, backlog = SOMAXCONN): cint {.tags: [ReadIOEffect].} =
|
proc listen*(socket: SocketHandle, backlog = SOMAXCONN): cint {.tags: [ReadIOEffect].} =
|
||||||
|
|
@ -184,12 +184,12 @@ proc getAddrInfo*(address: string, port: Port, af: Domain = AF_INET, typ: SockTy
|
||||||
hints.ai_family = toInt(af)
|
hints.ai_family = toInt(af)
|
||||||
hints.ai_socktype = toInt(typ)
|
hints.ai_socktype = toInt(typ)
|
||||||
hints.ai_protocol = toInt(prot)
|
hints.ai_protocol = toInt(prot)
|
||||||
var gaiResult = getAddrInfo(address, $port, addr(hints), result)
|
var gaiResult = getaddrinfo(address, $port, addr(hints), result)
|
||||||
if gaiResult != 0'i32:
|
if gaiResult != 0'i32:
|
||||||
when useWinVersion:
|
when useWinVersion:
|
||||||
raiseOSError(osLastError())
|
raiseOSError(osLastError())
|
||||||
else:
|
else:
|
||||||
raise newException(EOS, $gai_strerror(gaiResult))
|
raise newException(OSError, $gai_strerror(gaiResult))
|
||||||
|
|
||||||
proc dealloc*(ai: ptr AddrInfo) =
|
proc dealloc*(ai: ptr AddrInfo) =
|
||||||
freeaddrinfo(ai)
|
freeaddrinfo(ai)
|
||||||
|
|
@ -268,7 +268,7 @@ proc getHostByAddr*(ip: string): Hostent {.tags: [ReadIOEffect].} =
|
||||||
var s = posix.gethostbyaddr(addr(myaddr), sizeof(myaddr).Socklen,
|
var s = posix.gethostbyaddr(addr(myaddr), sizeof(myaddr).Socklen,
|
||||||
cint(posix.AF_INET))
|
cint(posix.AF_INET))
|
||||||
if s == nil:
|
if s == nil:
|
||||||
raise newException(EOS, $hstrerror(h_errno))
|
raise newException(OSError, $hstrerror(h_errno))
|
||||||
|
|
||||||
result.name = $s.h_name
|
result.name = $s.h_name
|
||||||
result.aliases = cstringArrayToSeq(s.h_aliases)
|
result.aliases = cstringArrayToSeq(s.h_aliases)
|
||||||
|
|
@ -280,7 +280,7 @@ proc getHostByAddr*(ip: string): Hostent {.tags: [ReadIOEffect].} =
|
||||||
elif s.h_addrtype == posix.AF_INET6:
|
elif s.h_addrtype == posix.AF_INET6:
|
||||||
result.addrtype = AF_INET6
|
result.addrtype = AF_INET6
|
||||||
else:
|
else:
|
||||||
raise newException(EOS, "unknown h_addrtype")
|
raise newException(OSError, "unknown h_addrtype")
|
||||||
result.addrList = cstringArrayToSeq(s.h_addr_list)
|
result.addrList = cstringArrayToSeq(s.h_addr_list)
|
||||||
result.length = int(s.h_length)
|
result.length = int(s.h_length)
|
||||||
|
|
||||||
|
|
@ -301,7 +301,7 @@ proc getHostByName*(name: string): Hostent {.tags: [ReadIOEffect].} =
|
||||||
elif s.h_addrtype == posix.AF_INET6:
|
elif s.h_addrtype == posix.AF_INET6:
|
||||||
result.addrtype = AF_INET6
|
result.addrtype = AF_INET6
|
||||||
else:
|
else:
|
||||||
raise newException(EOS, "unknown h_addrtype")
|
raise newException(OSError, "unknown h_addrtype")
|
||||||
result.addrList = cstringArrayToSeq(s.h_addr_list)
|
result.addrList = cstringArrayToSeq(s.h_addr_list)
|
||||||
result.length = int(s.h_length)
|
result.length = int(s.h_length)
|
||||||
|
|
||||||
|
|
@ -314,7 +314,7 @@ proc getSockName*(socket: SocketHandle): Port =
|
||||||
name.sin_family = posix.AF_INET
|
name.sin_family = posix.AF_INET
|
||||||
#name.sin_port = htons(cint16(port))
|
#name.sin_port = htons(cint16(port))
|
||||||
#name.sin_addr.s_addr = htonl(INADDR_ANY)
|
#name.sin_addr.s_addr = htonl(INADDR_ANY)
|
||||||
var namelen = sizeof(name).SockLen
|
var namelen = sizeof(name).Socklen
|
||||||
if getsockname(socket, cast[ptr SockAddr](addr(name)),
|
if getsockname(socket, cast[ptr SockAddr](addr(name)),
|
||||||
addr(namelen)) == -1'i32:
|
addr(namelen)) == -1'i32:
|
||||||
raiseOSError(osLastError())
|
raiseOSError(osLastError())
|
||||||
|
|
@ -324,7 +324,7 @@ proc getSockOptInt*(socket: SocketHandle, level, optname: int): int {.
|
||||||
tags: [ReadIOEffect].} =
|
tags: [ReadIOEffect].} =
|
||||||
## getsockopt for integer options.
|
## getsockopt for integer options.
|
||||||
var res: cint
|
var res: cint
|
||||||
var size = sizeof(res).SockLen
|
var size = sizeof(res).Socklen
|
||||||
if getsockopt(socket, cint(level), cint(optname),
|
if getsockopt(socket, cint(level), cint(optname),
|
||||||
addr(res), addr(size)) < 0'i32:
|
addr(res), addr(size)) < 0'i32:
|
||||||
raiseOSError(osLastError())
|
raiseOSError(osLastError())
|
||||||
|
|
@ -335,7 +335,7 @@ proc setSockOptInt*(socket: SocketHandle, level, optname, optval: int) {.
|
||||||
## setsockopt for integer options.
|
## setsockopt for integer options.
|
||||||
var value = cint(optval)
|
var value = cint(optval)
|
||||||
if setsockopt(socket, cint(level), cint(optname), addr(value),
|
if setsockopt(socket, cint(level), cint(optname), addr(value),
|
||||||
sizeof(value).SockLen) < 0'i32:
|
sizeof(value).Socklen) < 0'i32:
|
||||||
raiseOSError(osLastError())
|
raiseOSError(osLastError())
|
||||||
|
|
||||||
proc setBlocking*(s: SocketHandle, blocking: bool) =
|
proc setBlocking*(s: SocketHandle, blocking: bool) =
|
||||||
|
|
@ -361,13 +361,13 @@ proc timeValFromMilliseconds(timeout = 500): Timeval =
|
||||||
result.tv_sec = seconds.int32
|
result.tv_sec = seconds.int32
|
||||||
result.tv_usec = ((timeout - seconds * 1000) * 1000).int32
|
result.tv_usec = ((timeout - seconds * 1000) * 1000).int32
|
||||||
|
|
||||||
proc createFdSet(fd: var FD_SET, s: seq[SocketHandle], m: var int) =
|
proc createFdSet(fd: var FdSet, s: seq[SocketHandle], m: var int) =
|
||||||
FD_ZERO(fd)
|
FD_ZERO(fd)
|
||||||
for i in items(s):
|
for i in items(s):
|
||||||
m = max(m, int(i))
|
m = max(m, int(i))
|
||||||
FD_SET(i, fd)
|
fdSet(i, fd)
|
||||||
|
|
||||||
proc pruneSocketSet(s: var seq[SocketHandle], fd: var FD_SET) =
|
proc pruneSocketSet(s: var seq[SocketHandle], fd: var FdSet) =
|
||||||
var i = 0
|
var i = 0
|
||||||
var L = s.len
|
var L = s.len
|
||||||
while i < L:
|
while i < L:
|
||||||
|
|
@ -386,9 +386,9 @@ proc select*(readfds: var seq[SocketHandle], timeout = 500): int =
|
||||||
##
|
##
|
||||||
## A socket is removed from the specific ``seq`` when it has data waiting to
|
## A socket is removed from the specific ``seq`` when it has data waiting to
|
||||||
## be read/written to or has errors (``exceptfds``).
|
## be read/written to or has errors (``exceptfds``).
|
||||||
var tv {.noInit.}: TTimeval = timeValFromMilliseconds(timeout)
|
var tv {.noInit.}: Timeval = timeValFromMilliseconds(timeout)
|
||||||
|
|
||||||
var rd: TFdSet
|
var rd: FdSet
|
||||||
var m = 0
|
var m = 0
|
||||||
createFdSet((rd), readfds, m)
|
createFdSet((rd), readfds, m)
|
||||||
|
|
||||||
|
|
@ -410,7 +410,7 @@ proc selectWrite*(writefds: var seq[SocketHandle],
|
||||||
## an unlimited time.
|
## an unlimited time.
|
||||||
var tv {.noInit.}: Timeval = timeValFromMilliseconds(timeout)
|
var tv {.noInit.}: Timeval = timeValFromMilliseconds(timeout)
|
||||||
|
|
||||||
var wr: TFdSet
|
var wr: FdSet
|
||||||
var m = 0
|
var m = 0
|
||||||
createFdSet((wr), writefds, m)
|
createFdSet((wr), writefds, m)
|
||||||
|
|
||||||
|
|
@ -422,5 +422,5 @@ proc selectWrite*(writefds: var seq[SocketHandle],
|
||||||
pruneSocketSet(writefds, (wr))
|
pruneSocketSet(writefds, (wr))
|
||||||
|
|
||||||
when defined(Windows):
|
when defined(Windows):
|
||||||
var wsa: WSADATA
|
var wsa: WSAData
|
||||||
if WSAStartup(0x0101'i16, addr wsa) != 0: raiseOSError(osLastError())
|
if wsaStartup(0x0101'i16, addr wsa) != 0: raiseOSError(osLastError())
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ proc parsePath(uri: string, i: var int, result: var TUri) =
|
||||||
i.inc parseUntil(uri, result.path, {'?', '#'}, i)
|
i.inc parseUntil(uri, result.path, {'?', '#'}, i)
|
||||||
|
|
||||||
# The 'mailto' scheme's PATH actually contains the hostname/username
|
# The 'mailto' scheme's PATH actually contains the hostname/username
|
||||||
if result.scheme.ToLower() == "mailto":
|
if result.scheme.toLower == "mailto":
|
||||||
parseAuthority(result.path, result)
|
parseAuthority(result.path, result)
|
||||||
result.path = ""
|
result.path = ""
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Nimrod's Runtime Library
|
# Nim's Runtime Library
|
||||||
# (c) Copyright 2012 Andreas Rumpf
|
# (c) Copyright 2012 Andreas Rumpf
|
||||||
#
|
#
|
||||||
# See the file "copying.txt", included in this
|
# See the file "copying.txt", included in this
|
||||||
|
|
@ -368,45 +368,45 @@ type
|
||||||
{.deprecated: [TSocketHandle: SocketHandle].}
|
{.deprecated: [TSocketHandle: SocketHandle].}
|
||||||
|
|
||||||
type
|
type
|
||||||
TWSAData* {.pure, final, importc: "WSADATA", header: "Winsock2.h".} = object
|
WSAData* {.importc: "WSADATA", header: "Winsock2.h".} = object
|
||||||
wVersion, wHighVersion: int16
|
wVersion, wHighVersion: int16
|
||||||
szDescription: array[0..WSADESCRIPTION_LEN, char]
|
szDescription: array[0..WSADESCRIPTION_LEN, char]
|
||||||
szSystemStatus: array[0..WSASYS_STATUS_LEN, char]
|
szSystemStatus: array[0..WSASYS_STATUS_LEN, char]
|
||||||
iMaxSockets, iMaxUdpDg: int16
|
iMaxSockets, iMaxUdpDg: int16
|
||||||
lpVendorInfo: cstring
|
lpVendorInfo: cstring
|
||||||
|
|
||||||
TSockAddr* {.pure, final, importc: "SOCKADDR", header: "Winsock2.h".} = object
|
SockAddr* {.importc: "SOCKADDR", header: "Winsock2.h".} = object
|
||||||
sa_family*: int16 # unsigned
|
sa_family*: int16 # unsigned
|
||||||
sa_data: array[0..13, char]
|
sa_data: array[0..13, char]
|
||||||
|
|
||||||
TInAddr* {.pure, final, importc: "IN_ADDR", header: "Winsock2.h".} = object
|
InAddr* {.importc: "IN_ADDR", header: "Winsock2.h".} = object
|
||||||
s_addr*: int32 # IP address
|
s_addr*: int32 # IP address
|
||||||
|
|
||||||
Tsockaddr_in* {.pure, final, importc: "SOCKADDR_IN",
|
Sockaddr_in* {.importc: "SOCKADDR_IN",
|
||||||
header: "Winsock2.h".} = object
|
header: "Winsock2.h".} = object
|
||||||
sin_family*: int16
|
sin_family*: int16
|
||||||
sin_port*: int16 # unsigned
|
sin_port*: int16 # unsigned
|
||||||
sin_addr*: TInAddr
|
sin_addr*: InAddr
|
||||||
sin_zero*: array[0..7, char]
|
sin_zero*: array[0..7, char]
|
||||||
|
|
||||||
Tin6_addr* {.pure, final, importc: "IN6_ADDR", header: "Winsock2.h".} = object
|
In6_addr* {.importc: "IN6_ADDR", header: "Winsock2.h".} = object
|
||||||
bytes*: array[0..15, char]
|
bytes*: array[0..15, char]
|
||||||
|
|
||||||
Tsockaddr_in6* {.pure, final, importc: "SOCKADDR_IN6",
|
Sockaddr_in6* {.importc: "SOCKADDR_IN6",
|
||||||
header: "Winsock2.h".} = object
|
header: "Winsock2.h".} = object
|
||||||
sin6_family*: int16
|
sin6_family*: int16
|
||||||
sin6_port*: int16 # unsigned
|
sin6_port*: int16 # unsigned
|
||||||
sin6_flowinfo*: int32 # unsigned
|
sin6_flowinfo*: int32 # unsigned
|
||||||
sin6_addr*: Tin6_addr
|
sin6_addr*: In6_addr
|
||||||
sin6_scope_id*: int32 # unsigned
|
sin6_scope_id*: int32 # unsigned
|
||||||
|
|
||||||
Tsockaddr_in6_old* {.pure, final.} = object
|
Sockaddr_in6_old* = object
|
||||||
sin6_family*: int16
|
sin6_family*: int16
|
||||||
sin6_port*: int16 # unsigned
|
sin6_port*: int16 # unsigned
|
||||||
sin6_flowinfo*: int32 # unsigned
|
sin6_flowinfo*: int32 # unsigned
|
||||||
sin6_addr*: Tin6_addr
|
sin6_addr*: In6_addr
|
||||||
|
|
||||||
TServent* {.pure, final.} = object
|
Servent* = object
|
||||||
s_name*: cstring
|
s_name*: cstring
|
||||||
s_aliases*: cstringArray
|
s_aliases*: cstringArray
|
||||||
when defined(cpu64):
|
when defined(cpu64):
|
||||||
|
|
@ -416,31 +416,38 @@ type
|
||||||
s_port*: int16
|
s_port*: int16
|
||||||
s_proto*: cstring
|
s_proto*: cstring
|
||||||
|
|
||||||
Thostent* {.pure, final.} = object
|
Hostent* = object
|
||||||
h_name*: cstring
|
h_name*: cstring
|
||||||
h_aliases*: cstringArray
|
h_aliases*: cstringArray
|
||||||
h_addrtype*: int16
|
h_addrtype*: int16
|
||||||
h_length*: int16
|
h_length*: int16
|
||||||
h_addr_list*: cstringArray
|
h_addr_list*: cstringArray
|
||||||
|
|
||||||
TFdSet* {.pure, final.} = object
|
FdSet* = object
|
||||||
fd_count*: cint # unsigned
|
fd_count*: cint # unsigned
|
||||||
fd_array*: array[0..FD_SETSIZE-1, SocketHandle]
|
fd_array*: array[0..FD_SETSIZE-1, SocketHandle]
|
||||||
|
|
||||||
TTimeval* {.pure, final.} = object
|
Timeval* = object
|
||||||
tv_sec*, tv_usec*: int32
|
tv_sec*, tv_usec*: int32
|
||||||
|
|
||||||
TAddrInfo* {.pure, final.} = object
|
AddrInfo* = object
|
||||||
ai_flags*: cint ## Input flags.
|
ai_flags*: cint ## Input flags.
|
||||||
ai_family*: cint ## Address family of socket.
|
ai_family*: cint ## Address family of socket.
|
||||||
ai_socktype*: cint ## Socket type.
|
ai_socktype*: cint ## Socket type.
|
||||||
ai_protocol*: cint ## Protocol of socket.
|
ai_protocol*: cint ## Protocol of socket.
|
||||||
ai_addrlen*: int ## Length of socket address.
|
ai_addrlen*: int ## Length of socket address.
|
||||||
ai_canonname*: cstring ## Canonical name of service location.
|
ai_canonname*: cstring ## Canonical name of service location.
|
||||||
ai_addr*: ptr TSockAddr ## Socket address of socket.
|
ai_addr*: ptr SockAddr ## Socket address of socket.
|
||||||
ai_next*: ptr TAddrInfo ## Pointer to next in list.
|
ai_next*: ptr AddrInfo ## Pointer to next in list.
|
||||||
|
|
||||||
|
SockLen* = cuint
|
||||||
|
|
||||||
|
{.deprecated: [TSockaddr_in: Sockaddr_in, TAddrinfo: AddrInfo,
|
||||||
|
TSockAddr: SockAddr, TSockLen: SockLen, TTimeval: Timeval,
|
||||||
|
TWSADATA: WSADATA, TFdSet: FdSet, Thostent: Hostent, TServent: Servent,
|
||||||
|
TInAddr: InAddr, Tin6_addr: In6_addr, Tsockaddr_in6: Sockaddr_in6,
|
||||||
|
Tsockaddr_in6_old: Sockaddr_in6_old].}
|
||||||
|
|
||||||
TSockLen* = cuint
|
|
||||||
|
|
||||||
var
|
var
|
||||||
SOMAXCONN* {.importc, header: "Winsock2.h".}: cint
|
SOMAXCONN* {.importc, header: "Winsock2.h".}: cint
|
||||||
|
|
@ -462,16 +469,16 @@ var
|
||||||
|
|
||||||
proc `==`*(x, y: SocketHandle): bool {.borrow.}
|
proc `==`*(x, y: SocketHandle): bool {.borrow.}
|
||||||
|
|
||||||
proc getservbyname*(name, proto: cstring): ptr TServent {.
|
proc getservbyname*(name, proto: cstring): ptr Servent {.
|
||||||
stdcall, importc: "getservbyname", dynlib: ws2dll.}
|
stdcall, importc: "getservbyname", dynlib: ws2dll.}
|
||||||
|
|
||||||
proc getservbyport*(port: cint, proto: cstring): ptr TServent {.
|
proc getservbyport*(port: cint, proto: cstring): ptr Servent {.
|
||||||
stdcall, importc: "getservbyport", dynlib: ws2dll.}
|
stdcall, importc: "getservbyport", dynlib: ws2dll.}
|
||||||
|
|
||||||
proc gethostbyaddr*(ip: ptr TInAddr, len: cuint, theType: cint): ptr Thostent {.
|
proc gethostbyaddr*(ip: ptr InAddr, len: cuint, theType: cint): ptr Hostent {.
|
||||||
stdcall, importc: "gethostbyaddr", dynlib: ws2dll.}
|
stdcall, importc: "gethostbyaddr", dynlib: ws2dll.}
|
||||||
|
|
||||||
proc gethostbyname*(name: cstring): ptr Thostent {.
|
proc gethostbyname*(name: cstring): ptr Hostent {.
|
||||||
stdcall, importc: "gethostbyname", dynlib: ws2dll.}
|
stdcall, importc: "gethostbyname", dynlib: ws2dll.}
|
||||||
|
|
||||||
proc socket*(af, typ, protocol: cint): SocketHandle {.
|
proc socket*(af, typ, protocol: cint): SocketHandle {.
|
||||||
|
|
@ -480,20 +487,20 @@ proc socket*(af, typ, protocol: cint): SocketHandle {.
|
||||||
proc closesocket*(s: SocketHandle): cint {.
|
proc closesocket*(s: SocketHandle): cint {.
|
||||||
stdcall, importc: "closesocket", dynlib: ws2dll.}
|
stdcall, importc: "closesocket", dynlib: ws2dll.}
|
||||||
|
|
||||||
proc accept*(s: SocketHandle, a: ptr TSockAddr, addrlen: ptr TSockLen): SocketHandle {.
|
proc accept*(s: SocketHandle, a: ptr SockAddr, addrlen: ptr SockLen): SocketHandle {.
|
||||||
stdcall, importc: "accept", dynlib: ws2dll.}
|
stdcall, importc: "accept", dynlib: ws2dll.}
|
||||||
proc bindSocket*(s: SocketHandle, name: ptr TSockAddr, namelen: TSockLen): cint {.
|
proc bindSocket*(s: SocketHandle, name: ptr SockAddr, namelen: SockLen): cint {.
|
||||||
stdcall, importc: "bind", dynlib: ws2dll.}
|
stdcall, importc: "bind", dynlib: ws2dll.}
|
||||||
proc connect*(s: SocketHandle, name: ptr TSockAddr, namelen: TSockLen): cint {.
|
proc connect*(s: SocketHandle, name: ptr SockAddr, namelen: SockLen): cint {.
|
||||||
stdcall, importc: "connect", dynlib: ws2dll.}
|
stdcall, importc: "connect", dynlib: ws2dll.}
|
||||||
proc getsockname*(s: SocketHandle, name: ptr TSockAddr,
|
proc getsockname*(s: SocketHandle, name: ptr SockAddr,
|
||||||
namelen: ptr TSockLen): cint {.
|
namelen: ptr SockLen): cint {.
|
||||||
stdcall, importc: "getsockname", dynlib: ws2dll.}
|
stdcall, importc: "getsockname", dynlib: ws2dll.}
|
||||||
proc getsockopt*(s: SocketHandle, level, optname: cint, optval: pointer,
|
proc getsockopt*(s: SocketHandle, level, optname: cint, optval: pointer,
|
||||||
optlen: ptr TSockLen): cint {.
|
optlen: ptr SockLen): cint {.
|
||||||
stdcall, importc: "getsockopt", dynlib: ws2dll.}
|
stdcall, importc: "getsockopt", dynlib: ws2dll.}
|
||||||
proc setsockopt*(s: SocketHandle, level, optname: cint, optval: pointer,
|
proc setsockopt*(s: SocketHandle, level, optname: cint, optval: pointer,
|
||||||
optlen: TSockLen): cint {.
|
optlen: SockLen): cint {.
|
||||||
stdcall, importc: "setsockopt", dynlib: ws2dll.}
|
stdcall, importc: "setsockopt", dynlib: ws2dll.}
|
||||||
|
|
||||||
proc listen*(s: SocketHandle, backlog: cint): cint {.
|
proc listen*(s: SocketHandle, backlog: cint): cint {.
|
||||||
|
|
@ -501,53 +508,53 @@ proc listen*(s: SocketHandle, backlog: cint): cint {.
|
||||||
proc recv*(s: SocketHandle, buf: pointer, len, flags: cint): cint {.
|
proc recv*(s: SocketHandle, buf: pointer, len, flags: cint): cint {.
|
||||||
stdcall, importc: "recv", dynlib: ws2dll.}
|
stdcall, importc: "recv", dynlib: ws2dll.}
|
||||||
proc recvfrom*(s: SocketHandle, buf: cstring, len, flags: cint,
|
proc recvfrom*(s: SocketHandle, buf: cstring, len, flags: cint,
|
||||||
fromm: ptr TSockAddr, fromlen: ptr TSockLen): cint {.
|
fromm: ptr SockAddr, fromlen: ptr SockLen): cint {.
|
||||||
stdcall, importc: "recvfrom", dynlib: ws2dll.}
|
stdcall, importc: "recvfrom", dynlib: ws2dll.}
|
||||||
proc select*(nfds: cint, readfds, writefds, exceptfds: ptr TFdSet,
|
proc select*(nfds: cint, readfds, writefds, exceptfds: ptr FdSet,
|
||||||
timeout: ptr TTimeval): cint {.
|
timeout: ptr Timeval): cint {.
|
||||||
stdcall, importc: "select", dynlib: ws2dll.}
|
stdcall, importc: "select", dynlib: ws2dll.}
|
||||||
proc send*(s: SocketHandle, buf: pointer, len, flags: cint): cint {.
|
proc send*(s: SocketHandle, buf: pointer, len, flags: cint): cint {.
|
||||||
stdcall, importc: "send", dynlib: ws2dll.}
|
stdcall, importc: "send", dynlib: ws2dll.}
|
||||||
proc sendto*(s: SocketHandle, buf: pointer, len, flags: cint,
|
proc sendto*(s: SocketHandle, buf: pointer, len, flags: cint,
|
||||||
to: ptr TSockAddr, tolen: TSockLen): cint {.
|
to: ptr SockAddr, tolen: SockLen): cint {.
|
||||||
stdcall, importc: "sendto", dynlib: ws2dll.}
|
stdcall, importc: "sendto", dynlib: ws2dll.}
|
||||||
|
|
||||||
proc shutdown*(s: SocketHandle, how: cint): cint {.
|
proc shutdown*(s: SocketHandle, how: cint): cint {.
|
||||||
stdcall, importc: "shutdown", dynlib: ws2dll.}
|
stdcall, importc: "shutdown", dynlib: ws2dll.}
|
||||||
|
|
||||||
proc getnameinfo*(a1: ptr TSockAddr, a2: TSockLen,
|
proc getnameinfo*(a1: ptr SockAddr, a2: SockLen,
|
||||||
a3: cstring, a4: TSockLen, a5: cstring,
|
a3: cstring, a4: SockLen, a5: cstring,
|
||||||
a6: TSockLen, a7: cint): cint {.
|
a6: SockLen, a7: cint): cint {.
|
||||||
stdcall, importc: "getnameinfo", dynlib: ws2dll.}
|
stdcall, importc: "getnameinfo", dynlib: ws2dll.}
|
||||||
|
|
||||||
proc inet_addr*(cp: cstring): int32 {.
|
proc inet_addr*(cp: cstring): int32 {.
|
||||||
stdcall, importc: "inet_addr", dynlib: ws2dll.}
|
stdcall, importc: "inet_addr", dynlib: ws2dll.}
|
||||||
|
|
||||||
proc WSAFDIsSet(s: SocketHandle, FDSet: var TFdSet): bool {.
|
proc WSAFDIsSet(s: SocketHandle, set: var FdSet): bool {.
|
||||||
stdcall, importc: "__WSAFDIsSet", dynlib: ws2dll, noSideEffect.}
|
stdcall, importc: "__WSAFDIsSet", dynlib: ws2dll, noSideEffect.}
|
||||||
|
|
||||||
proc FD_ISSET*(Socket: SocketHandle, FDSet: var TFdSet): cint =
|
proc FD_ISSET*(Socket: SocketHandle, set: var FdSet): cint =
|
||||||
result = if WSAFDIsSet(Socket, FDSet): 1'i32 else: 0'i32
|
result = if WSAFDIsSet(Socket, set): 1'i32 else: 0'i32
|
||||||
|
|
||||||
proc FD_SET*(Socket: SocketHandle, FDSet: var TFdSet) =
|
proc fdSet*(socket: SocketHandle, s: var FdSet) =
|
||||||
if FDSet.fd_count < FD_SETSIZE:
|
if s.fd_count < FD_SETSIZE:
|
||||||
FDSet.fd_array[int(FDSet.fd_count)] = Socket
|
s.fd_array[int(s.fd_count)] = socket
|
||||||
inc(FDSet.fd_count)
|
inc(s.fd_count)
|
||||||
|
|
||||||
proc FD_ZERO*(FDSet: var TFdSet) =
|
proc FD_ZERO*(s: var FdSet) =
|
||||||
FDSet.fd_count = 0
|
s.fd_count = 0
|
||||||
|
|
||||||
proc wsaStartup*(wVersionRequired: int16, WSData: ptr TWSAData): cint {.
|
proc wsaStartup*(wVersionRequired: int16, WSData: ptr WSAData): cint {.
|
||||||
stdcall, importc: "WSAStartup", dynlib: ws2dll.}
|
stdcall, importc: "WSAStartup", dynlib: ws2dll.}
|
||||||
|
|
||||||
proc getaddrinfo*(nodename, servname: cstring, hints: ptr TAddrInfo,
|
proc getaddrinfo*(nodename, servname: cstring, hints: ptr AddrInfo,
|
||||||
res: var ptr TAddrInfo): cint {.
|
res: var ptr AddrInfo): cint {.
|
||||||
stdcall, importc: "getaddrinfo", dynlib: ws2dll.}
|
stdcall, importc: "getaddrinfo", dynlib: ws2dll.}
|
||||||
|
|
||||||
proc freeaddrinfo*(ai: ptr TAddrInfo) {.
|
proc freeaddrinfo*(ai: ptr AddrInfo) {.
|
||||||
stdcall, importc: "freeaddrinfo", dynlib: ws2dll.}
|
stdcall, importc: "freeaddrinfo", dynlib: ws2dll.}
|
||||||
|
|
||||||
proc inet_ntoa*(i: TInAddr): cstring {.
|
proc inet_ntoa*(i: InAddr): cstring {.
|
||||||
stdcall, importc, dynlib: ws2dll.}
|
stdcall, importc, dynlib: ws2dll.}
|
||||||
|
|
||||||
const
|
const
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue