import Utility.FileSystemEncoding
import qualified Utility.RawFilePath as R
-#ifdef WITH_OSSTRING
-import Utility.OsString
+#ifdef WITH_OSPATH
+import Utility.OsPath
import qualified System.Directory.OsPath as OP
#else
import Utility.SystemDirectory
{- Lists the contents of a directory.
- Unlike getDirectoryContents, paths are not relative to the directory. -}
dirContents :: RawFilePath -> IO [RawFilePath]
-#ifdef WITH_OSSTRING
-dirContents d = map (\p -> d P.</> fromOsString p)
- <$> OP.listDirectory (toOsString d)
+#ifdef WITH_OSPATH
+dirContents d = map (\p -> d P.</> fromOsPath p)
+ <$> OP.listDirectory (toOsPath d)
#else
dirContents d =
map (\p -> d P.</> toRawFilePath p)
(Just s)
| isDirectory s -> recurse
| isSymbolicLink s && followsubdirsymlinks ->
-#ifdef WITH_OSSTRING
- ifM (OP.doesDirectoryExist (toOsString entry))
+#ifdef WITH_OSPATH
+ ifM (OP.doesDirectoryExist (toOsPath entry))
#else
ifM (doesDirectoryExist (fromRawFilePath entry))
#endif
--- /dev/null
+{- OsPath utilities
+ -
+ - Copyright 2025 Joey Hess <id@joeyh.name>
+ -
+ - License: BSD-2-clause
+ -}
+
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE PackageImports #-}
+{-# OPTIONS_GHC -fno-warn-tabs #-}
+
+module Utility.OsPath where
+
+#ifdef WITH_OSPATH
+
+import Utility.RawFilePath
+
+import System.OsPath
+import "os-string" System.OsString.Internal.Types
+import qualified Data.ByteString.Short as S
+
+{- Unlike System.OsString.fromBytes, on Windows this does not ensure a
+ - valid USC-2LE encoding. The input ByteString must be in a valid encoding
+ - already or uses of the OsPath will fail. -}
+toOsPath :: RawFilePath -> OsPath
+#if defined(mingw32_HOST_OS)
+toOsPath = OsString . WindowsString . S.toShort
+#else
+toOsPath = OsString . PosixString . S.toShort
+#endif
+
+fromOsPath :: OsPath -> RawFilePath
+#if defined(mingw32_HOST_OS)
+fromOsPath = S.fromShort . getWindowsString . getOsString
+#else
+fromOsPath = S.fromShort . getPosixString . getOsString
+#endif
+
+#endif /* WITH_OSPATH */
+++ /dev/null
-{- OsString utilities
- -
- - Copyright 2025 Joey Hess <id@joeyh.name>
- -
- - License: BSD-2-clause
- -}
-
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE PackageImports #-}
-{-# OPTIONS_GHC -fno-warn-tabs #-}
-
-module Utility.OsString where
-
-#ifdef WITH_OSSTRING
-
-import Utility.RawFilePath
-
-import "os-string" System.OsString.Internal.Types
-import qualified Data.ByteString.Short as S
-
-{- Unlike System.OsString.fromBytes, on Windows this does not ensure a
- - valid USC-2LE encoding. The input ByteString must be in a valid encoding
- - already or uses of the OsString will fail. -}
-toOsString :: RawFilePath -> OsString
-#if defined(mingw32_HOST_OS)
-toOsString = OsString . WindowsString . S.toShort
-#else
-toOsString = OsString . PosixString . S.toShort
-#endif
-
-fromOsString :: OsString -> RawFilePath
-#if defined(mingw32_HOST_OS)
-fromOsString = S.fromShort . getWindowsString . getOsString
-#else
-fromOsString = S.fromShort . getPosixString . getOsString
-#endif
-
-#endif /* WITH_OSSTRING */
Flag Servant
Description: Use the servant library, enabling using annex+http urls and git-annex p2phttp
-Flag OsString
- Description: Use the os-string library
+Flag OsPath
+ Description: Use the os-string library and related libraries, for faster filename manipulation
Flag Benchmark
Description: Enable benchmarking
P2P.Http.Server
P2P.Http.State
- if flag(OsString)
+ if flag(OsPath)
Build-Depends:
os-string (>= 2.0.0),
directory (>= 1.3.8.3),
filepath (>= 1.5.2.0)
- CPP-Options: -DWITH_OSSTRING
+ CPP-Options: -DWITH_OSPATH
if (os(windows))
Build-Depends:
Utility.OpenFile
Utility.OptParse
Utility.OSX
- Utility.OsString
+ Utility.OsPath
Utility.PID
Utility.PartialPrelude
Utility.Path
benchmark: true
crypton: true
servant: true
- osstring: true
+ ospath: true
packages:
- '.'
resolver: nightly-2025-01-20