h$DB      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX 2016 Julian OspaldBSD3"Julian Ospald  experimentalportableNone3  hpath-directoryA type for giving failure hints on recursive failure, which allows to programmatically make choices without examining the weakly typed I/O error attributes (like ioeGetFileName).The first argument to the data constructor is always the source and the second the destination. hpath-directoryAdditional generic IO exceptions that the posix functions do not provide.hpath-directoryThrows  AlreadyExists Y if file exists.hpath-directoryThrows  AlreadyExists Y if directory exists.hpath-directoryUses  and throws   if it returns True.hpath-directoryCheck if the files are the same by examining device and file id. This follows symbolic links.hpath-directoryChecks whether the destination directory is contained within the source directory by comparing the device+file ID of the source directory with all device+file IDs of the parent directories of the destination.hpath-directoryCarries out an action, then checks if there is an IOException and a specific errno. If so, then it carries out another action, otherwise it rethrows the error.hpath-directoryExecute the given action and retrow IO exceptions as a new Exception that have the given errno. If errno does not match the exception is rethrown as is.hpath-directoryLike Z, with arguments swapped.hpath-directoryLike [, but allows to have different clean-up actions depending on whether the in-between computation has raised an exception or not.hpath-directory source dirhpath-directoryfull destination,  dirname dest must existhpath-directoryerrno to catchhpath-directory-action to try, which can raise an IOExceptionhpath-directoryaction to carry out in case of an IOException and if errno matcheshpath-directoryerrno to catchhpath-directoryrethrow as if errno matcheshpath-directory action to tryhpath-directorycomputation to run firsthpath-directory8computation to run last, when no exception was raisedhpath-directory8computation to run last, when an exception was raisedhpath-directorycomputation to run in-between hpath-directoryreaction on IO errorshpath-directoryreaction on HPathIOException      2020 Julian OspaldBSD3"Julian Ospald  experimentalportableNone?Bv*hpath-directoryChecks whether the directory at the given path exists and can be opened. This invokes \ which follows symlinks.hpath-directory,Checks whether a file or folder is writable.Only eACCES, eROFS, eTXTBSY, ePERM are catched (and return False).Throws:] if the file does not existhpath-directoryChecks if the given file exists and is a directory. Does not follow symlinks.+Only eNOENT is catched (and returns False).hpath-directoryChecks if the given file exists and is not a directory. Does not follow symlinks.+Only eNOENT is catched (and returns False).hpath-directoryConverts any path to an absolute path. This is done in the following way:6if the path is already an absolute one, just return it copy mode only overwrites actual files, not directories. In '* mode the destination file must not exist.Safety/reliability concerns:( mode is not atomic when used on 1, reads the "contents" and copies them to a regular file, which might take indefinitely when used on 0, may either read the "contents" and copy them to a regular file (potentially hanging indefinitely) or may create a regular empty destination file when used on 2, will hang indefinitelyThrows:] if source file does not exist] if source file is a a 3^$ if output directory is not writable^$ if source directory can't be opened_4 if source file is wrong type (symlink or directory) 4 if source and destination are the same file ( ) Throws in ' mode only:a if destination already exists7hpath-directoryCopies a regular file, directory or symbolic link. In case of a symbolic link it is just recreated, even if it points to a directory. Any other file type is ignored.Safety/reliability concerns:examines filetypes explicitlycalls 4 for directories8hpath-directoryDeletes the given file. Raises eISDIR8 if run on a directory. Does not follow symbolic links.Throws:` for wrong file type (directory)] if the file does not exist^ if the directory cannot be read Notes: calls unlink9hpath-directoryDeletes the given directory, which must be empty, never symlinks.Throws:`+ for wrong file type (symlink to directory)`# for wrong file type (regular file)] if directory does not existb if directory is not empty^. if we can't open or write to parent directory Notes: calls rmdir:hpath-directoryDeletes the given directory recursively. Does not follow symbolic links. Tries 9/ first before attemtping a recursive deletion.(On directory contents this behaves like ;1 and thus will ignore any file type that is not ., / or -.Safety/reliability concerns: not atomicexamines filetypes explicitlyThrows:`+ for wrong file type (symlink to directory)`# for wrong file type (regular file)] if directory does not exist^. if we can't open or write to parent directory;hpath-directoryDeletes a file, directory or symlink. In case of directory, performs recursive deletion. In case of a symlink, the symlink file is deleted. Any other file type is ignored.Safety/reliability concerns:examines filetypes explicitlycalls : for directories<hpath-directoryOpens a file appropriately by invoking xdg-open. The file type is not checked. This forks a process.=hpath-directoryExecutes a program with the given arguments. This forks a process.>hpath-directoryCreate an empty regular file at the given directory with the given filename.Throws:^) if output directory cannot be written toa if destination already exists]? if any of the parent components of the path do not exist?hpath-directoryCreate an empty directory at the given directory with the given filename.Throws:^) if output directory cannot be written toa if destination already exists]? if any of the parent components of the path do not exist@hpath-directoryCreate an empty directory at the given directory with the given filename.Throws:^) if output directory cannot be written to]? if any of the parent components of the path do not existAhpath-directoryCreate an empty directory at the given directory with the given filename. All parent directories are created with the same filemode. This basically behaves like:  mkdir -p /some/dir Safety/reliability concerns: not atomicThrows:^ if any part of the path components do not exist and cannot be written toa= if destination already exists and is *not* a directoryBhpath-directoryCreate a symlink.Throws:^) if output directory cannot be written toa# if destination file already exists]? if any of the parent components of the path do not exist Note: calls symlinkChpath-directoryRename a given file with the provided filename. Destination and source must be on the same device, otherwise c will be raised.Does not follow symbolic links, but renames the symbolic link file.Safety/reliability concerns:has a separate set of exception handling, apart from the syscallThrows:] if source file does not exist^) if output directory cannot be written to^% if source directory cannot be openedd: if source and destination are on different devicesa if destination already exists 5 if destination and source are the same file ( ) Note: calls e3 (but does not allow to rename over existing files)Dhpath-directoryMove a file. This also works across devices by copy-delete fallback. And also works on directories.Does not follow symbolic links, but renames the symbolic link file.Safety/reliability concerns:( mode is not atomic-copy-delete fallback is inherently non-atomicsince this function calls 7 and ; as a fallback to C, file types that are not ., / or - may be ignoredfor ( mode, the destination will be deleted (not recursively) before movingThrows:] if source file does not exist^) if output directory cannot be written to^% if source directory cannot be opened 5 if destination and source are the same file ( ) Throws in ' mode only:a if destination already existsNotes:calls e3 (but does not allow to rename over existing files)Ehpath-directoryRead the given file lazily.-Symbolic links are followed. File must exist.Throws:`+ if file is not a regular file or a symlink^ if we cannot read the file or the directory containting it] if the file does not existFhpath-directory)Read the given file strictly into memory.-Symbolic links are followed. File must exist.Throws:`+ if file is not a regular file or a symlink^ if we cannot read the file or the directory containting it] if the file does not existGhpath-directoryOpen the given file as a filestream. Once the filestream exits, the filehandle is cleaned up.Throws:`+ if file is not a regular file or a symlink^ if we cannot read the file or the directory containting it] if the file does not existHhpath-directoryWrite a given ByteString to a file, truncating the file beforehand. Follows symlinks.Throws:`+ if file is not a regular file or a symlink^ if we cannot read the file or the directory containting it] if the file does not existIhpath-directoryWrite a given lazy ByteString to a file, truncating the file beforehand. Follows symlinks.Throws:`+ if file is not a regular file or a symlink^ if we cannot read the file or the directory containting it] if the file does not exist"Note: uses streamly under the hoodJhpath-directoryAppend a given ByteString to a file. The file must exist. Follows symlinks.Throws:`+ if file is not a regular file or a symlink^ if we cannot read the file or the directory containting it] if the file does not existKhpath-directory#Default permissions for a new file.Lhpath-directory(Default permissions for a new directory.Mhpath-directory;Checks if the given file exists. Does not follow symlinks.+Only eNOENT is catched (and returns False).Nhpath-directory,Checks whether a file or folder is readable.Only eACCES, eROFS, eTXTBSY, ePERM are catched (and return False).Throws:] if the file does not existOhpath-directory.Checks whether a file or folder is executable.Only eACCES, eROFS, eTXTBSY, ePERM are catched (and return False).Throws:] if the file does not existShpath-directoryGets all filenames of the given directory. This excludes "." and "..". This version does not follow symbolic links.The contents are not sorted and there is no guarantee on the ordering.Throws:] if directory does not exist` if file type is wrong (file)`( if file type is wrong (symlink to file)`' if file type is wrong (symlink to dir)^ if directory cannot be openedThpath-directoryLike S, but returns the filename only, instead of prepending the base path.Uhpath-directoryLike T, except returning a Stream.Vhpath-directoryGet the file type of the file located at the given path. Does not follow symbolic links.Throws:] if the file does not exist^* if any part of the path is not accessible 4hpath-directory source dirhpath-directory:destination (parent dirs are not automatically created)5hpath-directorythe old symlink filehpath-directorydestination file6hpath-directory source filehpath-directorydestination file=hpath-directoryprogramhpath-directory argumentsBhpath-directorydestination filehpath-directorypath the symlink points toDhpath-directory file to movehpath-directory destinationHhpath-directoryif Nothing, file must existIhpath-directoryif Nothing, file must existShpath-directory dir to readThpath-directory dir to read7&'()*+,-./3012456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV7,-./3012)*+&'(456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg\]h\]i\]j\]k\]l\]m\no\]peqr-hpath-directory-0.14.2-FOJqf5VUVQHETOtW6yNEEt"System.Posix.RawFilePath.Directory)System.Posix.RawFilePath.Directory.ErrorscanOpenDirectory isWritabledoesDirectoryExist doesFileExisttoAbscanonicalizePathRecursiveFailureHintReadContentsFailedCreateDirFailedCopyFileFailedRecreateSymlinkFailedHPathIOExceptionSameFileDestinationInSourceRecursiveFailure isSameFileisDestinationInSourceisRecursiveFailureisReadContentsFailedisCreateDirFailedisCopyFileFailedisRecreateSymlinkFailedthrowFileDoesExistthrowDirDoesExist throwSameFilesameFilethrowDestinationInSource catchErrnorethrowErrnoAs handleIOError hideError bracketeer reactOnError$fExceptionHPathIOException$fEqHPathIOException$fShowHPathIOException$fEqRecursiveFailureHint$fShowRecursiveFailureHintCopyModeStrict OverwriteRecursiveErrorMode FailEarlyCollectFailuresFileType Directory RegularFile SymbolicLink BlockDeviceCharacterDevice NamedPipeSocketcopyDirRecursiverecreateSymlinkcopyFileeasyCopy deleteFile deleteDirdeleteDirRecursive easyDeleteopenFile executeFilecreateRegularFile createDircreateDirIfMissingcreateDirRecursive createSymlink renameFilemoveFilereadFilereadFileStrictreadFileStream writeFile writeFileL appendFile newFilePerms newDirPerms doesExist isReadable isExecutablegetModificationTimesetModificationTimesetModificationTimeHiRes getDirsFiles getDirsFiles'getDirsFilesStream getFileType $fEqFileType$fShowFileTypebaseGHC.IO.ExceptionIOErrorexceptions-0.10.4Control.Monad.Catch catchIOError.safe-exceptions-0.1.7.1-2h3LfH2MxVnLS7s0mmO2TmControl.Exception.Safebracket unix-2.7.2.2!System.Posix.Directory.ByteString openDirStream NoSuchThingPermissionDeniedInvalidArgumentInappropriateType AlreadyExistsUnsatisfiedConstraintsForeign.C.ErroreXDEVUnsupportedOperationSystem.Posix.Files.ByteStringrename