# HG changeset patch # User unc0rr # Date 1223644725 0 # Node ID 86d7d5ab22a25b628903986c8c9473a935085e11 # Parent 430d210d54aed46440a3355ce05e999e310d3a50 Allow --port=PORT command-line parameter to specify the port to listen on diff -r 430d210d54ae -r 86d7d5ab22a2 netserver/Opts.hs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netserver/Opts.hs Fri Oct 10 13:18:45 2008 +0000 @@ -0,0 +1,30 @@ +module Opts where + +import System +import System.Console.GetOpt +import Network +import Data.Maybe ( fromMaybe ) +import Miscutils + +data Flag = ListenPort PortNumber + deriving Show + +options :: [OptDescr Flag] +options = [ + Option ['p'] ["port"] (OptArg defaultPort "PORT") "listen on PORT" + ] + +defaultPort :: Maybe String -> Flag +defaultPort str = ListenPort $ fromInteger (fromMaybe 46631 (maybeRead (fromMaybe "46631" str) :: Maybe Integer)) + +opts :: IO [Flag] +opts = do + args <- getArgs + case getOpt Permute options args of + (o, [], []) -> return o + (_,_,errs) -> ioError (userError (concat errs ++ usageInfo header options)) + where header = "Usage: newhwserv [OPTION...]" + +getPort :: [Flag] -> PortNumber +getPort [] = 46631 +getPort (ListenPort a:flags) = a diff -r 430d210d54ae -r 86d7d5ab22a2 netserver/newhwserv.hs --- a/netserver/newhwserv.hs Thu Oct 09 21:00:42 2008 +0000 +++ b/netserver/newhwserv.hs Fri Oct 10 13:18:45 2008 +0000 @@ -11,6 +11,7 @@ import Data.List import Miscutils import HWProto +import Opts acceptLoop :: Socket -> TChan ClientInfo -> IO () acceptLoop servSock acceptChan = do @@ -87,5 +88,7 @@ main = withSocketsDo $ do - serverSocket <- listenOn $ Service "hedgewars" + flags <- opts + putStrLn $ "Listening on port " ++ show (getPort flags) + serverSocket <- listenOn $ PortNumber (getPort flags) startServer serverSocket `finally` sClose serverSocket