Avoid leaving behind .tmp files when failing in some cases, including importing files to a disk that is full.
This commit is contained in:
parent
24915adab7
commit
7671d228af
3 changed files with 19 additions and 7 deletions
|
@ -25,13 +25,20 @@ type Template = String
|
|||
- then moving it into place. The temp file is stored in the same
|
||||
- directory as the final file to avoid cross-device renames. -}
|
||||
viaTmp :: (FilePath -> String -> IO ()) -> FilePath -> String -> IO ()
|
||||
viaTmp a file content = do
|
||||
let (dir, base) = splitFileName file
|
||||
createDirectoryIfMissing True dir
|
||||
(tmpfile, handle) <- openTempFile dir (base ++ ".tmp")
|
||||
hClose handle
|
||||
a tmpfile content
|
||||
rename tmpfile file
|
||||
viaTmp a file content = bracket setup cleanup use
|
||||
where
|
||||
(dir, base) = splitFileName file
|
||||
template = base ++ ".tmp"
|
||||
setup = do
|
||||
createDirectoryIfMissing True dir
|
||||
openTempFile dir template
|
||||
cleanup (tmpfile, handle) = do
|
||||
_ <- tryIO $ hClose handle
|
||||
tryIO $ removeFile tmpfile
|
||||
use (tmpfile, handle) = do
|
||||
hClose handle
|
||||
a tmpfile content
|
||||
rename tmpfile file
|
||||
|
||||
{- Runs an action with a tmp file located in the system's tmp directory
|
||||
- (or in "." if there is none) then removes the file. -}
|
||||
|
|
2
debian/changelog
vendored
2
debian/changelog
vendored
|
@ -1,6 +1,8 @@
|
|||
git-annex (5.20140607) UNRELEASED; urgency=medium
|
||||
|
||||
* Ignore setsid failures.
|
||||
* Avoid leaving behind .tmp files when failing in some cases, including
|
||||
importing files to a disk that is full.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Mon, 09 Jun 2014 14:44:09 -0400
|
||||
|
||||
|
|
|
@ -7,3 +7,6 @@ These files should be removed when import detects that its has no more space to
|
|||
### What version of git-annex are you using? On what operating system?
|
||||
|
||||
git-annex 5.20140517.4 in Ubuntu 12.04.
|
||||
|
||||
> The ".tmp" means this dropping is left by viaTmp, and I see why.
|
||||
> [[fixed|done]] --[[Joey]]
|
||||
|
|
Loading…
Reference in a new issue