on master help sign in
Use ByteString-based getEnvironment on *nix systems
commit746c04c9e966429e95b82121b65e971a1b0e4ea8 authorMichael Snoyman <michael@snoyman.com> dateThu 13 Mar 2014, 14:14 (13 years ago) parentdc69a02
2 files changed+14−1
wai-extra/Network/Wai/Handler/CGI.hs+9−1 wai-extra/wai-extra.cabal+5
wai-extra/Network/Wai/Handler/CGI.hs+9−1
@@ -13,7 +13,6 @@ module Network.Wai.Handler.CGI
1313import Network.Wai
1414import Network.Wai.Internal
1515import Network.Socket (getAddrInfo, addrAddress)
16−import System.Environment (getEnvironment)
1716import Data.Maybe (fromMaybe)
1817import Control.Exception (mask)
1918import qualified Data.ByteString.Char8 as B
@@ -35,6 +34,15 @@ import qualified Data.CaseInsensitive as CI
3534import Data.Monoid (mappend)
3635import Data.Conduit
3736
37+#if WINDOWS
38+import System.Environment (getEnvironment)
39+#else
40+import qualified System.Posix.Env.ByteString as Env
41+
42+getEnvironment :: IO [(String, String)]
43+getEnvironment = map (B.unpack *** B.unpack) `fmap` Env.getEnvironment
44+#endif
45+
3846safeRead :: Read a => a -> String -> a
3947safeRead d s =
4048 case reads s of
wai-extra/wai-extra.cabal+5
@@ -47,6 +47,11 @@ Library
4747 , word8
4848 , lifted-base >= 0.1.2
4949
50+ if os(windows)
51+ cpp-options: -DWINDOWS
52+ else
53+ build-depends: unix
54+
5055 Exposed-modules: Network.Wai.Handler.CGI
5156 Network.Wai.Middleware.AcceptOverride
5257 Network.Wai.Middleware.Autohead