summary refs log tree commit diff stats
path: root/lib/pure
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2015-09-28 16:39:52 +0200
committerAraq <rumpf_a@web.de>2015-09-29 19:30:43 +0200
commit985594cbb8274e21c65f88485f3c4d83d6ff60d2 (patch)
tree1d81365f123773a1deafea60fc5c2c63c12080e2 /lib/pure
parentd8a10457e21654272e9de67048182d845e87eb3a (diff)
downloadNim-985594cbb8274e21c65f88485f3c4d83d6ff60d2.tar.gz
added streams.readAll proc
Diffstat (limited to 'lib/pure')
-rw-r--r--lib/pure/streams.nim12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/pure/streams.nim b/lib/pure/streams.nim
index 406a0ec6e..68f31e9fe 100644
--- a/lib/pure/streams.nim
+++ b/lib/pure/streams.nim
@@ -101,6 +101,18 @@ proc readData*(s: Stream, buffer: pointer, bufLen: int): int =
   ## low level proc that reads data into an untyped `buffer` of `bufLen` size.
   result = s.readDataImpl(s, buffer, bufLen)
 
+proc readAll*(s: Stream): string =
+  ## Reads all available data.
+  result = newString(1000)
+  var r = 0
+  while true:
+    let readBytes = readData(s, addr(result[r]), 1000)
+    if readBytes < 1000:
+      setLen(result, r+readBytes)
+      break
+    inc r, 1000
+    setLen(result, r+1000)
+
 proc readData*(s, unused: Stream, buffer: pointer,
                bufLen: int): int {.deprecated.} =
   ## low level proc that reads data into an untyped `buffer` of `bufLen` size.