{-# LANGUAGE Safe #-}------------------------------------------------------------------------------- |-- Module : System.Posix.Error-- Copyright : (c) The University of Glasgow 2002-- License : BSD-style (see the file libraries/base/LICENSE)---- Maintainer : libraries@haskell.org-- Stability : provisional-- Portability : non-portable (requires POSIX)---- POSIX error support-------------------------------------------------------------------------------moduleSystem.Posix.Error(throwErrnoPath,throwErrnoPathIf,throwErrnoPathIf_,throwErrnoPathIfRetry ,throwErrnoPathIfNull,throwErrnoPathIfNullRetry ,throwErrnoPathIfMinus1,throwErrnoPathIfMinus1_,throwErrnoPathIfMinus1Retry ,throwErrnoPathIfMinus1Retry_ )whereimportForeignhiding(void)importForeign.CimportControl.MonadthrowErrnoPathIfMinus1Retry ::(Eqa ,Numa )=>String->FilePath->IOa ->IOa throwErrnoPathIfMinus1Retry :: forall a. (Eq a, Num a) => String -> String -> IO a -> IO a
throwErrnoPathIfMinus1Retry String
loc String
path IO a
f =(a -> Bool) -> String -> String -> IO a -> IO a
forall a. (a -> Bool) -> String -> String -> IO a -> IO a
throwErrnoPathIfRetry (a -> a -> Bool
forall a. Eq a => a -> a -> Bool
==-a
1)String
loc String
path IO a
f throwErrnoPathIfMinus1Retry_ ::(Eqa ,Numa )=>String->FilePath->IOa ->IO()throwErrnoPathIfMinus1Retry_ :: forall a. (Eq a, Num a) => String -> String -> IO a -> IO ()
throwErrnoPathIfMinus1Retry_ String
loc String
path IO a
f =IO a -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void(IO a -> IO ()) -> IO a -> IO ()
forall a b. (a -> b) -> a -> b
$(a -> Bool) -> String -> String -> IO a -> IO a
forall a. (a -> Bool) -> String -> String -> IO a -> IO a
throwErrnoPathIfRetry (a -> a -> Bool
forall a. Eq a => a -> a -> Bool
==-a
1)String
loc String
path IO a
f throwErrnoPathIfNullRetry ::String->FilePath->IO(Ptra )->IO(Ptra )throwErrnoPathIfNullRetry :: forall a. String -> String -> IO (Ptr a) -> IO (Ptr a)
throwErrnoPathIfNullRetry String
loc String
path IO (Ptr a)
f =(Ptr a -> Bool) -> String -> String -> IO (Ptr a) -> IO (Ptr a)
forall a. (a -> Bool) -> String -> String -> IO a -> IO a
throwErrnoPathIfRetry (Ptr a -> Ptr a -> Bool
forall a. Eq a => a -> a -> Bool
==Ptr a
forall a. Ptr a
nullPtr)String
loc String
path IO (Ptr a)
f throwErrnoPathIfRetry ::(a ->Bool)->String->FilePath->IOa ->IOa throwErrnoPathIfRetry :: forall a. (a -> Bool) -> String -> String -> IO a -> IO a
throwErrnoPathIfRetry a -> Bool
pr String
loc String
path IO a
f =doa
res <-IO a
f ifa -> Bool
pr a
res thendoErrno
err <-IO Errno
getErrnoifErrno
err Errno -> Errno -> Bool
forall a. Eq a => a -> a -> Bool
==Errno
eINTRthen(a -> Bool) -> String -> String -> IO a -> IO a
forall a. (a -> Bool) -> String -> String -> IO a -> IO a
throwErrnoPathIfRetry a -> Bool
pr String
loc String
path IO a
f elseString -> String -> IO a
forall a. String -> String -> IO a
throwErrnoPathString
loc String
path elsea -> IO a
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
returna
res 

AltStyle によって変換されたページ (->オリジナル) /