blob: 327b490adb38d43fc4c4249095bc1f97308d25d5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import System.IO
import System.IO.Error
import Text.Printf
import Control.Monad
main = do
hSetEncoding stdout latin1
forM [NoBuffering,
LineBuffering,
BlockBuffering Nothing,
BlockBuffering (Just 3),
BlockBuffering (Just 9),
BlockBuffering (Just 32)] $ \b -> do
hSetBuffering stdout b
checkedPutStr "test 1\n"
checkedPutStr "ě\n" -- nothing gets written
checkedPutStr "test 2\n"
checkedPutStr "Hέllo\n" -- we should write at least the 'H'
checkedPutStr "test 3\n"
checkedPutStr "Hello αβγ\n" -- we should write at least the "Hello "
checkedPutStr str = do
r <- try $ putStr str
case r of
Right _ -> return ()
Left e -> printf "Caught %s while trying to write %s\n"
(show e) (show str)
|