From c846208a037f5a94552d19660f9b3debfeeebf18 Mon Sep 17 00:00:00 2001
From: Ian Lynagh <igloo@earth.li>
Date: Sun, 22 Jul 2007 00:27:46 +0000
Subject: [PATCH] Move throwErrnoPath* functions from unix:System.Posix.Error

---
 Foreign/C/Error.hs | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/Foreign/C/Error.hs b/Foreign/C/Error.hs
index dc450f3c..7331bddc 100644
--- a/Foreign/C/Error.hs
+++ b/Foreign/C/Error.hs
@@ -448,6 +448,30 @@ throwErrnoIfNullRetry  = throwErrnoIfRetry (== nullPtr)
 throwErrnoIfNullRetryMayBlock :: String -> IO (Ptr a) -> IO b -> IO (Ptr a)
 throwErrnoIfNullRetryMayBlock  = throwErrnoIfRetryMayBlock (== nullPtr)
 
+throwErrnoPath :: String -> FilePath -> IO a
+throwErrnoPath loc path =
+  do
+    errno <- getErrno
+    ioError (errnoToIOError loc errno Nothing (Just path))
+
+throwErrnoPathIf :: (a -> Bool) -> String -> FilePath -> IO a -> IO a
+throwErrnoPathIf pred loc path f =
+  do
+    res <- f
+    if pred res then throwErrnoPath loc path else return res
+
+throwErrnoPathIf_ :: (a -> Bool) -> String -> FilePath -> IO a -> IO ()
+throwErrnoPathIf_ pred loc path f  = void $ throwErrnoPathIf pred loc path f
+
+throwErrnoPathIfNull :: String -> FilePath -> IO (Ptr a) -> IO (Ptr a)
+throwErrnoPathIfNull  = throwErrnoPathIf (== nullPtr)
+
+throwErrnoPathIfMinus1 :: Num a => String -> FilePath -> IO a -> IO a
+throwErrnoPathIfMinus1 = throwErrnoPathIf (== -1)
+
+throwErrnoPathIfMinus1_ :: Num a => String -> FilePath -> IO a -> IO ()
+throwErrnoPathIfMinus1_  = throwErrnoPathIf_ (== -1)
+
 -- conversion of an "errno" value into IO error
 -- --------------------------------------------
 
-- 
GitLab