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