)
where
-import qualified Data.ByteString.Lazy.Char8 as B
-import Data.ByteString.Lazy.Char8 (ByteString)
+import qualified Data.ByteString.Char8 as C8
import Network.HTTP.Lucu.Parser
import System.IO
-- |@'HttpVersion' major minor@ represents \"HTTP\/major.minor\".
-data HttpVersion = HttpVersion Int Int
+data HttpVersion = HttpVersion !Int !Int
deriving (Eq)
instance Show HttpVersion where
major <- many1 digit
char '.'
minor <- many1 digit
- return $ HttpVersion (read major) (read minor)
+ return $ HttpVersion (read' major) (read' minor)
+ where
+ read' "1" = 1 -- この二つが
+ read' "0" = 0 -- 壓倒的に頻出する
+ read' s = read s
hPutHttpVersion :: Handle -> HttpVersion -> IO ()
hPutHttpVersion h (HttpVersion maj min)
- = do hPutStr h "HTTP/"
+ = h `seq`
+ do C8.hPut h (C8.pack "HTTP/")
hPutStr h (show maj)
hPutChar h '.'
hPutStr h (show min)
\ No newline at end of file