use safesystem

This commit is contained in:
Joey Hess 2010-10-19 01:19:56 -04:00
parent 15986f01d1
commit c7664588f8
4 changed files with 10 additions and 13 deletions

View file

@ -13,6 +13,7 @@ module Backend.File (backend) where
import Control.Monad.State
import System.IO
import System.Cmd
import System.Cmd.Utils
import System.Exit
import Control.Exception
@ -92,11 +93,7 @@ copyFromRemote r key file = do
then getlocal
else getremote
where
getlocal = do
res <-rawSystem "cp" ["-a", location, file]
if (res == ExitSuccess)
then return ()
else error "cp failed"
getlocal = safeSystem "cp" ["-a", location, file]
getremote = error "get via network not yet implemented!"
location = annexLocation r key

View file

@ -3,9 +3,11 @@
module Backend.URL (backend) where
import Control.Exception
import Control.Monad.State (liftIO)
import Data.String.Utils
import System.Cmd
import System.Cmd.Utils
import System.Exit
import TypeInternals
@ -36,9 +38,10 @@ downloadUrl :: Key -> FilePath -> Annex Bool
downloadUrl key file = do
showNote "downloading"
liftIO $ putStrLn "" -- make way for curl progress bar
result <- liftIO $ rawSystem "curl" ["-#", "-o", file, url]
if (result == ExitSuccess)
then return True
else return False
result <- liftIO $ (try curl::IO (Either SomeException ()))
case result of
Left err -> return False
Right succ -> return True
where
curl = safeSystem "curl" ["-#", "-o", file, url]
url = join ":" $ drop 1 $ split ":" $ show key