{-# LANGUAGE ForeignFunctionInterface #-}
module System.Unix.Crypt
( crypt
)
where
import Foreign.C
foreign import ccall unsafe "unistd.h crypt"
c_crypt :: CString -> CString -> IO CString
crypt :: String
-> String
-> IO String
crypt :: String -> String -> IO String
crypt String
key String
salt =
String -> (CString -> IO String) -> IO String
forall a. String -> (CString -> IO a) -> IO a
withCString String
key ((CString -> IO String) -> IO String)
-> (CString -> IO String) -> IO String
forall a b. (a -> b) -> a -> b
$ \CString
ckey ->
String -> (CString -> IO String) -> IO String
forall a. String -> (CString -> IO a) -> IO a
withCString String
salt ((CString -> IO String) -> IO String)
-> (CString -> IO String) -> IO String
forall a b. (a -> b) -> a -> b
$ \CString
csalt ->
do CString
cpassword <- String -> IO CString -> IO CString
forall a. String -> IO (Ptr a) -> IO (Ptr a)
throwErrnoIfNull String
"crypt" (CString -> CString -> IO CString
c_crypt CString
ckey CString
csalt)
CString -> IO String
peekCString CString
cpassword