git-annex/Utility/OsString.hs
Joey Hess a5d48edd94
more OsPath conversion (602/749)
Sponsored-by: Brock Spratlen
2025-02-07 14:46:11 -04:00

42 lines
973 B
Haskell

{- OsString manipulation. Or ByteString when not built with OsString.
- Import qualified.
-
- Copyright 2025 Joey Hess <id@joeyh.name>
-
- License: BSD-2-clause
-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE PackageImports #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-tabs #-}
module Utility.OsString (
module X,
length,
#ifndef WITH_OSPATH
toChar,
#endif
) where
#ifdef WITH_OSPATH
import System.OsString as X hiding (length)
import qualified System.OsString
import qualified Data.ByteString as B
import Utility.OsPath
import Prelude ((.), Int)
{- Avoid System.OsString.length, which returns the number of code points on
- windows. This is the number of bytes. -}
length :: System.OsString.OsString -> Int
length = B.length . fromOsPath
#else
import Data.ByteString as X hiding (length)
import Data.ByteString (length)
import Data.Char
import Data.Word
import Prelude (fromIntegral, (.))
toChar :: Word8 -> Char
toChar = chr . fromIntegral
#endif