import Data.List
import Data.Map (Map)
import qualified Data.Map as M
+import Data.Ord
import Data.Word
import Foreign.ForeignPtr
import Foreign.Ptr
| otherwise
= do c1 <- peek p1
c2 <- peek p2
- case toLower (w2c c1) `compare` toLower (w2c c2) of
+ case comparing (toLower . w2c) c1 c2 of
EQ -> noCaseCmp' (p1 `plusPtr` 1) (l1 - 1) (p2 `plusPtr` 1) (l2 - 1)
x -> return x
-}
headersP :: Parser Headers
headersP = do xs <- many header
- crlf
+ _ <- crlf
return $! toHeaders xs
where
header :: Parser (Strict.ByteString, Strict.ByteString)
header = do name <- token
- char ':'
+ _ <- char ':'
-- FIXME: これは多少インチキだが、RFC 2616 のこの部分
-- の記述はひどく曖昧であり、この動作が本當に間違って
-- ゐるのかどうかも良く分からない。例へば
-- のか?直勸的には駄目さうに思へるが、そんな記述は見
-- 付からない。
contents <- many (lws <|> many1 text)
- crlf
+ _ <- crlf
let value = foldr (++) "" contents
norm = normalize value
return (C8.pack name, C8.pack norm)
normalize :: String -> String
normalize = trimBody . trim isWhiteSpace
- trimBody = foldr (++) []
+ trimBody = concat
. map (\ s -> if head s == ' ' then
" "
else