made parentDir return a Maybe FilePath; removed most uses of it
parentDir is less safe than takeDirectory, especially when working with relative FilePaths. It's really only useful in loops that want to terminate at / This commit was sponsored by Audric SCHILTKNECHT.
This commit is contained in:
parent
d09a198ec0
commit
965e106f24
47 changed files with 97 additions and 96 deletions
|
@ -22,6 +22,7 @@ import Assistant.Install.Menu
|
|||
import Control.Applicative
|
||||
import System.Directory
|
||||
import System.Environment
|
||||
import System.FilePath
|
||||
#ifndef mingw32_HOST_OS
|
||||
import System.Posix.User
|
||||
#endif
|
||||
|
@ -75,6 +76,6 @@ install command = do
|
|||
( return ()
|
||||
, do
|
||||
programfile <- inDestDir =<< programFile
|
||||
createDirectoryIfMissing True (parentDir programfile)
|
||||
createDirectoryIfMissing True (takeDirectory programfile)
|
||||
writeFile programfile command
|
||||
)
|
||||
|
|
|
@ -64,7 +64,7 @@ getbuild repodir (url, f) = do
|
|||
let dest = repodir </> f
|
||||
let tmp = dest ++ ".tmp"
|
||||
nukeFile tmp
|
||||
createDirectoryIfMissing True (parentDir dest)
|
||||
createDirectoryIfMissing True (takeDirectory dest)
|
||||
let oops s = do
|
||||
nukeFile tmp
|
||||
putStrLn $ "*** " ++ s
|
||||
|
|
|
@ -204,7 +204,7 @@ applySplices destdir imports splices@(first:_) = do
|
|||
let f = splicedFile first
|
||||
let dest = (destdir </> f)
|
||||
lls <- map (++ "\n") . lines <$> readFileStrictAnyEncoding f
|
||||
createDirectoryIfMissing True (parentDir dest)
|
||||
createDirectoryIfMissing True (takeDirectory dest)
|
||||
let newcontent = concat $ addimports $ expand lls splices
|
||||
oldcontent <- catchMaybeIO $ readFileStrictAnyEncoding dest
|
||||
when (oldcontent /= Just newcontent) $ do
|
||||
|
|
|
@ -47,7 +47,7 @@ mklibs top = do
|
|||
writeFile (top </> "linker")
|
||||
(Prelude.head $ filter ("ld-linux" `isInfixOf`) libs')
|
||||
writeFile (top </> "gconvdir")
|
||||
(parentDir $ Prelude.head $ filter ("/gconv/" `isInfixOf`) glibclibs)
|
||||
(takeDirectory $ Prelude.head $ filter ("/gconv/" `isInfixOf`) glibclibs)
|
||||
|
||||
mapM_ (installLinkerShim top) exes
|
||||
|
||||
|
@ -75,7 +75,7 @@ installLinkerShim top exe = do
|
|||
symToHardLink :: FilePath -> IO ()
|
||||
symToHardLink f = whenM (isSymbolicLink <$> getSymbolicLinkStatus f) $ do
|
||||
l <- readSymbolicLink f
|
||||
let absl = absPathFrom (parentDir f) l
|
||||
let absl = absPathFrom (takeDirectory f) l
|
||||
nukeFile f
|
||||
createLink absl f
|
||||
|
||||
|
@ -84,7 +84,7 @@ installFile top f = do
|
|||
createDirectoryIfMissing True destdir
|
||||
void $ copyFileExternal CopyTimeStamps f destdir
|
||||
where
|
||||
destdir = inTop top $ parentDir f
|
||||
destdir = inTop top $ takeDirectory f
|
||||
|
||||
checkExe :: FilePath -> IO Bool
|
||||
checkExe f
|
||||
|
|
|
@ -50,7 +50,7 @@ installLibs appbase replacement_libs libmap = do
|
|||
ifM (doesFileExist dest)
|
||||
( return Nothing
|
||||
, do
|
||||
createDirectoryIfMissing True (parentDir dest)
|
||||
createDirectoryIfMissing True (takeDirectory dest)
|
||||
putStrLn $ "installing " ++ pathlib ++ " as " ++ shortlib
|
||||
_ <- boolSystem "cp" [File pathlib, File dest]
|
||||
_ <- boolSystem "chmod" [Param "644", File dest]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue