LIB: make deleteDirRecursive more robust
We now try 'deleteDir' first and only start recursive removal if that fails.
This commit is contained in:
parent
4a86b4d2cf
commit
6ec455b515
@ -71,8 +71,10 @@ import Data.Word
|
|||||||
)
|
)
|
||||||
import Foreign.C.Error
|
import Foreign.C.Error
|
||||||
(
|
(
|
||||||
eINVAL
|
eEXIST
|
||||||
|
, eINVAL
|
||||||
, eNOSYS
|
, eNOSYS
|
||||||
|
, eNOTEMPTY
|
||||||
, eXDEV
|
, eXDEV
|
||||||
)
|
)
|
||||||
import Foreign.C.Types
|
import Foreign.C.Types
|
||||||
@ -416,7 +418,10 @@ deleteDir p = P.withAbsPath p removeDirectory
|
|||||||
-- * not atomic
|
-- * not atomic
|
||||||
-- * examines filetypes explicitly
|
-- * examines filetypes explicitly
|
||||||
deleteDirRecursive :: Path Abs -> IO ()
|
deleteDirRecursive :: Path Abs -> IO ()
|
||||||
deleteDirRecursive p = do
|
deleteDirRecursive p =
|
||||||
|
catchErrno [eNOTEMPTY, eEXIST]
|
||||||
|
(deleteDir p)
|
||||||
|
$ do
|
||||||
files <- getDirsFiles p
|
files <- getDirsFiles p
|
||||||
for_ files $ \file -> do
|
for_ files $ \file -> do
|
||||||
ftype <- getFileType file
|
ftype <- getFileType file
|
||||||
|
Loading…
Reference in New Issue
Block a user