packages feed

curl (empty) → 1.3

raw patch · 14 files changed

+5101/−0 lines, 14 filesdep +basedep +containersdep +haskell98setup-changed

Dependencies added: base, containers, haskell98

Files

+ LICENSE view
@@ -0,0 +1,27 @@+Copyright (c) 2007-8 Galois Inc.++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions+are met:+1. Redistributions of source code must retain the above copyright+   notice, this list of conditions and the following disclaimer.+2. Redistributions in binary form must reproduce the above copyright+   notice, this list of conditions and the following disclaimer in the+   documentation and/or other materials provided with the distribution.+3. Neither the name of the author nor the names of his contributors+   may be used to endorse or promote products derived from this software+   without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF+SUCH DAMAGE.
+ Network/Curl.hs view
@@ -0,0 +1,284 @@+--------------------------------------------------------------------+-- |+-- Module    : Curl+-- Copyright : (c) Galois Inc 2007-8+-- License   : BSD3+--+-- Author: Sigbjorn Finne, Iavor S. Diatchki, Eric Mertens+-- Maintainer: emertens@galois.com+-- Stability : provisional+-- Portability: portable+--+-- A Haskell binding the libcurl library (http:\/\/curl.haxx.se\/), a +-- proven and feature-rich library for interacting with HTTP(S)\/FTP+-- servers.+--+-- The binding was initially made against version 7.16.2; libcurl does+-- appear to be considerate in not introducing breaking changes wrt+-- older versions. So, unless you're after the latest features (i.e.,+-- constructors towards the end the Option type), there's a very good+-- chance your code will work against older installations of libcurl.+--+--------------------------------------------------------------------+module Network.Curl+       ( module Network.Curl.Opts+       , module Network.Curl.Easy+       , module Network.Curl.Post+       , module Network.Curl.Info+       , module Network.Curl.Types+       , module Network.Curl.Code++         -- controlled export of this module: +         -- (ToDo: tighten it up even more)+       , withCurlDo          -- :: IO a -> IO a+       , setopts             -- :: Curl -> [CurlOption] -> IO ()++       , CurlResponse(..)++          -- get resources and assoc. metadata.+       , curlGet             -- :: URLString -> [CurlOption] -> IO ()+       , curlGetString       -- :: URLString -> [CurlOption] -> IO (CurlCode, String)+       , curlGetResponse     -- :: URLString -> [CurlOption] -> IO CurlResponse++          -- probing for gold..+       , curlHead            -- :: URLString+                             -- -> [CurlOption]+                             -- -> IO (String,[(String,String)])++          -- posting requests.+       , curlMultiPost       -- :: URLString -> [CurlOption] -> [HttpPost] -> IO ()+       , curlPost            -- :: URLString -> [String] -> IO ()++          -- +       , getResponseCode     -- :: Curl -> IO Int++          -- supporting cast+       , setDefaultSSLOpts   -- :: Curl -> URLString -> IO ()+       , callbackWriter      -- :: (String -> IO ()) -> WriteFunction+       , easyWriter          -- :: (String -> IO ()) -> WriteFunction+       , ignoreOutput        -- :: WriteFunction+       , gatherOutput        -- :: IORef [String] -> WriteFunction++       , method_GET          -- :: [CurlOption]+       , method_HEAD         -- :: [CurlOption]+       , method_POST         -- :: [CurlOption]++       ) where++import Network.Curl.Opts+import Network.Curl.Code+import Network.Curl.Types+import Network.Curl.Post+import Network.Curl.Info+import Network.Curl.Easy++import Foreign.C.String+import Data.IORef+import Data.List(isPrefixOf)+import System.IO++{- pass along the action you want to perform during its lifetime.+{-# OBSOLETE #-}+withCurl :: (Curl -> IO a) -> IO a+withCurl act = act =<< initialize+-}++-- | Should be used once to wrap all uses of libcurl.+-- WARNING: the argument should not return before it+-- is completely done with curl (e.g., no forking or lazy returns)+withCurlDo :: IO a -> IO a+withCurlDo m  = do curl_global_init 3   -- initialize everything+                   a <- m+                   curl_global_cleanup+                   return a++-- | Set a list of options on a Curl handle.+setopts :: Curl -> [CurlOption] -> IO ()+setopts h opts = mapM_ (setopt h) opts+++method_GET   :: [CurlOption]+method_GET    = [CurlPost False, CurlNoBody False]++method_POST  :: [CurlOption]+method_POST   = [CurlPost True, CurlNoBody False]++method_HEAD  :: [CurlOption]+method_HEAD   = [CurlPost False, CurlNoBody True] ++-- | 'curlGet' perform a basic GET, dumping the output on stdout.+-- The list of options are set prior performing the GET request.+curlGet :: URLString -> [CurlOption] -> IO ()+curlGet url opts = initialize >>= \ h -> do+  setopt h (CurlFailOnError True)+  setopt h (CurlURL url)+   -- Note: later options may (and should, probably) override these defaults.+  setDefaultSSLOpts h url+  mapM_ (setopt h) opts+  perform h+  return ()++setDefaultSSLOpts :: Curl -> URLString -> IO ()+setDefaultSSLOpts h url+ | "https:" `isPrefixOf` url = do+    -- the default options are pretty dire, really -- turning off+    -- the peer verification checks!+   mapM_ (setopt h)+         [ CurlSSLVerifyPeer False+         , CurlSSLVerifyHost 0+         ]+ | otherwise = return ()++-- | 'curlGetString' performs the same request as 'curlGet', but +-- returns the response body as a Haskell string.+curlGetString :: URLString+              -> [CurlOption]+              -> IO (CurlCode, String)+curlGetString url opts = initialize >>= \ h -> do+  ref <- newIORef []+   -- Note: later options may (and should, probably) override these defaults.+  setopt h (CurlFailOnError True)+  setDefaultSSLOpts h url+  setopt h (CurlURL url)+  setopt h (CurlWriteFunction (gatherOutput ref))+  mapM_ (setopt h) opts+  rc <- perform h+  lss <- readIORef ref+  return (rc, concat $ reverse lss)++-- | 'CurlResponse' is a record type encoding all the information+-- embodied in a response to your Curl request. Currently only used+-- to gather up the results of doing a GET in 'curlGetResponse'.+data CurlResponse+ = CurlResponse+     { respCurlCode   :: CurlCode+     , respStatus     :: Int+     , respStatusLine :: String+     , respHeaders    :: [(String,String)]+     , respBody       :: String+     , respGetInfo    :: (Info -> IO InfoValue)+     }+++-- | 'curlGetResponse' performs a GET, returning all the info+-- it can lay its hands on in the response, a value of type 'CurlResponse'.+curlGetResponse :: URLString+                -> [CurlOption]+                -> IO CurlResponse+curlGetResponse url opts = do+  h <- initialize+  body_ref <- newIORef []+  hdr_ref  <- newIORef []+   -- Note: later options may (and should, probably) override these defaults.+  setopt  h (CurlFailOnError True)+  setDefaultSSLOpts h url+  setopt  h (CurlURL url)+  setopt  h (CurlWriteFunction (gatherOutput body_ref))+  setopt  h (CurlHeaderFunction (gatherOutput hdr_ref))+  mapM_ (setopt h) opts+  rc       <- perform h+  bss      <- readIORef body_ref+  hss      <- readIORef hdr_ref+  rspCode  <- getResponseCode h+  let (st,hs) = parseStatusNHeaders (concRev [] hss)+  return CurlResponse+    { respCurlCode   = rc+    , respStatus     = rspCode+    , respStatusLine = st+    , respHeaders    = hs+    , respBody       = concRev [] bss+    , respGetInfo    = getInfo h  -- note: we're holding onto the handle here..+    }++-- | Get the headers associated with a particular URL.+-- Returns the status line and the key-value pairs for the headers.+curlHead :: URLString -> [CurlOption] -> IO (String,[(String,String)])+curlHead url opts = initialize >>= \ h -> +  do ref <- newIORef []+--     setopt h (CurlVerbose True)+     setopt h (CurlURL url)+     setopt h (CurlNoBody True)+     mapM_ (setopt h) opts+     setopt h (CurlHeaderFunction (gatherOutput ref))+     perform h+     lss <- readIORef ref+     return (parseStatusNHeaders (concRev [] lss))++concRev :: [a] -> [[a]] -> [a]+concRev acc []     = acc+concRev acc (x:xs) = concRev (x++acc) xs++parseStatusNHeaders :: String -> (String, [(String,String)])+parseStatusNHeaders ys =+  case intoLines [] ys of+   a:as  -> (a,map parseHeader as)+   []    -> ("",[]) + where+  intoLines acc "" = addLine acc []+  intoLines acc ('\r':'\n':xs) = addLine acc (intoLines "" xs)+  intoLines acc (x:xs) = intoLines (x:acc) xs+  +  addLine "" ls = ls+  addLine  l ls = (reverse l) : ls++  parseHeader xs = +    case break (':' ==) xs of+     (as,_:bs) -> (as, bs)+     (as,_)    -> (as,"")++-- | 'curlMultiPost' perform a multi-part POST submission.+curlMultiPost :: URLString -> [CurlOption] -> [HttpPost] -> IO ()+curlMultiPost s os ps = initialize >>= \ h -> do+  setopt h (CurlVerbose True)+  setopt h (CurlURL s)+  setopt h (CurlHttpPost ps)+  mapM_ (setopt h) os+  perform h+  return ()+++-- | 'curlPost' performs. a common POST operation, namely that+-- of submitting a sequence of name=value pairs.+curlPost :: URLString -> [String] -> IO ()+curlPost s ps = initialize >>= \ h -> do+  setopt h (CurlVerbose True)+  setopt h (CurlPostFields ps)+  setopt h (CurlCookieJar "cookies")+  setopt h (CurlURL s)+  perform h+  return ()++-- Use 'callbackWriter' instead.+{-# OBSOLETE #-}+easyWriter :: (String -> IO ()) -> WriteFunction+easyWriter = callbackWriter++-- | Imports data into the Haskell world and invokes the callback.+callbackWriter :: (String -> IO ()) -> WriteFunction+callbackWriter f pBuf sz szI _ = +  do let bytes = sz * szI +     f =<< peekCStringLen (pBuf,fromIntegral bytes)+     return bytes++-- | The output of Curl is ignored.  This function+-- does not marshall data into Haskell.+ignoreOutput :: WriteFunction+ignoreOutput _ x y _ = return (x*y)++-- | Add chunks of data to an IORef as they arrive.+gatherOutput :: IORef [String] -> WriteFunction+gatherOutput r = callbackWriter $ \xs -> do xss <- readIORef r+                                            writeIORef r (xs:xss)++getResponseCode :: Curl -> IO Int+getResponseCode c = do+   iv <- getInfo c ResponseCode+   case iv of+     IString s -> +       case (reads s) of+         ((v,_):_) -> return v+         _ -> fail ("Curl.getResponseCode: not a valid integer string " ++ s)+     IDouble d -> return (round d)+     ILong x   -> return (fromIntegral x)+     IList{}   -> fail ("Curl.getResponseCode: unexpected response code " ++ show iv)+
+ Network/Curl/Code.hs view
@@ -0,0 +1,106 @@+{-# OPTIONS -fffi -fvia-C -#include "curl/curl.h" #-}+--------------------------------------------------------------------+-- |+-- Module    : Curl.Code+-- Copyright : (c) Galois Inc 2007+-- License   : BSD3+--+-- Author: Sigbjorn Finne, Iavor S. Diatchki, Eric Mertens+-- Maintainer: sof@galois.com+-- Stability : provisional+-- Portability: portable+--+-- Representing Curl's status codes as a Haskell type.+--+--------------------------------------------------------------------++module Network.Curl.Code where++import Foreign.C.Types++data CurlCode+ = CurlOK+ | CurlUnspportedProtocol+ | CurlFailedInit+ | CurlUrlMalformat+ | CurlUrlMalformatUser+ | CurlCouldntResolveProxy+ | CurlCouldntResolveHost+ | CurlCouldntConnect+ | CurlFtpWeirdServerReply+ | CurlFtpAccessDenied+ | CurlFtpUserPasswordIncorrect+ | CurlFtpWeirdPassReply+ | CurlFtpWeirdUserReply+ | CurlFtpWeirdPASVReply+ | CurlFtpWeird227Format+ | CurlFtpCantGetHost+ | CurlFtpCantReconnect+ | CurlFtpCouldnSetBinary+ | CurlPartialFile+ | CurlFtpCouldntRetrFile+ | CurlFtpWriteError+ | CurlFtpQuoteError+ | CurlHttpReturnedError+ | CurlWriteError+ | CurlMalformatError+ | CurlFtpCouldnStorFile+ | CurlReadError+ | CurlOutOfMemory+ | CurlOperationTimeout+ | CurlFtpCouldntSetAscii+ | CurlFtpPortFailed+ | CurlFtpCouldntUseRest+ | CurlFtpCouldntGetSize+ | CurlHttpRangeError+ | CurlHttpPostError+ | CurlSSLConnectError+ | CurlBadDownloadResume+ | CurlFileCouldntReadFile+ | CurlLDAPCannotBind+ | CurlLDPAPSearchFailed+ | CurlLibraryNotFound+ | CurlFunctionNotFound+ | CurlAbortedByCallback+ | CurlBadFunctionArgument+ | CurlBadCallingOrder+ | CurlInterfaceFailed+ | CurlBadPasswordEntered+ | CurlTooManyRedirects+ | CurlUnknownTelnetOption+ | CurlTelnetOptionSyntax+ | CurlObsolete+ | CurlSSLPeerCertificate+ | CurlGotNothing+ | CurlSSLEngineNotFound+ | CurlSSLEngineSetFailed+ | CurlSendError+ | CurlRecvError+ | CurlShareInUse+ | CurlSSLCertProblem+ | CurlSSLCipher+ | CurlSSLCACert+ | CurlBadContentEncoding+ | CurlLDAPInvalidUrl+ | CurlFilesizeExceeded+ | CurlFtpSSLFailed+ | CurlSendFailRewind+ | CurlSSLEngineInitFailed+ | CurlLoginDenied+ | CurlTFtpNotFound+ | CurlTFtpPerm+ | CurlTFtpDiskFull+ | CurlTFtpIllegal+ | CurlTFtpUnknownId+ | CurlTFtpExists+ | CurlTFtpNoSuchUser+ | CurlConvFailed+ | CurlConvReqd+ | CurlSSLCACertBadFile+ | CurlRemoveFileNotFound+ | CurlSSH+ | CurlSSLShutdownFailed+   deriving ( Eq, Show, Enum )++toCode :: CInt -> CurlCode+toCode x = toEnum (fromIntegral x)
+ Network/Curl/Debug.hs view
@@ -0,0 +1,24 @@+--------------------------------------------------------------------+-- |+-- Module    : Network.Curl.Debug+-- Copyright : (c) Galois, Inc. 2008+-- License   : BSD3+--+-- Maintainer: Don Stewart <dons@galois.com>+-- Stability : provisional+-- Portability:+--+-- Debug hooks++module Network.Curl.Debug (debug) where++import System.IO++debugging :: Bool+debugging = False++debug :: String -> IO ()+debug msg+  | debugging     = putStrLn ("DEBUG: " ++ msg) >> hFlush stdout+  | otherwise     = return ()+
+ Network/Curl/Easy.hs view
@@ -0,0 +1,208 @@+{-# OPTIONS -fffi -fvia-C -#include "curl/curl.h" #-}+--------------------------------------------------------------------+-- |+-- Module    : Curl.Easy+-- Copyright : (c) Galois Inc 2007+-- License   :+--+-- Author: Sigbjorn Finne, Iavor S. Diatchki, Eric Mertens+-- Maintainer: emertens@galois.com+-- Stability : provisional+-- Portability: portable+--+-- Haskell binding to the libcurl (http:\/\/curl.haxx.se\/) \"easy\" API.+-- The \"easy\" API provides a higher-level, easy-to-get-started calling+-- interface to the library's wide range of features for interacting+-- with HTTP\/FTP\/etc servers.+--+--------------------------------------------------------------------+module Network.Curl.Easy+        ( initialize    -- :: IO Curl+        , perform       -- :: Curl -> IO CurlCode+        , setopt        -- :: Curl -> CurlOption -> IO CurlCode+        , duphandle     -- :: Curl -> IO Curl+        , reset         -- :: Curl -> IO ()++        , curl_global_init    -- :: CInt -> IO CurlCode+        , curl_global_cleanup -- :: IO ()+        ) where++import Network.Curl.Types+import Network.Curl.Opts+import Network.Curl.Code+import Network.Curl.Post++import Network.Curl.Debug++import Data.IORef(IORef)+import Foreign.Ptr+import Foreign.Marshal.Alloc(free)+import Foreign.C.Types+import Foreign.C.String+import Control.Monad+import Data.Maybe++-- | Initialise a curl instance+initialize :: IO Curl+initialize = do+  h <- easy_initialize+  mkCurl h ++-- XXX: Is running cleanup here OK?+reset :: Curl -> IO ()+reset hh = curlPrim hh $ \r h -> easy_reset h >> runCleanup r++duphandle :: Curl -> IO Curl+duphandle hh = curlPrim hh $ \r h ->+  do h1      <- easy_duphandle h+     cleanup <- shareCleanup r+     mkCurlWithCleanup h1 cleanup++setopt :: Curl+       -> CurlOption+       -> IO CurlCode+setopt hh o = curlPrim hh $ \ r h -> unmarshallOption (easy_um r h) o+ where+  easy_um :: IORef OptionMap -> CurlH -> Unmarshaller CurlCode+  easy_um r h = +    Unmarshaller+    { u_long    -- :: Int -> Long     -> IO CurlCode+       = \ i x -> liftM toCode $ easy_setopt_long h i x+    , u_llong   --  :: Int -> LLong    -> IO CurlCode+       = \ i x -> liftM toCode $ easy_setopt_llong h i x++    , u_string  -- :: Int -> String   -> IO CurlCode+       = \ i x -> do debug $ "ALLOC: " ++ x+                     c_x <- newCString x+                     updateCleanup r i $ debug ("FREE: "++ x) >> free c_x+                     liftM toCode $ easy_setopt_string h i c_x++    , u_strings -- :: Int -> [String] -> IO CurlCode+       = \ i x ->+           do debug ("ALLOC: " ++ show x)+              -- curl_slist_append will copy its string argument+              let addOne ip s = withCString s $ curl_slist_append ip +              ip <- foldM addOne nullPtr x +              updateCleanup r i $+                debug ("FREE: " ++ show x) >> curl_slist_free ip+              liftM toCode $ easy_setopt_string h i (castPtr ip)+     , u_ptr    -- :: Int -> Ptr ()   -> IO a+       = \ i x -> liftM toCode $ easy_setopt_ptr h i x+     , u_writeFun -- :: Int -> WriteFunction -> IO a+       = \ i x -> do+            debug "ALLOC: WRITER"+            fp <- mkWriter x+            updateCleanup r i $ debug "FREE: WRITER" >> freeHaskellFunPtr fp+            liftM toCode $ easy_setopt_wfun h i fp+     , u_readFun -- :: Int -> ReadFunction -> IO a+       = \ i x -> do+            let wrapResult f a b c d = do+                     mb <- f a b c d+                     return (fromMaybe curl_readfunc_abort mb)+            debug "ALLOC: READER"+            fp <- mkReader (wrapResult x)+            updateCleanup r i $ debug "FREE: READER" >> freeHaskellFunPtr fp+            liftM toCode $ easy_setopt_rfun h i fp+     , u_progressFun -- :: Int -> ProgressFunction -> IO a+       = \ i x -> do+            debug "ALLOC: PROGRESS" +            fp <- mkProgress x+            updateCleanup r i $ debug "FREE: PROGRESS" >> freeHaskellFunPtr fp+            liftM toCode $ easy_setopt_fptr h i fp+     , u_debugFun -- :: Int -> DebugFunction -> IO a+       = \ i debFun -> do+            let wrapFun fun _a b c d e = +                  fun hh (toEnum (fromIntegral b)) c d e >> return 0+            debug "ALLOC: DEBUG" +            fp <- mkDebugFun (wrapFun debFun)+            updateCleanup r i $ debug "FREE: DEBUG" >> freeHaskellFunPtr fp+            liftM toCode $ easy_setopt_fptr h i fp+     , u_posts    -- :: Int -> [HttpPost] -> IO a+       = \ i x -> do+           debug "ALLOC: POSTS"+           p <- marshallPosts x+           updateCleanup r i $ debug "FREE: POSTS" >> curl_formfree p+           liftM toCode $ easy_setopt_ptr h i p +     , u_sslctxt  -- :: Int -> SSLCtxtFunction -> IO a+       = \ i x -> do+           debug "ALLOC: SSL_FUN"+           p <- mkSslCtxtFun x+           updateCleanup r i $ debug "FREE: SSL_FUN" >> freeHaskellFunPtr p+           liftM toCode $ easy_setopt_fptr h i p+     , u_ioctl_fun -- :: Int -> Ptr () -> IO a+       = \ i x -> liftM toCode $ easy_setopt_ptr h i x+     , u_convFromNetwork -- :: Int -> Ptr () -> IO a+       = \ i x -> liftM toCode $ easy_setopt_ptr h i x+     , u_convToNetwork -- :: Int -> Ptr () -> IO a+       = \ i x -> liftM toCode $ easy_setopt_ptr h i x+     , u_convFromUtf8 -- :: Int -> Ptr () -> IO a+       = \ i x -> liftM toCode $ easy_setopt_ptr h i x+     , u_sockoptFun  -- :: Int -> Ptr () -> IO a+       = \ i x -> liftM toCode $ easy_setopt_ptr h i x+     }++perform :: Curl -> IO CurlCode+perform hh = liftM toCode $ curlPrim hh $ \_ h -> easy_perform_prim h++curl_global_init :: CInt -> IO CurlCode+curl_global_init v = liftM toCode $ curl_global_init_prim v++-- FFI decls+++foreign import ccall+  "curl/easy.h curl_global_init" curl_global_init_prim :: CInt -> IO CInt++foreign import ccall+  "curl/easy.h curl_global_cleanup" curl_global_cleanup :: IO ()++foreign import ccall+  "curl/easy.h curl_easy_init" easy_initialize :: IO CurlH++foreign import ccall+  "curl/easy.h curl_easy_perform" easy_perform_prim :: CurlH -> IO CInt++foreign import ccall+  "curl_easy_duphandle" easy_duphandle :: CurlH -> IO CurlH++foreign import ccall+  "curl_easy_reset" easy_reset :: CurlH -> IO ()++foreign import ccall+  "curl_easy_setopt" easy_setopt_long :: CurlH -> Int -> Long -> IO CInt++foreign import ccall+  "curl_easy_setopt" easy_setopt_llong :: CurlH -> Int -> LLong -> IO CInt++foreign import ccall+  "curl_easy_setopt" easy_setopt_string :: CurlH -> Int -> Ptr CChar -> IO CInt++foreign import ccall+  "curl_easy_setopt" easy_setopt_ptr :: CurlH -> Int -> Ptr a -> IO CInt++foreign import ccall+  "curl_easy_setopt" easy_setopt_fptr :: CurlH -> Int -> FunPtr a -> IO CInt++foreign import ccall+  "curl_easy_setopt" easy_setopt_wfun :: CurlH -> Int -> FunPtr WriteFunction -> IO CInt++foreign import ccall+  "curl_easy_setopt" easy_setopt_rfun :: CurlH -> Int -> FunPtr ReadFunctionPrim -> IO CInt+++foreign import ccall "wrapper"+   mkWriter :: WriteFunction -> IO (FunPtr WriteFunction)++foreign import ccall "wrapper"+   mkReader :: ReadFunctionPrim -> IO (FunPtr ReadFunctionPrim)++foreign import ccall "wrapper"+   mkProgress :: ProgressFunction -> IO (FunPtr ProgressFunction)++foreign import ccall "wrapper"+   mkDebugFun :: DebugFunctionPrim -> IO (FunPtr DebugFunctionPrim)++foreign import ccall "wrapper"+   mkSslCtxtFun :: SSLCtxtFunction -> IO (FunPtr SSLCtxtFunction)++
+ Network/Curl/Info.hs view
@@ -0,0 +1,196 @@+{-# OPTIONS -fffi -fvia-C -#include "curl/curl.h" #-}+--------------------------------------------------------------------+-- |+-- Module    : Network.Curl.Info+-- Copyright : (c) Galois Inc 2007+-- License   : BSD3+--+-- Author: Sigbjorn Finne+-- Maintainer: emertens@galois.com+-- Stability : provisional+-- Portability: portable+--+-- Accessing the properties of a curl handle's current state\/request.+--+--------------------------------------------------------------------+module Network.Curl.Info +         ( Info(..)+         , InfoValue(..)+         , getInfo        -- :: Curl -> Info -> IO InfoValue+         ) where++import Network.Curl.Types+import Network.Curl.Code++import Control.Monad+import Foreign.Ptr+import Foreign.Marshal.Alloc+import Foreign.Storable+import Foreign.C+++data Info+ = EffectiveUrl+ | ResponseCode+ | TotalTime+ | NameLookupTime+ | ConnectTime+ | PreTransferTime+ | SizeUpload+ | SizeDownload+ | SpeedDownload+ | SpeedUpload+ | HeaderSize+ | RequestSize+ | SslVerifyResult+ | Filetime+ | ContentLengthDownload+ | ContentLengthUpload+ | StartTransferTime+ | ContentType+ | RedirectTime+ | RedirectCount+ | Private+ | HttpConnectCode+ | HttpAuthAvail+ | ProxyAuthAvail+ | OSErrno+ | NumConnects+ | SslEngines+ | CookieList+ | LastSocket+ | FtpEntryPath+   deriving (Show,Enum,Bounded)++data InfoValue+ = IString String+ | ILong   Long+ | IDouble Double+ | IList   [String]++instance Show InfoValue where+   show k = +     case k of+       IString s -> s+       ILong l   -> show l+       IDouble d -> show d+       IList ss  -> show ss++stringTag :: Long+stringTag = 0x100000  -- CURLINFO_STRING++longTag :: Long+longTag = 0x200000  -- CURLINFO_LONG++doubleTag :: Long+doubleTag = 0x300000  -- CURLINFO_DOUBLE++slistTag :: Long+slistTag = 0x400000  -- CURLINFO_SLIST++{- unused, unexported+infoMask :: Long+infoMask = 0x0fffff  -- CURLINFO_MASK++infoTypeMask :: Long+infoTypeMask = 0xf00000  -- CURLINFO_TYPEMASK+-}++getInfo :: Curl -> Info -> IO InfoValue+getInfo h i = do+ case i of+   EffectiveUrl -> getInfoStr h (show i) 1+   ResponseCode -> getInfoLong h (show i) 2+   TotalTime    -> getInfoDouble h (show i) 3+   NameLookupTime -> getInfoDouble h (show i) 4+   ConnectTime -> getInfoDouble h (show i) 5+   PreTransferTime -> getInfoDouble h (show i) 6+   SizeUpload -> getInfoDouble h (show i) 7+   SizeDownload -> getInfoDouble h (show i) 8+   SpeedDownload -> getInfoDouble h (show i) 9+   SpeedUpload -> getInfoDouble h (show i) 10+   HeaderSize -> getInfoLong h (show i) 11+   RequestSize -> getInfoLong h (show i) 12+   SslVerifyResult -> getInfoLong h (show i) 13+   Filetime -> getInfoLong h (show i) 14+   ContentLengthDownload -> getInfoDouble h (show i) 15+   ContentLengthUpload   -> getInfoDouble h (show i) 16+   StartTransferTime -> getInfoDouble h (show i) 17+   ContentType -> getInfoStr h (show i) 18+   RedirectTime -> getInfoDouble h (show i) 19+   RedirectCount -> getInfoLong h (show i) 20+   Private -> getInfoStr h (show i) 21+   HttpConnectCode -> getInfoLong h (show i) 22+   HttpAuthAvail -> getInfoLong h (show i) 23+   ProxyAuthAvail -> getInfoLong h (show i) 24+   OSErrno -> getInfoLong h (show i) 25+   NumConnects -> getInfoLong h (show i) 26+   SslEngines -> getInfoSList h (show i) 27+   CookieList -> getInfoSList h (show i) 28+   LastSocket -> getInfoLong h (show i) 29+   FtpEntryPath -> getInfoStr h (show i) 30++getInfoStr :: Curl -> String -> Long -> IO InfoValue+getInfoStr h loc tg =+     alloca $ \ ps -> do+        rc <- curlPrim h $ \_ p -> easy_getinfo_str p (stringTag + tg) ps+        case rc of+          0 -> do+             s <- peek ps+             if s == nullPtr+              then return (IString "")+              else liftM IString $ peekCString s+          _ -> fail ("getInfo{"++loc ++ "}: " ++ show (toCode rc))++getInfoLong :: Curl -> String -> Long -> IO InfoValue+getInfoLong h loc tg =+     alloca $ \ pl -> do+        rc <- curlPrim h $ \_ p -> easy_getinfo_long p (longTag + tg) pl+        case rc of+          0 -> do+             l <- peek pl+             return (ILong l)+          _ -> fail ("getInfo{"++loc ++ "}: " ++ show (toCode rc))++getInfoDouble :: Curl -> String -> Long -> IO InfoValue+getInfoDouble h loc tg =+     alloca $ \ pd -> do+        rc <- curlPrim h $ \_ p -> easy_getinfo_double p (doubleTag + tg) pd+        case rc of+          0 -> do+             d <- peek pd+             return (IDouble d)+          _ -> fail ("getInfo{"++loc ++ "}: " ++ show (toCode rc))++getInfoSList :: Curl -> String -> Long -> IO InfoValue+getInfoSList h loc tg =+     alloca $ \ ps -> do+        rc <- curlPrim h $ \_ p -> easy_getinfo_slist p (slistTag + tg) ps+        case rc of+          0 -> do+             p <- peek ps+             ls <- unmarshallList p+             return (IList ls)+          _ -> fail ("getInfo{"++loc ++ "}: " ++ show (toCode rc))+ where+   unmarshallList ptr +     | ptr == nullPtr = return []+     | otherwise = do+         ps <- peekByteOff ptr 0+         s  <- if ps == nullPtr then return "" else peekCString ps+         nx <- peekByteOff ptr (sizeOf nullPtr)+         ls <- unmarshallList nx+         return (s:ls)++-- FFI decls+foreign import ccall+  "curl_easy_getinfo" easy_getinfo_long :: CurlH -> Long -> Ptr Long -> IO CInt++foreign import ccall+  "curl_easy_getinfo" easy_getinfo_str  :: CurlH -> Long -> Ptr CString -> IO CInt++foreign import ccall+  "curl_easy_getinfo" easy_getinfo_double :: CurlH -> Long -> Ptr Double -> IO CInt++foreign import ccall+  "curl_easy_getinfo" easy_getinfo_slist :: CurlH -> Long -> Ptr (Ptr (Ptr CChar)) -> IO CInt
+ Network/Curl/Opts.hs view
@@ -0,0 +1,514 @@+--------------------------------------------------------------------+-- |+-- Module    : Network.Curl.Opts+-- Copyright : (c) Galois Inc 2007+-- License   :+--+-- Author: Sigjorn Finne, Iavor S. Diatchki+-- Maintainer: emertens@galois.com+-- Stability : provisional+-- Portability: portable+--+-- This module contains the various options that specify what happens+-- when we use @perform@ on a @Curl@ handle.+--------------------------------------------------------------------+module Network.Curl.Opts where++import Network.Curl.Types+import Network.Curl.Post+import Data.List++import Foreign.Ptr+import Foreign.C.Types+import Data.Bits++data CurlOption+ = CurlFileObj (Ptr ())  -- ^ external pointer to pass to as 'WriteFunction's last argument.+ | CurlURL  URLString    -- ^ the URL to use for next request; can be the full URL or just the authority\/hostname.+ | CurlPort  Long        -- ^ what port to use.+ | CurlProxy String      -- ^ name of proxy+ | CurlUserPwd String    -- ^ the "user:pass" string to use+ | CurlProxyUserPwd String -- ^ same thing, but for the proxy.+ | CurlRange String      -- ^ byte range to fetch+ | CurlInFile FilePath   -- ^ external pointer to pass to as 'WriteFunction's last argument.+ | CurlErrorBuffer (Ptr CChar) -- ^ buffer for curl to deposit error messages (must at least CURL_ERROR_SIZE bytes long). Uses standard error if not specified.+ | CurlWriteFunction WriteFunction -- ^ callback to handle incoming data.+ | CurlReadFunction  ReadFunction  -- ^ callback for supplying outgoing\/uploaded data.+ | CurlTimeout Long{-secs-}        -- ^ number of seconds before timing out curl operation\/request.+ | CurlInFileSize Long{-bytes-}    -- ^ expected size of uploaded data.+ | CurlPostFields [String]         -- ^ (Multipart) POST data.+ | CurlReferer String              -- ^ Set the Referer: header to the given string.+ | CurlFtpPort String              -- ^ The string to feed to the FTP PORT command.+ | CurlUserAgent String            -- ^ Set the User-Agent: header to the given string.+ | CurlLowSpeed  Long              -- ^ If the bytes per sec drops below the given value, the operation is aborted.+ | CurlLowSpeedTime Long           -- ^ Upper bound for request to complete.+ | CurlResumeFrom Long             -- ^ Byte offset at which the transfer (HTTP or FTP) should start from.+ | CurlCookie String               -- ^ Set the Cookie: header to the given cookie (name=value pairs, semicolon-separated) string.+ | CurlHttpHeaders [String]        -- ^ Embellish the outgoing request with the given list of (formatted) header values.+ | CurlHttpPost  [HttpPost]        -- ^ (Multipart) POST data.+ | CurlSSLCert FilePath            -- ^ file holding your private SSL certificates (default format is PEM).+ | CurlSSLPassword String          -- ^ password to the above file.+ | CurlSSLKeyPassword String       -- ^ an alias for the previous.+ | CurlCRLF Bool                   -- ^ If true, convert Unix newlines into CRLFs when transferring.+ | CurlQuote [String]              -- ^ Sequence of FTP commands to execute prior to the main request.+ | CurlWriteHeader (Ptr ())        -- ^ State \/ pointer argument to pass to WriteFunction callback.+ | CurlCookieFile FilePath         -- ^ Path to file holding initial cookie data; also enables cookie handling.+ | CurlSSLVersion Long             -- ^ What protocol to attempt using (0:default;1:TLS;2:SSLv2;3:SSLv3)+ | CurlTimeCondition TimeCond      -- ^ How to interpret a conditional time value.+ | CurlTimeValue Long              -- ^ Number of secs since Jan 1, 1970. Interpretation is determined by CurlTimeCondition.+ | CurlCustomRequest String        -- ^ String holding alternative request command (WebDAV anyone?)+ {- | CurlStderr String {- XXX: should be FILE* ? -}               -- ^ File object to use for outputting debug info to. -}+ | CurlPostQuote [String]          -- ^ List of commands to issue to FTP server after the main request.+ | CurlWriteInfo String            -- ^ Not sure what this one does; something about passing it to the output function.+ | CurlVerbose Bool                -- ^ Control verbosity+ | CurlHeader Bool                 -- ^ Display outgoing and incoming headers + | CurlNoProgress Bool             -- ^ Control progress meter+ | CurlNoBody Bool                 -- ^ Use HEAD instead of GET+ | CurlFailOnError Bool            -- ^ If status response is >= 300, return an error (and no other output).+ | CurlUpload Bool                 -- ^ Control the main dataflow, i.e., True to perform uploads.+ | CurlPost Bool                   -- ^ Issue a POST request.+ | CurlFtpListOnly Bool            -- ^ Switch NLST for FTP directory listings+ | CurlFtpAppend Bool              -- ^ Control if FTP uploads append rather than overwrite files + | CurlUseNetRc NetRcOption        -- ^ control how or if a user's.netrc will be consulted for user:password+ | CurlFollowLocation Bool         -- ^ Handle auto-redirects by chasing down Location: values in responses.+ | CurlTransferTextASCII Bool      -- ^ Turn on ASCII transfers for FTP transfers; default is binary (i.e. off).+ | CurlPut Bool                    -- ^ Use PUT to upload data.+ | CurlProgressFunction ProgressFunction  -- ^ callback for showing progress+ | CurlProgressData (Ptr ())       -- ^ state argumentto pass to progress callback.+ | CurlAutoReferer Bool            -- ^ Control if the Referer: field is set upon following Location: redirects+ | CurlProxyPort Long              -- ^ (Numeric) proxy port to use.+ | CurlPostFieldSize Long          -- ^ Size of the POSTed data.+ | CurlHttpProxyTunnel Bool        -- ^ tunnel all HTTP operations through the proxy.+ | CurlInterface String            -- ^ Interface name of outgoing network interface ( network interface, IP address, host name.)+ | CurlKrb4Level String            -- ^ Kerberos security level ("clear", "safe", "confidential", "private" are good values, seemingly.)+ | CurlSSLVerifyPeer Bool          -- ^ Enable the authentication of peer certificate. Default is True.+ | CurlCAInfo FilePath             -- ^ If verifying peer's certificate, use certificates in this file to do so.+ | CurlMaxRedirs Long              -- ^ Maximum number of Location: redirects to chase down before giving up.+ | CurlFiletime Bool               -- ^ Try to determine the modification date of remote document; can be queried for.+ | CurlTelnetOptions [String]      -- ^ List of commands to use for initial telnet negotiations.+ | CurlMaxConnects Long            -- ^ Maximum number of cached active connections.+ | CurlClosePolicy Long            -- ^ No effect (obsolete.)+ | CurlFreshConnect Bool           -- ^ Force the opening up a new connection rather than try to reuse active connections. Default is not to.+ | CurlForbidReuse Bool            -- ^ Do not reuse the connection of next transfer when done.+ | CurlRandomFile FilePath         -- ^ Path to file used to seed (Open)SSL PRNG.+ | CurlEgdSocket FilePath          -- ^ Path to domain socket of EG Daemon.+ | CurlConnectTimeout Long         -- ^ max number of seconds to wait for the initial connection to happen.+ | CurlHeaderFunction WriteFunction -- ^ callback used to handle _incoming_ header data.+ | CurlHttpGet Bool                -- ^ Revert to a GET for the next request.+ | CurlSSLVerifyHost Long          -- ^ Perform Common name checking in peer certificate (1=> existence;2=> matches hostname.)+ | CurlCookieJar FilePath          -- ^ Path to file where additional cookie information will be stored.+ | CurlSSLCipherList String        -- ^ Colon-separated string list of cipher preferences to use for upcoming connection (e.g., "3DES:+RSA")+ | CurlHttpVersion HttpVersion     -- ^ What HTTP version to use, should you want to drop back for some reason.+ | CurlFtpUseEPSV Bool             -- ^ Attempt the use of EPSV before PASV for passive FTP downloads.+ | CurlSSLCertType String          -- ^ The format of your certificates ("PEM", "DER")+ | CurlSSLKey FilePath             -- ^ Filename of private key.+ | CurlSSLKeyType String           -- ^ Format of private key; use "ENG" to load from a crypto engine.+ | CurlSSLEngine String            -- ^ Name of crypto engine to use.+ | CurlSSLEngineDefault            -- ^ Make crypto engine the default for crypto operations.+ | CurlDNSUseGlobalCache Bool      -- ^ Have library uses its MT-unfriendly DNS global cache.+ | CurlDNSCacheTimeout Long        -- ^ Number of seconds to cache results of DNS lookups in memory.+ | CurlPreQuote [String]           -- ^ FTP commands to issue after connection and transfer mode has been set.+ | CurlDebugFunction DebugFunction -- ^ callback to catch and report transfer operations.+ | CurlDebugData (Ptr ())          -- ^ state argument to pass to debug callback.+ | CurlCookieSession Bool          -- ^ Signal the start of a cookie session, ignoring previous session cookies.+ | CurlCAPath FilePath             -- ^ Directory holding CA certificates; used when verifying peer certificate.+ | CurlBufferSize Long             -- ^ Turn (down, presumably) the buffers the received data is chunked up into (and reported to the WriteFunction.) A hint, library is free to ignore.+ | CurlNoSignal Bool               -- ^ Turn off use of signals internally.+ | CurlShare (Ptr ())              -- ^ Share handles are used for sharing data among concurrent Curl objects.+ | CurlProxyType Long              -- ^ What type of proxy to use.+ | CurlEncoding String             -- ^ What to report in the Accept-Encoding: header+ | CurlPrivate (Ptr ())            -- ^ Data associated with a Curl handle.+ | CurlHttp200Aliases String       -- ^ Alternatives to standard 200 OK response strings; whatever it takes, I suppose.+ | CurlUnrestrictedAuth Bool       -- ^ Pass on user:pass when following redirects.+ | CurlFtppUseEPRT Bool            -- ^ For active FTP downloads, try using EPRT command over LPRT.+ | CurlHttpAuth [HttpAuth]         -- ^ State your authentication preferences.+ | CurlSSLCtxFunction SSLCtxtFunction -- ^ callback to handle setting up SSL connections; have the power to abort them.+ | CurlSSLCtxData (Ptr ())         -- ^ state argument to pass into the above callback.+ | CurlFtpCreateMissingDirs Bool   -- ^ Have remote directories be created if not already there+ | CurlProxyAuth [HttpAuth]        -- ^ What preferred authentication schemes to use wrt. proxy.+ | CurlFtpResponseTimeout Long     -- ^ max number of seconds to wait for remote server to ACK commands.+ | CurlIPResolve Long              -- ^ Whether to resolve wrt IPv4 or IPv6.+ | CurlMaxFileSize Long            -- ^ Limit the number of bytes you're willing to download.+ | CurlInFileSizeLarge LLong       -- ^ Wider alternative of option giving upper bound of uploaded content (-1 => unknown.)+ | CurlResumeFromLarge LLong       -- ^ Wider alternative for specifying initial transfer offset.+ | CurlMaxFileSizeLarge LLong      -- ^ Wider alternative for specifying max download size.+ | CurlNetrcFile FilePath          -- ^ Path to user\'s .netrc+ | CurlFtpSSL Long                 -- ^ Try enabling the use of SSL for FTP control connections and\/or transfers.+ | CurlPostFieldSizeLarge LLong    -- ^ Size of data to POST; if unspecified (or -1), curl uses strlen().+ | CurlTCPNoDelay Bool             -- ^ Turn on or off the TCP\/IP NODELAY option.+ | CurlFtpSSLAuth Long             -- ^ Twiddle if TLS or SSL is used.+ | CurlIOCTLFunction (Ptr ())      -- ^ somewhat obscure callback for handling read stream resets.+ | CurlIOCTLData (Ptr ())          -- ^ state argument to the above.+ | CurlFtpAccount String           -- ^ The string to use when server asks for account info.+ | CurlCookieList String           -- ^ Cookie string to pass cookie engine; "ALL" scrubs all cookie info; "SESS" scrubs session ones.+ | CurlIgnoreContentLength Bool    -- ^ If Content-Length: values are troublesome (wrong, perhaps?), use this option to ignore using them as guidance.+ | CurlFtpSkipPASVIP Bool          -- ^ Ignore IP address in 227 responses.+ | CurlFtpFileMethod Long          -- ^ How to navigate to a file on the remote server (single, multiple CWDs).+ | CurlLocalPort Port              -- ^ What local port to use for established connection.+ | CurlLocalPortRange Port         -- ^ Number of attempts at finding local ports (using LocalPort as initial base.)+ | CurlConnectOnly Bool            -- ^ If enabled, perform all steps up until actual transfer.+     -- next three for completeness.+ | CurlConvFromNetworkFunction (Ptr ()) -- ^ callback for doing character translations from network format.+ | CurlConvToNetworkFunction (Ptr ())   -- ^ callback for doing character translations to network format.+ | CurlConvFromUtf8Function (Ptr ())    -- ^ callback for translating UTF8 into host encoding.+ | CurlMaxSendSpeedLarge LLong          -- ^ Specifies throttle value for outgoing data.+ | CurlMaxRecvSpeedLarge LLong          -- ^ Specifies throttle for incoming data.+ | CurlFtpAlternativeToUser String      -- ^ Alternative (to user:pass) for FTP authentication; weird.+ | CurlSockOptFunction (Ptr ())         -- ^ callback that's injected between socket creation and connection.+ | CurlSockOptData (Ptr ())             -- ^ state argument to the above.+ | CurlSSLSessionIdCache Bool           -- ^ Enable the SSL session id cache; default is on, so use this to disable.+ | CurlSSHAuthTypes [SSHAuthType]       -- ^ SSH authentication methods to use.+ | CurlSSHPublicKeyFile FilePath        -- ^ Path to file holding user's SSH public key.+ | CurlSSHPrivateKeyFile FilePath       -- ^ Path to file holding user's SSH private key.+ | CurlFtpSSLCCC Bool                   -- ^ Send CCC command after FTP connection has been authenticated.+ | CurlTimeoutMS Long                   -- ^ Max number of milliseconds that a transfer may take.+ | CurlConnectTimeoutMS Long            -- ^ Max number of milliseconds that a connection attempt may take to complete.+ | CurlHttpTransferDecoding Bool        -- ^ Disable transfer decoding; if disabled, curl will turn off chunking.+ | CurlHttpContentDecoding  Bool        -- ^ Disable content decoding, getting the raw bits.++data HttpVersion+ = HttpVersionNone+ | HttpVersion10+ | HttpVersion11+   deriving ( Enum )++data TimeCond+ = TimeCondNone+ | TimeCondIfModSince+ | TimeCondIfUnmodSince+ | TimeCondLastMode+   deriving ( Enum )+ +data NetRcOption+ = NetRcIgnored+ | NetRcOptional+ | NetRcRequired+   deriving ( Enum )++data HttpAuth+ = HttpAuthNone+ | HttpAuthBasic+ | HttpAuthDigest+ | HttpAuthGSSNegotiate+ | HttpAuthNTLM+ | HttpAuthAny+ | HttpAuthAnySafe++toHttpAuthMask :: [HttpAuth] -> Long+toHttpAuthMask [] = 0+toHttpAuthMask (x:xs) = +  let vs = toHttpAuthMask xs in+  case x of +    HttpAuthNone  -> vs+    HttpAuthBasic -> 0x1 .|. vs+    HttpAuthDigest -> 0x2 .|. vs+    HttpAuthGSSNegotiate -> 0x4 .|. vs+    HttpAuthNTLM -> 0x8 .|. vs+    HttpAuthAny -> (complement 0) .|. vs+    HttpAuthAnySafe -> (complement 1) .|. vs+++data SSHAuthType+ = SSHAuthAny+ | SSHAuthNone+ | SSHAuthPublickey+ | SSHAuthPassword+ | SSHAuthHost+ | SSHAuthKeyboard+++toSSHAuthMask :: [SSHAuthType] -> Long+toSSHAuthMask [] = 0+toSSHAuthMask (x:xs) = +  let vs = toSSHAuthMask xs in +  case x of+    SSHAuthAny -> (complement 0) .|. vs+    SSHAuthNone -> vs+    SSHAuthPublickey -> 1 .|. vs+    SSHAuthPassword -> 2 .|. vs+    SSHAuthHost -> 4 .|. vs+    SSHAuthKeyboard -> 8 .|. vs+++type WriteFunction+  = Ptr CChar  -- ^ pointer to external buffer holding data+ -> CInt       -- ^ width (in bytes) of each item+ -> CInt       -- ^ number of items+ -> Ptr ()     -- ^ state argument (file pointer etc.)+ -> IO CInt    -- ^ number of bytes written.++type ReadFunction+  = Ptr CChar  -- ^ pointer to external buffer to fill in.+ -> CInt       -- ^ width (in bytes) of each item+ -> CInt       -- ^ number of items+ -> Ptr ()     -- ^ state argument (file pointer etc.)+ -> IO (Maybe CInt) -- ^ how many bytes was copied into buffer; Nothing => abort.+ +type ReadFunctionPrim+  = Ptr CChar+ -> CInt+ -> CInt+ -> Ptr ()+ -> IO CInt+ ++type ProgressFunction+  = Ptr ()  -- ^ state argument+ -> Double  -- ^ expected download totals+ -> Double  -- ^ download totals so far+ -> Double  -- ^ expected upload totals+ -> Double  -- ^ upload totals so far+ -> IO CInt -- ^ not sure; 0 is a good one.++type DebugFunction+  = Curl       -- ^ connection handle+ -> DebugInfo  -- ^ type of call+ -> Ptr CChar  -- ^ data buffer+ -> CInt       -- ^ length of buffer+ -> Ptr ()     -- ^ state argument+ -> IO ()      -- ^ always 0++data DebugInfo+ = InfoText+ | InfoHeaderIn+ | InfoHeaderOut+ | InfoDataIn+ | InfoDataOut+ | InfoSslDataIn+ | InfoSslDataOut+   deriving ( Eq, Enum )++type DebugFunctionPrim+  = CurlH      -- ^ connection handle+ -> CInt       -- ^ type of call+ -> Ptr CChar  -- ^ data buffer+ -> CInt       -- ^ length of buffer+ -> Ptr ()     -- ^ state argument+ -> IO CInt    -- ^ always 0++++type SSLCtxtFunction+  = CurlH   -- ^ connection handle+ -> Ptr ()  -- ^ the SSL_CTX handle+ -> Ptr ()  -- ^ state argument+ -> IO CInt++curl_readfunc_abort :: CInt+curl_readfunc_abort = 0x10000000++baseLong :: Int+baseLong = 0++baseObject :: Int+baseObject = 10000++baseFunction :: Int+baseFunction = 20000++baseOffT :: Int+baseOffT = 30000++unmarshallOption :: Unmarshaller a -> CurlOption -> IO a+unmarshallOption um c =+ let +  l   = (baseLong+)+  o   = (baseObject+)+  f   = (baseFunction+)+  off = (baseOffT+)+ in+ case c of+  CurlFileObj x -> u_ptr um (o 1) x+  CurlURL x   -> u_string um (o 2) x+  CurlPort x  -> u_long   um (l 3) x+  CurlProxy x -> u_string um (o 4) x+  CurlUserPwd x -> u_string um (o 5) x+  CurlProxyUserPwd x -> u_string um (o 6) x+  CurlRange x   -> u_string um (o 7) x+  CurlInFile x  -> u_string um (o 9) x+  CurlErrorBuffer x   -> u_cptr um (o 10) x+  CurlWriteFunction x -> u_writeFun um (f 11) x+  CurlReadFunction x  -> u_readFun  um (f 12) x+  CurlTimeout x ->  u_long um (l 13) x+  CurlInFileSize x -> u_long um (l 14) x+  CurlPostFields x -> u_string um (o 15) (concat $ intersperse "&" x)+  CurlReferer x ->  u_string um (o 16) x+  CurlFtpPort x ->  u_string um (o 17) x+  CurlUserAgent x -> u_string um (o 18) x+  CurlLowSpeed x -> u_long um (l 19) x+  CurlLowSpeedTime x -> u_long um (l 20) x+  CurlResumeFrom x -> u_long um (l 21) x+  CurlCookie x -> u_string um (o 22) x+  CurlHttpHeaders x -> u_strings um (o 23) x+  CurlHttpPost x -> u_posts um (o 24) x+  CurlSSLCert x -> u_string um (o 25) x+  CurlSSLPassword x -> u_string um (o 26) x+  CurlSSLKeyPassword x -> u_string um (o 26) x -- yes, duplicate.+  CurlCRLF x -> u_bool um (l 27) x+  CurlQuote x -> u_strings um (o 28) x+  CurlWriteHeader x -> u_ptr um (o 29) x+  CurlCookieFile x -> u_string um (o 31) x+  CurlSSLVersion x -> u_long um (l 32) x+  CurlTimeCondition x -> u_enum um (l 33) x+  CurlTimeValue x -> u_long um (l 34) x+  CurlCustomRequest x -> u_string um (o 36) x+  -- CurlStderr x -> u_string um (o 37) x+  CurlPostQuote x -> u_strings um (o 39) x+  CurlWriteInfo x -> u_string um (o 40) x+  CurlVerbose x -> u_bool um (l 41) x+  CurlHeader x -> u_bool um (l 42) x+  CurlNoProgress x -> u_bool um (l 43) x+  CurlNoBody x -> u_bool um (l 44) x+  CurlFailOnError x -> u_bool um (l 45) x+  CurlUpload x -> u_bool um (l 46) x+  CurlPost x -> u_bool um (l 47) x+  CurlFtpListOnly x -> u_bool um (l 48) x+  CurlFtpAppend x -> u_bool um (l 50) x+  CurlUseNetRc x -> u_enum um (l 51) x+  CurlFollowLocation x -> u_bool um (l 52) x+  CurlTransferTextASCII x -> u_bool um (l 53) x+  CurlPut x -> u_bool um (l 54) x+  CurlProgressFunction x -> u_progressFun um (f 56) x+  CurlProgressData x -> u_ptr um (o 57) x+  CurlAutoReferer x -> u_bool um (l 58) x+  CurlProxyPort x -> u_long um (l 59) x+  CurlPostFieldSize x -> u_long um (l 60) x+  CurlHttpProxyTunnel x -> u_bool um (l 61) x+  CurlInterface x -> u_string um (o 62) x+  CurlKrb4Level x -> u_string um (o 63) x+  CurlSSLVerifyPeer x -> u_bool um (l 64) x+  CurlCAInfo x -> u_string um (o 65) x+  CurlMaxRedirs x -> u_long um (l 68) x+  CurlFiletime x -> u_bool um (l 69) x+  CurlTelnetOptions x -> u_strings um (o 70) x+  CurlMaxConnects x -> u_long um (l 71) x+  CurlClosePolicy x -> u_long um (l 72) x+  CurlFreshConnect x -> u_bool um (l 74) x+  CurlForbidReuse x -> u_bool um (l 75) x+  CurlRandomFile x -> u_string um (o 76) x+  CurlEgdSocket x -> u_string um (o 77) x+  CurlConnectTimeout x -> u_long um (l 78) x+  CurlHeaderFunction x -> u_writeFun um (f 79) x+  CurlHttpGet x        -> u_bool um (l 80) x+  CurlSSLVerifyHost x  -> u_long um (l 81) x+  CurlCookieJar x -> u_string um (o 82) x+  CurlSSLCipherList x -> u_string um (o 83) x -- a string (or a l-list of them)?+  CurlHttpVersion x -> u_enum um (l 84) x+  CurlFtpUseEPSV x -> u_bool um (l 85) x+  CurlSSLCertType x -> u_string um (o 86) x+  CurlSSLKey x -> u_string um (o 87) x+  CurlSSLKeyType x -> u_string um (o 88) x+  CurlSSLEngine x -> u_string um (o 89) x+  CurlSSLEngineDefault -> u_bool um (l 90) True+  CurlDNSUseGlobalCache x -> u_bool um (l 91) x+  CurlDNSCacheTimeout x -> u_long um (l 92) x+  CurlPreQuote x -> u_strings um (o 93) x+  CurlDebugFunction x -> u_debugFun um (f 94) x+  CurlDebugData x -> u_ptr um (o 95) x+  CurlCookieSession x -> u_bool um (l 96) x+  CurlCAPath x -> u_string um (o 97) x+  CurlBufferSize x -> u_long um (l 98) x+  CurlNoSignal x -> u_bool um (l 99) x+  CurlShare x -> u_ptr um (o 100) x+  CurlProxyType x -> u_enum um (l 101) x+  CurlEncoding x -> u_string um (o 102) x+  CurlPrivate x -> u_ptr um (o 103) x+  CurlHttp200Aliases x -> u_string um (o 104) x -- correct?+  CurlUnrestrictedAuth x -> u_bool um (l 105) x+  CurlFtppUseEPRT x -> u_bool um (l 106) x+  CurlHttpAuth xs -> u_long um (l 107) (toHttpAuthMask xs)+  CurlSSLCtxFunction x -> u_sslctxt um (f 108) x+  CurlSSLCtxData x -> u_ptr um (o 109) x+  CurlFtpCreateMissingDirs x -> u_bool um (l 110) x+  CurlProxyAuth x -> u_long um (l 111) (toHttpAuthMask x)+  CurlFtpResponseTimeout x -> u_long um (l 112) x+  CurlIPResolve x -> u_long um (l 113) x+  CurlMaxFileSize x -> u_long um (l 114) x+  CurlInFileSizeLarge x -> u_llong um (off 115) x+  CurlResumeFromLarge x -> u_llong um (off 116) x+  CurlMaxFileSizeLarge x -> u_llong um (off 117) x+  CurlNetrcFile x -> u_string um (o 118) x+  CurlFtpSSL x -> u_enum um (l 119) x+  CurlPostFieldSizeLarge x -> u_llong um (off 120) x+  CurlTCPNoDelay x -> u_bool um (l 121) x+  CurlFtpSSLAuth x -> u_enum um (l 129) x+  CurlIOCTLFunction x -> u_ioctl_fun um (f 130) x+  CurlIOCTLData x -> u_ptr um (o 131) x+  CurlFtpAccount x -> u_string um (o 134) x+  CurlCookieList x -> u_string um (o 135) x+  CurlIgnoreContentLength x -> u_bool um (l 136) x+  CurlFtpSkipPASVIP x -> u_bool um (l 137) x+  CurlFtpFileMethod x -> u_enum um (l 138) x+  CurlLocalPort x -> u_long um (l 139) x+  CurlLocalPortRange x -> u_long um (l 140) x+  CurlConnectOnly x -> u_bool um (l 141) x+  CurlConvFromNetworkFunction x -> u_convFromNetwork um (f 142) x+  CurlConvToNetworkFunction x -> u_convToNetwork um (f 143) x+  CurlConvFromUtf8Function x -> u_convFromUtf8 um (f 144) x+  CurlMaxSendSpeedLarge x -> u_llong um (off 145) x+  CurlMaxRecvSpeedLarge x -> u_llong um (off 146) x+  CurlFtpAlternativeToUser x -> u_string um (o 147) x+  CurlSockOptFunction x -> u_sockoptFun um (f 148) x+  CurlSockOptData x -> u_ptr um (o 149) x+  CurlSSLSessionIdCache x -> u_bool um (l 150) x+  CurlSSHAuthTypes xs -> u_long um (l 151) (toSSHAuthMask xs)+  CurlSSHPublicKeyFile x -> u_string um (o 152) x+  CurlSSHPrivateKeyFile x -> u_string um (o 153) x+  CurlFtpSSLCCC x -> u_bool um (l 154) x+  CurlTimeoutMS x -> u_long um (l 155) x+  CurlConnectTimeoutMS x -> u_long um (l 156) x+  CurlHttpTransferDecoding x -> u_bool um (l 157) x+  CurlHttpContentDecoding x ->  u_bool um (l 158) x++data Unmarshaller a+ = Unmarshaller+     { u_long    :: Int -> Long     -> IO a+     , u_llong   :: Int -> LLong    -> IO a+     , u_string  :: Int -> String   -> IO a+     , u_strings :: Int -> [String] -> IO a+     , u_ptr     :: Int -> Ptr ()   -> IO a+     , u_writeFun :: Int -> WriteFunction -> IO a+     , u_readFun :: Int -> ReadFunction -> IO a+     , u_progressFun :: Int -> ProgressFunction -> IO a+     , u_debugFun :: Int -> DebugFunction -> IO a+     , u_posts    :: Int -> [HttpPost] -> IO a+     , u_sslctxt  :: Int -> SSLCtxtFunction -> IO a+     , u_ioctl_fun :: Int -> Ptr () -> IO a+     , u_convFromNetwork :: Int -> Ptr () -> IO a+     , u_convToNetwork :: Int -> Ptr () -> IO a+     , u_convFromUtf8 :: Int -> Ptr () -> IO a+     , u_sockoptFun  :: Int -> Ptr () -> IO a+     }++verboseUnmarshaller :: Unmarshaller a -> Unmarshaller a+verboseUnmarshaller u =+  let two m f x y = putStrLn m >> f u x y +      twoS m f x y = putStrLn (m ++ ": " ++ show (x,y)) >> f u x y +  in u +    { u_long        = twoS "u_long" u_long+    , u_llong       = twoS "u_llong" u_llong+    , u_string      = twoS "u_string" u_string +    , u_strings     = twoS "u_strings" u_strings+    , u_ptr         = twoS "u_ptr" u_ptr+    , u_writeFun    = two "u_writeFun" u_writeFun+    , u_readFun     = two "u_readFun" u_readFun+    , u_progressFun = two "u_progressFun" u_progressFun+    , u_debugFun    = two "u_debugFun" u_debugFun+    , u_posts       = two "u_posts" u_posts+    , u_sslctxt     = two "u_sslctxt" u_sslctxt+    , u_ioctl_fun        = two "u_ioctl_fun" u_ioctl_fun+    , u_convFromNetwork  = twoS "u_convFromNetwork" u_convFromNetwork+    , u_convToNetwork    = twoS "u_convToNetwork" u_convToNetwork+    , u_convFromUtf8     = twoS "u_convFromUtf8" u_convFromUtf8+    , u_sockoptFun       = twoS "u_sockoptFun" u_sockoptFun+    }+++u_bool :: Unmarshaller a -> Int -> Bool -> IO a+u_bool um x b = u_long um x (if b then 1 else 0)++u_enum :: Enum b => Unmarshaller a -> Int -> b -> IO a+u_enum um x b = u_long um x (fromIntegral $ fromEnum b)++u_cptr :: Unmarshaller a -> Int -> Ptr CChar -> IO a+u_cptr um x p = u_ptr um x (castPtr p)
+ Network/Curl/Post.hs view
@@ -0,0 +1,125 @@+{-# OPTIONS -fffi -fvia-C -#include "curl/curl.h" #-}+--------------------------------------------------------------------+-- |+-- Module    : Network.Curl.Post+-- Copyright : (c) Galois Inc 2007+-- License   : BSD3+--+-- Author: Sigbjorn Finne+-- Maintainer: emertens@galois.com+-- Stability : provisional+-- Portability: portable+--+-- Representing and marshalling formdata (as part of POST uploads\/submissions.)+-- If you are only looking to submit a sequence of name=value pairs,+-- you are better off using the CurlPostFields constructor; much simpler.+--+--------------------------------------------------------------------+module Network.Curl.Post where++import Network.Curl.Types++import Control.Monad+import Foreign.Ptr+import Foreign.Storable+import Foreign.Marshal.Alloc+import Foreign.C.Types+import Foreign.C.String++type Header = String++data HttpPost+ = HttpPost+     { postName     :: String+     , contentType  :: Maybe String+     , content      :: Content+     , extraHeaders :: [Header]+-- not yet:     , extraEntries :: [HttpPost]+     , showName     :: Maybe String+     }++data Content+ = ContentFile   FilePath+ | ContentBuffer (Ptr CChar) Long -- byte arrays also?+ | ContentString String++multiformString :: String -> String -> HttpPost+multiformString x y = +  HttpPost { postName      = x+           , content       = ContentString y+           , contentType   = Nothing+           , extraHeaders  = []+           , showName      = Nothing+           } ++-- lower-level marshalling code.++sizeof_httppost :: Int+sizeof_httppost = 12 * sizeOf (nullPtr :: Ptr CChar)++marshallPosts :: [HttpPost] -> IO (Ptr HttpPost)+marshallPosts [] = return nullPtr+marshallPosts ps = do+  ms <- mapM marshallPost ps+  case ms of+    [] -> return nullPtr+    (x:xs) -> do+      linkUp x xs+      return x+ where+  linkUp p [] = pokeByteOff p 0 nullPtr+  linkUp p (x:xs) = do+    pokeByteOff p 0 x+    linkUp x xs+  +marshallPost :: HttpPost -> IO (Ptr HttpPost)+marshallPost p = do+  php <- mallocBytes sizeof_httppost+  pokeByteOff php 0 nullPtr+  newCString (postName p) >>= pokeByteOff php (ptrIndex 1)+  pokeByteOff php (ptrIndex 2) (length (postName p))+  case content p of+    ContentFile f -> do+      newCString f >>= pokeByteOff php (ptrIndex 3)+      pokeByteOff php (ptrIndex 4) (length f)+      pokeByteOff php (ptrIndex 5) nullPtr+      pokeByteOff php (ptrIndex 6) nullPtr+      pokeByteOff php (ptrIndex 10) (0x1 :: Long)+    ContentBuffer ptr len -> do+      pokeByteOff php (ptrIndex 3) nullPtr+      pokeByteOff php (ptrIndex 4) nullPtr+      pokeByteOff php (ptrIndex 5) ptr +      pokeByteOff php (ptrIndex 6) len+      pokeByteOff php (ptrIndex 10) (0x10 :: Long)+    ContentString s -> do+      newCString s >>= pokeByteOff php (ptrIndex 3)+      pokeByteOff php (ptrIndex 4) (length s)+      pokeByteOff php (ptrIndex 5) nullPtr+      pokeByteOff php (ptrIndex 6) nullPtr+      pokeByteOff php (ptrIndex 10) (0x4 :: Long)+  +  cs1 <- case contentType p of+    Nothing -> return nullPtr+    Just s  -> newCString s+  pokeByteOff php (ptrIndex 7) cs1+  cs2 <- mapM newCString (extraHeaders p)+  ip <- foldM curl_slist_append nullPtr cs2+  pokeByteOff php (ptrIndex 8) ip+  pokeByteOff php (ptrIndex 9) nullPtr+  case showName p of+    Nothing -> pokeByteOff php (ptrIndex 11) nullPtr+    Just s  -> newCString s >>= pokeByteOff php (ptrIndex 11)+  return php+ where+  ptrIndex n = n * sizeOf nullPtr+++foreign import ccall+  "curl_slist_append" curl_slist_append :: Ptr Slist_ -> CString -> IO (Ptr Slist_)+foreign import ccall+  "curl_slist_free_all" curl_slist_free :: Ptr Slist_ -> IO ()++foreign import ccall+  "curl_formfree" curl_formfree :: Ptr a -> IO ()+  +
+ Network/Curl/Types.hs view
@@ -0,0 +1,154 @@+{-# OPTIONS -fffi -fglasgow-exts #-}+--------------------------------------------------------------------+-- |+-- Module    : Network.Curl.Types+-- Copyright : (c) Galois Inc 2007+-- License   : BSD3+--+-- Author: Sigbjorn Finne, Iavor S. Diatchki, Eric Mertens+-- Maintainer: emertens@galois.com+-- Stability : provisional+-- Portability: portable+--+-- Basic set of types for the Haskell curl binding, including the+-- @Curl@ handle type which holds the C library stateful connection+-- handle along with a set of cleanup actions tht should be performed+-- upon shutting down the curl session.+--+--------------------------------------------------------------------+module Network.Curl.Types+  ( CurlH, URLString, Port, Long, LLong, Slist_ +  , Curl, curlPrim, mkCurl, mkCurlWithCleanup+  , OptionMap, shareCleanup, runCleanup, updateCleanup+  ) where++import Network.Curl.Debug++import Foreign.Ptr+import Foreign.ForeignPtr+import Data.Word+import Control.Concurrent+import Control.Monad.Fix(mfix)+import Data.Maybe(fromMaybe)+import qualified Data.IntMap as M+import Data.IORef+import System.IO++data Curl_+type CurlH    = Ptr Curl_++type URLString = String+type Port = Long+type Long = Word32+type LLong = Word64+data Slist_+++data Curl = Curl +  { curlH       :: MVar (ForeignPtr Curl_)  -- libcurl is not thread-safe.+  , curlCleanup :: IORef OptionMap          -- deallocate Haskell curl data +  }  +++-- | Execute a "primitve" curl operation.+-- NOTE: See warnings about the use of 'withForeginPtr'.+curlPrim :: Curl -> (IORef OptionMap -> CurlH -> IO a) -> IO a+curlPrim c f  = withMVar (curlH c) $ \ h ->+                withForeignPtr h   $ f $ curlCleanup c+++-- | Allocates a Haskell handle from a C handle.+mkCurl :: CurlH -> IO Curl+mkCurl h = mkCurlWithCleanup h om_empty++-- | Allocates a Haskell handle from a C handle.+mkCurlWithCleanup :: CurlH -> OptionMap -> IO Curl+mkCurlWithCleanup h clean = do+  debug "ALLOC: CURL"+  fh  <- newForeignPtr_ h +  v1  <- newMVar fh+  v2  <- newIORef clean+  let new_h = Curl { curlH = v1, curlCleanup = v2 }+  +  fin <- mkIOfin $ do debug "FREE: CURL"+                      easy_cleanup h+                      runCleanup v2+  addForeignPtrFinalizer fin fh++  return new_h+++-- Admin code for cleaning up marshalled data.+-- Note that these functions assume that they are running atomically,+-- so access to them should be protected by a lock.+--------------------------------------------------------------------------------+runCleanup     :: IORef OptionMap -> IO ()+runCleanup r    = do m <- readIORef r+                     om_cleanup m+                     writeIORef r om_empty ++shareCleanup  :: IORef OptionMap -> IO OptionMap+shareCleanup r  = do old <- readIORef r+                     new <- om_dup old+                     writeIORef r new+                     return new++updateCleanup :: IORef OptionMap -> Int -> IO () -> IO ()+updateCleanup r option act = writeIORef r =<< om_set option act =<< readIORef r++++-- Maps that associate curl options with IO actions to+-- perform cleanup for them.+--------------------------------------------------------------------------------+type OptionMap = M.IntMap (IO ())++-- | An empty option map.+om_empty :: OptionMap+om_empty = M.empty++-- | Set the IO action for an option,+-- executing the previvous action, if there was one.+om_set :: Int -> IO () -> OptionMap -> IO OptionMap+om_set opt new_act old_map = +  do fromMaybe (return ()) old_act+     return new_map+  where+  (old_act,new_map) = M.insertLookupWithKey (\_ a _ -> a) opt new_act old_map++-- | Execute all IO actions in the map.+om_cleanup :: OptionMap -> IO ()+om_cleanup m = sequence_ (M.elems m)++-- | Replace the actions in a map, with actions that+-- will only be executed the second time they are invoked.+om_dup :: OptionMap -> IO OptionMap+om_dup old_map = M.fromList `fmap` mapM dup (M.assocs old_map)+  where dup (x,old_io)  = do new_io <- shareIO old_io+                             return (x,new_io)++-- Share a cleanup action.  When we share cleanup duty between two handles+-- we need to ensure that the first handle to perform the cleanup will do+-- nothing (because the other handle still needs the resources).+shareIO :: IO () -> IO (IO ())+shareIO act = +  do v <- newMVar False+     let new_act = do b <- takeMVar v+                      if b then act else putMVar v True+     return new_act+--------------------------------------------------------------------------------+++-- FFI for inalizers.++-- | Make a finalizer from an IO action.+mkIOfin :: IO a -> IO (FinalizerPtr b)+mkIOfin m = mfix (\ptr -> ioFinalizer (m >> freeHaskellFunPtr ptr))++foreign import ccall +  "curl/curl.h curl_easy_cleanup" easy_cleanup :: CurlH -> IO ()++foreign import ccall "wrapper"+  ioFinalizer :: IO () -> IO (FinalizerPtr a)++
+ Setup.hs view
@@ -0,0 +1,6 @@+module Main where++import Distribution.Simple++main :: IO ()+main = defaultMainWithHooks defaultUserHooks
+ configure view
@@ -0,0 +1,3390 @@+#! /bin/sh+# Guess values for system-dependent variables and create Makefiles.+# Generated by GNU Autoconf 2.59 for Haskell curl package 1.1.+#+# Report bugs to <dons@galois.com>.+#+# Copyright (C) 2003 Free Software Foundation, Inc.+# This configure script is free software; the Free Software Foundation+# gives unlimited permission to copy, distribute and modify it.+## --------------------- ##+## M4sh Initialization.  ##+## --------------------- ##++# Be Bourne compatible+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then+  emulate sh+  NULLCMD=:+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which+  # is contrary to our usage.  Disable this feature.+  alias -g '${1+"$@"}'='"$@"'+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then+  set -o posix+fi+DUALCASE=1; export DUALCASE # for MKS sh++# Support unset when possible.+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then+  as_unset=unset+else+  as_unset=false+fi+++# Work around bugs in pre-3.0 UWIN ksh.+$as_unset ENV MAIL MAILPATH+PS1='$ '+PS2='> '+PS4='+ '++# NLS nuisances.+for as_var in \+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \+  LC_TELEPHONE LC_TIME+do+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then+    eval $as_var=C; export $as_var+  else+    $as_unset $as_var+  fi+done++# Required to use basename.+if expr a : '\(a\)' >/dev/null 2>&1; then+  as_expr=expr+else+  as_expr=false+fi++if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then+  as_basename=basename+else+  as_basename=false+fi+++# Name of the executable.+as_me=`$as_basename "$0" ||+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \+	 X"$0" : 'X\(//\)$' \| \+	 X"$0" : 'X\(/\)$' \| \+	 .     : '\(.\)' 2>/dev/null ||+echo X/"$0" |+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }+  	  /^X\/\(\/\).*/{ s//\1/; q; }+  	  s/.*/./; q'`+++# PATH needs CR, and LINENO needs CR and PATH.+# Avoid depending upon Character Ranges.+as_cr_letters='abcdefghijklmnopqrstuvwxyz'+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'+as_cr_Letters=$as_cr_letters$as_cr_LETTERS+as_cr_digits='0123456789'+as_cr_alnum=$as_cr_Letters$as_cr_digits++# The user is always right.+if test "${PATH_SEPARATOR+set}" != set; then+  echo "#! /bin/sh" >conf$$.sh+  echo  "exit 0"   >>conf$$.sh+  chmod +x conf$$.sh+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then+    PATH_SEPARATOR=';'+  else+    PATH_SEPARATOR=:+  fi+  rm -f conf$$.sh+fi+++  as_lineno_1=$LINENO+  as_lineno_2=$LINENO+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`+  test "x$as_lineno_1" != "x$as_lineno_2" &&+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {+  # Find who we are.  Look in the path if we contain no path at all+  # relative or not.+  case $0 in+    *[\\/]* ) as_myself=$0 ;;+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  test -z "$as_dir" && as_dir=.+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break+done++       ;;+  esac+  # We did not find ourselves, most probably we were run as `sh COMMAND'+  # in which case we are not to be found in the path.+  if test "x$as_myself" = x; then+    as_myself=$0+  fi+  if test ! -f "$as_myself"; then+    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2+   { (exit 1); exit 1; }; }+  fi+  case $CONFIG_SHELL in+  '')+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH+do+  IFS=$as_save_IFS+  test -z "$as_dir" && as_dir=.+  for as_base in sh bash ksh sh5; do+	 case $as_dir in+	 /*)+	   if ("$as_dir/$as_base" -c '+  as_lineno_1=$LINENO+  as_lineno_2=$LINENO+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`+  test "x$as_lineno_1" != "x$as_lineno_2" &&+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }+	     CONFIG_SHELL=$as_dir/$as_base+	     export CONFIG_SHELL+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}+	   fi;;+	 esac+       done+done+;;+  esac++  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO+  # uniformly replaced by the line number.  The first 'sed' inserts a+  # line-number line before each line; the second 'sed' does the real+  # work.  The second script uses 'N' to pair each line-number line+  # with the numbered line, and appends trailing '-' during+  # substitution so that $LINENO is not a special case at line end.+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)+  sed '=' <$as_myself |+    sed '+      N+      s,$,-,+      : loop+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,+      t loop+      s,-$,,+      s,^['$as_cr_digits']*\n,,+    ' >$as_me.lineno &&+  chmod +x $as_me.lineno ||+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2+   { (exit 1); exit 1; }; }++  # Don't try to exec as it changes $[0], causing all sort of problems+  # (the dirname of $[0] is not the place where we might find the+  # original and so on.  Autoconf is especially sensible to this).+  . ./$as_me.lineno+  # Exit status is that of the last command.+  exit+}+++case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in+  *c*,-n*) ECHO_N= ECHO_C='+' ECHO_T='	' ;;+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;+esac++if expr a : '\(a\)' >/dev/null 2>&1; then+  as_expr=expr+else+  as_expr=false+fi++rm -f conf$$ conf$$.exe conf$$.file+echo >conf$$.file+if ln -s conf$$.file conf$$ 2>/dev/null; then+  # We could just check for DJGPP; but this test a) works b) is more generic+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).+  if test -f conf$$.exe; then+    # Don't use ln at all; we don't have any links+    as_ln_s='cp -p'+  else+    as_ln_s='ln -s'+  fi+elif ln conf$$.file conf$$ 2>/dev/null; then+  as_ln_s=ln+else+  as_ln_s='cp -p'+fi+rm -f conf$$ conf$$.exe conf$$.file++if mkdir -p . 2>/dev/null; then+  as_mkdir_p=:+else+  test -d ./-p && rmdir ./-p+  as_mkdir_p=false+fi++as_executable_p="test -f"++# Sed expression to map a string onto a valid CPP name.+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"++# Sed expression to map a string onto a valid variable name.+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"+++# IFS+# We need space, tab and new line, in precisely that order.+as_nl='+'+IFS=" 	$as_nl"++# CDPATH.+$as_unset CDPATH+++# Name of the host.+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,+# so uname gets run too.+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`++exec 6>&1++#+# Initializations.+#+ac_default_prefix=/usr/local+ac_config_libobj_dir=.+cross_compiling=no+subdirs=+MFLAGS=+MAKEFLAGS=+SHELL=${CONFIG_SHELL-/bin/sh}++# Maximum number of lines to put in a shell here document.+# This variable seems obsolete.  It should probably be removed, and+# only ac_max_sed_lines should be used.+: ${ac_max_here_lines=38}++# Identity of this package.+PACKAGE_NAME='Haskell curl package'+PACKAGE_TARNAME='curl'+PACKAGE_VERSION='1.1'+PACKAGE_STRING='Haskell curl package 1.1'+PACKAGE_BUGREPORT='dons@galois.com'++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP CURL_BUILD_PACKAGE BUILD_PACKAGE_BOOL LIBOBJS LTLIBOBJS'+ac_subst_files=''++# Initialize some variables set by options.+ac_init_help=+ac_init_version=false+# The variables have the same names as the options, with+# dashes changed to underlines.+cache_file=/dev/null+exec_prefix=NONE+no_create=+no_recursion=+prefix=NONE+program_prefix=NONE+program_suffix=NONE+program_transform_name=s,x,x,+silent=+site=+srcdir=+verbose=+x_includes=NONE+x_libraries=NONE++# Installation directory options.+# These are left unexpanded so users can "make install exec_prefix=/foo"+# and all the variables that are supposed to be based on exec_prefix+# by default will actually change.+# Use braces instead of parens because sh, perl, etc. also accept them.+bindir='${exec_prefix}/bin'+sbindir='${exec_prefix}/sbin'+libexecdir='${exec_prefix}/libexec'+datadir='${prefix}/share'+sysconfdir='${prefix}/etc'+sharedstatedir='${prefix}/com'+localstatedir='${prefix}/var'+libdir='${exec_prefix}/lib'+includedir='${prefix}/include'+oldincludedir='/usr/include'+infodir='${prefix}/info'+mandir='${prefix}/man'++ac_prev=+for ac_option+do+  # If the previous option needs an argument, assign it.+  if test -n "$ac_prev"; then+    eval "$ac_prev=\$ac_option"+    ac_prev=+    continue+  fi++  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`++  # Accept the important Cygnus configure options, so we can diagnose typos.++  case $ac_option in++  -bindir | --bindir | --bindi | --bind | --bin | --bi)+    ac_prev=bindir ;;+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)+    bindir=$ac_optarg ;;++  -build | --build | --buil | --bui | --bu)+    ac_prev=build_alias ;;+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)+    build_alias=$ac_optarg ;;++  -cache-file | --cache-file | --cache-fil | --cache-fi \+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)+    ac_prev=cache_file ;;+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)+    cache_file=$ac_optarg ;;++  --config-cache | -C)+    cache_file=config.cache ;;++  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)+    ac_prev=datadir ;;+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \+  | --da=*)+    datadir=$ac_optarg ;;++  -disable-* | --disable-*)+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`+    # Reject names that are not valid shell variable names.+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2+   { (exit 1); exit 1; }; }+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`+    eval "enable_$ac_feature=no" ;;++  -enable-* | --enable-*)+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`+    # Reject names that are not valid shell variable names.+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2+   { (exit 1); exit 1; }; }+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`+    case $ac_option in+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;+      *) ac_optarg=yes ;;+    esac+    eval "enable_$ac_feature='$ac_optarg'" ;;++  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \+  | --exec | --exe | --ex)+    ac_prev=exec_prefix ;;+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \+  | --exec=* | --exe=* | --ex=*)+    exec_prefix=$ac_optarg ;;++  -gas | --gas | --ga | --g)+    # Obsolete; use --with-gas.+    with_gas=yes ;;++  -help | --help | --hel | --he | -h)+    ac_init_help=long ;;+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)+    ac_init_help=recursive ;;+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)+    ac_init_help=short ;;++  -host | --host | --hos | --ho)+    ac_prev=host_alias ;;+  -host=* | --host=* | --hos=* | --ho=*)+    host_alias=$ac_optarg ;;++  -includedir | --includedir | --includedi | --included | --include \+  | --includ | --inclu | --incl | --inc)+    ac_prev=includedir ;;+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \+  | --includ=* | --inclu=* | --incl=* | --inc=*)+    includedir=$ac_optarg ;;++  -infodir | --infodir | --infodi | --infod | --info | --inf)+    ac_prev=infodir ;;+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)+    infodir=$ac_optarg ;;++  -libdir | --libdir | --libdi | --libd)+    ac_prev=libdir ;;+  -libdir=* | --libdir=* | --libdi=* | --libd=*)+    libdir=$ac_optarg ;;++  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \+  | --libexe | --libex | --libe)+    ac_prev=libexecdir ;;+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \+  | --libexe=* | --libex=* | --libe=*)+    libexecdir=$ac_optarg ;;++  -localstatedir | --localstatedir | --localstatedi | --localstated \+  | --localstate | --localstat | --localsta | --localst \+  | --locals | --local | --loca | --loc | --lo)+    ac_prev=localstatedir ;;+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)+    localstatedir=$ac_optarg ;;++  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)+    ac_prev=mandir ;;+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)+    mandir=$ac_optarg ;;++  -nfp | --nfp | --nf)+    # Obsolete; use --without-fp.+    with_fp=no ;;++  -no-create | --no-create | --no-creat | --no-crea | --no-cre \+  | --no-cr | --no-c | -n)+    no_create=yes ;;++  -no-recursion | --no-recursion | --no-recursio | --no-recursi \+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)+    no_recursion=yes ;;++  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \+  | --oldin | --oldi | --old | --ol | --o)+    ac_prev=oldincludedir ;;+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)+    oldincludedir=$ac_optarg ;;++  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)+    ac_prev=prefix ;;+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)+    prefix=$ac_optarg ;;++  -program-prefix | --program-prefix | --program-prefi | --program-pref \+  | --program-pre | --program-pr | --program-p)+    ac_prev=program_prefix ;;+  -program-prefix=* | --program-prefix=* | --program-prefi=* \+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)+    program_prefix=$ac_optarg ;;++  -program-suffix | --program-suffix | --program-suffi | --program-suff \+  | --program-suf | --program-su | --program-s)+    ac_prev=program_suffix ;;+  -program-suffix=* | --program-suffix=* | --program-suffi=* \+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)+    program_suffix=$ac_optarg ;;++  -program-transform-name | --program-transform-name \+  | --program-transform-nam | --program-transform-na \+  | --program-transform-n | --program-transform- \+  | --program-transform | --program-transfor \+  | --program-transfo | --program-transf \+  | --program-trans | --program-tran \+  | --progr-tra | --program-tr | --program-t)+    ac_prev=program_transform_name ;;+  -program-transform-name=* | --program-transform-name=* \+  | --program-transform-nam=* | --program-transform-na=* \+  | --program-transform-n=* | --program-transform-=* \+  | --program-transform=* | --program-transfor=* \+  | --program-transfo=* | --program-transf=* \+  | --program-trans=* | --program-tran=* \+  | --progr-tra=* | --program-tr=* | --program-t=*)+    program_transform_name=$ac_optarg ;;++  -q | -quiet | --quiet | --quie | --qui | --qu | --q \+  | -silent | --silent | --silen | --sile | --sil)+    silent=yes ;;++  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)+    ac_prev=sbindir ;;+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \+  | --sbi=* | --sb=*)+    sbindir=$ac_optarg ;;++  -sharedstatedir | --sharedstatedir | --sharedstatedi \+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \+  | --sharedst | --shareds | --shared | --share | --shar \+  | --sha | --sh)+    ac_prev=sharedstatedir ;;+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \+  | --sha=* | --sh=*)+    sharedstatedir=$ac_optarg ;;++  -site | --site | --sit)+    ac_prev=site ;;+  -site=* | --site=* | --sit=*)+    site=$ac_optarg ;;++  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)+    ac_prev=srcdir ;;+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)+    srcdir=$ac_optarg ;;++  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \+  | --syscon | --sysco | --sysc | --sys | --sy)+    ac_prev=sysconfdir ;;+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)+    sysconfdir=$ac_optarg ;;++  -target | --target | --targe | --targ | --tar | --ta | --t)+    ac_prev=target_alias ;;+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)+    target_alias=$ac_optarg ;;++  -v | -verbose | --verbose | --verbos | --verbo | --verb)+    verbose=yes ;;++  -version | --version | --versio | --versi | --vers | -V)+    ac_init_version=: ;;++  -with-* | --with-*)+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`+    # Reject names that are not valid shell variable names.+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&+      { echo "$as_me: error: invalid package name: $ac_package" >&2+   { (exit 1); exit 1; }; }+    ac_package=`echo $ac_package| sed 's/-/_/g'`+    case $ac_option in+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;+      *) ac_optarg=yes ;;+    esac+    eval "with_$ac_package='$ac_optarg'" ;;++  -without-* | --without-*)+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`+    # Reject names that are not valid shell variable names.+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&+      { echo "$as_me: error: invalid package name: $ac_package" >&2+   { (exit 1); exit 1; }; }+    ac_package=`echo $ac_package | sed 's/-/_/g'`+    eval "with_$ac_package=no" ;;++  --x)+    # Obsolete; use --with-x.+    with_x=yes ;;++  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \+  | --x-incl | --x-inc | --x-in | --x-i)+    ac_prev=x_includes ;;+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)+    x_includes=$ac_optarg ;;++  -x-libraries | --x-libraries | --x-librarie | --x-librari \+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)+    ac_prev=x_libraries ;;+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)+    x_libraries=$ac_optarg ;;++  -*) { echo "$as_me: error: unrecognized option: $ac_option+Try \`$0 --help' for more information." >&2+   { (exit 1); exit 1; }; }+    ;;++  *=*)+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`+    # Reject names that are not valid shell variable names.+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2+   { (exit 1); exit 1; }; }+    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`+    eval "$ac_envvar='$ac_optarg'"+    export $ac_envvar ;;++  *)+    # FIXME: should be removed in autoconf 3.0.+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}+    ;;++  esac+done++if test -n "$ac_prev"; then+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`+  { echo "$as_me: error: missing argument to $ac_option" >&2+   { (exit 1); exit 1; }; }+fi++# Be sure to have absolute paths.+for ac_var in exec_prefix prefix+do+  eval ac_val=$`echo $ac_var`+  case $ac_val in+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2+   { (exit 1); exit 1; }; };;+  esac+done++# Be sure to have absolute paths.+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \+	      localstatedir libdir includedir oldincludedir infodir mandir+do+  eval ac_val=$`echo $ac_var`+  case $ac_val in+    [\\/$]* | ?:[\\/]* ) ;;+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2+   { (exit 1); exit 1; }; };;+  esac+done++# There might be people who depend on the old broken behavior: `$host'+# used to hold the argument of --host etc.+# FIXME: To remove some day.+build=$build_alias+host=$host_alias+target=$target_alias++# FIXME: To remove some day.+if test "x$host_alias" != x; then+  if test "x$build_alias" = x; then+    cross_compiling=maybe+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.+    If a cross compiler is detected then cross compile mode will be used." >&2+  elif test "x$build_alias" != "x$host_alias"; then+    cross_compiling=yes+  fi+fi++ac_tool_prefix=+test -n "$host_alias" && ac_tool_prefix=$host_alias-++test "$silent" = yes && exec 6>/dev/null+++# Find the source files, if location was not specified.+if test -z "$srcdir"; then+  ac_srcdir_defaulted=yes+  # Try the directory containing this script, then its parent.+  ac_confdir=`(dirname "$0") 2>/dev/null ||+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \+	 X"$0" : 'X\(//\)[^/]' \| \+	 X"$0" : 'X\(//\)$' \| \+	 X"$0" : 'X\(/\)' \| \+	 .     : '\(.\)' 2>/dev/null ||+echo X"$0" |+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }+  	  /^X\(\/\/\)$/{ s//\1/; q; }+  	  /^X\(\/\).*/{ s//\1/; q; }+  	  s/.*/./; q'`+  srcdir=$ac_confdir+  if test ! -r $srcdir/$ac_unique_file; then+    srcdir=..+  fi+else+  ac_srcdir_defaulted=no+fi+if test ! -r $srcdir/$ac_unique_file; then+  if test "$ac_srcdir_defaulted" = yes; then+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2+   { (exit 1); exit 1; }; }+  else+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2+   { (exit 1); exit 1; }; }+  fi+fi+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||+  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2+   { (exit 1); exit 1; }; }+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`+ac_env_build_alias_set=${build_alias+set}+ac_env_build_alias_value=$build_alias+ac_cv_env_build_alias_set=${build_alias+set}+ac_cv_env_build_alias_value=$build_alias+ac_env_host_alias_set=${host_alias+set}+ac_env_host_alias_value=$host_alias+ac_cv_env_host_alias_set=${host_alias+set}+ac_cv_env_host_alias_value=$host_alias+ac_env_target_alias_set=${target_alias+set}+ac_env_target_alias_value=$target_alias+ac_cv_env_target_alias_set=${target_alias+set}+ac_cv_env_target_alias_value=$target_alias+ac_env_CC_set=${CC+set}+ac_env_CC_value=$CC+ac_cv_env_CC_set=${CC+set}+ac_cv_env_CC_value=$CC+ac_env_CFLAGS_set=${CFLAGS+set}+ac_env_CFLAGS_value=$CFLAGS+ac_cv_env_CFLAGS_set=${CFLAGS+set}+ac_cv_env_CFLAGS_value=$CFLAGS+ac_env_LDFLAGS_set=${LDFLAGS+set}+ac_env_LDFLAGS_value=$LDFLAGS+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}+ac_cv_env_LDFLAGS_value=$LDFLAGS+ac_env_CPPFLAGS_set=${CPPFLAGS+set}+ac_env_CPPFLAGS_value=$CPPFLAGS+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}+ac_cv_env_CPPFLAGS_value=$CPPFLAGS+ac_env_CPP_set=${CPP+set}+ac_env_CPP_value=$CPP+ac_cv_env_CPP_set=${CPP+set}+ac_cv_env_CPP_value=$CPP++#+# Report the --help message.+#+if test "$ac_init_help" = "long"; then+  # Omit some internal or obsolete options to make the list less imposing.+  # This message is too long to be a string in the A/UX 3.1 sh.+  cat <<_ACEOF+\`configure' configures Haskell curl package 1.1 to adapt to many kinds of systems.++Usage: $0 [OPTION]... [VAR=VALUE]...++To assign environment variables (e.g., CC, CFLAGS...), specify them as+VAR=VALUE.  See below for descriptions of some of the useful variables.++Defaults for the options are specified in brackets.++Configuration:+  -h, --help              display this help and exit+      --help=short        display options specific to this package+      --help=recursive    display the short help of all the included packages+  -V, --version           display version information and exit+  -q, --quiet, --silent   do not print \`checking...' messages+      --cache-file=FILE   cache test results in FILE [disabled]+  -C, --config-cache      alias for \`--cache-file=config.cache'+  -n, --no-create         do not create output files+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']++_ACEOF++  cat <<_ACEOF+Installation directories:+  --prefix=PREFIX         install architecture-independent files in PREFIX+			  [$ac_default_prefix]+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX+			  [PREFIX]++By default, \`make install' will install all the files in+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify+an installation prefix other than \`$ac_default_prefix' using \`--prefix',+for instance \`--prefix=\$HOME'.++For better control, use the options below.++Fine tuning of the installation directories:+  --bindir=DIR           user executables [EPREFIX/bin]+  --sbindir=DIR          system admin executables [EPREFIX/sbin]+  --libexecdir=DIR       program executables [EPREFIX/libexec]+  --datadir=DIR          read-only architecture-independent data [PREFIX/share]+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]+  --libdir=DIR           object code libraries [EPREFIX/lib]+  --includedir=DIR       C header files [PREFIX/include]+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]+  --infodir=DIR          info documentation [PREFIX/info]+  --mandir=DIR           man documentation [PREFIX/man]+_ACEOF++  cat <<\_ACEOF+_ACEOF+fi++if test -n "$ac_init_help"; then+  case $ac_init_help in+     short | recursive ) echo "Configuration of Haskell curl package 1.1:";;+   esac+  cat <<\_ACEOF++Some influential environment variables:+  CC          C compiler command+  CFLAGS      C compiler flags+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a+              nonstandard directory <lib dir>+  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have+              headers in a nonstandard directory <include dir>+  CPP         C preprocessor++Use these variables to override the choices made by `configure' or to help+it to find libraries and programs with nonstandard names/locations.++Report bugs to <dons@galois.com>.+_ACEOF+fi++if test "$ac_init_help" = "recursive"; then+  # If there are subdirs, report their specific --help.+  ac_popdir=`pwd`+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue+    test -d $ac_dir || continue+    ac_builddir=.++if test "$ac_dir" != .; then+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`+  # A "../" for each directory in $ac_dir_suffix.+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`+else+  ac_dir_suffix= ac_top_builddir=+fi++case $srcdir in+  .)  # No --srcdir option.  We are building in place.+    ac_srcdir=.+    if test -z "$ac_top_builddir"; then+       ac_top_srcdir=.+    else+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`+    fi ;;+  [\\/]* | ?:[\\/]* )  # Absolute path.+    ac_srcdir=$srcdir$ac_dir_suffix;+    ac_top_srcdir=$srcdir ;;+  *) # Relative path.+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix+    ac_top_srcdir=$ac_top_builddir$srcdir ;;+esac++# Do not use `cd foo && pwd` to compute absolute paths, because+# the directories may not exist.+case `pwd` in+.) ac_abs_builddir="$ac_dir";;+*)+  case "$ac_dir" in+  .) ac_abs_builddir=`pwd`;;+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;+  *) ac_abs_builddir=`pwd`/"$ac_dir";;+  esac;;+esac+case $ac_abs_builddir in+.) ac_abs_top_builddir=${ac_top_builddir}.;;+*)+  case ${ac_top_builddir}. in+  .) ac_abs_top_builddir=$ac_abs_builddir;;+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;+  esac;;+esac+case $ac_abs_builddir in+.) ac_abs_srcdir=$ac_srcdir;;+*)+  case $ac_srcdir in+  .) ac_abs_srcdir=$ac_abs_builddir;;+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;+  esac;;+esac+case $ac_abs_builddir in+.) ac_abs_top_srcdir=$ac_top_srcdir;;+*)+  case $ac_top_srcdir in+  .) ac_abs_top_srcdir=$ac_abs_builddir;;+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;+  esac;;+esac++    cd $ac_dir+    # Check for guested configure; otherwise get Cygnus style configure.+    if test -f $ac_srcdir/configure.gnu; then+      echo+      $SHELL $ac_srcdir/configure.gnu  --help=recursive+    elif test -f $ac_srcdir/configure; then+      echo+      $SHELL $ac_srcdir/configure  --help=recursive+    elif test -f $ac_srcdir/configure.ac ||+	   test -f $ac_srcdir/configure.in; then+      echo+      $ac_configure --help+    else+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2+    fi+    cd $ac_popdir+  done+fi++test -n "$ac_init_help" && exit 0+if $ac_init_version; then+  cat <<\_ACEOF+Haskell curl package configure 1.1+generated by GNU Autoconf 2.59++Copyright (C) 2003 Free Software Foundation, Inc.+This configure script is free software; the Free Software Foundation+gives unlimited permission to copy, distribute and modify it.+_ACEOF+  exit 0+fi+exec 5>config.log+cat >&5 <<_ACEOF+This file contains any messages produced by compilers while+running configure, to aid debugging if configure makes a mistake.++It was created by Haskell curl package $as_me 1.1, which was+generated by GNU Autoconf 2.59.  Invocation command line was++  $ $0 $@++_ACEOF+{+cat <<_ASUNAME+## --------- ##+## Platform. ##+## --------- ##++hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`+uname -m = `(uname -m) 2>/dev/null || echo unknown`+uname -r = `(uname -r) 2>/dev/null || echo unknown`+uname -s = `(uname -s) 2>/dev/null || echo unknown`+uname -v = `(uname -v) 2>/dev/null || echo unknown`++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`++/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`+hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`++_ASUNAME++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  test -z "$as_dir" && as_dir=.+  echo "PATH: $as_dir"+done++} >&5++cat >&5 <<_ACEOF+++## ----------- ##+## Core tests. ##+## ----------- ##++_ACEOF+++# Keep a trace of the command line.+# Strip out --no-create and --no-recursion so they do not pile up.+# Strip out --silent because we don't want to record it for future runs.+# Also quote any args containing shell meta-characters.+# Make two passes to allow for proper duplicate-argument suppression.+ac_configure_args=+ac_configure_args0=+ac_configure_args1=+ac_sep=+ac_must_keep_next=false+for ac_pass in 1 2+do+  for ac_arg+  do+    case $ac_arg in+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \+    | -silent | --silent | --silen | --sile | --sil)+      continue ;;+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)+      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;+    esac+    case $ac_pass in+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;+    2)+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"+      if test $ac_must_keep_next = true; then+	ac_must_keep_next=false # Got value, back to normal.+      else+	case $ac_arg in+	  *=* | --config-cache | -C | -disable-* | --disable-* \+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \+	  | -with-* | --with-* | -without-* | --without-* | --x)+	    case "$ac_configure_args0 " in+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;+	    esac+	    ;;+	  -* ) ac_must_keep_next=true ;;+	esac+      fi+      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"+      # Get rid of the leading space.+      ac_sep=" "+      ;;+    esac+  done+done+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }++# When interrupted or exit'd, cleanup temporary files, and complete+# config.log.  We remove comments because anyway the quotes in there+# would cause problems or look ugly.+# WARNING: Be sure not to use single quotes in there, as some shells,+# such as our DU 5.0 friend, will then `close' the trap.+trap 'exit_status=$?+  # Save into config.log some information that might help in debugging.+  {+    echo++    cat <<\_ASBOX+## ---------------- ##+## Cache variables. ##+## ---------------- ##+_ASBOX+    echo+    # The following way of writing the cache mishandles newlines in values,+{+  (set) 2>&1 |+    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in+    *ac_space=\ *)+      sed -n \+	"s/'"'"'/'"'"'\\\\'"'"''"'"'/g;+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"+      ;;+    *)+      sed -n \+	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"+      ;;+    esac;+}+    echo++    cat <<\_ASBOX+## ----------------- ##+## Output variables. ##+## ----------------- ##+_ASBOX+    echo+    for ac_var in $ac_subst_vars+    do+      eval ac_val=$`echo $ac_var`+      echo "$ac_var='"'"'$ac_val'"'"'"+    done | sort+    echo++    if test -n "$ac_subst_files"; then+      cat <<\_ASBOX+## ------------- ##+## Output files. ##+## ------------- ##+_ASBOX+      echo+      for ac_var in $ac_subst_files+      do+	eval ac_val=$`echo $ac_var`+	echo "$ac_var='"'"'$ac_val'"'"'"+      done | sort+      echo+    fi++    if test -s confdefs.h; then+      cat <<\_ASBOX+## ----------- ##+## confdefs.h. ##+## ----------- ##+_ASBOX+      echo+      sed "/^$/d" confdefs.h | sort+      echo+    fi+    test "$ac_signal" != 0 &&+      echo "$as_me: caught signal $ac_signal"+    echo "$as_me: exit $exit_status"+  } >&5+  rm -f core *.core &&+  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&+    exit $exit_status+     ' 0+for ac_signal in 1 2 13 15; do+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal+done+ac_signal=0++# confdefs.h avoids OS command line length limits that DEFS can exceed.+rm -rf conftest* confdefs.h+# AIX cpp loses on an empty file, so make sure it contains at least a newline.+echo >confdefs.h++# Predefined preprocessor variables.++cat >>confdefs.h <<_ACEOF+#define PACKAGE_NAME "$PACKAGE_NAME"+_ACEOF+++cat >>confdefs.h <<_ACEOF+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"+_ACEOF+++cat >>confdefs.h <<_ACEOF+#define PACKAGE_VERSION "$PACKAGE_VERSION"+_ACEOF+++cat >>confdefs.h <<_ACEOF+#define PACKAGE_STRING "$PACKAGE_STRING"+_ACEOF+++cat >>confdefs.h <<_ACEOF+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"+_ACEOF+++# Let the site file select an alternate cache file if it wants to.+# Prefer explicitly selected file to automatically selected ones.+if test -z "$CONFIG_SITE"; then+  if test "x$prefix" != xNONE; then+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"+  else+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"+  fi+fi+for ac_site_file in $CONFIG_SITE; do+  if test -r "$ac_site_file"; then+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5+echo "$as_me: loading site script $ac_site_file" >&6;}+    sed 's/^/| /' "$ac_site_file" >&5+    . "$ac_site_file"+  fi+done++if test -r "$cache_file"; then+  # Some versions of bash will fail to source /dev/null (special+  # files actually), so we avoid doing that.+  if test -f "$cache_file"; then+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5+echo "$as_me: loading cache $cache_file" >&6;}+    case $cache_file in+      [\\/]* | ?:[\\/]* ) . $cache_file;;+      *)                      . ./$cache_file;;+    esac+  fi+else+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5+echo "$as_me: creating cache $cache_file" >&6;}+  >$cache_file+fi++# Check that the precious variables saved in the cache have kept the same+# value.+ac_cache_corrupted=false+for ac_var in `(set) 2>&1 |+	       sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do+  eval ac_old_set=\$ac_cv_env_${ac_var}_set+  eval ac_new_set=\$ac_env_${ac_var}_set+  eval ac_old_val="\$ac_cv_env_${ac_var}_value"+  eval ac_new_val="\$ac_env_${ac_var}_value"+  case $ac_old_set,$ac_new_set in+    set,)+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}+      ac_cache_corrupted=: ;;+    ,set)+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}+      ac_cache_corrupted=: ;;+    ,);;+    *)+      if test "x$ac_old_val" != "x$ac_new_val"; then+	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}+	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5+echo "$as_me:   former value:  $ac_old_val" >&2;}+	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5+echo "$as_me:   current value: $ac_new_val" >&2;}+	ac_cache_corrupted=:+      fi;;+  esac+  # Pass precious variables to config.status.+  if test "$ac_new_set" = set; then+    case $ac_new_val in+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)+      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;+    *) ac_arg=$ac_var=$ac_new_val ;;+    esac+    case " $ac_configure_args " in+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;+    esac+  fi+done+if $ac_cache_corrupted; then+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5+echo "$as_me: error: changes in the environment can compromise the build" >&2;}+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}+   { (exit 1); exit 1; }; }+fi++ac_ext=c+ac_cpp='$CPP $CPPFLAGS'+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'+ac_compiler_gnu=$ac_cv_c_compiler_gnu+++++++++++++++++++++++++++++ac_ext=c+ac_cpp='$CPP $CPPFLAGS'+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'+ac_compiler_gnu=$ac_cv_c_compiler_gnu+if test -n "$ac_tool_prefix"; then+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.+set dummy ${ac_tool_prefix}gcc; ac_word=$2+echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6+if test "${ac_cv_prog_CC+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test -n "$CC"; then+  ac_cv_prog_CC="$CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  test -z "$as_dir" && as_dir=.+  for ac_exec_ext in '' $ac_executable_extensions; do+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then+    ac_cv_prog_CC="${ac_tool_prefix}gcc"+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+done++fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+  echo "$as_me:$LINENO: result: $CC" >&5+echo "${ECHO_T}$CC" >&6+else+  echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6+fi++fi+if test -z "$ac_cv_prog_CC"; then+  ac_ct_CC=$CC+  # Extract the first word of "gcc", so it can be a program name with args.+set dummy gcc; ac_word=$2+echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test -n "$ac_ct_CC"; then+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  test -z "$as_dir" && as_dir=.+  for ac_exec_ext in '' $ac_executable_extensions; do+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then+    ac_cv_prog_ac_ct_CC="gcc"+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+done++fi+fi+ac_ct_CC=$ac_cv_prog_ac_ct_CC+if test -n "$ac_ct_CC"; then+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5+echo "${ECHO_T}$ac_ct_CC" >&6+else+  echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6+fi++  CC=$ac_ct_CC+else+  CC="$ac_cv_prog_CC"+fi++if test -z "$CC"; then+  if test -n "$ac_tool_prefix"; then+  # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.+set dummy ${ac_tool_prefix}cc; ac_word=$2+echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6+if test "${ac_cv_prog_CC+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test -n "$CC"; then+  ac_cv_prog_CC="$CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  test -z "$as_dir" && as_dir=.+  for ac_exec_ext in '' $ac_executable_extensions; do+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then+    ac_cv_prog_CC="${ac_tool_prefix}cc"+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+done++fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+  echo "$as_me:$LINENO: result: $CC" >&5+echo "${ECHO_T}$CC" >&6+else+  echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6+fi++fi+if test -z "$ac_cv_prog_CC"; then+  ac_ct_CC=$CC+  # Extract the first word of "cc", so it can be a program name with args.+set dummy cc; ac_word=$2+echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test -n "$ac_ct_CC"; then+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  test -z "$as_dir" && as_dir=.+  for ac_exec_ext in '' $ac_executable_extensions; do+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then+    ac_cv_prog_ac_ct_CC="cc"+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+done++fi+fi+ac_ct_CC=$ac_cv_prog_ac_ct_CC+if test -n "$ac_ct_CC"; then+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5+echo "${ECHO_T}$ac_ct_CC" >&6+else+  echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6+fi++  CC=$ac_ct_CC+else+  CC="$ac_cv_prog_CC"+fi++fi+if test -z "$CC"; then+  # Extract the first word of "cc", so it can be a program name with args.+set dummy cc; ac_word=$2+echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6+if test "${ac_cv_prog_CC+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test -n "$CC"; then+  ac_cv_prog_CC="$CC" # Let the user override the test.+else+  ac_prog_rejected=no+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  test -z "$as_dir" && as_dir=.+  for ac_exec_ext in '' $ac_executable_extensions; do+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then+       ac_prog_rejected=yes+       continue+     fi+    ac_cv_prog_CC="cc"+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+done++if test $ac_prog_rejected = yes; then+  # We found a bogon in the path, so make sure we never use it.+  set dummy $ac_cv_prog_CC+  shift+  if test $# != 0; then+    # We chose a different compiler from the bogus one.+    # However, it has the same basename, so the bogon will be chosen+    # first if we set CC to just the basename; use the full file name.+    shift+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"+  fi+fi+fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+  echo "$as_me:$LINENO: result: $CC" >&5+echo "${ECHO_T}$CC" >&6+else+  echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6+fi++fi+if test -z "$CC"; then+  if test -n "$ac_tool_prefix"; then+  for ac_prog in cl+  do+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.+set dummy $ac_tool_prefix$ac_prog; ac_word=$2+echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6+if test "${ac_cv_prog_CC+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test -n "$CC"; then+  ac_cv_prog_CC="$CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  test -z "$as_dir" && as_dir=.+  for ac_exec_ext in '' $ac_executable_extensions; do+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+done++fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+  echo "$as_me:$LINENO: result: $CC" >&5+echo "${ECHO_T}$CC" >&6+else+  echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6+fi++    test -n "$CC" && break+  done+fi+if test -z "$CC"; then+  ac_ct_CC=$CC+  for ac_prog in cl+do+  # Extract the first word of "$ac_prog", so it can be a program name with args.+set dummy $ac_prog; ac_word=$2+echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test -n "$ac_ct_CC"; then+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  test -z "$as_dir" && as_dir=.+  for ac_exec_ext in '' $ac_executable_extensions; do+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then+    ac_cv_prog_ac_ct_CC="$ac_prog"+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+done++fi+fi+ac_ct_CC=$ac_cv_prog_ac_ct_CC+if test -n "$ac_ct_CC"; then+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5+echo "${ECHO_T}$ac_ct_CC" >&6+else+  echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6+fi++  test -n "$ac_ct_CC" && break+done++  CC=$ac_ct_CC+fi++fi+++test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH+See \`config.log' for more details." >&5+echo "$as_me: error: no acceptable C compiler found in \$PATH+See \`config.log' for more details." >&2;}+   { (exit 1); exit 1; }; }++# Provide some information about the compiler.+echo "$as_me:$LINENO:" \+     "checking for C compiler version" >&5+ac_compiler=`set X $ac_compile; echo $2`+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5+  (eval $ac_compiler --version </dev/null >&5) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5+  (eval $ac_compiler -v </dev/null >&5) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5+  (eval $ac_compiler -V </dev/null >&5) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }++cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */++int+main ()+{++  ;+  return 0;+}+_ACEOF+ac_clean_files_save=$ac_clean_files+ac_clean_files="$ac_clean_files a.out a.exe b.out"+# Try to create an executable without -o first, disregard a.out.+# It will help us diagnose broken compilers, and finding out an intuition+# of exeext.+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5+  (eval $ac_link_default) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; then+  # Find the output, starting from the most likely.  This scheme is+# not robust to junk in `.', hence go to wildcards (a.*) only as a last+# resort.++# Be careful to initialize this variable, since it used to be cached.+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.+ac_cv_exeext=+# b.out is created by i960 compilers.+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out+do+  test -f "$ac_file" || continue+  case $ac_file in+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )+	;;+    conftest.$ac_ext )+	# This is the source file.+	;;+    [ab].out )+	# We found the default executable, but exeext='' is most+	# certainly right.+	break;;+    *.* )+	ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`+	# FIXME: I believe we export ac_cv_exeext for Libtool,+	# but it would be cool to find out if it's true.  Does anybody+	# maintain Libtool? --akim.+	export ac_cv_exeext+	break;;+    * )+	break;;+  esac+done+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++{ { echo "$as_me:$LINENO: error: C compiler cannot create executables+See \`config.log' for more details." >&5+echo "$as_me: error: C compiler cannot create executables+See \`config.log' for more details." >&2;}+   { (exit 77); exit 77; }; }+fi++ac_exeext=$ac_cv_exeext+echo "$as_me:$LINENO: result: $ac_file" >&5+echo "${ECHO_T}$ac_file" >&6++# Check the compiler produces executables we can run.  If not, either+# the compiler is broken, or we cross compile.+echo "$as_me:$LINENO: checking whether the C compiler works" >&5+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0+# If not cross compiling, check that we can run a simple program.+if test "$cross_compiling" != yes; then+  if { ac_try='./$ac_file'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+    cross_compiling=no+  else+    if test "$cross_compiling" = maybe; then+	cross_compiling=yes+    else+	{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.+If you meant to cross compile, use \`--host'.+See \`config.log' for more details." >&5+echo "$as_me: error: cannot run C compiled programs.+If you meant to cross compile, use \`--host'.+See \`config.log' for more details." >&2;}+   { (exit 1); exit 1; }; }+    fi+  fi+fi+echo "$as_me:$LINENO: result: yes" >&5+echo "${ECHO_T}yes" >&6++rm -f a.out a.exe conftest$ac_cv_exeext b.out+ac_clean_files=$ac_clean_files_save+# Check the compiler produces executables we can run.  If not, either+# the compiler is broken, or we cross compile.+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6+echo "$as_me:$LINENO: result: $cross_compiling" >&5+echo "${ECHO_T}$cross_compiling" >&6++echo "$as_me:$LINENO: checking for suffix of executables" >&5+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; then+  # If both `conftest.exe' and `conftest' are `present' (well, observable)+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will+# work properly (i.e., refer to `conftest.exe'), while it won't with+# `rm'.+for ac_file in conftest.exe conftest conftest.*; do+  test -f "$ac_file" || continue+  case $ac_file in+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`+	  export ac_cv_exeext+	  break;;+    * ) break;;+  esac+done+else+  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link+See \`config.log' for more details." >&5+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link+See \`config.log' for more details." >&2;}+   { (exit 1); exit 1; }; }+fi++rm -f conftest$ac_cv_exeext+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5+echo "${ECHO_T}$ac_cv_exeext" >&6++rm -f conftest.$ac_ext+EXEEXT=$ac_cv_exeext+ac_exeext=$EXEEXT+echo "$as_me:$LINENO: checking for suffix of object files" >&5+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6+if test "${ac_cv_objext+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */++int+main ()+{++  ;+  return 0;+}+_ACEOF+rm -f conftest.o conftest.obj+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; then+  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do+  case $ac_file in+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`+       break;;+  esac+done+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile+See \`config.log' for more details." >&5+echo "$as_me: error: cannot compute suffix of object files: cannot compile+See \`config.log' for more details." >&2;}+   { (exit 1); exit 1; }; }+fi++rm -f conftest.$ac_cv_objext conftest.$ac_ext+fi+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5+echo "${ECHO_T}$ac_cv_objext" >&6+OBJEXT=$ac_cv_objext+ac_objext=$OBJEXT+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6+if test "${ac_cv_c_compiler_gnu+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */++int+main ()+{+#ifndef __GNUC__+       choke me+#endif++  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>conftest.er1+  ac_status=$?+  grep -v '^ *+' conftest.er1 >conftest.err+  rm -f conftest.er1+  cat conftest.err >&5+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+	 { ac_try='test -z "$ac_c_werror_flag"+			 || test ! -s conftest.err'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; } &&+	 { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_compiler_gnu=yes+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ac_compiler_gnu=no+fi+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext+ac_cv_c_compiler_gnu=$ac_compiler_gnu++fi+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6+GCC=`test $ac_compiler_gnu = yes && echo yes`+ac_test_CFLAGS=${CFLAGS+set}+ac_save_CFLAGS=$CFLAGS+CFLAGS="-g"+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6+if test "${ac_cv_prog_cc_g+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */++int+main ()+{++  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>conftest.er1+  ac_status=$?+  grep -v '^ *+' conftest.er1 >conftest.err+  rm -f conftest.er1+  cat conftest.err >&5+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+	 { ac_try='test -z "$ac_c_werror_flag"+			 || test ! -s conftest.err'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; } &&+	 { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_cv_prog_cc_g=yes+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ac_cv_prog_cc_g=no+fi+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext+fi+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6+if test "$ac_test_CFLAGS" = set; then+  CFLAGS=$ac_save_CFLAGS+elif test $ac_cv_prog_cc_g = yes; then+  if test "$GCC" = yes; then+    CFLAGS="-g -O2"+  else+    CFLAGS="-g"+  fi+else+  if test "$GCC" = yes; then+    CFLAGS="-O2"+  else+    CFLAGS=+  fi+fi+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6+if test "${ac_cv_prog_cc_stdc+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  ac_cv_prog_cc_stdc=no+ac_save_CC=$CC+cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdarg.h>+#include <stdio.h>+#include <sys/types.h>+#include <sys/stat.h>+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */+struct buf { int x; };+FILE * (*rcsopen) (struct buf *, struct stat *, int);+static char *e (p, i)+     char **p;+     int i;+{+  return p[i];+}+static char *f (char * (*g) (char **, int), char **p, ...)+{+  char *s;+  va_list v;+  va_start (v,p);+  s = g (p, va_arg (v,int));+  va_end (v);+  return s;+}++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has+   function prototypes and stuff, but not '\xHH' hex character constants.+   These don't provoke an error unfortunately, instead are silently treated+   as 'x'.  The following induces an error, until -std1 is added to get+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an+   array size at least.  It's necessary to write '\x00'==0 to get something+   that's true only with -std1.  */+int osf4_cc_array ['\x00' == 0 ? 1 : -1];++int test (int i, double x);+struct s1 {int (*f) (int a);};+struct s2 {int (*f) (double a);};+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);+int argc;+char **argv;+int+main ()+{+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];+  ;+  return 0;+}+_ACEOF+# Don't try gcc -ansi; that turns off useful extensions and+# breaks some systems' header files.+# AIX			-qlanglvl=ansi+# Ultrix and OSF/1	-std1+# HP-UX 10.20 and later	-Ae+# HP-UX older versions	-Aa -D_HPUX_SOURCE+# SVR4			-Xc -D__EXTENSIONS__+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"+do+  CC="$ac_save_CC $ac_arg"+  rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>conftest.er1+  ac_status=$?+  grep -v '^ *+' conftest.er1 >conftest.err+  rm -f conftest.er1+  cat conftest.err >&5+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+	 { ac_try='test -z "$ac_c_werror_flag"+			 || test ! -s conftest.err'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; } &&+	 { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_cv_prog_cc_stdc=$ac_arg+break+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++fi+rm -f conftest.err conftest.$ac_objext+done+rm -f conftest.$ac_ext conftest.$ac_objext+CC=$ac_save_CC++fi++case "x$ac_cv_prog_cc_stdc" in+  x|xno)+    echo "$as_me:$LINENO: result: none needed" >&5+echo "${ECHO_T}none needed" >&6 ;;+  *)+    echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6+    CC="$CC $ac_cv_prog_cc_stdc" ;;+esac++# Some people use a C++ compiler to compile C.  Since we use `exit',+# in C++ we need to declare it.  In case someone uses the same compiler+# for both compiling C and C++ we need to have the C++ compiler decide+# the declaration of exit, since it's the most demanding environment.+cat >conftest.$ac_ext <<_ACEOF+#ifndef __cplusplus+  choke me+#endif+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>conftest.er1+  ac_status=$?+  grep -v '^ *+' conftest.er1 >conftest.err+  rm -f conftest.er1+  cat conftest.err >&5+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+	 { ac_try='test -z "$ac_c_werror_flag"+			 || test ! -s conftest.err'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; } &&+	 { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  for ac_declaration in \+   '' \+   'extern "C" void std::exit (int) throw (); using std::exit;' \+   'extern "C" void std::exit (int); using std::exit;' \+   'extern "C" void exit (int) throw ();' \+   'extern "C" void exit (int);' \+   'void exit (int);'+do+  cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+$ac_declaration+#include <stdlib.h>+int+main ()+{+exit (42);+  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>conftest.er1+  ac_status=$?+  grep -v '^ *+' conftest.er1 >conftest.err+  rm -f conftest.er1+  cat conftest.err >&5+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+	 { ac_try='test -z "$ac_c_werror_flag"+			 || test ! -s conftest.err'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; } &&+	 { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  :+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++continue+fi+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext+  cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+$ac_declaration+int+main ()+{+exit (42);+  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>conftest.er1+  ac_status=$?+  grep -v '^ *+' conftest.er1 >conftest.err+  rm -f conftest.er1+  cat conftest.err >&5+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+	 { ac_try='test -z "$ac_c_werror_flag"+			 || test ! -s conftest.err'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; } &&+	 { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  break+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++fi+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext+done+rm -f conftest*+if test -n "$ac_declaration"; then+  echo '#ifdef __cplusplus' >>confdefs.h+  echo $ac_declaration      >>confdefs.h+  echo '#endif'             >>confdefs.h+fi++else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++fi+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext+ac_ext=c+ac_cpp='$CPP $CPPFLAGS'+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'+ac_compiler_gnu=$ac_cv_c_compiler_gnu+++ac_ext=c+ac_cpp='$CPP $CPPFLAGS'+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'+ac_compiler_gnu=$ac_cv_c_compiler_gnu+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6+# On Suns, sometimes $CPP names a directory.+if test -n "$CPP" && test -d "$CPP"; then+  CPP=+fi+if test -z "$CPP"; then+  if test "${ac_cv_prog_CPP+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+      # Double quotes because CPP needs to be expanded+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"+    do+      ac_preproc_ok=false+for ac_c_preproc_warn_flag in '' yes+do+  # Use a header file that comes with gcc, so configuring glibc+  # with a fresh cross-compiler works.+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since+  # <limits.h> exists even on freestanding compilers.+  # On the NeXT, cc -E runs the code through the compiler's parser,+  # not just through cpp. "Syntax error" is here to catch this case.+  cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#ifdef __STDC__+# include <limits.h>+#else+# include <assert.h>+#endif+		     Syntax error+_ACEOF+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1+  ac_status=$?+  grep -v '^ *+' conftest.er1 >conftest.err+  rm -f conftest.er1+  cat conftest.err >&5+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } >/dev/null; then+  if test -s conftest.err; then+    ac_cpp_err=$ac_c_preproc_warn_flag+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag+  else+    ac_cpp_err=+  fi+else+  ac_cpp_err=yes+fi+if test -z "$ac_cpp_err"; then+  :+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++  # Broken: fails on valid input.+continue+fi+rm -f conftest.err conftest.$ac_ext++  # OK, works on sane cases.  Now check whether non-existent headers+  # can be detected and how.+  cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <ac_nonexistent.h>+_ACEOF+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1+  ac_status=$?+  grep -v '^ *+' conftest.er1 >conftest.err+  rm -f conftest.er1+  cat conftest.err >&5+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } >/dev/null; then+  if test -s conftest.err; then+    ac_cpp_err=$ac_c_preproc_warn_flag+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag+  else+    ac_cpp_err=+  fi+else+  ac_cpp_err=yes+fi+if test -z "$ac_cpp_err"; then+  # Broken: success on invalid input.+continue+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++  # Passes both tests.+ac_preproc_ok=:+break+fi+rm -f conftest.err conftest.$ac_ext++done+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.+rm -f conftest.err conftest.$ac_ext+if $ac_preproc_ok; then+  break+fi++    done+    ac_cv_prog_CPP=$CPP++fi+  CPP=$ac_cv_prog_CPP+else+  ac_cv_prog_CPP=$CPP+fi+echo "$as_me:$LINENO: result: $CPP" >&5+echo "${ECHO_T}$CPP" >&6+ac_preproc_ok=false+for ac_c_preproc_warn_flag in '' yes+do+  # Use a header file that comes with gcc, so configuring glibc+  # with a fresh cross-compiler works.+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since+  # <limits.h> exists even on freestanding compilers.+  # On the NeXT, cc -E runs the code through the compiler's parser,+  # not just through cpp. "Syntax error" is here to catch this case.+  cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#ifdef __STDC__+# include <limits.h>+#else+# include <assert.h>+#endif+		     Syntax error+_ACEOF+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1+  ac_status=$?+  grep -v '^ *+' conftest.er1 >conftest.err+  rm -f conftest.er1+  cat conftest.err >&5+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } >/dev/null; then+  if test -s conftest.err; then+    ac_cpp_err=$ac_c_preproc_warn_flag+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag+  else+    ac_cpp_err=+  fi+else+  ac_cpp_err=yes+fi+if test -z "$ac_cpp_err"; then+  :+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++  # Broken: fails on valid input.+continue+fi+rm -f conftest.err conftest.$ac_ext++  # OK, works on sane cases.  Now check whether non-existent headers+  # can be detected and how.+  cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <ac_nonexistent.h>+_ACEOF+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1+  ac_status=$?+  grep -v '^ *+' conftest.er1 >conftest.err+  rm -f conftest.er1+  cat conftest.err >&5+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } >/dev/null; then+  if test -s conftest.err; then+    ac_cpp_err=$ac_c_preproc_warn_flag+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag+  else+    ac_cpp_err=+  fi+else+  ac_cpp_err=yes+fi+if test -z "$ac_cpp_err"; then+  # Broken: success on invalid input.+continue+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++  # Passes both tests.+ac_preproc_ok=:+break+fi+rm -f conftest.err conftest.$ac_ext++done+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.+rm -f conftest.err conftest.$ac_ext+if $ac_preproc_ok; then+  :+else+  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check+See \`config.log' for more details." >&5+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check+See \`config.log' for more details." >&2;}+   { (exit 1); exit 1; }; }+fi++ac_ext=c+ac_cpp='$CPP $CPPFLAGS'+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'+ac_compiler_gnu=$ac_cv_c_compiler_gnu+++cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <curl/curl.h>+_ACEOF+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1+  ac_status=$?+  grep -v '^ *+' conftest.er1 >conftest.err+  rm -f conftest.er1+  cat conftest.err >&5+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } >/dev/null; then+  if test -s conftest.err; then+    ac_cpp_err=$ac_c_preproc_warn_flag+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag+  else+    ac_cpp_err=+  fi+else+  ac_cpp_err=yes+fi+if test -z "$ac_cpp_err"; then+  :+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++  no_curl=yes+fi+rm -f conftest.err conftest.$ac_ext++# Build the package if we found curl stuff+if test "$no_curl" = yes; then+  { { echo "$as_me:$LINENO: error: curl libraries not found, so curl package cannot be built+See \`config.log' for more details." >&5+echo "$as_me: error: curl libraries not found, so curl package cannot be built+See \`config.log' for more details." >&2;}+   { (exit 1); exit 1; }; }+else+  CURL_BUILD_PACKAGE=yes+  BUILD_PACKAGE_BOOL=True+fi++++          ac_config_files="$ac_config_files curl.buildinfo"++cat >confcache <<\_ACEOF+# This file is a shell script that caches the results of configure+# tests run on this system so they can be shared between configure+# scripts and configure runs, see configure's option --config-cache.+# It is not useful on other systems.  If it contains results you don't+# want to keep, you may remove or edit it.+#+# config.status only pays attention to the cache file if you give it+# the --recheck option to rerun configure.+#+# `ac_cv_env_foo' variables (set or unset) will be overridden when+# loading this file, other *unset* `ac_cv_foo' will be assigned the+# following values.++_ACEOF++# The following way of writing the cache mishandles newlines in values,+# but we know of no workaround that is simple, portable, and efficient.+# So, don't put newlines in cache variables' values.+# Ultrix sh set writes to stderr and can't be redirected directly,+# and sets the high bit in the cache file unless we assign to the vars.+{+  (set) 2>&1 |+    case `(ac_space=' '; set | grep ac_space) 2>&1` in+    *ac_space=\ *)+      # `set' does not quote correctly, so add quotes (double-quote+      # substitution turns \\\\ into \\, and sed turns \\ into \).+      sed -n \+	"s/'/'\\\\''/g;+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"+      ;;+    *)+      # `set' quotes correctly as required by POSIX, so do not add quotes.+      sed -n \+	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"+      ;;+    esac;+} |+  sed '+     t clear+     : clear+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/+     t end+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/+     : end' >>confcache+if diff $cache_file confcache >/dev/null 2>&1; then :; else+  if test -w $cache_file; then+    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"+    cat confcache >$cache_file+  else+    echo "not updating unwritable cache $cache_file"+  fi+fi+rm -f confcache++test "x$prefix" = xNONE && prefix=$ac_default_prefix+# Let make expand exec_prefix.+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'++# VPATH may cause trouble with some makes, so we remove $(srcdir),+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and+# trailing colons and then remove the whole line if VPATH becomes empty+# (actually we leave an empty line to preserve line numbers).+if test "x$srcdir" = x.; then+  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{+s/:*\$(srcdir):*/:/;+s/:*\${srcdir}:*/:/;+s/:*@srcdir@:*/:/;+s/^\([^=]*=[	 ]*\):*/\1/;+s/:*$//;+s/^[^=]*=[	 ]*$//;+}'+fi++# Transform confdefs.h into DEFS.+# Protect against shell expansion while executing Makefile rules.+# Protect against Makefile macro expansion.+#+# If the first sed substitution is executed (which looks for macros that+# take arguments), then we branch to the quote section.  Otherwise,+# look for a macro that doesn't take arguments.+cat >confdef2opt.sed <<\_ACEOF+t clear+: clear+s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\),-D\1=\2,g+t quote+s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\),-D\1=\2,g+t quote+d+: quote+s,[	 `~#$^&*(){}\\|;'"<>?],\\&,g+s,\[,\\&,g+s,\],\\&,g+s,\$,$$,g+p+_ACEOF+# We use echo to avoid assuming a particular line-breaking character.+# The extra dot is to prevent the shell from consuming trailing+# line-breaks from the sub-command output.  A line-break within+# single-quotes doesn't work because, if this script is created in a+# platform that uses two characters for line-breaks (e.g., DOS), tr+# would break.+ac_LF_and_DOT=`echo; echo .`+DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`+rm -f confdef2opt.sed+++ac_libobjs=+ac_ltlibobjs=+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue+  # 1. Remove the extension, and $U if already installed.+  ac_i=`echo "$ac_i" |+	 sed 's/\$U\././;s/\.o$//;s/\.obj$//'`+  # 2. Add them.+  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"+  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'+done+LIBOBJS=$ac_libobjs++LTLIBOBJS=$ac_ltlibobjs++++: ${CONFIG_STATUS=./config.status}+ac_clean_files_save=$ac_clean_files+ac_clean_files="$ac_clean_files $CONFIG_STATUS"+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5+echo "$as_me: creating $CONFIG_STATUS" >&6;}+cat >$CONFIG_STATUS <<_ACEOF+#! $SHELL+# Generated by $as_me.+# Run this file to recreate the current configuration.+# Compiler output produced by configure, useful for debugging+# configure, is in config.log if it exists.++debug=false+ac_cs_recheck=false+ac_cs_silent=false+SHELL=\${CONFIG_SHELL-$SHELL}+_ACEOF++cat >>$CONFIG_STATUS <<\_ACEOF+## --------------------- ##+## M4sh Initialization.  ##+## --------------------- ##++# Be Bourne compatible+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then+  emulate sh+  NULLCMD=:+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which+  # is contrary to our usage.  Disable this feature.+  alias -g '${1+"$@"}'='"$@"'+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then+  set -o posix+fi+DUALCASE=1; export DUALCASE # for MKS sh++# Support unset when possible.+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then+  as_unset=unset+else+  as_unset=false+fi+++# Work around bugs in pre-3.0 UWIN ksh.+$as_unset ENV MAIL MAILPATH+PS1='$ '+PS2='> '+PS4='+ '++# NLS nuisances.+for as_var in \+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \+  LC_TELEPHONE LC_TIME+do+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then+    eval $as_var=C; export $as_var+  else+    $as_unset $as_var+  fi+done++# Required to use basename.+if expr a : '\(a\)' >/dev/null 2>&1; then+  as_expr=expr+else+  as_expr=false+fi++if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then+  as_basename=basename+else+  as_basename=false+fi+++# Name of the executable.+as_me=`$as_basename "$0" ||+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \+	 X"$0" : 'X\(//\)$' \| \+	 X"$0" : 'X\(/\)$' \| \+	 .     : '\(.\)' 2>/dev/null ||+echo X/"$0" |+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }+  	  /^X\/\(\/\).*/{ s//\1/; q; }+  	  s/.*/./; q'`+++# PATH needs CR, and LINENO needs CR and PATH.+# Avoid depending upon Character Ranges.+as_cr_letters='abcdefghijklmnopqrstuvwxyz'+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'+as_cr_Letters=$as_cr_letters$as_cr_LETTERS+as_cr_digits='0123456789'+as_cr_alnum=$as_cr_Letters$as_cr_digits++# The user is always right.+if test "${PATH_SEPARATOR+set}" != set; then+  echo "#! /bin/sh" >conf$$.sh+  echo  "exit 0"   >>conf$$.sh+  chmod +x conf$$.sh+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then+    PATH_SEPARATOR=';'+  else+    PATH_SEPARATOR=:+  fi+  rm -f conf$$.sh+fi+++  as_lineno_1=$LINENO+  as_lineno_2=$LINENO+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`+  test "x$as_lineno_1" != "x$as_lineno_2" &&+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {+  # Find who we are.  Look in the path if we contain no path at all+  # relative or not.+  case $0 in+    *[\\/]* ) as_myself=$0 ;;+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  test -z "$as_dir" && as_dir=.+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break+done++       ;;+  esac+  # We did not find ourselves, most probably we were run as `sh COMMAND'+  # in which case we are not to be found in the path.+  if test "x$as_myself" = x; then+    as_myself=$0+  fi+  if test ! -f "$as_myself"; then+    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}+   { (exit 1); exit 1; }; }+  fi+  case $CONFIG_SHELL in+  '')+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH+do+  IFS=$as_save_IFS+  test -z "$as_dir" && as_dir=.+  for as_base in sh bash ksh sh5; do+	 case $as_dir in+	 /*)+	   if ("$as_dir/$as_base" -c '+  as_lineno_1=$LINENO+  as_lineno_2=$LINENO+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`+  test "x$as_lineno_1" != "x$as_lineno_2" &&+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }+	     CONFIG_SHELL=$as_dir/$as_base+	     export CONFIG_SHELL+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}+	   fi;;+	 esac+       done+done+;;+  esac++  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO+  # uniformly replaced by the line number.  The first 'sed' inserts a+  # line-number line before each line; the second 'sed' does the real+  # work.  The second script uses 'N' to pair each line-number line+  # with the numbered line, and appends trailing '-' during+  # substitution so that $LINENO is not a special case at line end.+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)+  sed '=' <$as_myself |+    sed '+      N+      s,$,-,+      : loop+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,+      t loop+      s,-$,,+      s,^['$as_cr_digits']*\n,,+    ' >$as_me.lineno &&+  chmod +x $as_me.lineno ||+    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}+   { (exit 1); exit 1; }; }++  # Don't try to exec as it changes $[0], causing all sort of problems+  # (the dirname of $[0] is not the place where we might find the+  # original and so on.  Autoconf is especially sensible to this).+  . ./$as_me.lineno+  # Exit status is that of the last command.+  exit+}+++case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in+  *c*,-n*) ECHO_N= ECHO_C='+' ECHO_T='	' ;;+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;+esac++if expr a : '\(a\)' >/dev/null 2>&1; then+  as_expr=expr+else+  as_expr=false+fi++rm -f conf$$ conf$$.exe conf$$.file+echo >conf$$.file+if ln -s conf$$.file conf$$ 2>/dev/null; then+  # We could just check for DJGPP; but this test a) works b) is more generic+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).+  if test -f conf$$.exe; then+    # Don't use ln at all; we don't have any links+    as_ln_s='cp -p'+  else+    as_ln_s='ln -s'+  fi+elif ln conf$$.file conf$$ 2>/dev/null; then+  as_ln_s=ln+else+  as_ln_s='cp -p'+fi+rm -f conf$$ conf$$.exe conf$$.file++if mkdir -p . 2>/dev/null; then+  as_mkdir_p=:+else+  test -d ./-p && rmdir ./-p+  as_mkdir_p=false+fi++as_executable_p="test -f"++# Sed expression to map a string onto a valid CPP name.+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"++# Sed expression to map a string onto a valid variable name.+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"+++# IFS+# We need space, tab and new line, in precisely that order.+as_nl='+'+IFS=" 	$as_nl"++# CDPATH.+$as_unset CDPATH++exec 6>&1++# Open the log real soon, to keep \$[0] and so on meaningful, and to+# report actual input values of CONFIG_FILES etc. instead of their+# values after options handling.  Logging --version etc. is OK.+exec 5>>config.log+{+  echo+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX+## Running $as_me. ##+_ASBOX+} >&5+cat >&5 <<_CSEOF++This file was extended by Haskell curl package $as_me 1.1, which was+generated by GNU Autoconf 2.59.  Invocation command line was++  CONFIG_FILES    = $CONFIG_FILES+  CONFIG_HEADERS  = $CONFIG_HEADERS+  CONFIG_LINKS    = $CONFIG_LINKS+  CONFIG_COMMANDS = $CONFIG_COMMANDS+  $ $0 $@++_CSEOF+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5+echo >&5+_ACEOF++# Files that config.status was made for.+if test -n "$ac_config_files"; then+  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS+fi++if test -n "$ac_config_headers"; then+  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS+fi++if test -n "$ac_config_links"; then+  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS+fi++if test -n "$ac_config_commands"; then+  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS+fi++cat >>$CONFIG_STATUS <<\_ACEOF++ac_cs_usage="\+\`$as_me' instantiates files from templates according to the+current configuration.++Usage: $0 [OPTIONS] [FILE]...++  -h, --help       print this help, then exit+  -V, --version    print version number, then exit+  -q, --quiet      do not print progress messages+  -d, --debug      don't remove temporary files+      --recheck    update $as_me by reconfiguring in the same conditions+  --file=FILE[:TEMPLATE]+		   instantiate the configuration file FILE++Configuration files:+$config_files++Report bugs to <bug-autoconf@gnu.org>."+_ACEOF++cat >>$CONFIG_STATUS <<_ACEOF+ac_cs_version="\\+Haskell curl package config.status 1.1+configured by $0, generated by GNU Autoconf 2.59,+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"++Copyright (C) 2003 Free Software Foundation, Inc.+This config.status script is free software; the Free Software Foundation+gives unlimited permission to copy, distribute and modify it."+srcdir=$srcdir+_ACEOF++cat >>$CONFIG_STATUS <<\_ACEOF+# If no file are specified by the user, then we need to provide default+# value.  By we need to know if files were specified by the user.+ac_need_defaults=:+while test $# != 0+do+  case $1 in+  --*=*)+    ac_option=`expr "x$1" : 'x\([^=]*\)='`+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`+    ac_shift=:+    ;;+  -*)+    ac_option=$1+    ac_optarg=$2+    ac_shift=shift+    ;;+  *) # This is not an option, so the user has probably given explicit+     # arguments.+     ac_option=$1+     ac_need_defaults=false;;+  esac++  case $ac_option in+  # Handling of the options.+_ACEOF+cat >>$CONFIG_STATUS <<\_ACEOF+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)+    ac_cs_recheck=: ;;+  --version | --vers* | -V )+    echo "$ac_cs_version"; exit 0 ;;+  --he | --h)+    # Conflict between --help and --header+    { { echo "$as_me:$LINENO: error: ambiguous option: $1+Try \`$0 --help' for more information." >&5+echo "$as_me: error: ambiguous option: $1+Try \`$0 --help' for more information." >&2;}+   { (exit 1); exit 1; }; };;+  --help | --hel | -h )+    echo "$ac_cs_usage"; exit 0 ;;+  --debug | --d* | -d )+    debug=: ;;+  --file | --fil | --fi | --f )+    $ac_shift+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"+    ac_need_defaults=false;;+  --header | --heade | --head | --hea )+    $ac_shift+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"+    ac_need_defaults=false;;+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \+  | -silent | --silent | --silen | --sile | --sil | --si | --s)+    ac_cs_silent=: ;;++  # This is an error.+  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1+Try \`$0 --help' for more information." >&5+echo "$as_me: error: unrecognized option: $1+Try \`$0 --help' for more information." >&2;}+   { (exit 1); exit 1; }; } ;;++  *) ac_config_targets="$ac_config_targets $1" ;;++  esac+  shift+done++ac_configure_extra_args=++if $ac_cs_silent; then+  exec 6>/dev/null+  ac_configure_extra_args="$ac_configure_extra_args --silent"+fi++_ACEOF+cat >>$CONFIG_STATUS <<_ACEOF+if \$ac_cs_recheck; then+  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6+  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion+fi++_ACEOF++++++cat >>$CONFIG_STATUS <<\_ACEOF+for ac_config_target in $ac_config_targets+do+  case "$ac_config_target" in+  # Handling of arguments.+  "curl.buildinfo" ) CONFIG_FILES="$CONFIG_FILES curl.buildinfo" ;;+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}+   { (exit 1); exit 1; }; };;+  esac+done++# If the user did not use the arguments to specify the items to instantiate,+# then the envvar interface is used.  Set only those that are not.+# We use the long form for the default assignment because of an extremely+# bizarre bug on SunOS 4.1.3.+if $ac_need_defaults; then+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files+fi++# Have a temporary directory for convenience.  Make it in the build tree+# simply because there is no reason to put it here, and in addition,+# creating and moving files from /tmp can sometimes cause problems.+# Create a temporary directory, and hook for its removal unless debugging.+$debug ||+{+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0+  trap '{ (exit 1); exit 1; }' 1 2 13 15+}++# Create a (secure) tmp directory for tmp files.++{+  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&+  test -n "$tmp" && test -d "$tmp"+}  ||+{+  tmp=./confstat$$-$RANDOM+  (umask 077 && mkdir $tmp)+} ||+{+   echo "$me: cannot create a temporary directory in ." >&2+   { (exit 1); exit 1; }+}++_ACEOF++cat >>$CONFIG_STATUS <<_ACEOF++#+# CONFIG_FILES section.+#++# No need to generate the scripts if there are no CONFIG_FILES.+# This happens for instance when ./config.status config.h+if test -n "\$CONFIG_FILES"; then+  # Protect against being on the right side of a sed subst in config.status.+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF+s,@SHELL@,$SHELL,;t t+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t+s,@exec_prefix@,$exec_prefix,;t t+s,@prefix@,$prefix,;t t+s,@program_transform_name@,$program_transform_name,;t t+s,@bindir@,$bindir,;t t+s,@sbindir@,$sbindir,;t t+s,@libexecdir@,$libexecdir,;t t+s,@datadir@,$datadir,;t t+s,@sysconfdir@,$sysconfdir,;t t+s,@sharedstatedir@,$sharedstatedir,;t t+s,@localstatedir@,$localstatedir,;t t+s,@libdir@,$libdir,;t t+s,@includedir@,$includedir,;t t+s,@oldincludedir@,$oldincludedir,;t t+s,@infodir@,$infodir,;t t+s,@mandir@,$mandir,;t t+s,@build_alias@,$build_alias,;t t+s,@host_alias@,$host_alias,;t t+s,@target_alias@,$target_alias,;t t+s,@DEFS@,$DEFS,;t t+s,@ECHO_C@,$ECHO_C,;t t+s,@ECHO_N@,$ECHO_N,;t t+s,@ECHO_T@,$ECHO_T,;t t+s,@LIBS@,$LIBS,;t t+s,@CC@,$CC,;t t+s,@CFLAGS@,$CFLAGS,;t t+s,@LDFLAGS@,$LDFLAGS,;t t+s,@CPPFLAGS@,$CPPFLAGS,;t t+s,@ac_ct_CC@,$ac_ct_CC,;t t+s,@EXEEXT@,$EXEEXT,;t t+s,@OBJEXT@,$OBJEXT,;t t+s,@CPP@,$CPP,;t t+s,@CURL_BUILD_PACKAGE@,$CURL_BUILD_PACKAGE,;t t+s,@BUILD_PACKAGE_BOOL@,$BUILD_PACKAGE_BOOL,;t t+s,@LIBOBJS@,$LIBOBJS,;t t+s,@LTLIBOBJS@,$LTLIBOBJS,;t t+CEOF++_ACEOF++  cat >>$CONFIG_STATUS <<\_ACEOF+  # Split the substitutions into bite-sized pieces for seds with+  # small command number limits, like on Digital OSF/1 and HP-UX.+  ac_max_sed_lines=48+  ac_sed_frag=1 # Number of current file.+  ac_beg=1 # First line for current file.+  ac_end=$ac_max_sed_lines # Line after last line for current file.+  ac_more_lines=:+  ac_sed_cmds=+  while $ac_more_lines; do+    if test $ac_beg -gt 1; then+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag+    else+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag+    fi+    if test ! -s $tmp/subs.frag; then+      ac_more_lines=false+    else+      # The purpose of the label and of the branching condition is to+      # speed up the sed processing (if there are no `@' at all, there+      # is no need to browse any of the substitutions).+      # These are the two extra sed commands mentioned above.+      (echo ':t+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed+      if test -z "$ac_sed_cmds"; then+	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"+      else+	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"+      fi+      ac_sed_frag=`expr $ac_sed_frag + 1`+      ac_beg=$ac_end+      ac_end=`expr $ac_end + $ac_max_sed_lines`+    fi+  done+  if test -z "$ac_sed_cmds"; then+    ac_sed_cmds=cat+  fi+fi # test -n "$CONFIG_FILES"++_ACEOF+cat >>$CONFIG_STATUS <<\_ACEOF+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".+  case $ac_file in+  - | *:- | *:-:* ) # input from stdin+	cat >$tmp/stdin+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;+  * )   ac_file_in=$ac_file.in ;;+  esac++  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.+  ac_dir=`(dirname "$ac_file") 2>/dev/null ||+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \+	 X"$ac_file" : 'X\(//\)[^/]' \| \+	 X"$ac_file" : 'X\(//\)$' \| \+	 X"$ac_file" : 'X\(/\)' \| \+	 .     : '\(.\)' 2>/dev/null ||+echo X"$ac_file" |+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }+  	  /^X\(\/\/\)$/{ s//\1/; q; }+  	  /^X\(\/\).*/{ s//\1/; q; }+  	  s/.*/./; q'`+  { if $as_mkdir_p; then+    mkdir -p "$ac_dir"+  else+    as_dir="$ac_dir"+    as_dirs=+    while test ! -d "$as_dir"; do+      as_dirs="$as_dir $as_dirs"+      as_dir=`(dirname "$as_dir") 2>/dev/null ||+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \+	 X"$as_dir" : 'X\(//\)[^/]' \| \+	 X"$as_dir" : 'X\(//\)$' \| \+	 X"$as_dir" : 'X\(/\)' \| \+	 .     : '\(.\)' 2>/dev/null ||+echo X"$as_dir" |+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }+  	  /^X\(\/\/\)$/{ s//\1/; q; }+  	  /^X\(\/\).*/{ s//\1/; q; }+  	  s/.*/./; q'`+    done+    test ! -n "$as_dirs" || mkdir $as_dirs+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}+   { (exit 1); exit 1; }; }; }++  ac_builddir=.++if test "$ac_dir" != .; then+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`+  # A "../" for each directory in $ac_dir_suffix.+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`+else+  ac_dir_suffix= ac_top_builddir=+fi++case $srcdir in+  .)  # No --srcdir option.  We are building in place.+    ac_srcdir=.+    if test -z "$ac_top_builddir"; then+       ac_top_srcdir=.+    else+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`+    fi ;;+  [\\/]* | ?:[\\/]* )  # Absolute path.+    ac_srcdir=$srcdir$ac_dir_suffix;+    ac_top_srcdir=$srcdir ;;+  *) # Relative path.+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix+    ac_top_srcdir=$ac_top_builddir$srcdir ;;+esac++# Do not use `cd foo && pwd` to compute absolute paths, because+# the directories may not exist.+case `pwd` in+.) ac_abs_builddir="$ac_dir";;+*)+  case "$ac_dir" in+  .) ac_abs_builddir=`pwd`;;+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;+  *) ac_abs_builddir=`pwd`/"$ac_dir";;+  esac;;+esac+case $ac_abs_builddir in+.) ac_abs_top_builddir=${ac_top_builddir}.;;+*)+  case ${ac_top_builddir}. in+  .) ac_abs_top_builddir=$ac_abs_builddir;;+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;+  esac;;+esac+case $ac_abs_builddir in+.) ac_abs_srcdir=$ac_srcdir;;+*)+  case $ac_srcdir in+  .) ac_abs_srcdir=$ac_abs_builddir;;+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;+  esac;;+esac+case $ac_abs_builddir in+.) ac_abs_top_srcdir=$ac_top_srcdir;;+*)+  case $ac_top_srcdir in+  .) ac_abs_top_srcdir=$ac_abs_builddir;;+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;+  esac;;+esac++++  if test x"$ac_file" != x-; then+    { echo "$as_me:$LINENO: creating $ac_file" >&5+echo "$as_me: creating $ac_file" >&6;}+    rm -f "$ac_file"+  fi+  # Let's still pretend it is `configure' which instantiates (i.e., don't+  # use $as_me), people would be surprised to read:+  #    /* config.h.  Generated by config.status.  */+  if test x"$ac_file" = x-; then+    configure_input=+  else+    configure_input="$ac_file.  "+  fi+  configure_input=$configure_input"Generated from `echo $ac_file_in |+				     sed 's,.*/,,'` by configure."++  # First look for the input files in the build tree, otherwise in the+  # src tree.+  ac_file_inputs=`IFS=:+    for f in $ac_file_in; do+      case $f in+      -) echo $tmp/stdin ;;+      [\\/$]*)+	 # Absolute (can't be DOS-style, as IFS=:)+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5+echo "$as_me: error: cannot find input file: $f" >&2;}+   { (exit 1); exit 1; }; }+	 echo "$f";;+      *) # Relative+	 if test -f "$f"; then+	   # Build tree+	   echo "$f"+	 elif test -f "$srcdir/$f"; then+	   # Source tree+	   echo "$srcdir/$f"+	 else+	   # /dev/null tree+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5+echo "$as_me: error: cannot find input file: $f" >&2;}+   { (exit 1); exit 1; }; }+	 fi;;+      esac+    done` || { (exit 1); exit 1; }+_ACEOF+cat >>$CONFIG_STATUS <<_ACEOF+  sed "$ac_vpsub+$extrasub+_ACEOF+cat >>$CONFIG_STATUS <<\_ACEOF+:t+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b+s,@configure_input@,$configure_input,;t t+s,@srcdir@,$ac_srcdir,;t t+s,@abs_srcdir@,$ac_abs_srcdir,;t t+s,@top_srcdir@,$ac_top_srcdir,;t t+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t+s,@builddir@,$ac_builddir,;t t+s,@abs_builddir@,$ac_abs_builddir,;t t+s,@top_builddir@,$ac_top_builddir,;t t+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out+  rm -f $tmp/stdin+  if test x"$ac_file" != x-; then+    mv $tmp/out $ac_file+  else+    cat $tmp/out+    rm -f $tmp/out+  fi++done+_ACEOF++cat >>$CONFIG_STATUS <<\_ACEOF++{ (exit 0); exit 0; }+_ACEOF+chmod +x $CONFIG_STATUS+ac_clean_files=$ac_clean_files_save+++# configure is writing to config.log, and then calls config.status.+# config.status does its own redirection, appending to config.log.+# Unfortunately, on DOS this fails, as config.log is still kept open+# by configure, so config.status won't be able to write to it; its+# output is simply discarded.  So we exec the FD to /dev/null,+# effectively closing config.log, so it can be properly (re)opened and+# appended to by config.status.  When coming back to configure, we+# need to make the FD available again.+if test "$no_create" != yes; then+  ac_cs_success=:+  ac_config_status_args=+  test "$silent" = yes &&+    ac_config_status_args="$ac_config_status_args --quiet"+  exec 5>/dev/null+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false+  exec 5>>config.log+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which+  # would make configure fail if this is the last instruction.+  $ac_cs_success || { (exit 1); exit 1; }+fi+
+ configure.ac view
@@ -0,0 +1,16 @@+AC_INIT([Haskell curl package], [1.1], [dons@galois.com], [curl])++AC_TRY_CPP([#include <curl/curl.h>],,[no_curl=yes])++# Build the package if we found curl stuff+if test "$no_curl" = yes; then+  AC_MSG_FAILURE([curl libraries not found, so curl package cannot be built])+else+  CURL_BUILD_PACKAGE=yes+  BUILD_PACKAGE_BOOL=True+fi+AC_SUBST([CURL_BUILD_PACKAGE])+AC_SUBST([BUILD_PACKAGE_BOOL])++AC_CONFIG_FILES([curl.buildinfo])+AC_OUTPUT
+ curl.buildinfo.in view
@@ -0,0 +1,6 @@+-- @configure_input@+-- System-dependent values used by Distribution.Simple.defaultUserHooks+--+buildable:  @BUILD_PACKAGE_BOOL@+cc-options: @CPPFLAGS@+ld-options: @LDFLAGS@
+ curl.cabal view
@@ -0,0 +1,45 @@+name:               curl+version:            1.3+synopsis:           Haskell binding to libcurl+description:+    libcurl is a client-side URL transfer library, supporting FTP, FTPS, HTTP,+    HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE.  libcurl supports+    SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload,+    proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate,+    Kerberos4), file transfer resume, http proxy tunneling and more!+    .+    This package provides a Haskell binding to libcurl.+    .+category:           Network+license:            BSD3+license-file:       LICENSE+author:             Sigbjorn Finne+maintainer:         emertens@galois.com+build-depends:      base+build-type:         Configure+cabal-version:      >= 1.2+extra-source-files: configure, configure.ac, curl.buildinfo.in++flag new-base+  Description: Build with new smaller base library+  Default: False++library+  Exposed-modules: Network.Curl+                   Network.Curl.Code+                   Network.Curl.Info+                   Network.Curl.Opts+                   Network.Curl.Post+                   Network.Curl.Types+                   Network.Curl.Easy+                   Network.Curl.Debug++  Extra-libraries: curl+  Extensions:      CPP, ForeignFunctionInterface+  Ghc-options:     -Wall -fvia-C -O2++  Build-Depends: base+  if flag(new-base)+    Build-depends: base >= 3, containers, haskell98+  else+    Build-depends: base < 3