68 lines
2.9 KiB
Diff
68 lines
2.9 KiB
Diff
Taken from https://raw.githubusercontent.com/archlinux/svntogit-community/packages/haskell-bytestring-handle/trunk/ghc9.patch
|
|
|
|
--- bytestring-handle-0.1.0.6/src/Data/ByteString/Handle/Write.hs.orig 2021-06-21 14:54:12.217134401 +0800
|
|
+++ bytestring-handle-0.1.0.6/src/Data/ByteString/Handle/Write.hs 2021-06-21 15:24:01.794796505 +0800
|
|
@@ -17,7 +17,7 @@
|
|
|
|
import GHC.IO.Buffer ( BufferState(..), emptyBuffer, Buffer(..) )
|
|
import GHC.IO.BufferedIO ( BufferedIO(..) )
|
|
-import GHC.IO.Device ( IODevice(..), IODeviceType(..), SeekMode(..) )
|
|
+import GHC.IO.Device ( IODevice(..), IODeviceType(..), SeekMode(..), RawIO(..) )
|
|
#if MIN_VERSION_base(4,5,0)
|
|
import GHC.IO.Encoding ( getLocaleEncoding )
|
|
#else
|
|
@@ -138,6 +138,7 @@
|
|
seek_base = error "seek_base needs to be updated"
|
|
})
|
|
modifyIORef (write_size ws) (`max` newSeekPos)
|
|
+ pure newSeekPos
|
|
|
|
tell ws = do
|
|
ss <- readIORef (write_seek_state ws)
|
|
@@ -152,6 +153,12 @@
|
|
|
|
devType _ = return RegularFile -- TODO: is this correct?
|
|
|
|
+instance RawIO WriteState where
|
|
+ read _ _ _ _ = return 0
|
|
+ readNonBlocking _ _ _ _ = return Nothing
|
|
+ write _ _ _ _ = return ()
|
|
+ writeNonBlocking _ _ _ _ = return 0
|
|
+
|
|
ioe_seekOutOfRange :: IO a
|
|
ioe_seekOutOfRange =
|
|
ioException $ IOError Nothing InvalidArgument ""
|
|
--- bytestring-handle-0.1.0.6/src/Data/ByteString/Handle/Read.hs.orig 2021-06-21 14:53:55.433129276 +0800
|
|
+++ bytestring-handle-0.1.0.6/src/Data/ByteString/Handle/Read.hs 2021-06-21 15:24:25.998784996 +0800
|
|
@@ -24,7 +24,7 @@
|
|
, emptyBuffer, isEmptyBuffer, newBuffer, newByteBuffer
|
|
, bufferElems, withBuffer, withRawBuffer )
|
|
import GHC.IO.BufferedIO ( BufferedIO(..) )
|
|
-import GHC.IO.Device ( IODevice(..), IODeviceType(..), SeekMode(..) )
|
|
+import GHC.IO.Device ( IODevice(..), IODeviceType(..), SeekMode(..), RawIO(..) )
|
|
#if MIN_VERSION_base(4,5,0)
|
|
import GHC.IO.Encoding ( getLocaleEncoding )
|
|
#else
|
|
@@ -155,7 +155,7 @@
|
|
(seek_before_length curSeekState)
|
|
(fromIntegral (seek_pos curSeekState) + seekPos)
|
|
SeekFromEnd -> normalisedSeekState (read_chunks_backwards rs) [] (read_length rs) seekPos
|
|
- maybe ioe_seekOutOfRange (writeIORef (read_seek_state rs)) newSeekState
|
|
+ maybe ioe_seekOutOfRange (\nss -> writeIORef (read_seek_state rs) nss >> pure (fromIntegral(seek_pos nss))) newSeekState
|
|
|
|
tell rs = do
|
|
ss <- readIORef (read_seek_state rs)
|
|
@@ -166,6 +166,12 @@
|
|
|
|
devType _ = return RegularFile -- TODO: is this correct?
|
|
|
|
+instance RawIO ReadState where
|
|
+ read _ _ _ _ = return 0
|
|
+ readNonBlocking _ _ _ _ = return Nothing
|
|
+ write _ _ _ _ = return ()
|
|
+ writeNonBlocking _ _ _ _ = return 0
|
|
+
|
|
ioe_seekOutOfRange :: IO a
|
|
ioe_seekOutOfRange =
|
|
ioException $ IOError Nothing InvalidArgument ""
|