1 -- !!! Testing RW handles
3 import Directory (removeFile, doesFileExist)
6 -- This test is weird, full marks to whoever dreamt it up!
10 let username = "readwrite002.inout"
11 f <- doesFileExist username
12 when f (removeFile username)
13 cd <- openFile username ReadWriteMode
14 -- hSetBinaryMode cd True
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 = "##############################\n"
34 hGetChar cd >>= putChar
38 if ready then (do { ch <- getChar; hPutChar cd ch})