diff options
Diffstat (limited to 'Utility.hs')
-rw-r--r-- | Utility.hs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/Utility.hs b/Utility.hs index 47d10ed75..7831a4ab4 100644 --- a/Utility.hs +++ b/Utility.hs @@ -22,7 +22,7 @@ module Utility ( shellUnEscape, unsetFileMode, readMaybe, - safeWriteFile, + viaTmp, dirContains, dirContents, myHomeDir, @@ -243,13 +243,14 @@ readMaybe s = case reads s of ((x,_):_) -> Just x _ -> Nothing -{- Writes a file using a temp file that is renamed atomically into place. -} -safeWriteFile :: FilePath -> String -> IO () -safeWriteFile file content = do +{- Runs an action like writeFile, writing to a tmp file first and + - then moving it into place. -} +viaTmp :: (FilePath -> String -> IO ()) -> FilePath -> String -> IO () +viaTmp a file content = do pid <- getProcessID let tmpfile = file ++ ".tmp" ++ show pid createDirectoryIfMissing True (parentDir file) - writeFile tmpfile content + a tmpfile content renameFile tmpfile file {- Lists the contents of a directory. |