X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=GHC%2FIO%2FHandle%2FTypes.hs;h=c8b6b79cd9a31ece3ef9133561406b1e82fa4df2;hb=ed8788054ed764f873d43a88fd3ea4ab74373dc1;hp=cdde7d8c6e8a173ea7a203796bb0bc39c6ee26de;hpb=ccc931d0905f6e0d55cb90b045881d4515112411;p=ghc-base.git diff --git a/GHC/IO/Handle/Types.hs b/GHC/IO/Handle/Types.hs index cdde7d8..c8b6b79 100644 --- a/GHC/IO/Handle/Types.hs +++ b/GHC/IO/Handle/Types.hs @@ -1,4 +1,4 @@ -{-# OPTIONS_GHC -fno-implicit-prelude -funbox-strict-fields #-} +{-# OPTIONS_GHC -XNoImplicitPrelude -funbox-strict-fields #-} {-# OPTIONS_HADDOCK hide #-} ----------------------------------------------------------------------------- -- | @@ -86,15 +86,6 @@ import Data.Typeable -- enough information to identify the handle for debugging. A handle is -- equal according to '==' only to itself; no attempt -- is made to compare the internal state of different handles for equality. --- --- GHC note: a 'Handle' will be automatically closed when the garbage --- collector detects that it has become unreferenced by the program. --- However, relying on this behaviour is not generally recommended: --- the garbage collector is unpredictable. If possible, use explicit --- an explicit 'hClose' to close 'Handle's when they are no longer --- required. GHC does not currently attempt to free up file --- descriptors when they have run out, it is your responsibility to --- ensure that this doesn't happen. data Handle = FileHandle -- A normal handle to a file @@ -132,6 +123,7 @@ data Handle__ haBuffers :: !(IORef (BufferList CharBufElem)), -- spare buffers haEncoder :: Maybe (TextEncoder enc_state), haDecoder :: Maybe (TextDecoder dec_state), + haCodec :: Maybe TextEncoding, haInputNL :: Newline, haOutputNL :: Newline, haOtherSide :: Maybe (MVar Handle__) -- ptr to the write side of a @@ -322,9 +314,9 @@ and hence it is only possible on a seekable Handle. -- Newline translation -- | The representation of a newline in the external file or stream. -data Newline = LF -- ^ "\n" - | CRLF -- ^ "\r\n" - deriving Eq +data Newline = LF -- ^ '\n' + | CRLF -- ^ '\r\n' + deriving (Eq, Ord, Read, Show) -- | Specifies the translation, if any, of newline characters between -- internal Strings and the external file or stream. Haskell Strings @@ -337,9 +329,10 @@ data NewlineMode outputNL :: Newline -- ^ the representation of newlines on output } - deriving Eq + deriving (Eq, Ord, Read, Show) --- | The native newline representation for the current platform +-- | The native newline representation for the current platform: 'LF' +-- on Unix systems, 'CRLF' on Windows. nativeNewline :: Newline #ifdef mingw32_HOST_OS nativeNewline = CRLF @@ -347,7 +340,7 @@ nativeNewline = CRLF nativeNewline = LF #endif --- | Map "\r\n" into "\n" on input, and "\n" to the native newline +-- | Map '\r\n' into '\n' on input, and '\n' to the native newline -- represetnation on output. This mode can be used on any platform, and -- works with text files using any newline convention. The downside is -- that @readFile >>= writeFile@ might yield a different file.