aboutsummaryrefslogtreecommitdiffhomepage
path: root/System/Posix/Files/ByteString.hsc
diff options
context:
space:
mode:
Diffstat (limited to 'System/Posix/Files/ByteString.hsc')
-rw-r--r--System/Posix/Files/ByteString.hsc25
1 files changed, 13 insertions, 12 deletions
diff --git a/System/Posix/Files/ByteString.hsc b/System/Posix/Files/ByteString.hsc
index cb68668..ec58cb1 100644
--- a/System/Posix/Files/ByteString.hsc
+++ b/System/Posix/Files/ByteString.hsc
@@ -147,22 +147,23 @@ fileExist name =
withFilePath name $ \s -> do
r <- c_access s (#const F_OK)
if (r == 0)
- then return True
- else do err <- getErrno
- if (err == eNOENT)
- then return False
- else throwErrnoPath "fileExist" name
+ then return True
+ else do err <- getErrno
+ if (err == eNOENT)
+ then return False
+ else throwErrnoPath "fileExist" name
access :: RawFilePath -> CMode -> IO Bool
access name flags =
withFilePath name $ \s -> do
r <- c_access s (fromIntegral flags)
if (r == 0)
- then return True
- else do err <- getErrno
- if (err == eACCES)
- then return False
- else throwErrnoPath "fileAccess" name
+ then return True
+ else do err <- getErrno
+ if (err == eACCES || err == eROFS || err == eTXTBSY ||
+ err == ePERM)
+ then return False
+ else throwErrnoPath "fileAccess" name
-- | @getFileStatus path@ calls gets the @FileStatus@ information (user ID,
@@ -278,7 +279,7 @@ readSymbolicLink file =
allocaArray0 (#const PATH_MAX) $ \buf -> do
withFilePath file $ \s -> do
len <- throwErrnoPathIfMinus1 "readSymbolicLink" file $
- c_readlink s buf (#const PATH_MAX)
+ c_readlink s buf (#const PATH_MAX)
peekFilePathLen (buf,fromIntegral len)
foreign import ccall unsafe "readlink"
@@ -325,7 +326,7 @@ setSymbolicLinkOwnerAndGroup :: RawFilePath -> UserID -> GroupID -> IO ()
setSymbolicLinkOwnerAndGroup name uid gid = do
withFilePath name $ \s ->
throwErrnoPathIfMinus1_ "setSymbolicLinkOwnerAndGroup" name
- (c_lchown s uid gid)
+ (c_lchown s uid gid)
foreign import ccall unsafe "lchown"
c_lchown :: CString -> CUid -> CGid -> IO CInt