X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=GHC%2FIO%2FBufferedIO.hs;h=874a02d1dcf56c13aa20c3e0c7bfe161cd11f314;hb=41e8fba828acbae1751628af50849f5352b27873;hp=513bf9eeb25c590b5c094f8cb08fbc87ff9413e1;hpb=7d39e10019df33f1a19d65b3c58c4d01a7dc8d30;p=ghc-base.git diff --git a/GHC/IO/BufferedIO.hs b/GHC/IO/BufferedIO.hs index 513bf9e..874a02d 100644 --- a/GHC/IO/BufferedIO.hs +++ b/GHC/IO/BufferedIO.hs @@ -1,5 +1,6 @@ -{-# OPTIONS_GHC -XNoImplicitPrelude -funbox-strict-fields #-} -{-# OPTIONS_HADDOCK hide #-} +{-# LANGUAGE NoImplicitPrelude #-} +{-# OPTIONS_GHC -funbox-strict-fields #-} + ----------------------------------------------------------------------------- -- | -- Module : GHC.IO.BufferedIO @@ -23,7 +24,6 @@ import GHC.Base import GHC.Ptr import Data.Word import GHC.Num -import GHC.Real import Data.Maybe -- import GHC.IO import GHC.IO.Device as IODevice @@ -94,9 +94,8 @@ readBuf :: RawIO dev => dev -> Buffer Word8 -> IO (Int, Buffer Word8) readBuf dev bbuf = do let bytes = bufferAvailable bbuf res <- withBuffer bbuf $ \ptr -> - RawIO.read dev (ptr `plusPtr` bufR bbuf) (fromIntegral bytes) - let res' = fromIntegral res - return (res', bbuf{ bufR = bufR bbuf + res' }) + RawIO.read dev (ptr `plusPtr` bufR bbuf) bytes + return (res, bbuf{ bufR = bufR bbuf + res }) -- zero indicates end of file readBufNonBlocking :: RawIO dev => dev -> Buffer Word8 @@ -106,16 +105,16 @@ readBufNonBlocking :: RawIO dev => dev -> Buffer Word8 readBufNonBlocking dev bbuf = do let bytes = bufferAvailable bbuf res <- withBuffer bbuf $ \ptr -> - IODevice.readNonBlocking dev (ptr `plusPtr` bufR bbuf) (fromIntegral bytes) + IODevice.readNonBlocking dev (ptr `plusPtr` bufR bbuf) bytes case res of Nothing -> return (Nothing, bbuf) - Just n -> return (Just n, bbuf{ bufR = bufR bbuf + fromIntegral n }) + Just n -> return (Just n, bbuf{ bufR = bufR bbuf + n }) writeBuf :: RawIO dev => dev -> Buffer Word8 -> IO (Buffer Word8) writeBuf dev bbuf = do let bytes = bufferElems bbuf withBuffer bbuf $ \ptr -> - IODevice.write dev (ptr `plusPtr` bufL bbuf) (fromIntegral bytes) + IODevice.write dev (ptr `plusPtr` bufL bbuf) bytes return bbuf{ bufL=0, bufR=0 } -- XXX ToDo @@ -123,6 +122,5 @@ writeBufNonBlocking :: RawIO dev => dev -> Buffer Word8 -> IO (Int, Buffer Word8 writeBufNonBlocking dev bbuf = do let bytes = bufferElems bbuf res <- withBuffer bbuf $ \ptr -> - IODevice.writeNonBlocking dev (ptr `plusPtr` bufL bbuf) - (fromIntegral bytes) + IODevice.writeNonBlocking dev (ptr `plusPtr` bufL bbuf) bytes return (res, bufferAdjustL res bbuf)