summaryrefslogtreecommitdiff
blob: dfdfa71522f510ffe5230d9a06bf4816112c504a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
diff --git a/Text/Regex/Posix/Wrap.hsc b/Text/Regex/Posix/Wrap.hsc
index d27b756..a43bcc3 100644
--- a/Text/Regex/Posix/Wrap.hsc
+++ b/Text/Regex/Posix/Wrap.hsc
@@ -102,7 +102,7 @@ module Text.Regex.Posix.Wrap(
 -- string.h is needed for memset
 
 #include "myfree.h"
-
+         
 #include "string.h"
 
 #ifndef _POSIX_C_SOURCE
@@ -131,10 +131,19 @@ import Foreign(Ptr, FunPtr, nullPtr, newForeignPtr,
                addForeignPtrFinalizer, Storable(peekByteOff), allocaArray,
                allocaBytes, withForeignPtr,ForeignPtr,plusPtr,peekElemOff)
 import Foreign.Marshal.Alloc(mallocBytes)
-import Foreign.C(CSize,CInt,CChar)
+import Foreign.C(CChar)
+#if __GLASGOW_HASKELL__ >= 703
+import Foreign.C(CSize(CSize),CInt(CInt))
+#else
+import Foreign.C(CSize,CInt)
+#endif
 import Foreign.C.String(peekCAString, CString)
 import Text.Regex.Base.RegexLike(RegexOptions(..),RegexMaker(..),RegexContext(..),MatchArray)
-import qualified System.IO.Error as IOERROR(try)
+-- deprecated: import qualified System.IO.Error as IOERROR(try)
+import qualified Control.Exception(try,IOException)
+
+try :: IO a -> IO (Either Control.Exception.IOException a)
+try = Control.Exception.try
 
 type CRegex = ()   -- dummy regex_t used below to read out nsub value
 
@@ -349,8 +358,10 @@ foreign import ccall unsafe "&myregfree"
 foreign import ccall unsafe "regcomp"
   c_regcomp :: Ptr CRegex -> CString -> CompOption -> IO ReturnCode
 
+{- NOT USED
 foreign import ccall unsafe "&regfree"
   c_regfree :: FunPtr (Ptr CRegex -> IO ())
+-}
 
 foreign import ccall unsafe "regexec"
   c_regexec :: Ptr CRegex -> CString -> CSize
@@ -460,7 +471,7 @@ wrapError errCode regex_ptr = do
 ----------
 wrapCompile flags e pattern = do
  nullTest pattern "wrapCompile pattern" $ do
-  e_regex_ptr <- IOERROR.try $ mallocBytes (#const sizeof(regex_t)) -- ioError called if nullPtr
+  e_regex_ptr <- try $ mallocBytes (#const sizeof(regex_t)) -- ioError called if nullPtr
   case e_regex_ptr of
     Left ioerror -> return (Left (retOk,"Text.Regex.Posix.Wrap.wrapCompile: IOError from mallocBytes(regex_t) : "++show ioerror))
     Right raw_regex_ptr -> do