git-annex/Common.hs
Joey Hess 54ad1b4cfb
Windows: Support long filenames in more (possibly all) of the code
Works around this bug in unix-compat:
https://github.com/jacobstanley/unix-compat/issues/56
getFileStatus and other FilePath using functions in unix-compat do not do
UNC conversion on Windows.

Made Utility.RawFilePath use convertToWindowsNativeNamespace to do the
necessary conversion on windows to support long filenames.

Audited all imports of System.PosixCompat.Files to make sure that no
functions that operate on FilePath were imported from it. Instead, use
the equvilants from Utility.RawFilePath. In particular the
re-export of that module in Common had to be removed, which led to lots
of other changes throughout the code.

The changes to Build.Configure, Build.DesktopFile, and Build.TestConfig
make Utility.Directory not be needed to build setup. And so let it use
Utility.RawFilePath, which depends on unix, which cannot be in
setup-depends.

Sponsored-by: Dartmouth College's Datalad project
2023-03-01 15:55:58 -04:00

36 lines
973 B
Haskell

module Common (module X) where
import Control.Monad as X
import Control.Monad.IfElse as X
import Control.Applicative as X
import Control.Monad.IO.Class as X (liftIO)
import Data.Maybe as X
import Data.List as X hiding (head, tail, init, last)
import Data.Monoid as X
import Data.Default as X
import System.FilePath as X
import System.IO as X hiding (FilePath)
import System.Exit as X
import System.PosixCompat.Files as X (FileStatus)
import Utility.Misc as X
import Utility.Exception as X
import Utility.DebugLocks as X
import Utility.SafeCommand as X
import Utility.ShellEscape as X
import Utility.Process as X
import Utility.Path as X
import Utility.Path.AbsRel as X
import Utility.Directory as X
import Utility.MoveFile as X
import Utility.Monad as X
import Utility.Data as X
import Utility.Applicative as X
import Utility.FileSize as X
import Utility.Network as X
import Utility.Split as X
import Utility.FileSystemEncoding as X
import Utility.PartialPrelude as X