[commit: packages/unix] master: Handle EROFS/ETXTBSY as permission denied in `fileAccess` (re #8741) (ecc92ab)

git at git.haskell.org git at git.haskell.org
Thu Feb 6 11:16:18 UTC 2014


Repository : ssh://git@git.haskell.org/unix

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/ecc92abad017cf12d8eb83509d4d57ae14ad47f9/unix

>---------------------------------------------------------------

commit ecc92abad017cf12d8eb83509d4d57ae14ad47f9
Author: Alain O'Dea <alain.odea at verafin.com>
Date:   Wed Feb 5 21:24:28 2014 +0000

    Handle EROFS/ETXTBSY as permission denied in `fileAccess` (re #8741)
    
    This extends `System.Posix.Files.`access` to map EROFS & ETXTBSY to
    mean permission denied just like EACCESS.
    
    Based on a patch by Alain O'Dea and comments by Duncan Coutts
    
    Authored-by: Alain O'Dea <alain.odea at verafin.com>
    Signed-off-by: Herbert Valerio Riedel <hvr at gnu.org>


>---------------------------------------------------------------

ecc92abad017cf12d8eb83509d4d57ae14ad47f9
 System/Posix/Files.hsc |    2 +-
 changelog.md           |    4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/System/Posix/Files.hsc b/System/Posix/Files.hsc
index 57f771e..704ef8a 100644
--- a/System/Posix/Files.hsc
+++ b/System/Posix/Files.hsc
@@ -151,7 +151,7 @@ access name flags =
     if (r == 0)
 	then return True
 	else do err <- getErrno
-	        if (err == eACCES)
+	        if (err == eACCES || err == eROFS || err == eTXTBSY)
 		   then return False
 		   else throwErrnoPath "fileAccess" name
 
diff --git a/changelog.md b/changelog.md
index 272c503..54e5a96 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+## 2.7.0.1
+
+  * Handle EROFS and ETXTBSY as (non-exceptional) permission denied in `fileAccess`
+
 ## 2.7.0.0  *Nov 2013*
 
   * New `forkProcessWithUnmask` function in the style of `forkIOWithUnmask`



More information about the ghc-commits mailing list