acid-state-0.16.1.4: src-win32/FileIO.hs
module FileIO(FHandle,open,write,flush,close) where
import System.Win32(HANDLE,
createFile,
gENERIC_WRITE,
fILE_SHARE_NONE,
cREATE_ALWAYS,
fILE_ATTRIBUTE_NORMAL,
win32_WriteFile,
flushFileBuffers,
closeHandle)
import Data.Word(Word8,Word32)
import Foreign(Ptr)
import System.IO
data FHandle = FHandle HANDLE
open :: FilePath -> IO FHandle
open filename =
fmap FHandle $ createFile filename gENERIC_WRITE fILE_SHARE_NONE Nothing cREATE_ALWAYS fILE_ATTRIBUTE_NORMAL Nothing
write :: FHandle -> Ptr Word8 -> Word32 -> IO Word32
write (FHandle handle) data' length = win32_WriteFile handle data' length Nothing
flush :: FHandle -> IO ()
flush (FHandle handle) = flushFileBuffers handle
close :: FHandle -> IO ()
close (FHandle handle) = closeHandle handle