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 +27/−0
- Network/Curl.hs +284/−0
- Network/Curl/Code.hs +106/−0
- Network/Curl/Debug.hs +24/−0
- Network/Curl/Easy.hs +208/−0
- Network/Curl/Info.hs +196/−0
- Network/Curl/Opts.hs +514/−0
- Network/Curl/Post.hs +125/−0
- Network/Curl/Types.hs +154/−0
- Setup.hs +6/−0
- configure +3390/−0
- configure.ac +16/−0
- curl.buildinfo.in +6/−0
- curl.cabal +45/−0
+ 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