-- | -- Stability : Ultra-Violence -- Portability : I'm too young to die -- The exceptions one would want to throw to be understood by the existing 9P clients. module Network.NineP.Error ( NineError(..) ) where import Control.Exception import Data.Typeable import Data.Word data NineError = ENotImplemented String | ENotADir | EDir | ENoFile String | ENoFid Word32 | ENoAuthRequired | EPermissionDenied | EInval | OtherError String deriving (Typeable) instance Exception NineError -- |See also: @linux\/net\/9p\/error.c@ instance Show NineError where show (ENotImplemented s) = s ++ " is not implemented" show ENotADir = "not a directory" show EDir = "Is a directory" show (ENoFile s) = "file not found" show (ENoFid i) = "fid " ++ show i ++ " is not registered on the server" show ENoAuthRequired = "the server doesn't require any kind of authentication" show EPermissionDenied = "permission denied" show EInval = "Invalid argument" show (OtherError s) = s