Shared: Better error message when default data file not found.

Listing the full path can confuse people who are using
`--self-contained`:  they might have intended the file to be
found locally.  So now we just list the data file name.
This commit is contained in:
John MacFarlane 2013-08-15 17:21:56 -07:00
parent 5af0de23cc
commit 172f020bc5

View file

@ -583,8 +583,7 @@ readDefaultDataFile :: FilePath -> IO BS.ByteString
readDefaultDataFile fname =
#ifdef EMBED_DATA_FILES
case lookup (makeCanonical fname) dataFiles of
Nothing -> ioError $ userError
$ "Data file `" ++ fname ++ "' does not exist"
Nothing -> err 97 $ "Could not find data file " ++ fname
Just contents -> return contents
where makeCanonical = joinPath . transformPathParts . splitDirectories
transformPathParts = reverse . foldl go []
@ -592,7 +591,12 @@ readDefaultDataFile fname =
go (_:as) ".." = as
go as x = x : as
#else
getDataFileName ("data" </> fname) >>= BS.readFile
getDataFileName ("data" </> fname) >>= checkExistence >>= BS.readFile
where checkExistence fn = do
exists <- doesFileExist fn
if exists
then return fn
else err 97 ("Could not find data file " ++ fname)
#endif
-- | Read file from specified user data directory or, if not found there, from