-- !!! testing hGetLine

import System.IO

-- one version of 'cat'
main = do
  let loop h = do b <- hIsEOF h
                  if b then return ()
                       else do l <- hGetLine h; putStrLn l; loop h
  loop stdin

  h <- openFile "hGetLine001.hs" ReadMode

  hSetBinaryMode stdout True

  hSetBuffering h NoBuffering
  loop h

  hSeek h AbsoluteSeek 0
  hSetBuffering h LineBuffering
  loop h

  hSeek h AbsoluteSeek 0
  hSetBuffering h (BlockBuffering (Just 83))
  loop h
-- !!! testing hGetLine

import System.IO

-- one version of 'cat'
main = do
  let loop h = do b <- hIsEOF h
                  if b then return ()
                       else do l <- hGetLine h; putStrLn l; loop h
  loop stdin

  h <- openFile "hGetLine001.hs" ReadMode

  hSetBinaryMode stdout True

  hSetBuffering h NoBuffering
  loop h

  hSeek h AbsoluteSeek 0
  hSetBuffering h LineBuffering
  loop h

  hSeek h AbsoluteSeek 0
  hSetBuffering h (BlockBuffering (Just 83))
  loop h
-- !!! testing hGetLine

import System.IO

-- one version of 'cat'
main = do
  let loop h = do b <- hIsEOF h
                  if b then return ()
                       else do l <- hGetLine h; putStrLn l; loop h
  loop stdin

  h <- openFile "hGetLine001.hs" ReadMode

  hSetBinaryMode stdout True

  hSetBuffering h NoBuffering
  loop h

  hSeek h AbsoluteSeek 0
  hSetBuffering h LineBuffering
  loop h

  hSeek h AbsoluteSeek 0
  hSetBuffering h (BlockBuffering (Just 83))
  loop h
-- !!! testing hGetLine

import System.IO

-- one version of 'cat'
main = do
  let loop h = do b <- hIsEOF h
                  if b then return ()
                       else do l <- hGetLine h; putStrLn l; loop h
  loop stdin

  h <- openFile "hGetLine001.hs" ReadMode

  hSetBinaryMode stdout True

  hSetBuffering h NoBuffering
  loop h

  hSeek h AbsoluteSeek 0
  hSetBuffering h LineBuffering
  loop h

  hSeek h AbsoluteSeek 0
  hSetBuffering h (BlockBuffering (Just 83))
  loop h
