openDirStream :: FilePath -> IO DirStream
openDirStream dir
calls opendir
to obtain a
directory stream for dir
.
readDirStream :: DirStream -> IO String
readDirStream dp
calls readdir
to obtain the
next directory entry (struct dirent
) for the open directory
stream dp
, and returns the d_name
member of that
structure.
The operation may fail with:
EOF
End of file has been reached.
SystemError
Various other causes.
rewindDirStream :: DirStream -> IO ()
rewindDirStream dp
calls rewinddir
to reposition
the directory stream dp
at the beginning of the directory.
closeDirStream :: DirStream -> IO ()
closeDirStream dp
calls closedir
to close
the directory stream dp
.
getWorkingDirectory :: IO FilePath
getWorkingDirectory
calls getcwd
to obtain the name
of the current working directory.
changeWorkingDirectory :: FilePath -> IO ()
changeWorkingDirectory dir
calls chdir
to change
the current working directory to dir
.
nullFileMode :: FileMode -- --------- ownerReadMode :: FileMode -- r-------- ownerWriteMode :: FileMode -- -w------- ownerExecuteMode :: FileMode -- --x------ groupReadMode :: FileMode -- ---r----- groupWriteMode :: FileMode -- ----w---- groupExecuteMode :: FileMode -- -----x--- otherReadMode :: FileMode -- ------r-- otherWriteMode :: FileMode -- -------w- otherExecuteMode :: FileMode -- --------x setUserIDMode :: FileMode -- --S------ setGroupIDMode :: FileMode -- -----S--- stdFileMode :: FileMode -- rw-rw-rw- ownerModes :: FileMode -- rwx------ groupModes :: FileMode -- ---rwx--- otherModes :: FileMode -- ------rwx accessModes :: FileMode -- rwxrwxrwx unionFileModes :: FileMode -> FileMode -> FileMode intersectFileModes :: FileMode -> FileMode -> FileMode stdInput :: Fd stdInput = intToFd 0 stdOutput :: Fd stdOutput = intToFd 1 stdError :: Fd stdError = intToFd 2 data OpenFileFlags = OpenFileFlags { append :: Bool, exclusive :: Bool, noctty :: Bool, nonBlock :: Bool, trunc :: Bool } openFd :: FilePath -> OpenMode -> Maybe FileMode -- Just x => O_CREAT, Nothing => must exist -> OpenFileFlags -> IO Fd
openFd path acc mode (OpenFileFlags app excl noctty nonblock trunc)
calls
open
to obtain a Fd
for the file path
with access
mode acc
. If mode
is Just m
, the O_CREAT
flag is
set and the file's permissions will be based on m
if it does not
already exist; otherwise, the O_CREAT
flag is not set. The
arguments app
, excl
, noctty
, nonblock
, and
trunc
control whether or not the flags O_APPEND
,
O_EXCL
, O_NOCTTY
, O_NONBLOCK
, and O_TRUNC
are set,
respectively.
createFile :: FilePath -> FileMode -> IO Fd
createFile path mode
calls creat
to obtain a Fd
for file path
, which will be created with permissions based on
mode
if it does not already exist.
setFileCreationMask :: FileMode -> IO FileMode
setFileCreationMask mode
calls umask
to set
the process's file creation mask to mode
. The previous file
creation mask is returned.
createLink :: FilePath -> FilePath -> IO ()
createLink old new
calls link
to create a
new path, new
, linked to an existing file, old
.
createDirectory :: FilePath -> FileMode -> IO ()
createDirectory dir mode
calls mkdir
to
create a new directory, dir
, with permissions based on
mode
.
createNamedPipe :: FilePath -> FileMode -> IO ()
createNamedPipe fifo mode
calls mkfifo
to
create a new named pipe, fifo
, with permissions based on
mode
.
removeLink :: FilePath -> IO ()
removeLink path
calls unlink
to remove the link
named path
.
removeDirectory :: FilePath -> IO ()
removeDirectory dir
calls rmdir
to remove the
directory named dir
.
rename :: FilePath -> FilePath -> IO ()
rename old new
calls rename
to rename a
file or directory from old
to new
.
fileMode :: FileStatus -> FileMode fileID :: FileStatus -> FileID deviceID :: FileStatus -> DeviceID linkCount :: FileStatus -> LinkCount fileOwner :: FileStatus -> UserID fileGroup :: FileStatus -> GroupID fileSize :: FileStatus -> FileOffset accessTime :: FileStatus -> EpochTime modificationTime :: FileStatus -> EpochTime statusChangeTime :: FileStatus -> EpochTime isDirectory :: FileStatus -> Bool isCharacterDevice :: FileStatus -> Bool isBlockDevice :: FileStatus -> Bool isRegularFile :: FileStatus -> Bool isNamedPipe :: FileStatus -> Bool getFileStatus :: FilePath -> IO FileStatus
getFileStatus path
calls stat
to get the
FileStatus
information for the file path
.
getFdStatus :: Fd -> IO FileStatus
getFdStatus fd
calls fstat
to get the
FileStatus
information for the file associated with
Fd
fd
.
queryAccess :: FilePath -> Bool -> Bool -> Bool -> IO Bool
queryAccess path r w x
calls access
to test the access
permissions for file path
. The three arguments, r
, w
,
and x
control whether or not access
is called with
R_OK
, W_OK
, and X_OK
respectively.
queryFile :: FilePath -> IO Bool
queryFile path
calls access
with F_OK
to test for the
existence for file path
.
setFileMode :: FilePath -> FileMode -> IO ()
setFileMode path mode
calls chmod
to set the
permission bits associated with file path
to mode
.
setOwnerAndGroup :: FilePath -> UserID -> GroupID -> IO ()
setOwnerAndGroup path uid gid
calls chown
to
set the UserID
and GroupID
associated with file
path
to uid
and gid
, respectively.
setFileTimes :: FilePath -> EpochTime -> EpochTime -> IO ()
setFileTimes path atime mtime
calls utime
to
set the access and modification times associated with file
path
to atime
and mtime
, respectively.
touchFile :: FilePath -> IO ()
touchFile path
calls utime
to
set the access and modification times associated with file
path
to the current time.
getPathVar :: PathVar -> FilePath -> IO Limit
getPathVar var path
calls pathconf
to obtain the
dynamic value of the requested configurable file limit or option associated
with file or directory path
. For
defined file limits, getPathVar
returns the associated
value. For defined file options, the result of getPathVar
is undefined, but not failure.
The operation may fail with:
NoSuchThing
The requested file limit or option is undefined.
SystemError
Various other causes.
getFdVar :: PathVar -> Fd -> IO Limit
getFdVar var fd
calls fpathconf
to obtain the
dynamic value of the requested configurable file limit or option associated
with the file or directory attached to the open channel fd
.
For defined file limits, getFdVar
returns the associated
value. For defined file options, the result of getFdVar
is undefined, but not failure.
The operation may fail with:
NoSuchThing
The requested file limit or option is undefined.
SystemError
Various other causes.