{-# LANGUAGE ForeignFunctionInterface #-}

module System.PIO.Linux (
  fdOpen,
  fdClose,
  fdPutBuf,
  fdGetBuf,
  oRdOnly,
  oWrOnly,
  oRdWr
  ) where

import Foreign.Ptr(Ptr)
import Foreign.C.String(CString,withCString)
  
foreign import ccall "open" open :: CString -> Int -> IO Int
foreign import ccall "close" fdClose :: Int -> IO Int
                                        
foreign import ccall "write" fdPutBuf :: Int -> Ptr a -> Int -> IO Int
foreign import ccall "read" fdGetBuf :: Int -> Ptr a -> Int -> IO Int
                                        
foreign import ccall "o_rdonly" oRdOnly :: Int
foreign import ccall "o_wronly" oWrOnly :: Int
foreign import ccall "o_rdwr" oRdWr :: Int
                                        
fdOpen :: String -> Int -> IO Int
fdOpen path flags = withCString path $ \cs -> open cs flags