module System.Posix.PAM.Types where import Foreign.C import Foreign.Ptr data PamMessage = PamMessage { pmString :: String , pmStyle :: PamStyle } deriving (Show, Eq) data PamStyle = PamPromptEchoOff | PamPromptEchoOn | PamErrorMsg | PamTextInfo deriving (Show, Eq) {- | http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/adg-interface-of-app-expected.html#adg-pam_conv - resp_code member in C sturct is unused and should be set to zero, that's why there is no code field in the haskell data type -} data PamResponse = PamResponse String deriving (Show, Eq) data PamRetCode = PamSuccess | PamRetCode Int deriving (Show, Eq) data PamFlag = PamFlag Int type PamConv = Ptr () -> [PamMessage] -> IO [PamResponse] data PamHandle = PamHandle { cPamHandle :: Ptr () , cPamCallback :: FunPtr (CInt -> Ptr (Ptr ()) -> Ptr (Ptr ()) -> Ptr () -> IO CInt) } deriving (Show, Eq)