@@ -61,6 +61,8 @@ import qualified Data.ByteString.Lazy as B
61import qualified Data.ByteString as BS
61import qualified Data.ByteString as BS
62import Data.Aeson (eitherDecode', encode)
62import Data.Aeson (eitherDecode', encode)
63import qualified Data.Map as M
63import qualified Data.Map as M
64+import System.IO.Error(ioeGetErrorType)
65+import GHC.IO.Exception (IOErrorType(ResourceVanished))
65copyrightMessage :: String
67copyrightMessage :: String
66copyrightMessage = "\nCopyright (C) 2006-2013 John MacFarlane\n" ++
68copyrightMessage = "\nCopyright (C) 2006-2013 John MacFarlane\n" ++
@@ -99,8 +101,11 @@ externalFilter f args' d = do
99 ExitSuccess -> return $ either error id $ eitherDecode' outbs
101 ExitSuccess -> return $ either error id $ eitherDecode' outbs
100 ExitFailure _ -> err 83 $ "Error running filter " ++ f
102 ExitFailure _ -> err 83 $ "Error running filter " ++ f
101 where filterException :: E.SomeException -> IO a
103 where filterException :: E.SomeException -> IO a
102− filterException e = err 83 $ "Error running filter " ++ f ++
104+ filterException e = err 83 $ "Error running filter " ++ f ++ "\n" ++
105+ if ioeGetErrorType `fmap` E.fromException e ==
106+ Just ResourceVanished
107+ then f ++ " not found in path"
103− "\n" ++ show e
108+ else show e
105-- | Data structure for command line options.
110-- | Data structure for command line options.
106data Opt = Opt
111data Opt = Opt