Merge branch 'devel' of https://github.com/Araq/Nim into devel

This commit is contained in:
Araq 2014-12-30 23:20:50 +01:00
commit 9c70ff3b7e
3 changed files with 38 additions and 22 deletions

View file

@ -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")

View file

@ -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

View file

@ -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.}