[commit: bytestring] master: Export putStrLn and hPutStrLn from D.B.Lazy.Char8 (9a23ac0)
Ian Lynagh
igloo at earth.li
Sun Jun 19 18:39:00 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/bytestring
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/9a23ac026aeac21d443ae3f12ac6edc0c3e6b821
>---------------------------------------------------------------
commit 9a23ac026aeac21d443ae3f12ac6edc0c3e6b821
Author: Duncan Coutts <duncan at community.haskell.org>
Date: Mon May 16 12:26:24 2011 +0000
Export putStrLn and hPutStrLn from D.B.Lazy.Char8
and deprecate both functions in the non-Char8 modules.
Functions that rely on ASCII encodings belong in the Char8 modules.
>---------------------------------------------------------------
Data/ByteString.hs | 7 +++++++
Data/ByteString/Char8.hs | 16 +++++++++++++---
Data/ByteString/Lazy.hs | 4 ++++
Data/ByteString/Lazy/Char8.hs | 16 ++++++++++++++--
4 files changed, 38 insertions(+), 5 deletions(-)
diff --git a/Data/ByteString.hs b/Data/ByteString.hs
index 0c124d5..8e8d23c 100644
--- a/Data/ByteString.hs
+++ b/Data/ByteString.hs
@@ -1938,6 +1938,13 @@ putStr = hPut stdout
putStrLn :: ByteString -> IO ()
putStrLn = hPutStrLn stdout
+{-# DEPRECATED hPutStrLn
+ "Use Data.ByteString.Char8.hPutStrLn instead. (Functions that rely on ASCII encodings belong in Data.ByteString.Char8)"
+ #-}
+{-# DEPRECATED putStrLn
+ "Use Data.ByteString.Char8.putStrLn instead. (Functions that rely on ASCII encodings belong in Data.ByteString.Char8)"
+ #-}
+
------------------------------------------------------------------------
-- Low level IO
diff --git a/Data/ByteString/Char8.hs b/Data/ByteString/Char8.hs
index 5cb34f0..a4fb461 100644
--- a/Data/ByteString/Char8.hs
+++ b/Data/ByteString/Char8.hs
@@ -237,8 +237,8 @@ import Data.ByteString (empty,null,length,tail,init,append
,sort,isPrefixOf,isSuffixOf,isInfixOf
,findSubstring,findSubstrings,breakSubstring,copy,group
- ,getLine, getContents, putStr, putStrLn, interact
- ,hGetContents, hGet, hPut, hPutStr, hPutStrLn
+ ,getLine, getContents, putStr, interact
+ ,hGetContents, hGet, hPut, hPutStr
,hGetLine, hGetNonBlocking, hPutNonBlocking
,packCString,packCStringLen
,useAsCString,useAsCStringLen
@@ -250,7 +250,7 @@ import Data.ByteString.Internal (ByteString(PS), c2w, w2c, isSpaceWord8
import Data.Char ( isSpace )
import qualified Data.List as List (intersperse)
-import System.IO (openFile,hClose,hFileSize,IOMode(..))
+import System.IO (Handle,stdout,openFile,hClose,hFileSize,IOMode(..))
#ifndef __NHC__
import Control.Exception (bracket)
#else
@@ -1040,3 +1040,13 @@ appendFile :: FilePath -> ByteString -> IO ()
appendFile f txt = bracket (openFile f AppendMode) hClose
(\h -> hPut h txt)
+
+-- | Write a ByteString to a handle, appending a newline byte
+hPutStrLn :: Handle -> ByteString -> IO ()
+hPutStrLn h ps
+ | length ps < 1024 = hPut h (ps `B.snoc` 0x0a)
+ | otherwise = hPut h ps >> hPut h (B.singleton (0x0a)) -- don't copy
+
+-- | Write a ByteString to stdout, appending a newline byte
+putStrLn :: ByteString -> IO ()
+putStrLn = hPutStrLn stdout
diff --git a/Data/ByteString/Lazy.hs b/Data/ByteString/Lazy.hs
index 9820e33..fbf9324 100644
--- a/Data/ByteString/Lazy.hs
+++ b/Data/ByteString/Lazy.hs
@@ -1322,6 +1322,10 @@ putStr = hPut stdout
putStrLn :: ByteString -> IO ()
putStrLn ps = hPut stdout ps >> hPut stdout (singleton 0x0a)
+{-# DEPRECATED putStrLn
+ "Use Data.ByteString.Lazy.Char8.putStrLn instead. (Functions that rely on ASCII encodings belong in Data.ByteString.Lazy.Char8)"
+ #-}
+
-- | The interact function takes a function of type @ByteString -> ByteString@
-- as its argument. The entire input from the standard input device is passed
-- to this function as its argument, and the resulting string is output on the
diff --git a/Data/ByteString/Lazy/Char8.hs b/Data/ByteString/Lazy/Char8.hs
index f34678f..90bf4d8 100644
--- a/Data/ByteString/Lazy/Char8.hs
+++ b/Data/ByteString/Lazy/Char8.hs
@@ -173,6 +173,8 @@ module Data.ByteString.Lazy.Char8 (
hGetNonBlocking, -- :: Handle -> Int64 -> IO ByteString
hPut, -- :: Handle -> ByteString -> IO ()
hPutNonBlocking, -- :: Handle -> ByteString -> IO ByteString
+ hPutStr, -- :: Handle -> ByteString -> IO ()
+ hPutStrLn, -- :: Handle -> ByteString -> IO ()
) where
@@ -183,7 +185,7 @@ import Data.ByteString.Lazy
,concat,take,drop,splitAt,intercalate,isPrefixOf,group,inits,tails,copy
,hGetContents, hGet, hPut, getContents
,hGetNonBlocking, hPutNonBlocking
- ,putStr, putStrLn, interact)
+ ,putStr, hPutStr, interact)
-- Functions we need to wrap.
import qualified Data.ByteString.Lazy as L
@@ -204,7 +206,7 @@ import Prelude hiding
,readFile,writeFile,appendFile,replicate,getContents,getLine,putStr,putStrLn
,zip,zipWith,unzip,notElem,repeat,iterate,interact,cycle)
-import System.IO (hClose,openFile,IOMode(..))
+import System.IO (Handle,stdout,hClose,openFile,IOMode(..))
#ifndef __NHC__
import Control.Exception (bracket)
#else
@@ -855,6 +857,16 @@ appendFile f txt = bracket (openFile f AppendMode) hClose
(\hdl -> hPut hdl txt)
+-- | Write a ByteString to a handle, appending a newline byte
+--
+hPutStrLn :: Handle -> ByteString -> IO ()
+hPutStrLn h ps = hPut h ps >> hPut h (L.singleton 0x0a)
+
+-- | Write a ByteString to stdout, appending a newline byte
+putStrLn :: ByteString -> IO ()
+putStrLn = hPutStrLn stdout
+
+
-- ---------------------------------------------------------------------
-- Internal utilities
More information about the Cvs-libraries
mailing list