unix-compat-0.1: System/PosixCompat/User.hsc
module System.PosixCompat.User (
-- * User environment
-- ** Querying the user environment
getRealUserID,
getRealGroupID,
getEffectiveUserID,
getEffectiveGroupID,
getGroups,
getLoginName,
getEffectiveUserName,
-- *** The group database
GroupEntry(..),
getGroupEntryForID,
getGroupEntryForName,
getAllGroupEntries,
-- *** The user database
UserEntry(..),
getUserEntryForID,
getUserEntryForName,
getAllUserEntries,
-- ** Modifying the user environment
setUserID,
setGroupID
) where
#include "HsUnixCompat.h"
#if UNIX_IMPL
import System.Posix.User
#else /* Portable implementation */
import System.IO.Error
import System.Posix.Types
#endif
#if UNIX_IMPL
#else /* Portable implementation */
unsupported :: String -> IO a
unsupported f = ioError $ mkIOError illegalOperationErrorType x Nothing Nothing
where x = "System.PosixCompat.User." ++ f ++ ": not supported"
-- -----------------------------------------------------------------------------
-- User environment
getRealUserID :: IO UserID
getRealUserID = unsupported "getRealUserID"
getRealGroupID :: IO GroupID
getRealGroupID = unsupported "getRealGroupID"
getEffectiveUserID :: IO UserID
getEffectiveUserID = unsupported "getEffectiveUserID"
getEffectiveGroupID :: IO GroupID
getEffectiveGroupID = unsupported "getEffectiveGroupID"
getGroups :: IO [GroupID]
getGroups = return []
getLoginName :: IO String
getLoginName = unsupported "getLoginName"
setUserID :: UserID -> IO ()
setUserID uid = return ()
setGroupID :: GroupID -> IO ()
setGroupID gid = return ()
-- -----------------------------------------------------------------------------
-- User names
getEffectiveUserName :: IO String
getEffectiveUserName = unsupported "getEffectiveUserName"
-- -----------------------------------------------------------------------------
-- The group database
data GroupEntry =
GroupEntry {
groupName :: String,
groupPassword :: String,
groupID :: GroupID,
groupMembers :: [String]
} deriving (Show, Read, Eq)
getGroupEntryForID :: GroupID -> IO GroupEntry
getGroupEntryForID gid = unsupported "getGroupEntryForID"
getGroupEntryForName :: String -> IO GroupEntry
getGroupEntryForName name = unsupported "getGroupEntryForName"
getAllGroupEntries :: IO [GroupEntry]
getAllGroupEntries = return []
-- -----------------------------------------------------------------------------
-- The user database (pwd.h)
data UserEntry =
UserEntry {
userName :: String,
userPassword :: String,
userID :: UserID,
userGroupID :: GroupID,
userGecos :: String,
homeDirectory :: String,
userShell :: String
} deriving (Show, Read, Eq)
getUserEntryForID :: UserID -> IO UserEntry
getUserEntryForID uid = unsupported "getUserEntryForID"
getUserEntryForName :: String -> IO UserEntry
getUserEntryForName name = unsupported "getUserEntryForName"
getAllUserEntries :: IO [UserEntry]
getAllUserEntries = return []
#endif