LIB: make deleteDirRecursive more robust

We now try 'deleteDir' first and only start recursive removal
if that fails.
This commit is contained in:
Julian Ospald 2016-05-03 11:54:25 +02:00
parent 4a86b4d2cf
commit 6ec455b515
No known key found for this signature in database
GPG Key ID: 511B62C09D50CD28

View File

@ -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