
Hello Scott, Friday, April 6, 2007, 11:44:01 PM, you wrote: you should write compiler version and OS for such problems. if it's 6.6 and Win, try to upgrade to current STABLE build: smth like http://www.haskell.org/ghc/dist/stable/dist/ghc-6.6.20061207-i386-unknown-mi... but newer (this one is dec 12 build) I/O in Windows threaded RTS was fixed after initial 6.6 release and afaik hWaitForInput should work better now. alternatively, you can try with hand-made timeout solution
Ooops! It seems that this doesn't behave well with a -threaded RTS. I get an EOF on handles that I know for a fact shouldn't be receiving them. It still works well without -threaded, but does anyone know why I'm getting this behavior?
hGetContentsTimeout :: Handle -> Int -> IO String hGetContentsTimeout h t = do hSetBuffering stdin NoBuffering ready <- hWaitForInput h t if (not ready) then return [] else do c <- hGetChar h s <- unsafeInterleaveIO (hGetContentsTimeout h t) return (c:s)
(I did add EOF checking, but all that did was return the end of the list earlier than I wanted)
-- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com