Merge branch 'devel' of https://github.com/Araq/Nim into devel
This commit is contained in:
commit
9c70ff3b7e
3 changed files with 38 additions and 22 deletions
|
|
@ -35,7 +35,15 @@ proc getSystemVersion*(): string =
|
||||||
elif $unix_info.sysname == "Darwin":
|
elif $unix_info.sysname == "Darwin":
|
||||||
# Darwin
|
# Darwin
|
||||||
result.add("Mac OS X ")
|
result.add("Mac OS X ")
|
||||||
if "10" in $unix_info.release:
|
if "14" in $unix_info.release:
|
||||||
|
result.add("v10.10 Yosemite")
|
||||||
|
elif "13" in $unix_info.release:
|
||||||
|
result.add("v10.9 Mavericks")
|
||||||
|
elif "12" in $unix_info.release:
|
||||||
|
result.add("v10.8 Mountian Lion")
|
||||||
|
elif "11" in $unix_info.release:
|
||||||
|
result.add("v10.7 Lion")
|
||||||
|
elif "10" in $unix_info.release:
|
||||||
result.add("v10.6 Snow Leopard")
|
result.add("v10.6 Snow Leopard")
|
||||||
elif "9" in $unix_info.release:
|
elif "9" in $unix_info.release:
|
||||||
result.add("v10.5 Leopard")
|
result.add("v10.5 Leopard")
|
||||||
|
|
|
||||||
|
|
@ -245,6 +245,14 @@ proc `$`*(osvi: TVersionInfo): string =
|
||||||
if osvi.ProductType == VER_NT_WORKSTATION:
|
if osvi.ProductType == VER_NT_WORKSTATION:
|
||||||
result.add("Windows 7 ")
|
result.add("Windows 7 ")
|
||||||
else: result.add("Windows Server 2008 R2 ")
|
else: result.add("Windows Server 2008 R2 ")
|
||||||
|
elif osvi.minorVersion == 2:
|
||||||
|
if osvi.ProductType == VER_NT_WORKSTATION:
|
||||||
|
result.add("Windows 8 ")
|
||||||
|
else: result.add("Windows Server 2012 ")
|
||||||
|
elif osvi.minorVersion == 3:
|
||||||
|
if osvi.ProductType == VER_NT_WORKSTATION:
|
||||||
|
result.add("Windows 8.1 ")
|
||||||
|
else: result.add("Windows Server 2012 R2 ")
|
||||||
|
|
||||||
var dwType = getProductInfo(osvi.majorVersion, osvi.minorVersion, 0, 0)
|
var dwType = getProductInfo(osvi.majorVersion, osvi.minorVersion, 0, 0)
|
||||||
case dwType
|
case dwType
|
||||||
|
|
|
||||||
|
|
@ -368,32 +368,32 @@ type
|
||||||
{.deprecated: [TSocketHandle: SocketHandle].}
|
{.deprecated: [TSocketHandle: SocketHandle].}
|
||||||
|
|
||||||
type
|
type
|
||||||
WSAData* {.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
|
||||||
|
|
||||||
SockAddr* {.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]
|
||||||
|
|
||||||
InAddr* {.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
|
||||||
|
|
||||||
Sockaddr_in* {.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*: InAddr
|
sin_addr*: InAddr
|
||||||
sin_zero*: array[0..7, char]
|
sin_zero*: array[0..7, char]
|
||||||
|
|
||||||
In6_addr* {.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]
|
||||||
|
|
||||||
Sockaddr_in6* {.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
|
||||||
|
|
@ -450,22 +450,22 @@ type
|
||||||
|
|
||||||
|
|
||||||
var
|
var
|
||||||
SOMAXCONN* {.importc, header: "Winsock2.h".}: cint
|
SOMAXCONN* {.importc, header: "winsock2.h".}: cint
|
||||||
INVALID_SOCKET* {.importc, header: "Winsock2.h".}: SocketHandle
|
INVALID_SOCKET* {.importc, header: "winsock2.h".}: SocketHandle
|
||||||
SOL_SOCKET* {.importc, header: "Winsock2.h".}: cint
|
SOL_SOCKET* {.importc, header: "winsock2.h".}: cint
|
||||||
SO_DEBUG* {.importc, header: "Winsock2.h".}: cint ## turn on debugging info recording
|
SO_DEBUG* {.importc, header: "winsock2.h".}: cint ## turn on debugging info recording
|
||||||
SO_ACCEPTCONN* {.importc, header: "Winsock2.h".}: cint # socket has had listen()
|
SO_ACCEPTCONN* {.importc, header: "winsock2.h".}: cint # socket has had listen()
|
||||||
SO_REUSEADDR* {.importc, header: "Winsock2.h".}: cint # allow local address reuse
|
SO_REUSEADDR* {.importc, header: "winsock2.h".}: cint # allow local address reuse
|
||||||
SO_KEEPALIVE* {.importc, header: "Winsock2.h".}: cint # keep connections alive
|
SO_KEEPALIVE* {.importc, header: "winsock2.h".}: cint # keep connections alive
|
||||||
SO_DONTROUTE* {.importc, header: "Winsock2.h".}: cint # just use interface addresses
|
SO_DONTROUTE* {.importc, header: "winsock2.h".}: cint # just use interface addresses
|
||||||
SO_BROADCAST* {.importc, header: "Winsock2.h".}: cint # permit sending of broadcast msgs
|
SO_BROADCAST* {.importc, header: "winsock2.h".}: cint # permit sending of broadcast msgs
|
||||||
SO_USELOOPBACK* {.importc, header: "Winsock2.h".}: cint # bypass hardware when possible
|
SO_USELOOPBACK* {.importc, header: "winsock2.h".}: cint # bypass hardware when possible
|
||||||
SO_LINGER* {.importc, header: "Winsock2.h".}: cint # linger on close if data present
|
SO_LINGER* {.importc, header: "winsock2.h".}: cint # linger on close if data present
|
||||||
SO_OOBINLINE* {.importc, header: "Winsock2.h".}: cint # leave received OOB data in line
|
SO_OOBINLINE* {.importc, header: "winsock2.h".}: cint # leave received OOB data in line
|
||||||
|
|
||||||
SO_DONTLINGER* {.importc, header: "Winsock2.h".}: cint
|
SO_DONTLINGER* {.importc, header: "winsock2.h".}: cint
|
||||||
SO_EXCLUSIVEADDRUSE* {.importc, header: "Winsock2.h".}: cint # disallow local address reuse
|
SO_EXCLUSIVEADDRUSE* {.importc, header: "winsock2.h".}: cint # disallow local address reuse
|
||||||
SO_ERROR* {.importc, header: "Winsock2.h".}: cint
|
SO_ERROR* {.importc, header: "winsock2.h".}: cint
|
||||||
|
|
||||||
proc `==`*(x, y: SocketHandle): bool {.borrow.}
|
proc `==`*(x, y: SocketHandle): bool {.borrow.}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue