-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | library for directory handling
--
-- This package provides a library for handling directories.
@package directory
@version 1.0.1.2
-- | System-independent interface to directory manipulation.
module System.Directory
-- | createDirectory dir creates a new directory
-- dir which is initially empty, or as near to empty as the
-- operating system allows.
--
-- The operation may fail with:
--
--
-- - isPermissionError / PermissionDenied The process has
-- insufficient privileges to perform the operation. [EROFS,
-- EACCES]
-- - isAlreadyExistsError / AlreadyExists The operand
-- refers to a directory that already exists. [EEXIST]
-- - HardwareFault A physical I/O error has occurred.
-- [EIO]
-- - InvalidArgument The operand is not a valid directory name.
-- [ENAMETOOLONG, ELOOP]
-- - NoSuchThing There is no path to the directory. [ENOENT,
-- ENOTDIR]
-- - ResourceExhausted Insufficient resources (virtual memory,
-- process file descriptors, physical disk space, etc.) are available to
-- perform the operation. [EDQUOT, ENOSPC, ENOMEM, EMLINK]
-- - InappropriateType The path refers to an existing
-- non-directory object. [EEXIST]
--
createDirectory :: FilePath -> IO ()
-- | createDirectoryIfMissing parents dir creates a new
-- directory dir if it doesn't exist. If the first argument is
-- True the function will also create all parent directories if
-- they are missing.
createDirectoryIfMissing :: Bool -> FilePath -> IO ()
-- | removeDirectory dir removes an existing directory
-- dir. The implementation may specify additional constraints
-- which must be satisfied before a directory can be removed (e.g. the
-- directory has to be empty, or may not be in use by other processes).
-- It is not legal for an implementation to partially remove a directory
-- unless the entire directory is removed. A conformant implementation
-- need not support directory removal in all situations (e.g. removal of
-- the root directory).
--
-- The operation may fail with:
--
--
removeDirectory :: FilePath -> IO ()
-- | removeDirectoryRecursive dir removes an existing
-- directory dir together with its content and all subdirectories.
-- Be careful, if the directory contains symlinks, the function will
-- follow them.
removeDirectoryRecursive :: FilePath -> IO ()
-- | renameDirectory old new changes the name of an
-- existing directory from old to new. If the new
-- directory already exists, it is atomically replaced by the old
-- directory. If the new directory is neither the old
-- directory nor an alias of the old directory, it is removed as
-- if by removeDirectory. A conformant implementation need not
-- support renaming directories in all situations (e.g. renaming to an
-- existing directory, or across different physical devices), but the
-- constraints must be documented.
--
-- On Win32 platforms, renameDirectory fails if the new
-- directory already exists.
--
-- The operation may fail with:
--
--
-- - HardwareFault A physical I/O error has occurred.
-- [EIO]
-- - InvalidArgument Either operand is not a valid directory
-- name. [ENAMETOOLONG, ELOOP]
-- - isDoesNotExistError / NoSuchThing The original
-- directory does not exist, or there is no path to the target.
-- [ENOENT, ENOTDIR]
-- - isPermissionError / PermissionDenied The process has
-- insufficient privileges to perform the operation. [EROFS, EACCES,
-- EPERM]
-- - ResourceExhausted Insufficient resources are available to
-- perform the operation. [EDQUOT, ENOSPC, ENOMEM, EMLINK]
-- - UnsatisfiedConstraints Implementation-dependent constraints
-- are not satisfied. [EBUSY, ENOTEMPTY, EEXIST]
-- - UnsupportedOperation The implementation does not support
-- renaming in this situation. [EINVAL, EXDEV]
-- - InappropriateType Either path refers to an existing
-- non-directory object. [ENOTDIR, EISDIR]
--
renameDirectory :: FilePath -> FilePath -> IO ()
-- | getDirectoryContents dir returns a list of all
-- entries in dir.
--
-- The operation may fail with:
--
--
getDirectoryContents :: FilePath -> IO [FilePath]
-- | If the operating system has a notion of current directories,
-- getCurrentDirectory returns an absolute path to the current
-- directory of the calling process.
--
-- The operation may fail with:
--
--
getCurrentDirectory :: IO FilePath
-- | If the operating system has a notion of current directories,
-- setCurrentDirectory dir changes the current directory
-- of the calling process to dir.
--
-- The operation may fail with:
--
--
setCurrentDirectory :: FilePath -> IO ()
-- | Returns the current user's home directory.
--
-- The directory returned is expected to be writable by the current user,
-- but note that it isn't generally considered good practice to store
-- application-specific data here; use getAppUserDataDirectory
-- instead.
--
-- On Unix, getHomeDirectory returns the value of the
-- HOME environment variable. On Windows, the system is queried
-- for a suitable path; a typical path might be C:Documents And
-- Settingsuser.
--
-- The operation may fail with:
--
--
getHomeDirectory :: IO FilePath
-- | Returns the pathname of a directory in which application-specific data
-- for the current user can be stored. The result of
-- getAppUserDataDirectory for a given application is specific to
-- the current user.
--
-- The argument should be the name of the application, which will be used
-- to construct the pathname (so avoid using unusual characters that
-- might result in an invalid pathname).
--
-- Note: the directory may not actually exist, and may need to be created
-- first. It is expected that the parent directory exists and is
-- writable.
--
-- On Unix, this function returns $HOME/.appName. On Windows, a
-- typical path might be
--
--
-- C:/Documents And Settings/user/Application Data/appName
--
--
-- The operation may fail with:
--
--
-- - UnsupportedOperation The operating system has no notion of
-- application-specific data directory.
-- - isDoesNotExistError The home directory for the current user
-- does not exist, or cannot be found.
--
getAppUserDataDirectory :: String -> IO FilePath
-- | Returns the current user's document directory.
--
-- The directory returned is expected to be writable by the current user,
-- but note that it isn't generally considered good practice to store
-- application-specific data here; use getAppUserDataDirectory
-- instead.
--
-- On Unix, getUserDocumentsDirectory returns the value of the
-- HOME environment variable. On Windows, the system is queried
-- for a suitable path; a typical path might be C:/Documents and
-- Settings/user/My Documents.
--
-- The operation may fail with:
--
--
getUserDocumentsDirectory :: IO FilePath
-- | Returns the current directory for temporary files.
--
-- On Unix, getTemporaryDirectory returns the value of the
-- TMPDIR environment variable or "/tmp" if the variable isn't
-- defined. On Windows, the function checks for the existence of
-- environment variables in the following order and uses the first path
-- found:
--
--
-- - TMP environment variable.
-- - TEMP environment variable.
-- - USERPROFILE environment variable.
-- - The Windows directory
--
--
-- The operation may fail with:
--
--
--
-- The function doesn't verify whether the path exists.
getTemporaryDirectory :: IO FilePath
-- | removeFile file removes the directory entry for an
-- existing file file, where file is not itself a
-- directory. The implementation may specify additional constraints which
-- must be satisfied before a file can be removed (e.g. the file may not
-- be in use by other processes).
--
-- The operation may fail with:
--
--
removeFile :: FilePath -> IO ()
-- | renameFile old new changes the name of an existing
-- file system object from old to new. If the new
-- object already exists, it is atomically replaced by the old
-- object. Neither path may refer to an existing directory. A conformant
-- implementation need not support renaming files in all situations (e.g.
-- renaming across different physical devices), but the constraints must
-- be documented.
--
-- The operation may fail with:
--
--
-- - HardwareFault A physical I/O error has occurred.
-- [EIO]
-- - InvalidArgument Either operand is not a valid file name.
-- [ENAMETOOLONG, ELOOP]
-- - isDoesNotExistError / NoSuchThing The original file
-- does not exist, or there is no path to the target. [ENOENT,
-- ENOTDIR]
-- - isPermissionError / PermissionDenied The process has
-- insufficient privileges to perform the operation. [EROFS, EACCES,
-- EPERM]
-- - ResourceExhausted Insufficient resources are available to
-- perform the operation. [EDQUOT, ENOSPC, ENOMEM, EMLINK]
-- - UnsatisfiedConstraints Implementation-dependent constraints
-- are not satisfied. [EBUSY]
-- - UnsupportedOperation The implementation does not support
-- renaming in this situation. [EXDEV]
-- - InappropriateType Either path refers to an existing
-- directory. [ENOTDIR, EISDIR, EINVAL, EEXIST, ENOTEMPTY]
--
renameFile :: FilePath -> FilePath -> IO ()
-- | copyFile old new copies the existing file from
-- old to new. If the new file already exists, it is
-- atomically replaced by the old file. Neither path may refer to
-- an existing directory. The permissions of old are copied to
-- new, if possible.
copyFile :: FilePath -> FilePath -> IO ()
-- | Given path referring to a file or directory, returns a canonicalized
-- path, with the intent that two paths referring to the same
-- file/directory will map to the same canonicalized path. Note that it
-- is impossible to guarantee that the implication (same file/dir
-- <=> same canonicalizedPath) holds in either direction: this
-- function can make only a best-effort attempt.
canonicalizePath :: FilePath -> IO FilePath
-- | makeRelative the current directory.
makeRelativeToCurrentDirectory :: FilePath -> IO FilePath
-- | Given an executable file name, searches for such file in the
-- directories listed in system PATH. The returned value is the path to
-- the found executable or Nothing if an executable with the given name
-- was not found. For example (findExecutable "ghc") gives you the path
-- to GHC.
--
-- The path returned by findExecutable corresponds to the program
-- that would be executed by System.Process.createProcess when
-- passed the same string (as a RawCommand, not a ShellCommand).
--
-- On Windows, findExecutable calls the Win32 function
-- SearchPath, which may search other places before checking the
-- directories in PATH. Where it actually searches depends on
-- registry settings, but notably includes the directory containing the
-- current executable. See
-- http://msdn.microsoft.com/en-us/library/aa365527.aspx for more
-- details.
findExecutable :: String -> IO (Maybe FilePath)
-- | The operation doesFileExist returns True if the argument
-- file exists and is not a directory, and False otherwise.
doesFileExist :: FilePath -> IO Bool
-- | The operation doesDirectoryExist returns True if the
-- argument file exists and is a directory, and False otherwise.
doesDirectoryExist :: FilePath -> IO Bool
data Permissions
Permissions :: Bool -> Bool -> Bool -> Bool -> Permissions
readable :: Permissions -> Bool
writable :: Permissions -> Bool
executable :: Permissions -> Bool
searchable :: Permissions -> Bool
-- | The getPermissions operation returns the permissions for the
-- file or directory.
--
-- The operation may fail with:
--
--
getPermissions :: FilePath -> IO Permissions
-- | The setPermissions operation sets the permissions for the file
-- or directory.
--
-- The operation may fail with:
--
--
setPermissions :: FilePath -> Permissions -> IO ()
copyPermissions :: FilePath -> FilePath -> IO ()
-- | The getModificationTime operation returns the clock time at
-- which the file or directory was last modified.
--
-- The operation may fail with:
--
--
getModificationTime :: FilePath -> IO ClockTime
instance Eq Permissions
instance Ord Permissions
instance Read Permissions
instance Show Permissions