simplify replaceFile using relatedTemplate
Now that truncateFilePath and relatedTemplate have both been optimised, may as well use them in replaceFile, rather than the custom hack it used. Removed the windows-specific ifdef as well, because on Windows long filepaths no longer really a problem, since ghc and git-annex use UNC converted paths. replaceFile no longer checks fileNameLengthLimit. That took a syscall, and since we have an existing file, we know filenames of its length are supported by the filesystem. Assuming that the withOtherTmp directory is on the same filesystem as the file replaceFile is being called on, which I believe it is. Sponsored-by: Leon Schuermann
This commit is contained in:
parent
f17ec601c4
commit
af3b9cbd36
2 changed files with 15 additions and 24 deletions
|
@ -13,8 +13,9 @@ module Utility.Tmp (
|
|||
viaTmp,
|
||||
withTmpFile,
|
||||
withTmpFileIn,
|
||||
relatedTemplate,
|
||||
openTmpFileIn,
|
||||
relatedTemplate,
|
||||
relatedTemplate',
|
||||
) where
|
||||
|
||||
import System.IO
|
||||
|
@ -107,14 +108,17 @@ withTmpFileIn tmpdir template a = bracket create remove use
|
|||
- This generates a template that is never too long.
|
||||
-}
|
||||
relatedTemplate :: RawFilePath -> Template
|
||||
relatedTemplate f
|
||||
relatedTemplate = toOsPath . relatedTemplate'
|
||||
|
||||
relatedTemplate' :: RawFilePath -> RawFilePath
|
||||
relatedTemplate' f
|
||||
| len > templateAddedLength =
|
||||
{- Some filesystems like FAT have issues with filenames
|
||||
- ending in ".", so avoid truncating a filename to end
|
||||
- that way. -}
|
||||
toOsPath $ B.dropWhileEnd (== dot) $
|
||||
B.dropWhileEnd (== dot) $
|
||||
truncateFilePath (len - templateAddedLength) f
|
||||
| otherwise = toOsPath f
|
||||
| otherwise = f
|
||||
where
|
||||
len = B.length f
|
||||
dot = fromIntegral (ord '.')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue