From ec9e06e33e2eb5117aa318a555eda22c2a6e2077 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Thu, 25 Aug 2011 23:36:25 +0000 Subject: [PATCH] don't fail when PATH contains bad directories --- hledger/Hledger/Cli/Options.hs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hledger/Hledger/Cli/Options.hs b/hledger/Hledger/Cli/Options.hs index e8bff693e..40c881c82 100644 --- a/hledger/Hledger/Cli/Options.hs +++ b/hledger/Hledger/Cli/Options.hs @@ -342,11 +342,13 @@ getHledgerAddonCommands = map (drop (length progname + 1)) `fmap` getHledgerProg getHledgerProgramsInPath :: IO [String] getHledgerProgramsInPath = do pathdirs <- splitOn ":" `fmap` getEnv "PATH" - pathexes <- concat `fmap` mapM getDirectoryContents pathdirs + pathexes <- concat `fmap` mapM getDirectoryContentsSafe pathdirs return $ nub $ sort $ filter (isRight . parsewith hledgerprog) pathexes where hledgerprog = string progname >> char '-' >> many1 (letter <|> char '-') >> eof +getDirectoryContentsSafe d = getDirectoryContents d `catch` (\_ -> return []) + -- | Convert possibly encoded option values to regular unicode strings. decodeRawOpts = map (\(name,val) -> (name, fromPlatformString val))