import Control.Monad
import Data.List
import Data.Maybe
-import Network
+import Network.Socket
import Network.HTTP.Lucu
import OpenSSL
import Rakka.Environment
import Rakka.Resource.Users
import Rakka.Storage
import Subversion
-import System.Console.GetOpt
+import System.Console.GetOpt -- FIXME: Use better library than this.
import System.Directory
import System.Environment
import System.Exit
data CmdOpt
- = OptPortNum PortNumber
+ = OptPortNum ServiceName
| OptLSDir FilePath
| OptUserName String
| OptGroupName String
deriving (Eq, Show)
-defaultPort :: PortNumber
-defaultPort = toEnum 8080
+defaultPort :: ServiceName
+defaultPort = "8080"
defaultLocalStateDir :: FilePath
defaultLocalStateDir = LOCALSTATEDIR -- replaced by CPP
options :: [OptDescr CmdOpt]
options = [ Option ['p'] ["port"]
- (ReqArg (OptPortNum . toEnum . read) "NUM")
- ("Port number to listen. (default: " ++ show defaultPort ++ ")")
+ (ReqArg OptPortNum "NUM")
+ ("Port number to listen. (default: " ++ defaultPort ++ ")")
, Option ['d'] ["localstatedir"]
(ReqArg OptLSDir "DIR")
, Option ['r'] ["rebuild-index"]
(NoArg OptRebuildIndex)
- "Rebuild the index database."
+ "Rebuild the index database. (Only for debug purposes)"
, Option ['h'] ["help"]
(NoArg OptHelp)
]
-getPortNum :: [CmdOpt] -> IO PortNumber
+getPortNum :: [CmdOpt] -> IO ServiceName
getPortNum opts
= do let xs = mapMaybe (\ x -> case x of
OptPortNum n -> Just n