Changelog for the directory
package
- Rely on
file-io
for file I/O. - Drop support for
base
older than 4.12.0. - Resolve TOCTOU issue with
removeDirectoryRecursive
andremovePathForcibly
on POSIX systems. (part of #97) findExecutable ""
now returnsNothing
, matching non-Windows systems (#180)
- Fix regression that causes copying of nonexistent files to create empty files. (#177)
- Relax
time
version bounds to support 1.14. (#171) - Relax
base
version bounds to support 4.20. (#173) - Relax
filepath
version bounds to support 1.4.300 whenos-string
is unavailable. (#175)
- Relax
Win32
version bounds to support 2.14.0.0. (#166) - Fix regression in
canonicalizePath
on Windows UNC paths. (#170)
- Drop support for
base
older than 4.11.0. - Drop support for
filepath
older than 1.4.100. - Drop support for
time
older than 1.8.0. - Drop support for
unix
older than 2.8.0. - Drop support for
Win32
older than 2.13.3. - Modules in
directory
are no longer considered Safe because theSystem.OsPath
dependency is no longer Safe. - A new module,
System.Directory.OsPath
, has been introduced to support AFPP (OsPath
andOsString
) with an analogous API. The old module,System.Directory
, shall be in maintenance mode as new features will no longer be accepted there. (#136) removePathForcibly
no longer changes permissions of files on non-Windows systems. (#135)
- Relax
time
version bounds to support 1.12. - Relax
Win32
version bounds to support 2.13. - Relax
base
version bounds to support 4.17.
getXdgDirectory
now supportsXdgState
(XDG_STATE_HOME
). (#121)
- Relax
Win32
version bounds to support 2.11. - Relax
time
version bounds to support 1.11. - Relax
base
version bounds to support 4.16.
- Relax
time
version bounds to support 1.10.
- On non-Windows platforms,
getHomeDirectory
will fall back togetpwuid_r
ifHOME
is not set. (#102)
- Revert change introduced in the version
1.3.3.2
: Non-absoluteXDG_*
environment variables are ignored. This behavior is according to XDG Base Directory Specification version 0.7 (#100)
getXdgDirectory
andgetXdgDirectoryList
on Windows will now respect the XDG environment variables if present. (#95)
getXdgDirectory
will no longer reject environment variables containing relative paths. (#87)
doesDirectoryExist
anddoesPathExist
reject empty paths once again, reversing an undocumented change introduced in 1.3.1.1. (#84)
-
Relax
unix
version bounds to support 2.8. -
Relax
Win32
version bounds to support 2.8. -
Use
SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE
when creating symbolic links on Windows, if possible. (#83)
- Relax
base
version bounds to support 4.12.
- Relax
Win32
version bounds to support 2.7.
-
Relax
time
version bounds to support 1.9. -
Implement
getXdgDirectoryList
andXdgDirectoryList
. (#78)
- Rename the internal header
windows.h
to avoid GHC#14312. (#77)
- Fix
Win32
version 2.6 compatibility. (#75)
- Relax
Win32
version bounds to support 2.6.
- Relax
base
version bounds to support 4.11. (#74)
-
Fix a bug where
createFileLink
andcreateDirectoryLink
failed to handle..
in absolute paths. -
Improve support (partially) for paths longer than 260 characters on Windows. To achieve this, many functions will now automatically prepend
\\?\
before calling the Windows API. As a side effect, the\\?\
prefix may show up in the error messages of the affected functions. -
makeAbsolute
can now handle drive-relative paths on Windows such asC:foobar
-
findFile
(and similar functions): when an absolute path is given, the list of search directories is now completely ignored. Previously, if the list was empty,findFile
would always fail. (#72) -
For symbolic links on Windows, the following functions had previously interpreted paths as referring to the links themselves rather than their targets. This was inconsistent with other platforms and has been fixed.
getFileSize
doesPathExist
doesDirectoryExist
doesFileExist
-
Fix incorrect location info in errors from
pathIsSymbolicLink
. -
Add functions for symbolic link manipulation:
createFileLink
createDirectoryLink
removeDirectoryLink
getSymbolicLinkTarget
-
canonicalizePath
can now resolve broken symbolic links too. (#64)
-
[optimization] Increase internal buffer size of
copyFile
(#69) -
Relax
time
version bounds to support 1.8.
- Relax
Win32
version bounds to support 2.5. (#67)
-
[breaking] Drop trailing slashes in
canonicalizePath
(#63) -
[deprecation] Rename
isSymbolicLink
topathIsSymbolicLink
. The old name will remain available but may be removed in the next major release. (#52) -
Changed
canonicalizePath
to dereference symbolic links even if it points to a file and is not the last path segment -
On Windows,
canonicalizePath
now canonicalizes the letter case too -
On Windows,
canonicalizePath
now also dereferences symbolic links -
When exceptions are thrown, the error location will now contain additional information about the internal function(s) used.
- Don't abort
removePathForcibly
if files or directories go missing. In addition, keep going even if an exception occurs. (#60)
-
Remove deprecated C bits. This means
HsDirectory.h
and its functions are no longer available. (#50) -
Add
doesPathExist
andgetFileSize
(#57) -
Add
renamePath
(#58) -
Add
removePathForcibly
(#59)
- Add missing import of
(<*>)
on Windows forbase
earlier than 4.8.0.0 (#53)
-
Bundled with GHC 8.0.1
-
Fix typo in file time functions when
utimensat
is not available and version ofunix
package is lower than 2.7.0.0
- Fix mistake in file time functions when
utimensat
is not available (#47)
-
Make
findExecutable
,findExecutables
,findExecutablesInDirectories
,findFile
, andfindFilesWith
lazier (#43) -
Add
findFileWith
-
Add
copyFileWithMetadata
, which copies additional metadata (#40) -
Improve error message of
removeDirectoryRecursive
when used on a directory symbolic link on Windows. -
Add
isSymbolicLink
-
Drop support for Hugs.
-
Improve error message of
getCurrentDirectory
when the current working directory no longer exists (#39) -
Fix the behavior of trailing path separators in
canonicalizePath
as well asmakeAbsolute
when applied to the current directory; they should now match the behavior ofcanonicalizePath
prior to 1.2.3.0 (when the bug was introduced) (#42) -
Set the location in IO errors from
makeAbsolute
.
-
Add
listDirectory
, which is similar togetDirectoryContents
but omits.
and..
(#36) -
Remove support for
--with-cc=
inconfigure
; use theCC=
flag instead (ghc:D1608)
-
Work around lack of
#const_str
when cross-compiling (haskell-cafe) -
Add
findExecutablesInDirectories
(#33) -
Add
exeExtension
- Restore support for Safe Haskell with base < 4.8 (#30)
-
Add support for XDG Base Directory Specification (#6)
-
Implement
setModificationTime
counterpart togetModificationTime
(#13) -
Implement
getAccessTime
andsetAccessTime
-
Set the filename in IO errors from the file time functions
-
Fix
canonicalizePath
so that it always returns a reasonable result even if the path is inaccessible and will not throw exceptions unless the current directory cannot be obtained (#23) -
Corrected the trailing slash behavior of
makeAbsolute
so thatmakeAbsolute "" == makeAbsolute "."
-
Deprecate use of
HsDirectory.h
andHsDirectoryConfig.h
-
Implement
withCurrentDirectory
- Fix dependency problem on NixOS when building with tests (#24)
-
Bundled with GHC 7.10.1
-
Make
getModificationTime
support sub-second resolution on Windows -
Fix silent failure in
createDirectoryIfMissing
-
Replace
throw
by better definedthrowIO
s -
Avoid stack overflow in
getDirectoryContents
(#17) -
Expose
findExecutables
(#14) -
removeDirectoryRecursive
no longer follows symlinks under any circumstances (#15) -
Allow trailing path separators in
getPermissions
on Windows (#9) -
renameFile
now always throws the correct error type (InappropriateType
) when the destination is a directory, as long as the filesystem is not being modified concurrently (#8) -
Add
makeAbsolute
, which should be preferred overcanonicalizePath
unless one requires symbolic links to be resolved
-
Bundled with GHC 7.8.1
-
Add support for sub-second precision in
getModificationTime
when linked againstunix>=2.6.0.0
-
Fix
createDirectoryIfMissing _ "."
inC:\
on Windows -
Remove support for NHC98 compiler
-
Update package to
cabal-version >= 1.10
format -
Enhance Haddock documentation for
doesDirectoryExist
andcanonicalizePath
-
Fix
findExecutable
to check that file permissions indicate executable -
New convenience functions
findFiles
andfindFilesWith