diff options
author | Joey Hess <joey@kitenet.net> | 2014-11-10 12:06:29 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2014-11-10 12:06:29 -0400 |
commit | b68c7d9c0fd13df235788bc37c3df67e7595a092 (patch) | |
tree | 954079b8c989a94c1f51212a6fcd76cf64b50b21 /Utility/UserInfo.hs | |
parent | dfa10d228f66e9dab87f80cfb1b7ca6261e87d8b (diff) | |
download | git-repair-b68c7d9c0fd13df235788bc37c3df67e7595a092.tar.gz |
merge from git-annex
Diffstat (limited to 'Utility/UserInfo.hs')
-rw-r--r-- | Utility/UserInfo.hs | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/Utility/UserInfo.hs b/Utility/UserInfo.hs index 617c3e9..1a557c9 100644 --- a/Utility/UserInfo.hs +++ b/Utility/UserInfo.hs @@ -40,16 +40,20 @@ myUserName = myVal env userName env = ["USERNAME", "USER", "LOGNAME"] #endif -myUserGecos :: IO String -#ifdef __ANDROID__ -myUserGecos = return "" -- userGecos crashes on Android +myUserGecos :: IO (Maybe String) +-- userGecos crashes on Android and is not available on Windows. +#if defined(__ANDROID__) || defined(mingw32_HOST_OS) +myUserGecos = return Nothing #else -myUserGecos = myVal [] userGecos +myUserGecos = Just <$> myVal [] userGecos #endif myVal :: [String] -> (UserEntry -> String) -> IO String -myVal envvars extract = maybe (extract <$> getpwent) return =<< check envvars +myVal envvars extract = go envvars where - check [] = return Nothing - check (v:vs) = maybe (check vs) (return . Just) =<< getEnv v - getpwent = getUserEntryForID =<< getEffectiveUserID +#ifndef mingw32_HOST_OS + go [] = extract <$> (getUserEntryForID =<< getEffectiveUserID) +#else + go [] = error $ "environment not set: " ++ show envvars +#endif + go (v:vs) = maybe (go vs) return =<< getEnv v |