stop trapping all exceptions
Need to allow exceptions to be thrown for SIGPIPE propigation. Converted places that used error unncessarily to not.
This commit is contained in:
parent
470e0a2fbd
commit
2caf711827
2 changed files with 17 additions and 19 deletions
10
Commands.hs
10
Commands.hs
|
@ -101,7 +101,10 @@ parseCmd argv state = do
|
|||
- the annex directory and setting up the symlink pointing to its content. -}
|
||||
addCmd :: FilePath -> Annex ()
|
||||
addCmd file = inBackend file $ do
|
||||
liftIO $ checkLegal file
|
||||
s <- liftIO $ getSymbolicLinkStatus file
|
||||
if ((isSymbolicLink s) || (not $ isRegularFile s))
|
||||
then return ()
|
||||
else do
|
||||
showStart "add" file
|
||||
g <- Annex.gitRepo
|
||||
stored <- Backend.storeFileKey file
|
||||
|
@ -111,11 +114,6 @@ addCmd file = inBackend file $ do
|
|||
logStatus key ValuePresent
|
||||
setup g key
|
||||
where
|
||||
checkLegal file = do
|
||||
s <- getSymbolicLinkStatus file
|
||||
if ((isSymbolicLink s) || (not $ isRegularFile s))
|
||||
then error $ "not a regular file: " ++ file
|
||||
else return ()
|
||||
setup g key = do
|
||||
let dest = annexLocation g key
|
||||
liftIO $ createDirectoryIfMissing True (parentDir dest)
|
||||
|
|
10
git-annex.hs
10
git-annex.hs
|
@ -1,6 +1,6 @@
|
|||
{- git-annex main program -}
|
||||
|
||||
import Control.Exception
|
||||
import IO (try)
|
||||
import System.IO
|
||||
import System.Environment
|
||||
|
||||
|
@ -18,8 +18,9 @@ main = do
|
|||
(flags, actions) <- parseCmd args state
|
||||
tryRun state $ [startup flags] ++ actions ++ [shutdown]
|
||||
|
||||
{- Runs a list of Annex actions. Catches exceptions, not stopping
|
||||
- if some error out, and propigates an overall error status at the end.
|
||||
{- Runs a list of Annex actions. Catches IO errors and continues
|
||||
- (but explicitly thrown errors terminate the whole command).
|
||||
- Propigates an overall error status at the end.
|
||||
-
|
||||
- This runs in the IO monad, not in the Annex monad. It seems that
|
||||
- exceptions can only be caught in the IO monad, not in a stacked monad;
|
||||
|
@ -29,8 +30,7 @@ main = do
|
|||
tryRun :: AnnexState -> [Annex ()] -> IO ()
|
||||
tryRun state actions = tryRun' state 0 actions
|
||||
tryRun' state errnum (a:as) = do
|
||||
result <- try
|
||||
(Annex.run state a)::IO (Either SomeException ((), AnnexState))
|
||||
result <- try $ Annex.run state a
|
||||
case (result) of
|
||||
Left err -> do
|
||||
showErr err
|
||||
|
|
Loading…
Reference in a new issue