blob: f8726b577df9c10dd2794858ccec3518bdea43ee (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
-- !!! Test file positioning
module Main(main) where
import IO
import Monad
import Directory (removeFile, doesFileExist)
main = do
hIn <- openFile "hGetPosn001.in" ReadMode
hSetBinaryMode hIn True
f <- doesFileExist "hGetPosn001.out"
when f (removeFile "hGetPosn001.out")
hOut <- openFile "hGetPosn001.out" ReadWriteMode
hSetBinaryMode hOut True
bof <- hGetPosn hIn
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)
|