summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/pure/asyncdispatch.nim22
-rw-r--r--lib/pure/rawsockets.nim34
-rw-r--r--lib/system/sysio.nim5
3 files changed, 32 insertions, 29 deletions
diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim
index b172f18b3..f37ae79e3 100644
--- a/lib/pure/asyncdispatch.nim
+++ b/lib/pure/asyncdispatch.nim
@@ -154,7 +154,7 @@ when defined(windows) or defined(nimdoc):
     let p = getGlobalDispatcher()
     if CreateIOCompletionPort(sock.THandle, p.ioPort,
                               cast[TCompletionKey](sock), 1) == 0:
-      OSError(OSLastError())
+      osError(osLastError())
     p.handles.incl(sock)
 
   proc verifyPresence(sock: TAsyncFD) =
@@ -191,7 +191,7 @@ when defined(windows) or defined(nimdoc):
           lpNumberOfBytesTransferred, TOSErrorCode(-1))
       dealloc(customOverlapped)
     else:
-      let errCode = OSLastError()
+      let errCode = osLastError()
       if lpOverlapped != nil:
         assert customOverlapped.data.sock == lpCompletionKey.TAsyncFD
         customOverlapped.data.cb(customOverlapped.data.sock,
@@ -201,7 +201,7 @@ when defined(windows) or defined(nimdoc):
         if errCode.int32 == WAIT_TIMEOUT:
           # Timed out
           discard
-        else: OSError(errCode)
+        else: osError(errCode)
 
   var connectExPtr: pointer = nil
   var acceptExPtr: pointer = nil
@@ -218,11 +218,11 @@ when defined(windows) or defined(nimdoc):
   proc initAll() =
     let dummySock = newRawSocket()
     if not initPointer(dummySock, connectExPtr, WSAID_CONNECTEX):
-      OSError(OSLastError())
+      osError(osLastError())
     if not initPointer(dummySock, acceptExPtr, WSAID_ACCEPTEX):
-      OSError(OSLastError())
+      osError(osLastError())
     if not initPointer(dummySock, getAcceptExSockAddrsPtr, WSAID_GETACCEPTEXSOCKADDRS):
-      OSError(OSLastError())
+      osError(osLastError())
 
   proc connectEx(s: TSocketHandle, name: ptr TSockAddr, namelen: cint, 
                   lpSendBuffer: pointer, dwSendDataLength: dword,
@@ -283,7 +283,7 @@ when defined(windows) or defined(nimdoc):
     saddr.sin_addr.s_addr = INADDR_ANY
     if bindAddr(socket.TSocketHandle, cast[ptr TSockAddr](addr(saddr)),
                   sizeof(saddr).TSockLen) < 0'i32:
-      OSError(OSLastError())
+      osError(osLastError())
 
     var aiList = getAddrInfo(address, port, af)
     var success = false
@@ -314,7 +314,7 @@ when defined(windows) or defined(nimdoc):
         # free ``ol``.
         break
       else:
-        lastError = OSLastError()
+        lastError = osLastError()
         if lastError.int32 == ERROR_IO_PENDING:
           # In this case ``ol`` will be deallocated in ``poll``.
           success = true
@@ -334,7 +334,7 @@ when defined(windows) or defined(nimdoc):
     ## Reads **up to** ``size`` bytes from ``socket``. Returned future will
     ## complete once all the data requested is read, a part of the data has been
     ## read, or the socket has disconnected in which case the future will
-    ## complete with a value of ``""`.
+    ## complete with a value of ``""``.
 
 
     # Things to note:
@@ -370,7 +370,7 @@ when defined(windows) or defined(nimdoc):
     let ret = WSARecv(socket.TSocketHandle, addr dataBuf, 1, addr bytesReceived,
                       addr flagsio, cast[POverlapped](ol), nil)
     if ret == -1:
-      let err = OSLastError()
+      let err = osLastError()
       if err.int32 != ERROR_IO_PENDING:
         retFuture.fail(newException(EOS, osErrorMsg(err)))
         dealloc(ol)
@@ -449,7 +449,7 @@ when defined(windows) or defined(nimdoc):
     var retFuture = newFuture[tuple[address: string, client: TAsyncFD]]()
 
     var clientSock = newRawSocket()
-    if clientSock == OSInvalidSocket: osError(osLastError())
+    if clientSock == osInvalidSocket: osError(osLastError())
 
     const lpOutputLen = 1024
     var lpOutputBuf = newString(lpOutputLen)
diff --git a/lib/pure/rawsockets.nim b/lib/pure/rawsockets.nim
index aeaa7f3b5..07b647b68 100644
--- a/lib/pure/rawsockets.nim
+++ b/lib/pure/rawsockets.nim
@@ -17,7 +17,9 @@ import unsigned, os
 when hostos == "solaris":
   {.passl: "-lsocket -lnsl".}
 
-when defined(Windows):
+const useWinVersion = defined(Windows) or defined(nimdoc)
+
+when useWinVersion:
   import winlean
   export WSAEWOULDBLOCK
 else:
@@ -74,7 +76,7 @@ type
     length*: int
     addrList*: seq[string]
 
-when defined(windows):
+when useWinVersion:
   let
     osInvalidSocket* = winlean.INVALID_SOCKET
 
@@ -106,7 +108,7 @@ proc toInt*(typ: TType): cint
 proc toInt*(p: TProtocol): cint
   ## Converts the TProtocol enum to a platform-dependent ``cint``.
 
-when defined(posix):
+when not useWinVersion:
   proc toInt(domain: TDomain): cint =
     case domain
     of AF_UNIX:        result = posix.AF_UNIX
@@ -150,7 +152,7 @@ proc newRawSocket*(domain: TDomain = AF_INET, typ: TType = SOCK_STREAM,
 
 proc close*(socket: TSocketHandle) =
   ## closes a socket.
-  when defined(windows):
+  when useWinVersion:
     discard winlean.closeSocket(socket)
   else:
     discard posix.close(socket)
@@ -164,7 +166,7 @@ proc listen*(socket: TSocketHandle, backlog = SOMAXCONN): cint {.tags: [FReadIO]
   ## Marks ``socket`` as accepting connections. 
   ## ``Backlog`` specifies the maximum length of the 
   ## queue of pending connections.
-  when defined(windows):
+  when useWinVersion:
     result = winlean.listen(socket, cint(backlog))
   else:
     result = posix.listen(socket, cint(backlog))
@@ -181,8 +183,8 @@ proc getAddrInfo*(address: string, port: TPort, af: TDomain = AF_INET, typ: TTyp
   hints.ai_protocol = toInt(prot)
   var gaiResult = getAddrInfo(address, $port, addr(hints), result)
   if gaiResult != 0'i32:
-    when defined(windows):
-      OSError(OSLastError())
+    when useWinVersion:
+      osError(osLastError())
     else:
       raise newException(EOS, $gai_strerror(gaiResult))
 
@@ -224,7 +226,7 @@ proc getServByName*(name, proto: string): TServent {.tags: [FReadIO].} =
   ## and the protocol name specified by ``proto`` matches the s_proto member.
   ##
   ## On posix this will search through the ``/etc/services`` file.
-  when defined(Windows):
+  when useWinVersion:
     var s = winlean.getservbyname(name, proto)
   else:
     var s = posix.getservbyname(name, proto)
@@ -240,7 +242,7 @@ proc getServByPort*(port: TPort, proto: string): TServent {.tags: [FReadIO].} =
   ## protocol name specified by ``proto`` matches the s_proto member.
   ##
   ## On posix this will search through the ``/etc/services`` file.
-  when defined(Windows):
+  when useWinVersion:
     var s = winlean.getservbyport(ze(int16(port)).cint, proto)
   else:
     var s = posix.getservbyport(ze(int16(port)).cint, proto)
@@ -255,7 +257,7 @@ proc getHostByAddr*(ip: string): Thostent {.tags: [FReadIO].} =
   var myaddr: TInAddr
   myaddr.s_addr = inet_addr(ip)
   
-  when defined(windows):
+  when useWinVersion:
     var s = winlean.gethostbyaddr(addr(myaddr), sizeof(myaddr).cuint,
                                   cint(rawsockets.AF_INET))
     if s == nil: osError(osLastError())
@@ -267,7 +269,7 @@ proc getHostByAddr*(ip: string): Thostent {.tags: [FReadIO].} =
   
   result.name = $s.h_name
   result.aliases = cstringArrayToSeq(s.h_aliases)
-  when defined(windows): 
+  when useWinVersion: 
     result.addrtype = TDomain(s.h_addrtype)
   else:
     if s.h_addrtype == posix.AF_INET:
@@ -281,14 +283,14 @@ proc getHostByAddr*(ip: string): Thostent {.tags: [FReadIO].} =
 
 proc getHostByName*(name: string): Thostent {.tags: [FReadIO].} = 
   ## This function will lookup the IP address of a hostname.
-  when defined(Windows):
+  when useWinVersion:
     var s = winlean.gethostbyname(name)
   else:
     var s = posix.gethostbyname(name)
   if s == nil: osError(osLastError())
   result.name = $s.h_name
   result.aliases = cstringArrayToSeq(s.h_aliases)
-  when defined(windows): 
+  when useWinVersion: 
     result.addrtype = TDomain(s.h_addrtype)
   else:
     if s.h_addrtype == posix.AF_INET:
@@ -303,7 +305,7 @@ proc getHostByName*(name: string): Thostent {.tags: [FReadIO].} =
 proc getSockName*(socket: TSocketHandle): TPort = 
   ## returns the socket's associated port number.
   var name: Tsockaddr_in
-  when defined(Windows):
+  when useWinVersion:
     name.sin_family = int16(ord(AF_INET))
   else:
     name.sin_family = posix.AF_INET
@@ -337,7 +339,7 @@ proc setBlocking*(s: TSocketHandle, blocking: bool) =
   ## Sets blocking mode on socket.
   ##
   ## Raises EOS on error.
-  when defined(Windows):
+  when useWinVersion:
     var mode = clong(ord(not blocking)) # 1 for non-blocking, 0 for blocking
     if ioctlsocket(s, FIONBIO, addr(mode)) == -1:
       osError(osLastError())
@@ -418,4 +420,4 @@ proc selectWrite*(writefds: var seq[TSocketHandle],
 
 when defined(Windows):
   var wsa: TWSADATA
-  if WSAStartup(0x0101'i16, addr wsa) != 0: OSError(OSLastError())
+  if WSAStartup(0x0101'i16, addr wsa) != 0: osError(osLastError())
diff --git a/lib/system/sysio.nim b/lib/system/sysio.nim
index 56e6a9e5f..02c17b92b 100644
--- a/lib/system/sysio.nim
+++ b/lib/system/sysio.nim
@@ -176,9 +176,10 @@ proc rawEchoNL() {.inline, compilerproc.} = write(stdout, "\n")
 
 # interface to the C procs:
 
-when defined(windows) and not defined(useWinAnsi):
+when (defined(windows) and not defined(useWinAnsi)) or defined(nimdoc):
   include "system/widestrs"
-  
+
+when defined(windows) and not defined(useWinAnsi):  
   proc wfopen(filename, mode: WideCString): pointer {.
     importc: "_wfopen", nodecl.}
   proc wfreopen(filename, mode: WideCString, stream: TFile): TFile {.