Revision b3f95121

b/src/Ganeti/Utils.hs
71 71
  , getFStatSafe
72 72
  , needsReload
73 73
  , watchFile
74
  , safeRenameFile
74 75
  ) where
75 76

  
76 77
import Control.Concurrent
......
81 82
import Data.IORef
82 83
import Data.List
83 84
import qualified Data.Map as M
84
import System.Directory (renameFile)
85
import System.Directory (renameFile, createDirectoryIfMissing)
85 86
import System.FilePath.Posix (takeDirectory, takeBaseName)
86 87
import System.INotify
87 88
import System.Posix.Types
......
638 639
      killINotify inotify
639 640
      return result
640 641
  
642
-- | Safely rename a file, creating the target directory, if needed.
643
safeRenameFile :: FilePath -> FilePath -> IO (Result ())
644
safeRenameFile from to = do
645
  result <- try $ do
646
    createDirectoryIfMissing True $ takeDirectory to
647
    renameFile from to
648
  return $ either (Bad . show) Ok (result :: Either IOError ())

Also available in: Unified diff