diff options
author | David Terei <davidterei@gmail.com> | 2011-07-20 11:09:03 -0700 |
---|---|---|
committer | David Terei <davidterei@gmail.com> | 2011-07-20 11:26:35 -0700 |
commit | 16514f272fb42af6e9c7674a9bd6c9dce369231f (patch) | |
tree | e4f332b45fe65e2a7a2451be5674f887b42bf199 /testsuite/tests/lib/IO/hGetPosn001.hs | |
parent | ebd422aed41048476aa61dd4c520d43becd78682 (diff) | |
download | haskell-16514f272fb42af6e9c7674a9bd6c9dce369231f.tar.gz |
Move tests from tests/ghc-regress/* to just tests/*
Diffstat (limited to 'testsuite/tests/lib/IO/hGetPosn001.hs')
-rw-r--r-- | testsuite/tests/lib/IO/hGetPosn001.hs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/testsuite/tests/lib/IO/hGetPosn001.hs b/testsuite/tests/lib/IO/hGetPosn001.hs new file mode 100644 index 0000000000..5a0d7d4827 --- /dev/null +++ b/testsuite/tests/lib/IO/hGetPosn001.hs @@ -0,0 +1,28 @@ +-- !!! Test file positioning + +module Main(main) where + +import Control.Monad +import System.Directory (removeFile, doesFileExist) +import System.IO +import System.IO.Error + +main = do + hIn <- openFile "hGetPosn001.in" ReadMode + f <- doesFileExist "hGetPosn001.out" + when f (removeFile "hGetPosn001.out") + hOut <- openFile "hGetPosn001.out" ReadWriteMode + bof <- hGetPosn hIn + putStrLn (show bof) -- you can show HandlePosns + copy hIn hOut + hSetPosn bof + copy hIn hOut + hSeek hOut AbsoluteSeek 0 + stuff <- hGetContents hOut + putStr stuff + +copy :: Handle -> Handle -> IO () +copy hIn hOut = + try (hGetChar hIn) >>= + either (\ err -> if isEOFError err then return () else error "copy") + ( \ x -> hPutChar hOut x >> copy hIn hOut) |