úÎÎÖÌ#      !"portablestablelibraries@haskell.org Trustworthy The   operation returns the 'permissions for the file or directory. The operation may fail with:  #( if the user is not permitted to access  the permissions; or  $* if the file or directory does not exist. The   operation sets the 'permissions for the file or directory. The operation may fail with:  #% if the user is not permitted to set  the permissions; or  $* if the file or directory does not exist.   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:  # / % BThe process has insufficient privileges to perform the operation. [EROFS, EACCES]  & / ' 9The operand refers to a directory that already exists.  [EEXIST]  (  A physical I/O error has occurred. [EIO]  ) +The operand is not a valid directory name. [ENAMETOOLONG, ELOOP]  * $There is no path to the directory. [ENOENT, ENOTDIR]  + BInsufficient resources (virtual memory, process file descriptors, Cphysical disk space, etc.) are available to perform the operation. [EDQUOT, ENOSPC, ENOMEM, EMLINK]  , 5The path refers to an existing non-directory object. [EEXIST]  parents dir creates a new directory  dir if it doesn'"t exist. If the first argument is - K the function will also create all parent directories if they are missing.  dir removes an existing directory dir. The @implementation may specify additional constraints which must be Gsatisfied before a directory can be removed (e.g. the directory has to Ebe empty, or may not be in use by other processes). It is not legal Afor an implementation to partially remove a directory unless the Bentire directory is removed. A conformant implementation need not Fsupport directory removal in all situations (e.g. removal of the root  directory). The operation may fail with:  (  A physical I/O error has occurred. EIO  ) +The operand is not a valid directory name. [ENAMETOOLONG, ELOOP]  $ / * The directory does not exist. [ENOENT, ENOTDIR]  # / % BThe process has insufficient privileges to perform the operation. [EROFS, EACCES, EPERM]  . :Implementation-dependent constraints are not satisfied. [EBUSY, ENOTEMPTY, EEXIST]  / ?The implementation does not support removal in this situation. [EINVAL]  , 8The operand refers to an existing non-directory object. [ENOTDIR]  dir removes an existing directory dir @ together with its content and all subdirectories. Be careful, D if the directory contains symlinks, the function will follow them.  file2 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 Dsatisfied before a file can be removed (e.g. the file may not be in use by other processes). The operation may fail with:  (  A physical I/O error has occurred. [EIO]  ) &The operand is not a valid file name. [ENAMETOOLONG, ELOOP]  $ / * The file does not exist. [ENOENT, ENOTDIR]  # / % BThe process has insufficient privileges to perform the operation. [EROFS, EACCES, EPERM]  . :Implementation-dependent constraints are not satisfied. [EBUSY]  , -The operand refers to an existing directory. [EPERM, EINVAL]  old new! changes the name of an existing directory from old to new . If the new directory 1already 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 0. A conformant implementation need not support Erenaming directories in all situations (e.g. renaming to an existing Fdirectory, 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:  (  A physical I/O error has occurred. [EIO]  ) .Either operand is not a valid directory name. [ENAMETOOLONG, ELOOP]  $ / * JThe original directory does not exist, or there is no path to the target. [ENOENT, ENOTDIR]  # / % BThe process has insufficient privileges to perform the operation. [EROFS, EACCES, EPERM]  + AInsufficient resources are available to perform the operation. [EDQUOT, ENOSPC, ENOMEM, EMLINK]  . 8Implementation-dependent constraints are not satisfied. [EBUSY, ENOTEMPTY, EEXIST]  / @The implementation does not support renaming in this situation. [EINVAL, EXDEV]  , 8Either path refers to an existing non-directory object. [ENOTDIR, EISDIR]  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 Fpath may refer to an existing directory. A conformant implementation Aneed 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:  (  A physical I/O error has occurred. [EIO]  ) )Either operand is not a valid file name. [ENAMETOOLONG, ELOOP]  $ / * EThe original file does not exist, or there is no path to the target. [ENOENT, ENOTDIR]  # / % BThe process has insufficient privileges to perform the operation. [EROFS, EACCES, EPERM]  + AInsufficient resources are available to perform the operation. [EDQUOT, ENOSPC, ENOMEM, EMLINK]  . 8Implementation-dependent constraints are not satisfied. [EBUSY]  / @The implementation does not support renaming in this situation. [EXDEV]  , -Either path refers to an existing directory. +[ENOTDIR, EISDIR, EINVAL, EEXIST, ENOTEMPTY]  old new copies the existing file from old to new. If the new7 file already exists, it is atomically replaced by the old file. ENeither path may refer to an existing directory. The permissions of old are  copied to new, if possible. 7Given 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 8 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. 0 the current directory. =Given an executable file name, searches for such file in the C directories listed in system PATH. The returned value is the path D to the found executable or Nothing if an executable with the given 1 name was not found. For example (findExecutable "ghc" ) gives you  the path to GHC. The path returned by  corresponds to the # program that would be executed by  D when passed the same string (as a RawCommand, not a ShellCommand).  On Windows,  calls the Win32 function  SearchPath, B 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   5http://msdn.microsoft.com/en-us/library/aa365527.aspx for more  details. @Search through the given set of directories for the given file.  Used by  on non-windows platforms.  dir returns a list of all entries in dir. The operation may fail with:  (  A physical I/O error has occurred. [EIO]  ) +The operand is not a valid directory name. [ENAMETOOLONG, ELOOP]  $ / * The directory does not exist. [ENOENT, ENOTDIR]  # / % BThe process has insufficient privileges to perform the operation. [EACCES]  + ?Insufficient resources are available to perform the operation. [EMFILE, ENFILE]  , 5The path refers to an existing non-directory object. [ENOTDIR] =If the operating system has a notion of current directories, ! returns an absolute path to the *current directory of the calling process. The operation may fail with:  (  A physical I/O error has occurred. [EIO]  $ / * 5There is no path referring to the current directory. [EPERM, ENOENT, ESTALE...]  # / % BThe process has insufficient privileges to perform the operation. [EACCES]  + ?Insufficient resources are available to perform the operation.  / 9The operating system has no notion of current directory. CNote that in a concurrent program, the current directory is global =state shared between all threads of the process. When using Dfilesystem operations from multiple threads, it is therefore highly 1recommended to use absolute rather than relative 1s. =If the operating system has a notion of current directories,  dir changes the current $directory of the calling process to dir. The operation may fail with:  (  A physical I/O error has occurred. [EIO]  ) +The operand is not a valid directory name. [ENAMETOOLONG, ELOOP]  $ / * The directory does not exist. [ENOENT, ENOTDIR]  # / % BThe process has insufficient privileges to perform the operation. [EACCES]  / @The operating system has no notion of current directory, or the 1current directory cannot be dynamically changed.  , 5The path refers to an existing non-directory object. [ENOTDIR] CNote that in a concurrent program, the current directory is global =state shared between all threads of the process. When using Dfilesystem operations from multiple threads, it is therefore highly 1recommended to use absolute rather than relative 1s. The operation  returns - if the argument file exists and is a directory, and 2 otherwise. The operation  returns - 8if the argument file exists and is not a directory, and 2 otherwise. The  operation returns the =clock time at which the file or directory was last modified. The operation may fail with:  #( if the user is not permitted to access  the modification time; or  $* if the file or directory does not exist. Returns the current user's home directory. GThe 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    instead.  On Unix,  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:  / 6The operating system has no notion of home directory.  $ ;The home directory for the current user does not exist, or cannot be found. BReturns the pathname of a directory in which application-specific 8data for the current user can be stored. The result of  ( for a given application is specific to the current user. GThe argument should be the name of the application, which will be used Bto construct the pathname (so avoid using unusual characters that &might result in an invalid pathname). GNote: 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  9 C:/Documents And Settings/user/Application Data/appName The operation may fail with:  / KThe operating system has no notion of application-specific data directory.  $ ;The home directory for the current user does not exist, or cannot be found. !Returns the current user's document directory. GThe 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    instead.  On Unix, ! 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:  / :The operating system has no notion of document directory.  $ ?The document directory for the current user does not exist, or cannot be found. "3Returns the current directory for temporary files.  On Unix, " returns the value of the TMPDIR environment variable or "/tmp" if the variable isn' t defined. OOn Windows, the function checks for the existence of environment variables in 3the 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 operating system has no notion of temporary directory. The function doesn'"t verify whether the path exists. 3Extension for executable files  (typically "" on Unix and "exe" on Windows or OS/2) '456 Create its parents too? +The path to the directory you want to make  !"3#  !"'  !" "456  !"37      !"#$%&'()'(*'+,'(-'+.'+/'+0'+1'+2'+3456'+7'+89:;'<=45>?@ABdirectory-1.2.0.0System.DirectorySystem.Process createProcess Permissionsreadablewritable executable searchableemptyPermissionssetOwnerReadablesetOwnerWritablesetOwnerExecutablesetOwnerSearchablegetPermissionssetPermissionscopyPermissionscreateDirectorycreateDirectoryIfMissingremoveDirectoryremoveDirectoryRecursive removeFilerenameDirectory renameFilecopyFilecanonicalizePathmakeRelativeToCurrentDirectoryfindExecutablefindFilegetDirectoryContentsgetCurrentDirectorysetCurrentDirectorydoesDirectoryExist doesFileExistgetModificationTimegetHomeDirectorygetAppUserDataDirectorygetUserDocumentsDirectorygetTemporaryDirectorybaseSystem.IO.ErrorisPermissionErrorisDoesNotExistErrorGHC.IO.ExceptionPermissionDeniedisAlreadyExistsError AlreadyExists HardwareFaultInvalidArgument NoSuchThingResourceExhaustedInappropriateTypeghc-prim GHC.TypesTrueUnsatisfiedConstraintsUnsupportedOperationfilepath-1.3.0.1System.FilePath.Posix makeRelativeGHC.IOFilePathFalse exeExtensionlong_path_size c_realpath