1 -- !!! Testing RW handles
3 import Directory (removeFile, doesFileExist)
5 #if defined(__MINGW32__)
6 import PrelHandle(hSetBinaryMode)
9 -- This test is weird, full marks to whoever dreamt it up!
13 let username = "readwrite002.inout"
14 f <- doesFileExist username
15 when f (removeFile username)
16 cd <- openFile username ReadWriteMode
17 # if defined(__MINGW32__)
18 hSetBinaryMode cd True
20 hSetBuffering stdin NoBuffering
21 hSetBuffering stdout NoBuffering
22 hSetBuffering cd NoBuffering
23 hPutStr cd speakString
24 hSeek cd AbsoluteSeek 0
25 speak cd `catch` \ err -> if isEOFError err then putStrLn "\nCaught EOF" else ioError err
26 hSeek cd AbsoluteSeek 0
27 hSetBuffering cd LineBuffering
28 speak cd `catch` \ err -> if isEOFError err then putStrLn "\nCaught EOF" else ioError err
29 hSeek cd AbsoluteSeek 0
30 hSetBuffering cd (BlockBuffering Nothing)
31 speak cd `catch` \ err -> if isEOFError err then putStrLn "\nCaught EOF" else ioError err
33 speakString = "##############################\n"
39 hGetChar cd >>= putChar
43 if ready then (do { ch <- getChar; hPutChar cd ch})