-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A crude interface between Haskell and Unix-like operating systems -- -- A collection of useful and mildly useful functions that you might -- expect to find in System.* which a heavy bias towards Unix-type -- operating systems. @package Unixutils @version 1.54.3 -- | This module, except for useEnv, is copied from the build-env package. module System.Unix.Chroot -- | fchroot runs an IO action inside a chroot fchroot performs a chroot, -- runs the action, and then restores the original root and working -- directory. This probably affects the chroot and working directory of -- all the threads in the process, so... NOTE: will throw IOError if -- internal chroot fails fchroot :: (MonadIO m, MonadMask m) => FilePath -> m a -> m a -- | The ssh inside of the chroot needs to be able to talk to the running -- ssh-agent. Therefore we mount --bind the ssh agent socket dir inside -- the chroot (and umount it when we exit the chroot. useEnv :: (MonadIO m, MonadMask m) => FilePath -> (a -> m a) -> m a -> m a -- | support for crypt() and etcshadow module System.Unix.Crypt -- | calls crypt(3) crypt :: String -> String -> IO String module System.Unix.Directory -- | Traverse a directory and return a list of all the (path, fileStatus) -- pairs. find :: FilePath -> IO [(FilePath, FileStatus)] -- | Recursively remove a directory contents on a single file system. The -- adjective "Safely" refers to these features: 1. It will not follow -- symlinks 2. If it finds a directory that seems to be a mount point, it -- will attempt to unmount it up to five times. If it still seems to be a -- mount point it gives up 3. It doesn't use procmounts, which is -- ambiguous or wrong when you are inside a chroot. removeRecursiveSafely :: FilePath -> IO () -- | Like removeRecursiveSafely but doesn't remove any files, just unmounts -- anything it finds mounted. Note that this can be much slower than -- Mount.umountBelow, use that instead. unmountRecursiveSafely :: FilePath -> IO () -- | Rename src to dst, and if dst already exists move it to dst~. If dst~ -- exists it is removed. renameFileWithBackup :: FilePath -> FilePath -> IO () -- | temporarily change the working directory to |dir| while running -- |action| withWorkingDirectory :: FilePath -> IO a -> IO a -- | create a temporary directory, run the action, remove the temporary -- directory the first argument is a template for the temporary directory -- name the directory will be created as a subdirectory of the directory -- returned by getTemporaryDirectory the temporary directory will be -- automatically removed afterwards. your working directory is not -- altered withTemporaryDirectory :: FilePath -> (FilePath -> IO a) -> IO a mkdtemp :: FilePath -> IO FilePath -- | The function splitFileName is taken from missingh, at the moment -- missingh will not build under sid. module System.Unix.FilePath -- | Use dropFileName dirName :: FilePath -> FilePath -- | Use takeFileName baseName :: FilePath -> String -- | resolve all references to ., .., extra slashes, and -- symlinks realpath :: FilePath -> IO FilePath -- | Concatenate two paths, making sure there is exactly one path -- separator. (<++>) :: FilePath -> FilePath -> FilePath module System.Unix.Files -- | calls createSymbolicLink but will remove the target and retry -- if createSymbolicLink raises EEXIST. forceSymbolicLink :: FilePath -> FilePath -> IO () -- | A place to collect and hopefully retire all the random ways of running -- shell commands that have accumulated over the years. module System.Unix.KillByCwd -- | Kill the processes whose working directory is in or under the given -- directory. killByCwd :: FilePath -> IO [(String, Maybe String)] -- | Wrappers around some handy unix shell commands. Please let me know if -- you think of better module names to hold these functions. -dsf module System.Unix.Misc -- | Deprecated: Use Data.ByteString.Lazy.Char8.readFile path >>= -- return . show . Data.Digest.Pure.MD5.md5 -- | Deprecated: Use Data.ByteString.Lazy.Char8.readFile path >>= -- return . show . Data.Digest.Pure.MD5.md5 md5sum :: FilePath -> IO String -- | Deprecated: Use Data.ByteString.Lazy.Char8.readFile path >>= -- Data.ByteString.Lazy.Char8.writeFile (path ++ ".gz") -- | Deprecated: Use Data.ByteString.Lazy.Char8.readFile path >>= -- Data.ByteString.Lazy.Char8.writeFile (path ++ ".gz") gzip :: FilePath -> IO () -- | functions for mounting, umounting, parsing /proc/mounts, etc module System.Unix.Mount -- | umountBelow - unmounts all mount points below belowPath -- /proc/mounts must be present and readable. Because of the way linux -- handles changeroots, we can't trust everything we see in /proc/mounts. -- However, we make the following assumptions: -- --