module Space.UnixSocket
    ( Socket
    , unixSocket
    ) where

import Space.Import

import Network.Socket
import System.Directory

unixSocket :: FilePath -> IO Socket
unixSocket path = do
    tryRemoveFile path
    s <- socket AF_UNIX Stream defaultProtocol
    bind s (SockAddrUnix path)
    listen s maxListenQueue
    return s

tryRemoveFile :: FilePath -> IO ()
tryRemoveFile path = catchIOError (removeFile path) (const (return ()))