Revision 0c09ecc2 src/Ganeti/Utils.hs
b/src/Ganeti/Utils.hs | ||
---|---|---|
687 | 687 |
else return . Bad $ show errors |
688 | 688 |
|
689 | 689 |
-- | Safely rename a file, creating the target directory, if needed. |
690 |
safeRenameFile :: FilePath -> FilePath -> IO (Result ()) |
|
691 |
safeRenameFile from to = do |
|
692 |
result <- try $ do |
|
693 |
createDirectoryIfMissing True $ takeDirectory to |
|
694 |
renameFile from to |
|
695 |
return $ either (Bad . show) Ok (result :: Either IOError ()) |
|
690 |
safeRenameFile :: FilePermissions -> FilePath -> FilePath -> IO (Result ()) |
|
691 |
safeRenameFile perms from to = do |
|
692 |
directtry <- try $ renameFile from to |
|
693 |
case (directtry :: Either IOError ()) of |
|
694 |
Right () -> return $ Ok () |
|
695 |
Left _ -> do |
|
696 |
result <- try $ do |
|
697 |
let dir = takeDirectory to |
|
698 |
createDirectoryIfMissing True dir |
|
699 |
_ <- ensurePermissions dir perms |
|
700 |
renameFile from to |
|
701 |
return $ either (Bad . show) Ok (result :: Either IOError ()) |
Also available in: Unified diff