summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2014-03-02 23:46:32 +0100
committerAraq <rumpf_a@web.de>2014-03-02 23:46:32 +0100
commitdfeb0e8432d7da999b441ea26b7ad2e0eecc5178 (patch)
tree59bad5d5dea39e74ac5fb5948f5a8a80f522bfe5
parent614557994ec6143e20c1f2534f0a6fa87ca4c0c4 (diff)
parent0d263f155bc19fcd3797b212d177c22dc213a2d4 (diff)
downloadNim-dfeb0e8432d7da999b441ea26b7ad2e0eecc5178.tar.gz
Merge branch 'devel' of https://github.com/Araq/Nimrod into devel
-rw-r--r--lib/packages/docutils/highlite.nim7
-rw-r--r--lib/pure/osproc.nim3
-rw-r--r--lib/pure/sockets2.nim11
3 files changed, 17 insertions, 4 deletions
diff --git a/lib/packages/docutils/highlite.nim b/lib/packages/docutils/highlite.nim
index 4ca0c79e0..c507f5e1c 100644
--- a/lib/packages/docutils/highlite.nim
+++ b/lib/packages/docutils/highlite.nim
@@ -61,9 +61,8 @@ proc getSourceLanguage*(name: string): TSourceLanguage =
     if cmpIgnoreStyle(name, sourceLanguageToStr[i]) == 0: 
       return i
   result = langNone
-
-proc initGeneralTokenizer*(g: var TGeneralTokenizer, buf: string) = 
-  g.buf = cstring(buf)
+proc initGeneralTokenizer*(g: var TGeneralTokenizer, buf: cstring) =
+  g.buf = buf
   g.kind = low(TTokenClass)
   g.start = 0
   g.length = 0
@@ -71,6 +70,8 @@ proc initGeneralTokenizer*(g: var TGeneralTokenizer, buf: string) =
   var pos = 0                     # skip initial whitespace:
   while g.buf[pos] in {' ', '\x09'..'\x0D'}: inc(pos)
   g.pos = pos
+proc initGeneralTokenizer*(g: var TGeneralTokenizer, buf: string) = 
+  initGeneralTokenizer(g, cstring(buf))
 
 proc deinitGeneralTokenizer*(g: var TGeneralTokenizer) = 
   discard
diff --git a/lib/pure/osproc.nim b/lib/pure/osproc.nim
index 2a685f3fb..582b3c960 100644
--- a/lib/pure/osproc.nim
+++ b/lib/pure/osproc.nim
@@ -168,6 +168,9 @@ proc processID*(p: PProcess): int {.rtl, extern: "nosp$1".} =
 proc waitForExit*(p: PProcess, timeout: int = -1): int {.rtl,
   extern: "nosp$1", tags: [].}
   ## waits for the process to finish and returns `p`'s error code.
+  ##
+  ## **Warning**: Be careful when using waitForExit for processes created without
+  ## poParentStreams because they may fill output buffers, causing deadlock.
 
 proc peekExitCode*(p: PProcess): int {.tags: [].}
   ## return -1 if the process is still running. Otherwise the process' exit code
diff --git a/lib/pure/sockets2.nim b/lib/pure/sockets2.nim
index 031217b90..3542a0694 100644
--- a/lib/pure/sockets2.nim
+++ b/lib/pure/sockets2.nim
@@ -17,7 +17,6 @@ when hostos == "solaris":
 
 when defined(Windows):
   import winlean
-  export ioctlsocket
 else:
   import posix
   export fcntl, F_GETFL, O_NONBLOCK, F_SETFL
@@ -66,6 +65,16 @@ type
 when defined(windows):
   let
     osInvalidSocket* = winlean.INVALID_SOCKET
+
+  const
+    IOCPARM_MASK* = 127
+    IOC_IN* = int(-2147483648)
+    FIONBIO* = IOC_IN.int32 or ((sizeof(int32) and IOCPARM_MASK) shl 16) or 
+                             (102 shl 8) or 126
+
+  proc ioctlsocket*(s: TSocketHandle, cmd: clong, 
+                   argptr: ptr clong): cint {.
+                   stdcall, importc: "ioctlsocket", dynlib: "ws2_32.dll".}
 else:
   let
     osInvalidSocket* = posix.INVALID_SOCKET