1 -- !!! Testing RW handles
2 module Main(main) where
6 import Directory (removeFile)
8 -- This test is weird, full marks to whoever dreamt it up!
12 let username = "io018.inout"
13 cd <- openFile username ReadWriteMode
15 hSetBuffering stdin NoBuffering
16 hSetBuffering stdout NoBuffering
17 hSetBuffering cd NoBuffering
18 hPutStr cd speakString
19 hSeek cd AbsoluteSeek 0
20 speak cd `catch` \ err -> if isEOFError err then putStrLn "\nCaught EOF" else ioError err
21 hSeek cd AbsoluteSeek 0
22 hSetBuffering cd LineBuffering
23 speak cd `catch` \ err -> if isEOFError err then putStrLn "\nCaught EOF" else ioError err
24 hSeek cd AbsoluteSeek 0
25 hSetBuffering cd (BlockBuffering Nothing)
26 speak cd `catch` \ err -> if isEOFError err then putStrLn "\nCaught EOF" else ioError err
28 speakString = "Someone wants to speak with you\n"
34 hGetChar cd >>= putChar
38 if ready then (do { ch <- getChar; hPutChar cd ch})