For Windows get the default GF_LIB_PATH from the executable path

This commit is contained in:
krasimir
2008-02-21 15:56:09 +00:00
parent 7de91c67cc
commit 344d95293a
3 changed files with 44 additions and 6 deletions

View File

@@ -119,15 +119,13 @@ helpMsg = unlines [
]
welcomeMsgLib = do
lib <- catch
(getEnv "GF_LIB_PATH" >>= return . ("GF_LIB_PATH is set to" +++))
(const (return $ "GF_LIB_PATH is set to the default, " ++ libdir))
lib <- getLibraryPath
return $ welcomeMsg lib
welcomeMsg lib =
"Welcome to " ++ authorMsg ++++
"If \228 and \246 (umlaut letters) look strange, see 'h -coding'." ++
"\n" ++ lib ++
"\nGF_LIB_PATH is set to " ++ lib ++
"\n\nType 'h' for help, and 'h [Command] for more detailed help.\n"
authorMsg = unlines [

View File

@@ -1,3 +1,4 @@
{-# OPTIONS -cpp #-}
----------------------------------------------------------------------
-- |
-- Module : UseIO
@@ -26,6 +27,12 @@ import System.Environment
import System.CPUTime
import Control.Monad
#ifdef mingw32_HOST_OS
import System.Win32.DLL
import System.FilePath.Windows
import Foreign.Ptr
#endif
putShow' :: Show a => (c -> a) -> c -> IO ()
putShow' f = putStrLn . show . length . show . f
@@ -123,11 +130,23 @@ doesFileExistPath paths file = do
mpfile <- ioeIO $ getFilePathMsg "" paths file
return $ maybe False (const True) mpfile
getLibraryPath :: IO FilePath
getLibraryPath =
catch
(getEnv "GF_LIB_PATH")
#ifdef mingw32_HOST_OS
(\_ -> do exepath <- getModuleFileName nullPtr
let (path,_) = splitFileName exepath
canonicalizePath (combine path "../lib"))
#else
(const (return libdir))
#endif
-- | first var is lib prefix, second is like class path
-- | path in environment variable has lower priority
extendPathEnv :: String -> String -> [FilePath] -> IO [FilePath]
extendPathEnv lib var ps = do
b <- catch (getEnv lib) (const (return libdir)) -- e.g. GF_LIB_PATH
b <- getLibraryPath -- e.g. GF_LIB_PATH
s <- catch (getEnv var) (const (return "")) -- e.g. GF_GRAMMAR_PATH
let fs = pFilePaths s
let ss = ps ++ fs

View File

@@ -1,3 +1,4 @@
{-# OPTIONS -cpp #-}
----------------------------------------------------------------------
-- |
-- Module : UseIO
@@ -25,6 +26,14 @@ import System.IO.Error
import System.Environment
import Control.Monad
#ifdef mingw32_HOST_OS
import System.Win32.DLL
import System.FilePath.Windows
import System.Directory
import Foreign.Ptr
#endif
putShow' :: Show a => (c -> a) -> c -> IO ()
putShow' f = putStrLn . show . length . show . f
@@ -122,11 +131,23 @@ doesFileExistPath paths file = do
mpfile <- ioeIO $ getFilePathMsg "" paths file
return $ maybe False (const True) mpfile
getLibraryPath :: IO FilePath
getLibraryPath =
catch
(getEnv "GF_LIB_PATH")
#ifdef mingw32_HOST_OS
(\_ -> do exepath <- getModuleFileName nullPtr
let (path,_) = splitFileName exepath
canonicalizePath (combine path "../lib"))
#else
(const (return libdir))
#endif
-- | first var is lib prefix, second is like class path
-- | path in environment variable has lower priority
extendPathEnv :: String -> String -> [FilePath] -> IO [FilePath]
extendPathEnv lib var ps = do
b <- catch (getEnv lib) (const (return libdir)) -- e.g. GF_LIB_PATH
b <- getLibraryPath -- e.g. GF_LIB_PATH
s <- catch (getEnv var) (const (return "")) -- e.g. GF_GRAMMAR_PATH
let fs = pFilePaths s
let ss = ps ++ fs