-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Portable POSIX-compatibility layer.
--   
--   This package provides portable implementations of parts of the unix
--   package. This package re-exports the unix package when available. When
--   it isn't available, portable implementations are used.
@package unix-compat
@version 0.7.2


-- | This module makes the operations exported by
--   <tt>System.Posix.Files</tt> available on all platforms. On POSIX
--   systems it re-exports operations from <tt>System.Posix.Files</tt>. On
--   other platforms it emulates the operations as far as possible.
--   
--   /NOTE: the portable implementations are not well tested, in some cases
--   functions are only stubs./
module System.PosixCompat.Files
unionFileModes :: FileMode -> FileMode -> FileMode
intersectFileModes :: FileMode -> FileMode -> FileMode
nullFileMode :: FileMode
ownerReadMode :: FileMode
ownerWriteMode :: FileMode
ownerExecuteMode :: FileMode
ownerModes :: FileMode
groupReadMode :: FileMode
groupWriteMode :: FileMode
groupExecuteMode :: FileMode
groupModes :: FileMode
otherReadMode :: FileMode
otherWriteMode :: FileMode
otherExecuteMode :: FileMode
otherModes :: FileMode
setUserIDMode :: FileMode
setGroupIDMode :: FileMode
stdFileMode :: FileMode
accessModes :: FileMode
setFileMode :: FilePath -> FileMode -> IO ()
setFdMode :: Fd -> FileMode -> IO ()
setFileCreationMask :: FileMode -> IO FileMode
fileAccess :: FilePath -> Bool -> Bool -> Bool -> IO Bool
fileExist :: FilePath -> IO Bool
data () => FileStatus
getFileStatus :: FilePath -> IO FileStatus
getFdStatus :: Fd -> IO FileStatus
getSymbolicLinkStatus :: FilePath -> IO FileStatus
deviceID :: FileStatus -> DeviceID
fileID :: FileStatus -> FileID
fileMode :: FileStatus -> FileMode
linkCount :: FileStatus -> LinkCount
fileOwner :: FileStatus -> UserID
fileGroup :: FileStatus -> GroupID
specialDeviceID :: FileStatus -> DeviceID
fileSize :: FileStatus -> FileOffset
accessTime :: FileStatus -> EpochTime
modificationTime :: FileStatus -> EpochTime
statusChangeTime :: FileStatus -> EpochTime
accessTimeHiRes :: FileStatus -> POSIXTime
modificationTimeHiRes :: FileStatus -> POSIXTime
statusChangeTimeHiRes :: FileStatus -> POSIXTime
isBlockDevice :: FileStatus -> Bool
isCharacterDevice :: FileStatus -> Bool
isNamedPipe :: FileStatus -> Bool
isRegularFile :: FileStatus -> Bool
isDirectory :: FileStatus -> Bool
isSymbolicLink :: FileStatus -> Bool
isSocket :: FileStatus -> Bool
createNamedPipe :: FilePath -> FileMode -> IO ()
createDevice :: FilePath -> FileMode -> DeviceID -> IO ()
createLink :: FilePath -> FilePath -> IO ()
removeLink :: FilePath -> IO ()
createSymbolicLink :: FilePath -> FilePath -> IO ()
readSymbolicLink :: FilePath -> IO FilePath
rename :: FilePath -> FilePath -> IO ()
setOwnerAndGroup :: FilePath -> UserID -> GroupID -> IO ()
setFdOwnerAndGroup :: Fd -> UserID -> GroupID -> IO ()
setSymbolicLinkOwnerAndGroup :: FilePath -> UserID -> GroupID -> IO ()
setFileTimes :: FilePath -> EpochTime -> EpochTime -> IO ()
touchFile :: FilePath -> IO ()
setFileSize :: FilePath -> FileOffset -> IO ()
setFdSize :: Fd -> FileOffset -> IO ()
data () => PathVar
FileSizeBits :: PathVar
LinkLimit :: PathVar
InputLineLimit :: PathVar
InputQueueLimit :: PathVar
FileNameLimit :: PathVar
PathNameLimit :: PathVar
PipeBufferLimit :: PathVar
SymbolicLinkLimit :: PathVar
SetOwnerAndGroupIsRestricted :: PathVar
FileNamesAreNotTruncated :: PathVar
VDisableChar :: PathVar
AsyncIOAvailable :: PathVar
PrioIOAvailable :: PathVar
SyncIOAvailable :: PathVar
getPathVar :: FilePath -> PathVar -> IO Limit
getFdPathVar :: Fd -> PathVar -> IO Limit


-- | This module intends to make the operations of
--   <tt>System.Posix.Process</tt> available on all platforms.
module System.PosixCompat.Process
getProcessID :: IO ProcessID


-- | This module makes the operations exported by
--   <tt>System.Posix.Temp</tt> available on all platforms. On POSIX
--   systems it re-exports operations from <tt>System.Posix.Temp</tt>, on
--   other platforms it emulates the operations as far as possible.
module System.PosixCompat.Temp
mkstemp :: String -> IO (FilePath, Handle)


-- | This module makes the operations exported by
--   <tt>System.Posix.Time</tt> available on all platforms. On POSIX
--   systems it re-exports operations from <tt>System.Posix.Time</tt>, on
--   other platforms it emulates the operations as far as possible.
module System.PosixCompat.Time
epochTime :: IO EpochTime


-- | This module re-exports the types from <tt>System.Posix.Types</tt> on
--   all platforms.
--   
--   On Windows <a>UserID</a>, <a>GroupID</a> and <a>LinkCount</a> are
--   missing, so they are redefined by this module.
module System.PosixCompat.Types


-- | This module provides some functions not present in the unix package.
module System.PosixCompat.Extensions
type CMajor = CUInt
type CMinor = CUInt

-- | Gets the major number from a <a>DeviceID</a> for a device file.
--   
--   The portable implementation always returns <tt>0</tt>.
deviceMajor :: DeviceID -> CMajor

-- | Gets the minor number from a <a>DeviceID</a> for a device file.
--   
--   The portable implementation always returns <tt>0</tt>.
deviceMinor :: DeviceID -> CMinor

-- | Creates a <a>DeviceID</a> for a device file given a major and minor
--   number.
makeDeviceID :: CMajor -> CMinor -> DeviceID


-- | This module makes the operations exported by
--   <tt>System.Posix.Unistd</tt> available on all platforms. On POSIX
--   systems it re-exports operations from <tt>System.Posix.Unistd</tt>, on
--   other platforms it emulates the operations as far as possible.
module System.PosixCompat.Unistd
data () => SystemID
SystemID :: String -> String -> String -> String -> String -> SystemID
[systemName] :: SystemID -> String
[nodeName] :: SystemID -> String
[release] :: SystemID -> String
[version] :: SystemID -> String
[machine] :: SystemID -> String
getSystemID :: IO SystemID
sleep :: Int -> IO Int
usleep :: Int -> IO ()
nanosleep :: Integer -> IO ()


-- | The <tt>unix-compat</tt> package provides portable implementations of
--   parts of the <tt>unix</tt> package. On POSIX system it re-exports
--   operations from the <tt>unix</tt> package, on other platforms it
--   emulates the operations as far as possible.
module System.PosixCompat

-- | <a>True</a> if unix-compat is using its portable implementation, or
--   <a>False</a> if the unix package is simply being re-exported.
usingPortableImpl :: Bool
