{-# 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