optimise literalOsPath
Taking a ShortByteString and using OverloadedStrings should avoid it being converted from a String. The reason there is no IsString instance for OsPath is presumably the bad behavior of IsString for ByteString on unicode btw. But literalOsPath won't be used with unicode in git-annex. Sponsored-by: unqueued
This commit is contained in:
parent
8bafe05500
commit
98a0a9ddff
10 changed files with 23 additions and 7 deletions
|
@ -5,6 +5,7 @@
|
||||||
- Licensed under the GNU AGPL version 3 or higher.
|
- Licensed under the GNU AGPL version 3 or higher.
|
||||||
-}
|
-}
|
||||||
|
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE CPP #-}
|
{-# LANGUAGE CPP #-}
|
||||||
|
|
||||||
module Annex.Magic (
|
module Annex.Magic (
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
- Licensed under the GNU AGPL version 3 or higher.
|
- Licensed under the GNU AGPL version 3 or higher.
|
||||||
-}
|
-}
|
||||||
|
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE CPP #-}
|
{-# LANGUAGE CPP #-}
|
||||||
{-# OPTIONS_GHC -fno-warn-tabs #-}
|
{-# OPTIONS_GHC -fno-warn-tabs #-}
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
- Licensed under the GNU AGPL version 3 or higher.
|
- Licensed under the GNU AGPL version 3 or higher.
|
||||||
-}
|
-}
|
||||||
|
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE CPP #-}
|
{-# LANGUAGE CPP #-}
|
||||||
{-# OPTIONS_GHC -fno-warn-tabs #-}
|
{-# OPTIONS_GHC -fno-warn-tabs #-}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
- Licensed under the GNU AGPL version 3 or higher.
|
- Licensed under the GNU AGPL version 3 or higher.
|
||||||
-}
|
-}
|
||||||
|
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# OPTIONS_GHC -fno-warn-tabs #-}
|
{-# OPTIONS_GHC -fno-warn-tabs #-}
|
||||||
|
|
||||||
module Config.Files where
|
module Config.Files where
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
- License: BSD-2-clause
|
- License: BSD-2-clause
|
||||||
-}
|
-}
|
||||||
|
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# OPTIONS_GHC -fno-warn-tabs #-}
|
{-# OPTIONS_GHC -fno-warn-tabs #-}
|
||||||
|
|
||||||
module Utility.FreeDesktop (
|
module Utility.FreeDesktop (
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
- License: BSD-2-clause
|
- License: BSD-2-clause
|
||||||
-}
|
-}
|
||||||
|
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# OPTIONS_GHC -fno-warn-tabs #-}
|
{-# OPTIONS_GHC -fno-warn-tabs #-}
|
||||||
|
|
||||||
module Utility.OSX (
|
module Utility.OSX (
|
||||||
|
@ -18,7 +19,9 @@ import Common
|
||||||
import Utility.UserInfo
|
import Utility.UserInfo
|
||||||
|
|
||||||
autoStartBase :: String -> OsPath
|
autoStartBase :: String -> OsPath
|
||||||
autoStartBase label = literalOsPath "Library" </> literalOsPath "LaunchAgents" </> literalOsPath (label ++ ".plist")
|
autoStartBase label = literalOsPath "Library"
|
||||||
|
</> literalOsPath "LaunchAgents"
|
||||||
|
</> toOsPath label <> literalOsPath ".plist"
|
||||||
|
|
||||||
systemAutoStart :: String -> OsPath
|
systemAutoStart :: String -> OsPath
|
||||||
systemAutoStart label = literalOsPath "/" </> autoStartBase label
|
systemAutoStart label = literalOsPath "/" </> autoStartBase label
|
||||||
|
|
|
@ -46,10 +46,6 @@ instance OsPathConv FilePath where
|
||||||
toOsPath = toOsPath . toRawFilePath
|
toOsPath = toOsPath . toRawFilePath
|
||||||
fromOsPath = fromRawFilePath . fromOsPath
|
fromOsPath = fromRawFilePath . fromOsPath
|
||||||
|
|
||||||
{- Used for string constants. -}
|
|
||||||
literalOsPath :: String -> OsPath
|
|
||||||
literalOsPath = toOsPath
|
|
||||||
|
|
||||||
#ifdef WITH_OSPATH
|
#ifdef WITH_OSPATH
|
||||||
instance OsPathConv RawFilePath where
|
instance OsPathConv RawFilePath where
|
||||||
toOsPath = bytesToOsPath . S.toShort
|
toOsPath = bytesToOsPath . S.toShort
|
||||||
|
@ -80,6 +76,10 @@ bytesFromOsPath = getPosixString . getOsString
|
||||||
getSearchPath :: IO [OsPath]
|
getSearchPath :: IO [OsPath]
|
||||||
getSearchPath = map toOsPath <$> PB.getSearchPath
|
getSearchPath = map toOsPath <$> PB.getSearchPath
|
||||||
|
|
||||||
|
{- Used for string constants. -}
|
||||||
|
literalOsPath :: ShortByteString -> OsPath
|
||||||
|
literalOsPath = bytesToOsPath
|
||||||
|
|
||||||
#else
|
#else
|
||||||
{- When not building with WITH_OSPATH, use RawFilePath.
|
{- When not building with WITH_OSPATH, use RawFilePath.
|
||||||
-}
|
-}
|
||||||
|
@ -97,4 +97,7 @@ instance OsPathConv ShortByteString where
|
||||||
|
|
||||||
unsafeFromChar :: Char -> Word8
|
unsafeFromChar :: Char -> Word8
|
||||||
unsafeFromChar = fromIntegral . ord
|
unsafeFromChar = fromIntegral . ord
|
||||||
|
|
||||||
|
literalOsPath :: RawFilePath -> OsPath
|
||||||
|
literalOsPath = id
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
- License: BSD-2-clause
|
- License: BSD-2-clause
|
||||||
-}
|
-}
|
||||||
|
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
|
||||||
module Utility.SshConfig (
|
module Utility.SshConfig (
|
||||||
SshConfig(..),
|
SshConfig(..),
|
||||||
Comment(..),
|
Comment(..),
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
{-# LANGUAGE CPP #-}
|
{-# LANGUAGE CPP #-}
|
||||||
{-# OPTIONS_GHC -fno-warn-tabs #-}
|
{-# OPTIONS_GHC -fno-warn-tabs #-}
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
|
||||||
module Utility.Tmp.Dir (
|
module Utility.Tmp.Dir (
|
||||||
withTmpDir,
|
withTmpDir,
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
- Licensed under the GNU AGPL version 3 or higher.
|
- Licensed under the GNU AGPL version 3 or higher.
|
||||||
-}
|
-}
|
||||||
|
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
|
||||||
module Utility.Tor (
|
module Utility.Tor (
|
||||||
OnionPort,
|
OnionPort,
|
||||||
OnionAddress(..),
|
OnionAddress(..),
|
||||||
|
@ -143,7 +145,7 @@ hiddenServiceHostnameFile appname uid ident =
|
||||||
hiddenServiceSocketFile :: AppName -> UserID -> UniqueIdent -> OsPath
|
hiddenServiceSocketFile :: AppName -> UserID -> UniqueIdent -> OsPath
|
||||||
hiddenServiceSocketFile appname uid ident =
|
hiddenServiceSocketFile appname uid ident =
|
||||||
varLibDir </> toOsPath appname
|
varLibDir </> toOsPath appname
|
||||||
</> toOsPath (show uid ++ "_" ++ ident) </> toOsPath "s"
|
</> toOsPath (show uid ++ "_" ++ ident) </> literalOsPath "s"
|
||||||
|
|
||||||
-- | Parse torrc, to get the socket file used for a hidden service with
|
-- | Parse torrc, to get the socket file used for a hidden service with
|
||||||
-- the specified UniqueIdent.
|
-- the specified UniqueIdent.
|
||||||
|
@ -155,7 +157,7 @@ getHiddenServiceSocketFile _appname uid ident =
|
||||||
parse [] = Nothing
|
parse [] = Nothing
|
||||||
parse (("HiddenServiceDir":hsdir:[]):("HiddenServicePort":_hsport:hsaddr:[]):rest)
|
parse (("HiddenServiceDir":hsdir:[]):("HiddenServicePort":_hsport:hsaddr:[]):rest)
|
||||||
| "unix:" `isPrefixOf` hsaddr && hasident (toOsPath hsdir) =
|
| "unix:" `isPrefixOf` hsaddr && hasident (toOsPath hsdir) =
|
||||||
Just $ toOsPath $ drop (length "unix:") hsaddr
|
Just $ toOsPath $ drop (length ("unix:" :: String)) hsaddr
|
||||||
| otherwise = parse rest
|
| otherwise = parse rest
|
||||||
parse (_:rest) = parse rest
|
parse (_:rest) = parse rest
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue