@@ -1,7 +1,10 @@
1{-# LANGUAGE OverloadedStrings #-}
1{-# LANGUAGE OverloadedStrings #-}
2{-# LANGUAGE ForeignFunctionInterface #-}
2{-# LANGUAGE ForeignFunctionInterface #-}
3{-# LANGUAGE CPP #-}
3{-# LANGUAGE CPP #-}
4−module Network.Wai.Handler.Launch (run) where
4+module Network.Wai.Handler.Launch
6import Network.Wai
9import Network.Wai
7import Network.HTTP.Types
10import Network.HTTP.Types
@@ -115,27 +118,35 @@ fixHeaders front (x:xs) = fixHeaders (front . (:) x) xs
116#if WINDOWS
119#if WINDOWS
117foreign import ccall "launch"
120foreign import ccall "launch"
118− launch :: IO ()
121+ launch' :: Int -> CString -> IO ()
124+launch :: String -> IO ()
127+launch s = withCString s $ launch' 4587
121−launch = forkIO (rawSystem
129+launch s = forkIO (rawSystem
125 "xdg-open"
133 "xdg-open"
127− ["http://127.0.0.1:4587/"] >> return ()) >> return ()
135+ ["http://127.0.0.1:4587/" ++ s] >> return ()) >> return ()
130run :: Application -> IO ()
138run :: Application -> IO ()
141+runUrl :: String -> Application -> IO ()
131−run app = do
142+runUrl url app = do
132 x <- newIORef True
143 x <- newIORef True
133 forkIO $ Warp.runSettings Warp.defaultSettings
144 forkIO $ Warp.runSettings Warp.defaultSettings
134 { Warp.settingsPort = 4587
145 { Warp.settingsPort = 4587
135 , Warp.settingsOnException = const $ return ()
146 , Warp.settingsOnException = const $ return ()
136 , Warp.settingsHost = "127.0.0.1"
147 , Warp.settingsHost = "127.0.0.1"
137 } $ ping x app
148 } $ ping x app
138− launch
149+ launch url
141loop :: IORef Bool -> IO ()
152loop :: IORef Bool -> IO ()