From 67e9f2861e3e3139d26b2b0aba4c16508f3111a3 Mon Sep 17 00:00:00 2001 From: Araq Date: Thu, 10 Oct 2013 00:39:10 +0200 Subject: [PATCH] some fixes for win64 --- lib/pure/sockets.nim | 4 ++-- lib/system.nim | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/pure/sockets.nim b/lib/pure/sockets.nim index fe4d3c2a40..c8a4171ab3 100644 --- a/lib/pure/sockets.nim +++ b/lib/pure/sockets.nim @@ -1605,8 +1605,8 @@ when defined(Windows): const IOCPARM_MASK = 127 IOC_IN = int(-2147483648) - FIONBIO = int(IOC_IN or ((sizeof(int) and IOCPARM_MASK) shl 16) or - (102 shl 8) or 126) + FIONBIO = IOC_IN.int32 or ((sizeof(int32) and IOCPARM_MASK) shl 16) or + (102 shl 8) or 126 proc ioctlsocket(s: TWinSocket, cmd: clong, argptr: ptr clong): cint {. diff --git a/lib/system.nim b/lib/system.nim index 51f3259972..1749125192 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -998,6 +998,13 @@ type ## compiler supports. Currently this is ``float64``, but it is ## platform-dependant in general. +when defined(windows): + type clong* {.importc: "long", nodecl.} = int32 + ## This is the same as the type ``long`` in *C*. +else: + type clong* {.importc: "long", nodecl.} = int + ## This is the same as the type ``long`` in *C*. + type # these work for most platforms: cchar* {.importc: "char", nodecl.} = char ## This is the same as the type ``char`` in *C*. @@ -1009,8 +1016,6 @@ type # these work for most platforms: ## This is the same as the type ``int`` in *C*. csize* {.importc: "size_t", nodecl.} = int ## This is the same as the type ``size_t`` in *C*. - clong* {.importc: "long", nodecl.} = int - ## This is the same as the type ``long`` in *C*. clonglong* {.importc: "long long", nodecl.} = int64 ## This is the same as the type ``long long`` in *C*. cfloat* {.importc: "float", nodecl.} = float32