summaryrefslogtreecommitdiff
path: root/libraries/base/tests/hGetBuf003.stdout
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/base/tests/hGetBuf003.stdout')
-rw-r--r--libraries/base/tests/hGetBuf003.stdout52
1 files changed, 52 insertions, 0 deletions
diff --git a/libraries/base/tests/hGetBuf003.stdout b/libraries/base/tests/hGetBuf003.stdout
new file mode 100644
index 0000000000..ffeb291563
--- /dev/null
+++ b/libraries/base/tests/hGetBuf003.stdout
@@ -0,0 +1,52 @@
+import System.IO
+import Foreign
+import Foreign.C
+import Control.Monad
+
+main = do test True; test False
+
+test blocking = do
+ h <- openBinaryFile "hGetBuf003.hs" ReadMode
+
+ let sz = 42
+ loop = do
+ -- mix ordinary char buffering with hGetBuf
+ eof <- hIsEOF h
+ when (not eof) $ hGetChar h >>= putChar
+ b <- allocaBytes sz $ \ptr -> do
+ r <- (if blocking then hGetBuf else hGetBufNonBlocking) h ptr sz
+ if (r == 0)
+ then return True
+ else do s <- peekCStringLen (ptr,r)
+ putStr s
+ return False
+ if b then return () else loop -- tail call
+
+ loop
+
+import System.IO
+import Foreign
+import Foreign.C
+import Control.Monad
+
+main = do test True; test False
+
+test blocking = do
+ h <- openBinaryFile "hGetBuf003.hs" ReadMode
+
+ let sz = 42
+ loop = do
+ -- mix ordinary char buffering with hGetBuf
+ eof <- hIsEOF h
+ when (not eof) $ hGetChar h >>= putChar
+ b <- allocaBytes sz $ \ptr -> do
+ r <- (if blocking then hGetBuf else hGetBufNonBlocking) h ptr sz
+ if (r == 0)
+ then return True
+ else do s <- peekCStringLen (ptr,r)
+ putStr s
+ return False
+ if b then return () else loop -- tail call
+
+ loop
+