forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cgi-3001.1.8.5-ghc78.patch
90 lines (78 loc) · 2.76 KB
/
cgi-3001.1.8.5-ghc78.patch
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
diff --git a/Network/CGI/Protocol.hs b/Network/CGI/Protocol.hs
index 6b9d2ec..e9a14ff 100644
--- a/Network/CGI/Protocol.hs
+++ b/Network/CGI/Protocol.hs
@@ -11,7 +11,7 @@
-- An implementation of the program side of the CGI protocol.
--
-----------------------------------------------------------------------------
-
+{-# LANGUAGE CPP, DeriveDataTypeable #-}
module Network.CGI.Protocol (
-- * CGI request
CGIRequest(..), Input(..),
@@ -44,7 +44,12 @@ import System.IO (Handle, hPutStrLn, stderr, hFlush, hSetBinaryMode)
import qualified Data.ByteString.Lazy.Char8 as BS
import Data.ByteString.Lazy.Char8 (ByteString)
+#if MIN_VERSION_base(4,7,0)
+import Data.Typeable
+#else
import Data.Typeable (Typeable(..), mkTyConApp, mkTyCon)
+#endif
+
import Network.CGI.Header
import Network.CGI.Multipart
@@ -72,8 +77,10 @@ data CGIRequest =
}
deriving (Show)
+#if ! MIN_VERSION_base(4,7,0)
instance Typeable CGIResult where
typeOf _ = mkTyConApp (mkTyCon "Network.CGI.Protocol.CGIResult") []
+#endif
-- | The value of an input parameter, and some metadata.
data Input = Input {
@@ -90,7 +97,11 @@ data Input = Input {
-- | The result of a CGI program.
data CGIResult = CGIOutput ByteString
| CGINothing
+#if MIN_VERSION_base(4,7,0)
+ deriving (Show, Read, Eq, Ord, Typeable)
+#else
deriving (Show, Read, Eq, Ord)
+#endif
--
-- * Running CGI actions
diff --git a/Network/CGI/Monad.hs b/Network/CGI/Monad.hs
index 2294f8c..7ed116c 100644
--- a/Network/CGI/Monad.hs
+++ b/Network/CGI/Monad.hs
@@ -1,4 +1,5 @@
{-# OPTIONS_GHC -fglasgow-exts #-}
+{-# LANGUAGE CPP, DeriveDataTypeable #-}
-----------------------------------------------------------------------------
-- |
-- Module : Network.CGI.Monad
@@ -40,8 +41,12 @@ import Control.Monad.Error (MonadError(..))
import Control.Monad.Reader (ReaderT(..), asks)
import Control.Monad.Writer (WriterT(..), tell)
import Control.Monad.Trans (MonadTrans, MonadIO, liftIO, lift)
+#if MIN_VERSION_base(4,7,0)
+import Data.Typeable
+#else
import Data.Typeable (Typeable(..), Typeable1(..),
- mkTyConApp, mkTyCon)
+ mkTyConApp, mkTyCon)
+#endif
import Network.CGI.Protocol
@@ -55,10 +60,14 @@ type CGI a = CGIT IO a
-- | The CGIT monad transformer.
newtype CGIT m a = CGIT { unCGIT :: ReaderT CGIRequest (WriterT Headers m) a }
+#if MIN_VERSION_base(4,7,0)
+ deriving (Typeable)
+#else
instance (Typeable1 m, Typeable a) => Typeable (CGIT m a) where
typeOf _ = mkTyConApp (mkTyCon "Network.CGI.Monad.CGIT")
[typeOf1 (undefined :: m a), typeOf (undefined :: a)]
+#endif
instance (Functor m, Monad m) => Functor (CGIT m) where
fmap f c = CGIT (fmap f (unCGIT c))