67 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			67 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 ""
 |