mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 09:24:36 +00:00
big rename
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#
|
||||
#
|
||||
# Nimrod's Runtime Library
|
||||
# Nim's Runtime Library
|
||||
# (c) Copyright 2012 Andreas Rumpf
|
||||
#
|
||||
# See the file "copying.txt", included in this
|
||||
@@ -384,12 +384,12 @@ type
|
||||
sched_ss_max_repl*: cint ## Maximum pending replenishments for
|
||||
## sporadic server.
|
||||
|
||||
Ttimeval* {.importc: "struct timeval", header: "<sys/select.h>",
|
||||
final, pure.} = object ## struct timeval
|
||||
Timeval* {.importc: "struct timeval", header: "<sys/select.h>",
|
||||
final, pure.} = object ## struct timeval
|
||||
tv_sec*: int ## Seconds.
|
||||
tv_usec*: int ## Microseconds.
|
||||
TFdSet* {.importc: "fd_set", header: "<sys/select.h>",
|
||||
final, pure.} = object
|
||||
FdSet* {.importc: "fd_set", header: "<sys/select.h>",
|
||||
final, pure.} = object
|
||||
Tmcontext* {.importc: "mcontext_t", header: "<ucontext.h>",
|
||||
final, pure.} = object
|
||||
Tucontext* {.importc: "ucontext_t", header: "<ucontext.h>",
|
||||
@@ -422,11 +422,11 @@ when hasSpawnH:
|
||||
header: "<spawn.h>", final, pure.} = object
|
||||
|
||||
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
|
||||
|
||||
TSockAddr* {.importc: "struct sockaddr", header: "<sys/socket.h>",
|
||||
pure, final.} = object ## struct sockaddr
|
||||
SockAddr* {.importc: "struct sockaddr", header: "<sys/socket.h>",
|
||||
pure, final.} = object ## struct sockaddr
|
||||
sa_family*: TSa_Family ## Address family.
|
||||
sa_data*: array [0..255, char] ## Socket address (variable-length data).
|
||||
|
||||
@@ -474,15 +474,15 @@ type
|
||||
TInAddrT* {.importc: "in_addr_t", pure, final,
|
||||
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
|
||||
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
|
||||
sin_family*: TSa_Family ## AF_INET.
|
||||
sin_port*: TInPort ## Port number.
|
||||
sin_addr*: TInAddr ## IP address.
|
||||
sin_addr*: InAddr ## IP address.
|
||||
|
||||
TIn6Addr* {.importc: "struct in6_addr", pure, final,
|
||||
header: "<netinet/in.h>".} = object ## struct in6_addr
|
||||
@@ -501,7 +501,7 @@ type
|
||||
ipv6mr_multiaddr*: TIn6Addr ## IPv6 multicast address.
|
||||
ipv6mr_interface*: cint ## Interface index.
|
||||
|
||||
Thostent* {.importc: "struct hostent", pure, final,
|
||||
Hostent* {.importc: "struct hostent", pure, final,
|
||||
header: "<netdb.h>".} = object ## struct hostent
|
||||
h_name*: cstring ## Official name of the host.
|
||||
h_aliases*: cstringArray ## A pointer to an array of pointers to
|
||||
@@ -531,8 +531,8 @@ type
|
||||
## a null pointer.
|
||||
p_proto*: cint ## The protocol number.
|
||||
|
||||
TServent* {.importc: "struct servent", pure, final,
|
||||
header: "<netdb.h>".} = object ## struct servent
|
||||
Servent* {.importc: "struct servent", pure, final,
|
||||
header: "<netdb.h>".} = object ## struct servent
|
||||
s_name*: cstring ## Official name of the service.
|
||||
s_aliases*: cstringArray ## A pointer to an array of pointers to
|
||||
## alternative service names, terminated by
|
||||
@@ -542,16 +542,16 @@ type
|
||||
s_proto*: cstring ## The name of the protocol to use when
|
||||
## contacting the service.
|
||||
|
||||
Taddrinfo* {.importc: "struct addrinfo", pure, final,
|
||||
AddrInfo* {.importc: "struct addrinfo", pure, final,
|
||||
header: "<netdb.h>".} = object ## struct addrinfo
|
||||
ai_flags*: cint ## Input flags.
|
||||
ai_family*: cint ## Address family of socket.
|
||||
ai_socktype*: cint ## Socket type.
|
||||
ai_protocol*: cint ## Protocol of socket.
|
||||
ai_addrlen*: TSocklen ## Length of socket address.
|
||||
ai_addr*: ptr TSockAddr ## Socket address of socket.
|
||||
ai_addrlen*: Socklen ## Length of socket address.
|
||||
ai_addr*: ptr SockAddr ## Socket address of socket.
|
||||
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,
|
||||
header: "<poll.h>".} = object ## struct pollfd
|
||||
@@ -561,6 +561,11 @@ type
|
||||
|
||||
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
|
||||
errno* {.importc, header: "<errno.h>".}: cint ## error variable
|
||||
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 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 {.
|
||||
importc, header: "<arpa/inet.h>".}
|
||||
proc inet_pton*(a1: cint, a2: cstring, a3: pointer): cint {.
|
||||
importc, header: "<arpa/inet.h>".}
|
||||
|
||||
var
|
||||
in6addr_any* {.importc, header: "<netinet/in.h>".}: TIn6Addr
|
||||
in6addr_loopback* {.importc, header: "<netinet/in.h>".}: TIn6Addr
|
||||
in6addr_any* {.importc, header: "<netinet/in.h>".}: In6_addr
|
||||
in6addr_loopback* {.importc, header: "<netinet/in.h>".}: In6_addr
|
||||
|
||||
proc IN6ADDR_ANY_INIT* (): TIn6Addr {.importc, header: "<netinet/in.h>".}
|
||||
proc IN6ADDR_LOOPBACK_INIT* (): TIn6Addr {.importc, header: "<netinet/in.h>".}
|
||||
proc IN6ADDR_ANY_INIT* (): In6_addr {.importc, header: "<netinet/in.h>".}
|
||||
proc IN6ADDR_LOOPBACK_INIT* (): In6_addr {.importc, header: "<netinet/in.h>".}
|
||||
|
||||
# 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 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 posix_fadvise*(a1: cint, a2, a3: TOff, a4: cint): cint {.
|
||||
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 chdir*(a1: cstring): 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 crypt*(a1, a2: 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 hstrerror*(herrnum: cint): cstring {.importc, header: "<netdb.h>".}
|
||||
|
||||
proc FD_CLR*(a1: cint, a2: var TFdSet) {.importc, header: "<sys/select.h>".}
|
||||
proc FD_ISSET*(a1: cint | TSocketHandle, a2: var TFdSet): cint {.
|
||||
proc FD_CLR*(a1: cint, a2: var FdSet) {.importc, header: "<sys/select.h>".}
|
||||
proc FD_ISSET*(a1: cint | SocketHandle, a2: var FdSet): cint {.
|
||||
importc, header: "<sys/select.h>".}
|
||||
proc FD_SET*(a1: cint | TSocketHandle, a2: var TFdSet) {.importc, header: "<sys/select.h>".}
|
||||
proc FD_ZERO*(a1: 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 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>".}
|
||||
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>".}
|
||||
|
||||
when hasSpawnH:
|
||||
@@ -2458,48 +2463,48 @@ proc CMSG_FIRSTHDR*(mhdr: ptr Tmsghdr): ptr Tcmsghdr {.
|
||||
importc, header: "<sys/socket.h>".}
|
||||
|
||||
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>".}
|
||||
|
||||
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>".}
|
||||
## 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>".}
|
||||
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>".}
|
||||
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>".}
|
||||
|
||||
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>".}
|
||||
|
||||
proc listen*(a1: TSocketHandle, a2: cint): cint {.
|
||||
proc listen*(a1: SocketHandle, a2: cint): cint {.
|
||||
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>".}
|
||||
proc recvfrom*(a1: TSocketHandle, a2: pointer, a3: int, a4: cint,
|
||||
a5: ptr TSockAddr, a6: ptr TSocklen): int {.
|
||||
proc recvfrom*(a1: SocketHandle, a2: pointer, a3: int, a4: cint,
|
||||
a5: ptr SockAddr, a6: ptr Socklen): int {.
|
||||
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>".}
|
||||
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>".}
|
||||
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>".}
|
||||
proc sendto*(a1: TSocketHandle, a2: pointer, a3: int, a4: cint, a5: ptr TSockAddr,
|
||||
a6: TSocklen): int {.
|
||||
proc sendto*(a1: SocketHandle, a2: pointer, a3: int, a4: cint, a5: ptr SockAddr,
|
||||
a6: Socklen): int {.
|
||||
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>".}
|
||||
proc shutdown*(a1: TSocketHandle, a2: cint): cint {.
|
||||
proc shutdown*(a1: SocketHandle, a2: cint): cint {.
|
||||
importc, header: "<sys/socket.h>".}
|
||||
proc socket*(a1, a2, a3: cint): TSocketHandle {.
|
||||
proc socket*(a1, a2, a3: cint): SocketHandle {.
|
||||
importc, header: "<sys/socket.h>".}
|
||||
proc sockatmark*(a1: cint): cint {.
|
||||
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_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>".}
|
||||
## 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>".}
|
||||
## 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>".}
|
||||
## 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>".}
|
||||
## 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>".}
|
||||
## 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>".}
|
||||
## 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>".}
|
||||
## 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>".}
|
||||
## 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>".}
|
||||
## 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>".}
|
||||
## 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>".}
|
||||
## 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>".}
|
||||
## Multicast global address.
|
||||
|
||||
@@ -2553,21 +2558,21 @@ proc endhostent*() {.importc, header: "<netdb.h>".}
|
||||
proc endnetent*() {.importc, header: "<netdb.h>".}
|
||||
proc endprotoent*() {.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 getaddrinfo*(a1, a2: cstring, a3: ptr Taddrinfo,
|
||||
a4: var ptr Taddrinfo): cint {.importc, header: "<netdb.h>".}
|
||||
proc getaddrinfo*(a1, a2: cstring, a3: ptr AddrInfo,
|
||||
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>".}
|
||||
proc gethostbyname*(a1: cstring): ptr Thostent {.importc, header: "<netdb.h>".}
|
||||
proc gethostent*(): ptr Thostent {.importc, header: "<netdb.h>".}
|
||||
proc gethostbyname*(a1: cstring): ptr Hostent {.importc, header: "<netdb.h>".}
|
||||
proc gethostent*(): ptr Hostent {.importc, header: "<netdb.h>".}
|
||||
|
||||
proc getnameinfo*(a1: ptr TSockAddr, a2: TSocklen,
|
||||
a3: cstring, a4: TSocklen, a5: cstring,
|
||||
a6: TSocklen, a7: cint): cint {.importc, header: "<netdb.h>".}
|
||||
proc getnameinfo*(a1: ptr SockAddr, a2: Socklen,
|
||||
a3: cstring, a4: Socklen, a5: cstring,
|
||||
a6: Socklen, a7: cint): cint {.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>".}
|
||||
@@ -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 getprotoent*(): ptr TProtoent {.importc, header: "<netdb.h>".}
|
||||
|
||||
proc getservbyname*(a1, a2: cstring): ptr TServent {.importc, header: "<netdb.h>".}
|
||||
proc getservbyport*(a1: cint, a2: cstring): ptr TServent {.
|
||||
proc getservbyname*(a1, a2: cstring): ptr Servent {.importc, header: "<netdb.h>".}
|
||||
proc getservbyport*(a1: cint, a2: cstring): ptr Servent {.
|
||||
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 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 {.
|
||||
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>".}
|
||||
## Sets file access and modification times.
|
||||
##
|
||||
|
||||
@@ -1814,7 +1814,7 @@ proc sleep*(milsecs: int) {.rtl, extern: "nos$1", tags: [TimeEffect].} =
|
||||
winlean.sleep(int32(milsecs))
|
||||
else:
|
||||
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
|
||||
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.
|
||||
# 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)
|
||||
|
||||
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_socktype = toInt(typ)
|
||||
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:
|
||||
when useWinVersion:
|
||||
raiseOSError(osLastError())
|
||||
else:
|
||||
raise newException(EOS, $gai_strerror(gaiResult))
|
||||
raise newException(OSError, $gai_strerror(gaiResult))
|
||||
|
||||
proc dealloc*(ai: ptr AddrInfo) =
|
||||
freeaddrinfo(ai)
|
||||
@@ -268,7 +268,7 @@ proc getHostByAddr*(ip: string): Hostent {.tags: [ReadIOEffect].} =
|
||||
var s = posix.gethostbyaddr(addr(myaddr), sizeof(myaddr).Socklen,
|
||||
cint(posix.AF_INET))
|
||||
if s == nil:
|
||||
raise newException(EOS, $hstrerror(h_errno))
|
||||
raise newException(OSError, $hstrerror(h_errno))
|
||||
|
||||
result.name = $s.h_name
|
||||
result.aliases = cstringArrayToSeq(s.h_aliases)
|
||||
@@ -280,7 +280,7 @@ proc getHostByAddr*(ip: string): Hostent {.tags: [ReadIOEffect].} =
|
||||
elif s.h_addrtype == posix.AF_INET6:
|
||||
result.addrtype = AF_INET6
|
||||
else:
|
||||
raise newException(EOS, "unknown h_addrtype")
|
||||
raise newException(OSError, "unknown h_addrtype")
|
||||
result.addrList = cstringArrayToSeq(s.h_addr_list)
|
||||
result.length = int(s.h_length)
|
||||
|
||||
@@ -301,7 +301,7 @@ proc getHostByName*(name: string): Hostent {.tags: [ReadIOEffect].} =
|
||||
elif s.h_addrtype == posix.AF_INET6:
|
||||
result.addrtype = AF_INET6
|
||||
else:
|
||||
raise newException(EOS, "unknown h_addrtype")
|
||||
raise newException(OSError, "unknown h_addrtype")
|
||||
result.addrList = cstringArrayToSeq(s.h_addr_list)
|
||||
result.length = int(s.h_length)
|
||||
|
||||
@@ -314,7 +314,7 @@ proc getSockName*(socket: SocketHandle): Port =
|
||||
name.sin_family = posix.AF_INET
|
||||
#name.sin_port = htons(cint16(port))
|
||||
#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)),
|
||||
addr(namelen)) == -1'i32:
|
||||
raiseOSError(osLastError())
|
||||
@@ -324,7 +324,7 @@ proc getSockOptInt*(socket: SocketHandle, level, optname: int): int {.
|
||||
tags: [ReadIOEffect].} =
|
||||
## getsockopt for integer options.
|
||||
var res: cint
|
||||
var size = sizeof(res).SockLen
|
||||
var size = sizeof(res).Socklen
|
||||
if getsockopt(socket, cint(level), cint(optname),
|
||||
addr(res), addr(size)) < 0'i32:
|
||||
raiseOSError(osLastError())
|
||||
@@ -335,7 +335,7 @@ proc setSockOptInt*(socket: SocketHandle, level, optname, optval: int) {.
|
||||
## setsockopt for integer options.
|
||||
var value = cint(optval)
|
||||
if setsockopt(socket, cint(level), cint(optname), addr(value),
|
||||
sizeof(value).SockLen) < 0'i32:
|
||||
sizeof(value).Socklen) < 0'i32:
|
||||
raiseOSError(osLastError())
|
||||
|
||||
proc setBlocking*(s: SocketHandle, blocking: bool) =
|
||||
@@ -361,13 +361,13 @@ proc timeValFromMilliseconds(timeout = 500): Timeval =
|
||||
result.tv_sec = seconds.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)
|
||||
for i in items(s):
|
||||
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 L = s.len
|
||||
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
|
||||
## 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
|
||||
createFdSet((rd), readfds, m)
|
||||
|
||||
@@ -410,7 +410,7 @@ proc selectWrite*(writefds: var seq[SocketHandle],
|
||||
## an unlimited time.
|
||||
var tv {.noInit.}: Timeval = timeValFromMilliseconds(timeout)
|
||||
|
||||
var wr: TFdSet
|
||||
var wr: FdSet
|
||||
var m = 0
|
||||
createFdSet((wr), writefds, m)
|
||||
|
||||
@@ -422,5 +422,5 @@ proc selectWrite*(writefds: var seq[SocketHandle],
|
||||
pruneSocketSet(writefds, (wr))
|
||||
|
||||
when defined(Windows):
|
||||
var wsa: WSADATA
|
||||
if WSAStartup(0x0101'i16, addr wsa) != 0: raiseOSError(osLastError())
|
||||
var wsa: WSAData
|
||||
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)
|
||||
|
||||
# The 'mailto' scheme's PATH actually contains the hostname/username
|
||||
if result.scheme.ToLower() == "mailto":
|
||||
if result.scheme.toLower == "mailto":
|
||||
parseAuthority(result.path, result)
|
||||
result.path = ""
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
#
|
||||
# Nimrod's Runtime Library
|
||||
# Nim's Runtime Library
|
||||
# (c) Copyright 2012 Andreas Rumpf
|
||||
#
|
||||
# See the file "copying.txt", included in this
|
||||
@@ -368,45 +368,45 @@ type
|
||||
{.deprecated: [TSocketHandle: SocketHandle].}
|
||||
|
||||
type
|
||||
TWSAData* {.pure, final, importc: "WSADATA", header: "Winsock2.h".} = object
|
||||
WSAData* {.importc: "WSADATA", header: "Winsock2.h".} = object
|
||||
wVersion, wHighVersion: int16
|
||||
szDescription: array[0..WSADESCRIPTION_LEN, char]
|
||||
szSystemStatus: array[0..WSASYS_STATUS_LEN, char]
|
||||
iMaxSockets, iMaxUdpDg: int16
|
||||
lpVendorInfo: cstring
|
||||
|
||||
TSockAddr* {.pure, final, importc: "SOCKADDR", header: "Winsock2.h".} = object
|
||||
SockAddr* {.importc: "SOCKADDR", header: "Winsock2.h".} = object
|
||||
sa_family*: int16 # unsigned
|
||||
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
|
||||
|
||||
Tsockaddr_in* {.pure, final, importc: "SOCKADDR_IN",
|
||||
Sockaddr_in* {.importc: "SOCKADDR_IN",
|
||||
header: "Winsock2.h".} = object
|
||||
sin_family*: int16
|
||||
sin_port*: int16 # unsigned
|
||||
sin_addr*: TInAddr
|
||||
sin_addr*: InAddr
|
||||
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]
|
||||
|
||||
Tsockaddr_in6* {.pure, final, importc: "SOCKADDR_IN6",
|
||||
Sockaddr_in6* {.importc: "SOCKADDR_IN6",
|
||||
header: "Winsock2.h".} = object
|
||||
sin6_family*: int16
|
||||
sin6_port*: int16 # unsigned
|
||||
sin6_flowinfo*: int32 # unsigned
|
||||
sin6_addr*: Tin6_addr
|
||||
sin6_addr*: In6_addr
|
||||
sin6_scope_id*: int32 # unsigned
|
||||
|
||||
Tsockaddr_in6_old* {.pure, final.} = object
|
||||
Sockaddr_in6_old* = object
|
||||
sin6_family*: int16
|
||||
sin6_port*: int16 # unsigned
|
||||
sin6_flowinfo*: int32 # unsigned
|
||||
sin6_addr*: Tin6_addr
|
||||
sin6_addr*: In6_addr
|
||||
|
||||
TServent* {.pure, final.} = object
|
||||
Servent* = object
|
||||
s_name*: cstring
|
||||
s_aliases*: cstringArray
|
||||
when defined(cpu64):
|
||||
@@ -416,31 +416,38 @@ type
|
||||
s_port*: int16
|
||||
s_proto*: cstring
|
||||
|
||||
Thostent* {.pure, final.} = object
|
||||
Hostent* = object
|
||||
h_name*: cstring
|
||||
h_aliases*: cstringArray
|
||||
h_addrtype*: int16
|
||||
h_length*: int16
|
||||
h_addr_list*: cstringArray
|
||||
|
||||
TFdSet* {.pure, final.} = object
|
||||
FdSet* = object
|
||||
fd_count*: cint # unsigned
|
||||
fd_array*: array[0..FD_SETSIZE-1, SocketHandle]
|
||||
|
||||
TTimeval* {.pure, final.} = object
|
||||
Timeval* = object
|
||||
tv_sec*, tv_usec*: int32
|
||||
|
||||
TAddrInfo* {.pure, final.} = object
|
||||
AddrInfo* = object
|
||||
ai_flags*: cint ## Input flags.
|
||||
ai_family*: cint ## Address family of socket.
|
||||
ai_socktype*: cint ## Socket type.
|
||||
ai_protocol*: cint ## Protocol of socket.
|
||||
ai_addrlen*: int ## Length of socket address.
|
||||
ai_canonname*: cstring ## Canonical name of service location.
|
||||
ai_addr*: ptr TSockAddr ## Socket address of socket.
|
||||
ai_next*: ptr TAddrInfo ## Pointer to next in list.
|
||||
ai_addr*: ptr SockAddr ## Socket address of socket.
|
||||
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
|
||||
SOMAXCONN* {.importc, header: "Winsock2.h".}: cint
|
||||
@@ -462,16 +469,16 @@ var
|
||||
|
||||
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.}
|
||||
|
||||
proc getservbyport*(port: cint, proto: cstring): ptr TServent {.
|
||||
proc getservbyport*(port: cint, proto: cstring): ptr Servent {.
|
||||
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.}
|
||||
|
||||
proc gethostbyname*(name: cstring): ptr Thostent {.
|
||||
proc gethostbyname*(name: cstring): ptr Hostent {.
|
||||
stdcall, importc: "gethostbyname", dynlib: ws2dll.}
|
||||
|
||||
proc socket*(af, typ, protocol: cint): SocketHandle {.
|
||||
@@ -480,20 +487,20 @@ proc socket*(af, typ, protocol: cint): SocketHandle {.
|
||||
proc closesocket*(s: SocketHandle): cint {.
|
||||
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.}
|
||||
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.}
|
||||
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.}
|
||||
proc getsockname*(s: SocketHandle, name: ptr TSockAddr,
|
||||
namelen: ptr TSockLen): cint {.
|
||||
proc getsockname*(s: SocketHandle, name: ptr SockAddr,
|
||||
namelen: ptr SockLen): cint {.
|
||||
stdcall, importc: "getsockname", dynlib: ws2dll.}
|
||||
proc getsockopt*(s: SocketHandle, level, optname: cint, optval: pointer,
|
||||
optlen: ptr TSockLen): cint {.
|
||||
optlen: ptr SockLen): cint {.
|
||||
stdcall, importc: "getsockopt", dynlib: ws2dll.}
|
||||
proc setsockopt*(s: SocketHandle, level, optname: cint, optval: pointer,
|
||||
optlen: TSockLen): cint {.
|
||||
optlen: SockLen): cint {.
|
||||
stdcall, importc: "setsockopt", dynlib: ws2dll.}
|
||||
|
||||
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 {.
|
||||
stdcall, importc: "recv", dynlib: ws2dll.}
|
||||
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.}
|
||||
proc select*(nfds: cint, readfds, writefds, exceptfds: ptr TFdSet,
|
||||
timeout: ptr TTimeval): cint {.
|
||||
proc select*(nfds: cint, readfds, writefds, exceptfds: ptr FdSet,
|
||||
timeout: ptr Timeval): cint {.
|
||||
stdcall, importc: "select", dynlib: ws2dll.}
|
||||
proc send*(s: SocketHandle, buf: pointer, len, flags: cint): cint {.
|
||||
stdcall, importc: "send", dynlib: ws2dll.}
|
||||
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.}
|
||||
|
||||
proc shutdown*(s: SocketHandle, how: cint): cint {.
|
||||
stdcall, importc: "shutdown", dynlib: ws2dll.}
|
||||
|
||||
proc getnameinfo*(a1: ptr TSockAddr, a2: TSockLen,
|
||||
a3: cstring, a4: TSockLen, a5: cstring,
|
||||
a6: TSockLen, a7: cint): cint {.
|
||||
proc getnameinfo*(a1: ptr SockAddr, a2: SockLen,
|
||||
a3: cstring, a4: SockLen, a5: cstring,
|
||||
a6: SockLen, a7: cint): cint {.
|
||||
stdcall, importc: "getnameinfo", dynlib: ws2dll.}
|
||||
|
||||
proc inet_addr*(cp: cstring): int32 {.
|
||||
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.}
|
||||
|
||||
proc FD_ISSET*(Socket: SocketHandle, FDSet: var TFdSet): cint =
|
||||
result = if WSAFDIsSet(Socket, FDSet): 1'i32 else: 0'i32
|
||||
proc FD_ISSET*(Socket: SocketHandle, set: var FdSet): cint =
|
||||
result = if WSAFDIsSet(Socket, set): 1'i32 else: 0'i32
|
||||
|
||||
proc FD_SET*(Socket: SocketHandle, FDSet: var TFdSet) =
|
||||
if FDSet.fd_count < FD_SETSIZE:
|
||||
FDSet.fd_array[int(FDSet.fd_count)] = Socket
|
||||
inc(FDSet.fd_count)
|
||||
proc fdSet*(socket: SocketHandle, s: var FdSet) =
|
||||
if s.fd_count < FD_SETSIZE:
|
||||
s.fd_array[int(s.fd_count)] = socket
|
||||
inc(s.fd_count)
|
||||
|
||||
proc FD_ZERO*(FDSet: var TFdSet) =
|
||||
FDSet.fd_count = 0
|
||||
proc FD_ZERO*(s: var FdSet) =
|
||||
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.}
|
||||
|
||||
proc getaddrinfo*(nodename, servname: cstring, hints: ptr TAddrInfo,
|
||||
res: var ptr TAddrInfo): cint {.
|
||||
proc getaddrinfo*(nodename, servname: cstring, hints: ptr AddrInfo,
|
||||
res: var ptr AddrInfo): cint {.
|
||||
stdcall, importc: "getaddrinfo", dynlib: ws2dll.}
|
||||
|
||||
proc freeaddrinfo*(ai: ptr TAddrInfo) {.
|
||||
proc freeaddrinfo*(ai: ptr AddrInfo) {.
|
||||
stdcall, importc: "freeaddrinfo", dynlib: ws2dll.}
|
||||
|
||||
proc inet_ntoa*(i: TInAddr): cstring {.
|
||||
proc inet_ntoa*(i: InAddr): cstring {.
|
||||
stdcall, importc, dynlib: ws2dll.}
|
||||
|
||||
const
|
||||
|
||||
Reference in New Issue
Block a user