W3cubDocs

/Haskell 9

System.Directory.Internal

Stability unstable
Portability unportable
Safe Haskell None
Language Haskell2010

Description

Internal modules are always subject to change from version to version. The contents of this module are also platform-dependent, hence what is shown in the Hackage documentation may differ from what is actually available on your system.

andM :: Monad m => m Bool -> m Bool -> m Bool Source

copyHandleData Source

Arguments

:: Handle

Source handle

-> Handle

Destination handle

-> IO ()

Copy data from one handle to another until end of file.

dropSpecialDotDirs :: [OsPath] -> [OsPath] Source

emptyListT :: forall (m :: Type -> Type) a. Applicative m => ListT m a Source

emptyToCurDir :: OsPath -> OsPath Source

Convert empty paths to the current directory, otherwise leave it unchanged.

expandDots :: [OsPath] -> [OsPath] Source

Given a list of path segments, expand . and ... The path segments must not contain path separators.

fileTypeIsDirectory :: FileType -> Bool Source

Check whether the given FileType is considered a directory by the operating system. This affects the choice of certain functions e.g. removeDirectory vs removeFile.

fileTypeIsLink :: FileType -> Bool Source

Return whether the given FileType is a link.

ignoreIOExceptions :: IO () -> IO () Source

Attempt to perform the given action, silencing any IO exception thrown by it.

ioeAddLocation :: IOError -> String -> IOError Source

ioeSetOsPath :: IOError -> OsPath -> IOError Source

isNoFollow :: WhetherFollow -> Bool Source

liftJoinListT :: Monad m => m (ListT m a) -> ListT m a Source

listTHead :: Functor m => ListT m a -> m (Maybe a) Source

listTToList :: Monad m => ListT m a -> m [a] Source

listToListT :: forall (m :: Type -> Type) a. Applicative m => [a] -> ListT m a Source

maybeToListT :: Applicative m => m (Maybe a) -> ListT m a Source

normalisePathSeps :: OsPath -> OsPath Source

Convert to the right kind of slashes.

normaliseTrailingSep :: OsPath -> OsPath Source

Remove redundant trailing slashes and pick the right kind of slash.

os :: String -> OsString Source

Fallibly converts String to OsString. Only intended to be used on literals.

rightOrError :: Exception e => Either e a -> a Source

sequenceWithIOErrors_ :: [IO ()] -> IO () Source

simplifyPosix :: OsPath -> OsPath Source

Similar to normalise but empty paths stay empty.

simplifyWindows :: OsPath -> OsPath Source

Similar to normalise but:

  • empty paths stay empty,
  • parent dirs (..) are expanded, and
  • paths starting with \\?\ are preserved.

The goal is to preserve the meaning of paths better than normalise.

so :: OsString -> String Source

Fallibly converts OsString to String. Only intended to be used on literals.

specializeErrorString :: String -> (IOError -> Bool) -> IO a -> IO a Source

tryIOErrorType :: (IOError -> Bool) -> IO a -> IO (Either IOError a) Source

Similar to try but only catches a specify kind of IOError as specified by the predicate.

withBinaryFile :: OsPath -> IOMode -> (Handle -> IO r) -> IO r Source

data FileType Source

Constructors

File
SymbolicLink

POSIX: either file or directory link; Windows: file link

Directory
DirectoryLink

Windows only: directory link

newtype ListT (m :: Type -> Type) a Source

A generator with side-effects.

Constructors

ListT

Fields

data Permissions Source

Constructors

Permissions

data WhetherFollow Source

Constructors

NoFollow
FollowLinks
Instances
Instances details
Show WhetherFollow Source
Instance details

Defined in System.Directory.Internal.Common

data XdgDirectory Source

Special directories for storing user-specific application data, configuration, and cache files, as specified by the XDG Base Directory Specification.

Note: On Windows, XdgData and XdgConfig usually map to the same directory.

Since: directory-1.2.3.0

Constructors

XdgData

For data files (e.g. images). It uses the XDG_DATA_HOME environment variable. On non-Windows systems, the default is ~/.local/share. On Windows, the default is %APPDATA% (e.g. C:/Users/<user>/AppData/Roaming). Can be considered as the user-specific equivalent of /usr/share.

XdgConfig

For configuration files. It uses the XDG_CONFIG_HOME environment variable. On non-Windows systems, the default is ~/.config. On Windows, the default is %APPDATA% (e.g. C:/Users/<user>/AppData/Roaming). Can be considered as the user-specific equivalent of /etc.

XdgCache

For non-essential files (e.g. cache). It uses the XDG_CACHE_HOME environment variable. On non-Windows systems, the default is ~/.cache. On Windows, the default is %LOCALAPPDATA% (e.g. C:/Users/<user>/AppData/Local). Can be considered as the user-specific equivalent of /var/cache.

XdgState

For data that should persist between (application) restarts, but that is not important or portable enough to the user that it should be stored in XdgData. It uses the XDG_STATE_HOME environment variable. On non-Windows sytems, the default is ~/.local/state. On Windows, the default is %LOCALAPPDATA% (e.g. C:/Users/<user>/AppData/Local).

Since: directory-1.3.7.0

Instances
Instances details
Bounded XdgDirectory Source
Instance details

Defined in System.Directory.Internal.Common

Enum XdgDirectory Source
Instance details

Defined in System.Directory.Internal.Common

Read XdgDirectory Source
Instance details

Defined in System.Directory.Internal.Common

Show XdgDirectory Source
Instance details

Defined in System.Directory.Internal.Common

Eq XdgDirectory Source
Instance details

Defined in System.Directory.Internal.Common

Ord XdgDirectory Source
Instance details

Defined in System.Directory.Internal.Common

data XdgDirectoryList Source

Search paths for various application data, as specified by the XDG Base Directory Specification.

The list of paths is split using searchPathSeparator, which on Windows is a semicolon.

Note: On Windows, XdgDataDirs and XdgConfigDirs usually yield the same result.

Since: directory-1.3.2.0

Constructors

XdgDataDirs

For data files (e.g. images). It uses the XDG_DATA_DIRS environment variable. On non-Windows systems, the default is /usr/local/share/ and /usr/share/. On Windows, the default is %PROGRAMDATA% or %ALLUSERSPROFILE% (e.g. C:/ProgramData).

XdgConfigDirs

For configuration files. It uses the XDG_CONFIG_DIRS environment variable. On non-Windows systems, the default is /etc/xdg. On Windows, the default is %PROGRAMDATA% or %ALLUSERSPROFILE% (e.g. C:/ProgramData).

Instances
Instances details
Bounded XdgDirectoryList Source
Instance details

Defined in System.Directory.Internal.Common

Enum XdgDirectoryList Source
Instance details

Defined in System.Directory.Internal.Common

Read XdgDirectoryList Source
Instance details

Defined in System.Directory.Internal.Common

Show XdgDirectoryList Source
Instance details

Defined in System.Directory.Internal.Common

Eq XdgDirectoryList Source
Instance details

Defined in System.Directory.Internal.Common

Ord XdgDirectoryList Source
Instance details

Defined in System.Directory.Internal.Common

type OsPath = OsString Source

Type representing filenames/pathnames.

This type doesn't add any guarantees over OsString.

data OsString Source

Newtype representing short operating system specific strings.

Internally this is either WindowsString or PosixString, depending on the platform. Both use unpinned ShortByteString for efficiency.

The constructor is only exported via System.OsString.Internal.Types, since dealing with the internals isn't generally recommended, but supported in case you need to write platform specific code.

Instances
Instances details
NFData OsString
Instance details

Defined in System.OsString.Internal.Types

Methods

rnf :: OsString -> ()

Monoid OsString Source

"String-Concatenation" for OsString. This is not the same as (</>).

Instance details

Defined in System.OsString.Internal.Types

Semigroup OsString Source
Instance details

Defined in System.OsString.Internal.Types

Generic OsString Source
Instance details

Defined in System.OsString.Internal.Types

Associated Types

type Rep OsString
Instance details

Defined in System.OsString.Internal.Types

type Rep OsString = D1 ('MetaData "OsString" "System.OsString.Internal.Types" "os-string-2.0.7-3f43" 'True) (C1 ('MetaCons "OsString" 'PrefixI 'True) (S1 ('MetaSel ('Just "getOsString") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PlatformString)))

Methods

from :: OsString -> Rep OsString x

to :: Rep OsString x -> OsString

Show OsString Source

On windows, decodes as UCS-2. On unix prints the raw bytes without decoding.

Instance details

Defined in System.OsString.Internal.Types

Eq OsString Source

Byte equality of the internal representation.

Instance details

Defined in System.OsString.Internal.Types

Methods

(==) :: OsString -> OsString -> Bool

(/=) :: OsString -> OsString -> Bool

Ord OsString Source

Byte ordering of the internal representation.

Instance details

Defined in System.OsString.Internal.Types

Lift OsString
Instance details

Defined in System.OsString.Internal.Types

Methods

lift :: Quote m => OsString -> m Exp

liftTyped :: forall (m :: Type -> Type). Quote m => OsString -> Code m OsString

type Rep OsString Source
Instance details

Defined in System.OsString.Internal.Types

type Rep OsString = D1 ('MetaData "OsString" "System.OsString.Internal.Types" "os-string-2.0.7-3f43" 'True) (C1 ('MetaCons "OsString" 'PrefixI 'True) (S1 ('MetaSel ('Just "getOsString") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PlatformString)))

accessTimeFromMetadata :: Metadata -> UTCTime Source

allWriteMode :: FileMode Source

atWhetherFollow :: WhetherFollow -> CInt Source

c_AT_FDCWD :: Fd Source

c_AT_SYMLINK_NOFOLLOW :: CInt Source

c_PATH_MAX :: Maybe Int Source

c_fchmodat :: Fd -> CString -> FileMode -> CInt -> IO CInt Source

c_free :: Ptr a -> IO () Source

c_fstatat :: Fd -> CString -> Ptr CStat -> CInt -> IO CInt Source

c_realpath :: CString -> CString -> IO CString Source

c_unlinkat :: Fd -> CString -> CInt -> IO CInt Source

canonicalizePathSimplify :: OsPath -> IO OsPath Source

closeRaw :: RawHandle -> IO () Source

copyFileContents Source

Arguments

:: OsPath

Source filename

-> OsPath

Destination filename

-> IO ()

Truncate the destination file and then copy the contents of the source file to the destination file. If the destination file already exists, its attributes shall remain unchanged. Otherwise, its attributes are reset to the defaults.

copyFileWithMetadataInternal :: (Metadata -> OsPath -> IO ()) -> (Metadata -> OsPath -> IO ()) -> OsPath -> OsPath -> IO () Source

copyGroupFromStatus :: FileStatus -> OsPath -> IO () Source

copyOwnerFromStatus :: FileStatus -> OsPath -> IO () Source

createDirectoryInternal :: OsPath -> IO () Source

createHardLink :: OsPath -> OsPath -> IO () Source

createSymbolicLink :: Bool -> OsPath -> OsPath -> IO () Source

defaultOpenFlags :: OpenFileFlags Source

exeExtensionInternal :: OsString Source

fileSizeFromMetadata :: Metadata -> Integer Source

fileTypeFromMetadata :: Metadata -> FileType Source

filesAlwaysRemovable :: Bool Source

findExecutablesLazyInternal :: ([OsPath] -> OsString -> ListT IO OsPath) -> OsString -> ListT IO OsPath Source

getAccessPermissions :: OsPath -> IO Permissions Source

getAppUserDataDirectoryInternal :: OsPath -> IO OsPath Source

getCurrentDirectoryInternal :: IO OsPath Source

getDirectoryContentsInternal :: OsPath -> IO [OsPath] Source

getEnvOs :: OsString -> IO OsString Source

getFileMetadata :: OsPath -> IO Metadata Source

getHomeDirectoryInternal :: IO OsPath Source

$HOME is preferred, because the user has control over it. However, POSIX doesn't define it as a mandatory variable, so fall back to getpwuid_r.

getMetadataAt :: WhetherFollow -> Maybe RawHandle -> OsPath -> IO Metadata Source

getPath :: IO [OsPath] Source

Get the contents of the PATH environment variable.

getSymbolicLinkMetadata :: OsPath -> IO Metadata Source

getTemporaryDirectoryInternal :: IO OsPath Source

getUserDocumentsDirectoryInternal :: IO OsPath Source

getXdgDirectoryFallback :: IO OsPath -> XdgDirectory -> IO OsPath Source

getXdgDirectoryListFallback :: XdgDirectoryList -> IO [OsPath] Source

hasWriteMode :: Mode -> Bool Source

linkToDirectoryIsDirectory :: Bool Source

lookupEnvOs :: OsString -> IO (Maybe OsString) Source

modeFromMetadata :: Metadata -> Mode Source

modificationTimeFromMetadata :: Metadata -> UTCTime Source

openDirFromFd :: Fd -> IO DirStream Source

openRaw :: WhetherFollow -> Maybe RawHandle -> OsPath -> IO RawHandle Source

prependCurrentDirectory :: OsPath -> IO OsPath Source

Convert a path into an absolute path. If the given path is relative, the current directory is prepended and the path may or may not be simplified. If the path is already absolute, the path is returned unchanged. The function preserves the presence or absence of the trailing path separator.

If the path is already absolute, the operation never fails. Otherwise, the operation may throw exceptions.

Empty paths are treated as the current directory.

readDirStreamToEnd :: DirStream -> IO [OsPath] Source

readDirToEnd :: RawHandle -> IO [OsPath] Source

readSymbolicLink :: OsPath -> IO OsPath Source

realPath :: OsPath -> IO OsPath Source

removePathAt :: FileType -> Maybe RawHandle -> OsPath -> IO () Source

removePathInternal :: Bool -> OsPath -> IO () Source

renamePathInternal :: OsPath -> OsPath -> IO () Source

setAccessPermissions :: OsPath -> Permissions -> IO () Source

setCurrentDirectoryInternal :: OsPath -> IO () Source

setFileMode :: OsPath -> Mode -> IO () Source

setFilePermissions :: OsPath -> Mode -> IO () Source

setForceRemoveMode :: Mode -> Mode Source

setModeAt :: WhetherFollow -> Maybe RawHandle -> OsPath -> Mode -> IO () Source

setTimes :: OsPath -> (Maybe POSIXTime, Maybe POSIXTime) -> IO () Source

setWriteMode :: Bool -> Mode -> Mode Source

simplify :: OsPath -> OsPath Source

On POSIX, equivalent to simplifyPosix.

tryCopyOwnerAndGroupFromStatus :: FileStatus -> OsPath -> IO () Source

withRealpath :: CString -> (CString -> IO a) -> IO a Source

type Metadata = FileStatus Source

type Mode = FileMode Source

type RawHandle = Fd Source

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.12.1/docs/libraries/directory-1.3.9.0-4f6e/System-Directory-Internal.html