{-# LANGUAGE CPP                 #-}
{-# LANGUAGE MagicHash           #-}
{-# LANGUAGE NamedFieldPuns      #-}
{-# LANGUAGE UnboxedTuples       #-}
{-# OPTIONS_HADDOCK prune #-}
{-# LANGUAGE ScopedTypeVariables #-}
#if __GLASGOW_HASKELL__ >= 701
{-# LANGUAGE Trustworthy         #-}
#endif

module Nullpipe
       where

import           Control.Monad   (forM_)
import           Data.ByteString (ByteString)
import           Nullpipe.Handle
import           Pipes
import           System.IO       (IOMode (..), openFile)

--nullpipe :: MonadIO m => FilePath -> Producer ByteString m
nullpipe fp = liftIO (openFile fp ReadMode) >>= go
  where go h = do
          r <- liftIO $ hGetTillNull h
          case r of
           Nothing -> return ()
           Just x -> yield x >> go h