court-0.1.0.0: src/Main.hs
import Control.Concurrent
import System.IO
import System.Posix.Process
import System.Posix.User
import Court.Builder
import Court.Options
import Court.PluginManager
import Court.Queue
main :: IO ()
main = do
hSetBuffering stderr LineBuffering
opts <- getOptions
case optGroup opts of
Nothing -> return ()
Just name -> do
groupEntry <- getGroupEntryForName name
setGroupID $ groupID groupEntry
case optUser opts of
Nothing -> return ()
Just name -> do
userEntry <- getUserEntryForName name
setUserID $ userID userEntry
if optDaemonize opts
then forkProcess (createSession >> main' opts) >> return ()
else main' opts
main' :: Options -> IO ()
main' opts = do
queueTVar <- newTVarIO mempty
_ <- forkIO $ builder opts queueTVar
pluginManager opts queueTVar