-----------------------------------------------------------------------------
--- $Id: DriverMkDepend.hs,v 1.9 2001/03/28 16:51:03 simonmar Exp $
+-- $Id: DriverMkDepend.hs,v 1.10 2001/04/26 14:33:44 simonmar Exp $
--
-- GHC Driver
--
-- reference.
import_dirs <- readIORef v_Import_paths
pkg_import_dirs <- getPackageImportPath
- import_dir_contents <- mapM getDirectoryContents import_dirs
- pkg_import_dir_contents <- mapM getDirectoryContents pkg_import_dirs
+ import_dir_contents <- mapM softGetDirectoryContents import_dirs
+ pkg_import_dir_contents <- mapM softGetDirectoryContents pkg_import_dirs
writeIORef v_Dep_dir_contents
(zip import_dirs import_dir_contents ++
zip pkg_import_dirs pkg_import_dir_contents)
-- in
search dir_contents
-
-----------------------------------------------------------------------------
--- $Id: DriverUtil.hs,v 1.19 2001/03/08 09:50:18 simonmar Exp $
+-- $Id: DriverUtil.hs,v 1.20 2001/04/26 14:33:44 simonmar Exp $
--
-- Utils for the driver
--
import Dynamic
import RegexString
+import Directory ( getDirectoryContents )
import IO
import System
import List
optionRegex = mkRegex "\\{-#[ \t]+OPTIONS[ \t]+(.*)#-\\}" -- -}
-----------------------------------------------------------------------------
+-- A version of getDirectoryContents that is non-fatal if the
+-- directory doesn't exist.
+
+softGetDirectoryContents d
+ = IO.catch (getDirectoryContents d)
+ (\_ -> do hPutStr stderr
+ ("WARNING: error while reading directory " ++ d)
+ return []
+ )
+
+-----------------------------------------------------------------------------
-- Utils
unknownFlagErr :: String -> a
-- to ["."]).
home_imports <- readIORef v_Import_paths
let extendFM fm path = do
- contents <- getDirectoryContents' path
+ contents <- softGetDirectoryContents path
let clean_contents = filter isUsefulFile contents
return (addListToFM fm (zip clean_contents (repeat path)))
home_map <- foldM extendFM emptyFM home_imports
let dirs = import_dirs pkg
pkg_name = _PK_ (name pkg)
let addDir fm dir = do
- contents <- getDirectoryContents' dir
+ contents <- softGetDirectoryContents dir
return (addListToFM fm (zip contents
(repeat (pkg_name,dir))))
foldM addDir fm dirs
isUsefulFile fn
= let suffix = (reverse . takeWhile (/= '.') . reverse) fn
in suffix `elem` ["hi", "hs", "lhs", "hi-boot", "hi-boot-5"]
-
-getDirectoryContents' d
- = IO.catch (getDirectoryContents d)
- (\_ -> do hPutStr stderr
- ("WARNING: error while reading directory " ++ d)
- return []
- )
-
\end{code}