aboutsummaryrefslogtreecommitdiff
path: root/Config/Files.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Config/Files.hs')
-rw-r--r--Config/Files.hs23
1 files changed, 23 insertions, 0 deletions
diff --git a/Config/Files.hs b/Config/Files.hs
index 30ed0a3cf..285ae570b 100644
--- a/Config/Files.hs
+++ b/Config/Files.hs
@@ -5,11 +5,14 @@
- Licensed under the GNU GPL version 3 or higher.
-}
+{-# LANGUAGE CPP #-}
+
module Config.Files where
import Common
import Utility.Tmp
import Utility.FreeDesktop
+import System.Environment
{- ~/.config/git-annex/file -}
userConfigFile :: FilePath -> IO FilePath
@@ -67,3 +70,23 @@ readProgramFile = do
)
where
cmd = "git-annex"
+
+{- A fully qualified path to the currently running git-annex program.
+ -
+ - getExecutablePath is available since ghc 7.4.2. On OSs it supports
+ - well, it returns the complete path to the program. But, on other OSs,
+ - it might return just the basename.
+ -}
+programPath :: IO (Maybe FilePath)
+programPath = do
+#if MIN_VERSION_base(4,6,0)
+ exe <- getExecutablePath
+ p <- if isAbsolute exe
+ then return exe
+ else readProgramFile
+#else
+ p <- readProgramFile
+#endif
+ -- In case readProgramFile returned just the command name,
+ -- fall back to finding it in PATH.
+ searchPath p