packages feed

shpider 0.1.1 → 0.2

raw patch · 19 files changed

+60/−6079 lines, 19 filesdep +curldep +web-encodingsnew-uploader

Dependencies added: curl, web-encodings

Files

LICENSE view
@@ -1,7 +1,19 @@ Copyright (c) 2009-2010 Johnny Morrice -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:+Permission is hereby granted, free of charge, to any person obtaining a copy of+this software and associated documentation files (the "Software"), to deal in+the Software without restriction, including without limitation the rights to+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies+of the Software, and to permit persons to whom the Software is furnished to do+so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.+The above copyright notice and this permission notice shall be included in all+copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE+SOFTWARE.
− LICENSE.CURL
@@ -1,27 +0,0 @@-Copyright (c) 2007-2009 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/Shpider.hs view
@@ -47,6 +47,7 @@    , getLinksByTextRegex    , getLinksByAddressRegex    , getFormsByAction+   , getFormsHasAction    , currentLinks    , currentForms    , parsePage@@ -56,7 +57,7 @@    )     where -import Network.Shpider.Curl.Curl +import Network.Curl   import Text.HTML.TagSoup import Text.Regex.Posix@@ -73,6 +74,8 @@ import Network.Shpider.Forms import Network.Shpider.Links +import Web.Encodings+ -- | if `keepTrack` has been set, then haveVisited will return `True` if the given URL has been visited. haveVisited :: String -> Shpider Bool haveVisited uncleanUrl = do@@ -134,8 +137,13 @@  curlDownloadPost url fields = do    shpider <- get-   res <- liftIO $ curlGetString url $ CurlPostFields ( map toPostField fields ) : curlOpts shpider+   res <- liftIO $ curlGetString url $ opts shpider    mkRes url res+   where+    opts sh = +      [ CurlPostFields (map toPostField fields)+      , CurlPost True+      ] ++ curlOpts sh   curlDownloadHead urlStr = do@@ -238,7 +246,7 @@          mabsAddr     toPostField ( name , value ) =-   name ++ "=" ++ value+   encodeUrl name ++ "=" ++ encodeUrl value  -- | Return the links on the current page. currentLinks :: Shpider [ Link ]@@ -283,6 +291,10 @@    maybe ( return [ ] )          ( \ url -> fmap (filter $ (==) url . action) currentForms )          murl++getFormsHasAction :: (String -> Bool) -> Shpider [Form] +getFormsHasAction f = fmap (filter $ f . action ) currentForms+    -- | Get all links whose address matches this regex. getLinksByAddressRegex :: String -> Shpider [ Link ]
Network/Shpider/Code.hs view
@@ -25,13 +25,13 @@ -}  module Network.Shpider.Code -   ( module Network.Shpider.Curl.Code+   ( module Network.Curl.Code    , ccToSh    , ShpiderCode (..)    )    where -import Network.Shpider.Curl.Code+import Network.Curl.Code  -- | Converts a `CurlCode` to a `ShpiderCode`. ccToSh :: CurlCode -> ShpiderCode
− Network/Shpider/Curl/Code.hs
@@ -1,109 +0,0 @@-{-# LANGUAGE ForeignFunctionInterface #-}-{-# OPTIONS -fvia-C -#include "curl/curl.h" #-}------------------------------------------------------------------------ |--- Module    : Network.Curl.Code--- Copyright : (c) Galois Inc 2007-2009--- License   : BSD3------ Maintainer: Sigbjorn Finne <sof@galois.com>--- Stability : provisional--- Portability: portable------ Representing Curl's status codes as a Haskell type.--------------------------------------------------------------------------module Network.Shpider.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- | CurlAgain- | CurlSSLCRLBadFile- | CurlSSLIssuerError-   deriving ( Eq, Show, Enum )--toCode :: CInt -> CurlCode-toCode x = toEnum (fromIntegral x)
− Network/Shpider/Curl/Curl.hs
@@ -1,502 +0,0 @@-{-# OPTIONS_GHC -XTypeSynonymInstances -XFlexibleInstances #-}--- | Note: As you may have gathered, this is not the official module.  The cookie handling in the curl package is non-determistic in its handling of cookies as they are written from curl_easy_cleanup during garbage collection, easy_cleanup is called explicitely, writing the cookies instantly . However, I have preserved the following copyright notice to give credit where it's due.------------------------------------------------------------------------ Module    : Network.Curl--- Copyright : (c) 2007-2009, Galois Inc --- License   : BSD3------ Maintainer: Sigbjorn Finne <sof@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.Shpider.Curl.Curl-       ( module Network.Shpider.Curl.Opts-       , module Network.Shpider.Curl.Easy-       , module Network.Shpider.Curl.Post-       , module Network.Shpider.Curl.Info-       , module Network.Shpider.Curl.Types-       , module Network.Shpider.Curl.Code--         -- controlled export of this module: -         -- (ToDo: tighten it up even more)-       , withCurlDo          -- :: IO a -> IO a-       , setopts             -- :: Curl -> [CurlOption] -> IO ()--       , CurlResponse_(..)-       , CurlResponse--          -- get resources and assoc. metadata.-       , curlGet               -- :: URLString -> [CurlOption] -> IO ()-       , curlGetString         -- :: URLString -> [CurlOption] -> IO (CurlCode, String)-       , curlGetResponse       -- :: URLString -> [CurlOption] -> IO CurlResponse-       , perform_with_response -- :: Curl -> IO CurlResponse-       , do_curl        -- :: Curl -> URLString -> [CurlOption] -> IO CurlResponse--       , curlGetString_         -- :: CurlBuffer ty => URLString -> [CurlOption] -> IO (CurlCode, ty)-       , curlGetResponse_       -- :: URLString -> [CurlOption] -> IO (CurlResponse_ a b)-       , perform_with_response_ -- :: Curl -> IO (CurlResponse_ a b)-       , do_curl_               -- :: Curl -> URLString -> [CurlOption] -> IO (CurlResponse_ a b)-       , curlHead_              -- :: URLString-                                -- -> [CurlOption]-                                -- -> IO (String,ty)--          -- 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--       , gatherOutput_      -- :: (CStringLen -> IO ()) -> WriteFunction-       , CurlBuffer(..)-       , CurlHeader(..)--       , method_GET          -- :: [CurlOption]-       , method_HEAD         -- :: [CurlOption]-       , method_POST         -- :: [CurlOption]--       , parseStatusNHeaders-       , parseHeader-          -- ToDo: get rid of (pretty sure I can already...)-       , concRev-       ) where--import Network.Shpider.Curl.Opts-import Network.Shpider.Curl.Code-import Network.Shpider.Curl.Types-import Network.Shpider.Curl.Post-import Network.Shpider.Curl.Info-import Network.Shpider.Curl.Easy--import Foreign.C.String-import Data.IORef-import Data.List(isPrefixOf)-import System.IO-import Control.Exception ( finally )--import Data.ByteString ( ByteString, packCStringLen )-import qualified Data.ByteString as BS ( concat )--import qualified Data.ByteString.Lazy as LazyBS ( ByteString, fromChunks )---- | The @CurlBuffer@ class encodes the representation--- of response buffers, allowing you to provide your--- own app-specific buffer reps to be used..or use--- one of the standard instances (String and ByteStrings.)----class CurlBuffer bufferTy where-  newIncoming    :: IO (IO bufferTy, CStringLen -> IO ())-  ---- | The @CurlHeader@ class encodes the representation--- of response headers. Similar to 'CurlBuffer'.----class CurlHeader headerTy where-  newIncomingHeader :: IO (IO (String{-status-},headerTy), CStringLen -> IO ())--instance CurlHeader [(String,String)] where-  newIncomingHeader = do-    ref <- newIORef []-    let readFinalHeader = do-          hss <- readIORef ref-          let (st,hs) = parseStatusNHeaders (concRev [] hss)-          return (st,hs)-    return (readFinalHeader, \ v -> peekCStringLen v >>= \ x -> modifyIORef ref (x:))--instance CurlBuffer String where-  newIncoming = do-    ref <- newIORef []-    let readFinal = readIORef ref >>= return . concat . reverse-    return (readFinal, \ v -> peekCStringLen v >>= \ x -> modifyIORef ref (x:))--instance CurlBuffer ByteString where-  newIncoming = do-    ref <- newIORef []-    let readFinal = readIORef ref >>= return . BS.concat . reverse-    return (readFinal, \ v -> packCStringLen v >>= \ x -> modifyIORef ref (x:))--instance CurlBuffer [ByteString] where-  newIncoming = do-    ref <- newIORef []-    let readFinal = readIORef ref >>= return . reverse-    return (readFinal, \ v -> packCStringLen v >>= \ x -> modifyIORef ref (x:))--instance CurlBuffer LazyBS.ByteString where-  newIncoming = do-    ref <- newIORef []-    let readFinal = readIORef ref >>= return . LazyBS.fromChunks . reverse-    return (readFinal, \ v -> packCStringLen v >>= \ x -> modifyIORef ref (x:))---- | 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-                   finally m curl_global_cleanup---- | 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_no_cleanup >>= \ 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-  manual_cleanup 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_no_cleanup >>= \ 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-  manual_cleanup h-  lss <- readIORef ref-  return (rc, concat $ reverse lss)--curlGetString_ :: (CurlBuffer ty)-               => URLString-               -> [CurlOption]-               -> IO (CurlCode, ty)-curlGetString_ url opts = initialize_no_cleanup >>= \ h -> do-  (finalBody, gatherBody) <- newIncoming-  setopt h (CurlFailOnError True)-  setDefaultSSLOpts h url-  setopt h (CurlURL url)-  setopt h (CurlWriteFunction (gatherOutput_ gatherBody))-  mapM_ (setopt h) opts-  rc <- perform h-  manual_cleanup h-  bs  <- finalBody-  return (rc, bs)--type CurlResponse = CurlResponse_ [(String,String)] String---- | '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_ headerTy bodyTy- = CurlResponse-     { respCurlCode   :: CurlCode-     , respStatus     :: Int-     , respStatusLine :: String-     , respHeaders    :: headerTy-     , respBody       :: bodyTy-     , respGetInfo    :: (Info -> IO InfoValue)-     }----- | @curlGetResponse url opts@ performs a @GET@, returning all the info--- it can lay its hands on in the response, a value of type 'CurlResponse'.--- The representation of the body is overloaded-curlGetResponse_ :: (CurlHeader hdr, CurlBuffer ty)-                 => URLString-                 -> [CurlOption]-                 -> IO (CurlResponse_ hdr ty)-curlGetResponse_ url opts = do-  h <- initialize_no_cleanup-   -- Note: later options may (and should, probably) override these defaults.-  setopt  h (CurlFailOnError True)-  setDefaultSSLOpts h url-  setopt  h (CurlURL url)-  mapM_ (setopt h) opts-  -- note that users cannot over-write the body and header handler-  -- which makes sense because otherwise we will return a bogus reposnse.-  manual_perform_with_response_ h --{-# DEPRECATED curlGetResponse "Switch to using curlGetResponse_" #-}-curlGetResponse :: URLString-                -> [CurlOption]-                -> IO CurlResponse-curlGetResponse url opts = curlGetResponse_ url opts---- | Perform the actions already specified on the handle.--- Collects useful information about the returned message.--- Note that this function sets the--- 'CurlWriteFunction' and 'CurlHeaderFunction' options.-perform_with_response :: (CurlHeader hdrTy, CurlBuffer bufTy)-                      => Curl-		      -> IO (CurlResponse_ hdrTy bufTy)-perform_with_response h = perform_with_response_ h--{-# DEPRECATED perform_with_response "Consider switching to perform_with_response_" #-}---- | Perform the actions already specified on the handle.--- Collects useful information about the returned message.--- Note that this function sets the--- 'CurlWriteFunction' and 'CurlHeaderFunction' options.--- The returned payload is overloaded over the representation of--- both headers and body via the 'CurlResponse_' type.--- Deterministic cleanup-manual_perform_with_response_ :: (CurlHeader headerTy, CurlBuffer bodyTy)-                       => Curl-		       -> IO (CurlResponse_ headerTy bodyTy)-manual_perform_with_response_ h = do-   (finalHeader, gatherHeader) <- newIncomingHeader-   (finalBody,   gatherBody)   <- newIncoming--     -- Instead of allocating a separate handler for each-     -- request we could just set this options one and forall-     -- and just clear the IORefs.--   setopt  h (CurlWriteFunction (gatherOutput_ gatherBody))-   setopt  h (CurlHeaderFunction (gatherOutput_ gatherHeader))-   rc      <- perform h-   manual_cleanup h-   rspCode <- getResponseCode h-   (st,hs) <- finalHeader-   bs      <- finalBody-   return CurlResponse-       { respCurlCode   = rc-       , respStatus     = rspCode-       , respStatusLine = st-       , respHeaders    = hs-       , respBody       = bs -       -- note: we're holding onto the handle here..-       -- note: with this interface this is not neccessary.-       , respGetInfo    = getInfo h-       }---- | Perform the actions already specified on the handle.--- Collects useful information about the returned message.--- Note that this function sets the--- 'CurlWriteFunction' and 'CurlHeaderFunction' options.--- The returned payload is overloaded over the representation of--- both headers and body via the 'CurlResponse_' type.-perform_with_response_ :: (CurlHeader headerTy, CurlBuffer bodyTy)-                       => Curl-		       -> IO (CurlResponse_ headerTy bodyTy)-perform_with_response_ h = do-   (finalHeader, gatherHeader) <- newIncomingHeader-   (finalBody,   gatherBody)   <- newIncoming--     -- Instead of allocating a separate handler for each-     -- request we could just set this options one and forall-     -- and just clear the IORefs.--   setopt  h (CurlWriteFunction (gatherOutput_ gatherBody))-   setopt  h (CurlHeaderFunction (gatherOutput_ gatherHeader))-   rc      <- perform h-   rspCode <- getResponseCode h-   (st,hs) <- finalHeader-   bs      <- finalBody-   return CurlResponse-       { respCurlCode   = rc-       , respStatus     = rspCode-       , respStatusLine = st-       , respHeaders    = hs-       , respBody       = bs -       -- note: we're holding onto the handle here..-       -- note: with this interface this is not neccessary.-       , respGetInfo    = getInfo h-       }----- | Performs a curl request using an exisitng curl handle.--- The provided URL will overwride any 'CurlURL' options that--- are provided in the list of options.  See also: 'perform_with_response'.-do_curl :: Curl -> URLString -> [CurlOption] -> IO CurlResponse-do_curl h url opts = do_curl_ h url opts--{-# DEPRECATED do_curl "Consider switching to do_curl_" #-}--do_curl_ :: (CurlHeader headerTy, CurlBuffer bodyTy)-         => Curl-	 -> URLString-	 -> [CurlOption]-	 -> IO (CurlResponse_ headerTy bodyTy)-do_curl_ h url opts = do-   setDefaultSSLOpts h url-   setopts h opts-   setopt h (CurlURL url)-   perform_with_response_ h----- | 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_no_cleanup >>= \ 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-     manual_cleanup h-     lss <- readIORef ref-     return (parseStatusNHeaders (concRev [] lss))---- | Get the headers associated with a particular URL.--- Returns the status line and the key-value pairs for the headers.-curlHead_ :: (CurlHeader headers)-          => URLString-	  -> [CurlOption]-	  -> IO (String, headers)-curlHead_ url opts = initialize_no_cleanup >>= \ h -> do-  (finalHeader, gatherHeader) <- newIncomingHeader---  setopt h (CurlVerbose True)-  setopt h (CurlURL url)-  setopt h (CurlNoBody True)-  mapM_ (setopt h) opts-  setopt h (CurlHeaderFunction (gatherOutput_ gatherHeader))-  perform h-  manual_cleanup h-  finalHeader----- utils--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 :: String -> (String,String)-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_no_cleanup >>= \ h -> do-  setopt h (CurlVerbose True)-  setopt h (CurlURL s)-  setopt h (CurlHttpPost ps)-  mapM_ (setopt h) os-  perform h-  manual_cleanup 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_no_cleanup >>= \ h -> do-  setopt h (CurlVerbose True)-  setopt h (CurlPostFields ps)-  setopt h (CurlCookieJar "cookies")-  setopt h (CurlURL s)-  perform h-  manual_cleanup h -  return ()------ Use 'callbackWriter' instead.-{-# DEPRECATED #-}-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---- | Imports data into the Haskell world and invokes the callback.-callbackWriter_ :: (CStringLen -> IO ()) -> WriteFunction-callbackWriter_ f pBuf sz szI _ = do-  do let bytes = sz * szI -     f (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 (\ v -> modifyIORef r (v:))---- | Add chunks of data to an IORef as they arrive.-gatherOutput_ :: (CStringLen -> IO ()) -> WriteFunction-gatherOutput_ f = callbackWriter_ f--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/Shpider/Curl/Debug.hs
@@ -1,24 +0,0 @@------------------------------------------------------------------------ |--- Module    : Network.Curl.Debug--- Copyright : (c) Galois, Inc. 2008-2009--- License   : BSD3------ Maintainer: Sigbjorn Finne <sof@galois.com>--- Stability : provisional--- Portability:------ Debug hooks--module Network.Shpider.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/Shpider/Curl/Easy.hs
@@ -1,235 +0,0 @@-{-# LANGUAGE ForeignFunctionInterface #-}-{-# OPTIONS -fvia-C -#include "curl/curl.h" #-}------------------------------------------------------------------------ |--- Module    : Network.Curl.Easy--- Copyright : (c) Galois Inc 2007-2009--- License   :------ Maintainer: Sigbjorn Finne <sof@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.Shpider.Curl.Easy-        ( initialize    -- :: IO Curl-        , initialize_no_cleanup -- :: 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 ()-	-	, curl_version_number -- :: IO Int-	, curl_version_string -- :: IO String-        ) where--import Network.Shpider.Curl.Types-import Network.Shpider.Curl.Opts-import Network.Shpider.Curl.Code-import Network.Shpider.Curl.Post--import Network.Shpider.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 ---- | Initialize a curl instance--- | No automatic garbage colelction-initialize_no_cleanup :: IO Curl-initialize_no_cleanup = do-   h <- easy_initialize-   mkCurl_no_cleanup 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--curl_version_number :: IO Int-curl_version_number = do-  x <- curl_version_num -  return (fromIntegral x)-  -curl_version_string :: IO String-curl_version_string = do-  cs <- curl_version_str-  peekCString cs---- FFI decls---foreign import ccall-  "curl_version_num" curl_version_num :: IO CInt--foreign import ccall-  "curl_version_str" curl_version_str :: IO CString--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_long" easy_setopt_long :: CurlH -> Int -> Long -> IO CInt--foreign import ccall-  "curl_easy_setopt_longlong" easy_setopt_llong :: CurlH -> Int -> LLong -> IO CInt--foreign import ccall-  "curl_easy_setopt_string" easy_setopt_string :: CurlH -> Int -> Ptr CChar -> IO CInt--foreign import ccall-  "curl_easy_setopt_ptr" easy_setopt_ptr :: CurlH -> Int -> Ptr a -> IO CInt--foreign import ccall-  "curl_easy_setopt_ptr" easy_setopt_fptr :: CurlH -> Int -> FunPtr a -> IO CInt--foreign import ccall-  "curl_easy_setopt_ptr" easy_setopt_wfun :: CurlH -> Int -> FunPtr WriteFunction -> IO CInt--foreign import ccall-  "curl_easy_setopt_ptr" 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/Shpider/Curl/Info.hs
@@ -1,196 +0,0 @@-{-# LANGUAGE ForeignFunctionInterface #-}-{-# OPTIONS -fvia-C -#include "curl/curl.h" #-}------------------------------------------------------------------------ |--- Module    : Network.Curl.Info--- Copyright : (c) 2007-2009, Galois Inc --- License   : BSD3------ Maintainer: Sigbjorn Finne <sof@galois.com>--- Stability : provisional--- Portability: portable------ Accessing the properties of a curl handle's current state\/request.-------------------------------------------------------------------------module Network.Shpider.Curl.Info -         ( Info(..)-         , InfoValue(..)-         , getInfo        -- :: Curl -> Info -> IO InfoValue-         ) where--import Network.Shpider.Curl.Types-import Network.Shpider.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 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 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 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 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_long" easy_getinfo_long :: CurlH -> Long -> Ptr Long -> IO CInt--foreign import ccall-  "curl_easy_getinfo_string" easy_getinfo_str  :: CurlH -> Long -> Ptr CString -> IO CInt--foreign import ccall-  "curl_easy_getinfo_double" easy_getinfo_double :: CurlH -> Long -> Ptr Double -> IO CInt--foreign import ccall-  "curl_easy_getinfo_slist" easy_getinfo_slist :: CurlH -> Long -> Ptr (Ptr (Ptr CChar)) -> IO CInt
− Network/Shpider/Curl/Opts.hs
@@ -1,708 +0,0 @@------------------------------------------------------------------------ |--- Module    : Network.Curl.Opts--- Copyright : (c) Galois Inc 2007-2009--- License   : BSD3------ Maintainer: Sigbjorn Finne <sof@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.Shpider.Curl.Opts where--import Network.Shpider.Curl.Types-import Network.Shpider.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.-   -- sync'ed wrt 7.19.2- | CurlNewFilePerms Long- | CurlNewDirectoryPerms Long- | CurlPostRedirect Bool-   -- no support for open socket callbacks/function overrides.- | CurlSSHHostPublicKeyMD5 String- | CurlCopyPostFields Bool- | CurlProxyTransferMode Long-   -- no support for seeking in the input stream.- | CurlCRLFile       FilePath- | CurlIssuerCert    FilePath- | CurlAddressScope  Long- | CurlCertInfo      Long- | CurlUserName      String- | CurlUserPassword  String- | CurlProxyUser     String- | CurlProxyPassword String-  --instance Show CurlOption where-  show x = showCurlOption x--data HttpVersion- = HttpVersionNone- | HttpVersion10- | HttpVersion11-   deriving ( Enum,Show )--data TimeCond- = TimeCondNone- | TimeCondIfModSince- | TimeCondIfUnmodSince- | TimeCondLastMode-   deriving ( Enum, Show )- -data NetRcOption- = NetRcIgnored- | NetRcOptional- | NetRcRequired-   deriving ( Enum, Show )--data HttpAuth- = HttpAuthNone- | HttpAuthBasic- | HttpAuthDigest- | HttpAuthGSSNegotiate- | HttpAuthNTLM- | HttpAuthAny- | HttpAuthAnySafe-   deriving ( Enum, Show )--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-   deriving ( Show )---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-  CurlNewFilePerms x        -> u_long um (l 159) x-  CurlNewDirectoryPerms x   -> u_long um (l 160) x-  CurlPostRedirect x        -> u_bool um (l 161) x-  CurlSSHHostPublicKeyMD5 x -> u_string um (l 162) x-  CurlCopyPostFields x      -> u_bool um (l 165) x-  CurlProxyTransferMode x   -> u_long um (l 166) x-  CurlCRLFile x             -> u_string um (l 169) x-  CurlIssuerCert x          -> u_string um (l 170) x-  CurlAddressScope x        -> u_long um   (l 171) x-  CurlCertInfo x            -> u_long um   (l 172) x-  CurlUserName x            -> u_string um (l 173) x-  CurlUserPassword x        -> u_string um (l 174) x-  CurlProxyUser x           -> u_string um (l 175) x-  CurlProxyPassword x       -> u_string um (l 176) 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)--showCurlOption :: CurlOption -> String-showCurlOption o = -  case o of-    CurlFileObj p  -> "CurlFileObj " ++ show p-    CurlURL u      -> "CurlURL " ++ show u-    CurlPort p     -> "CurlPort " ++ show p-    CurlProxy s    -> "CurlProxy " ++ show s-    CurlUserPwd p  -> "CurlUserPwd " ++ show p-    CurlProxyUserPwd p -> "CurlProxyUserPwd " ++ show p-    CurlRange p -> "CurlRange " ++ show p-    CurlInFile p -> "CurlInFile " ++ show p-    CurlErrorBuffer p -> "CurlErrorBuffer " ++ show p-    CurlWriteFunction{} -> "CurlWriteFunction <fun>"-    CurlReadFunction{}  -> "CurlReadFunction <fun>"-    CurlTimeout l       -> "CurlTimeout " ++ show l-    CurlInFileSize l    -> "CurlInFileSize " ++ show l-    CurlPostFields p    -> "CurlPostFields " ++ show p-    CurlReferer p       -> "CurlReferer " ++ show p-    CurlFtpPort p       -> "CurlFtpPort " ++ show p-    CurlUserAgent p     -> "CurlUserAgent " ++ show p-    CurlLowSpeed  p     -> "CurlLowSpeed " ++ show p-    CurlLowSpeedTime p  -> "CurlLowSpeedTime " ++ show p-    CurlResumeFrom p    -> "CurlResumeFrom " ++ show p-    CurlCookie p        -> "CurlCookie " ++ show p-    CurlHttpHeaders p   -> "CurlHttpHeaders " ++ show p-    CurlHttpPost p      -> "CurlHttpPost " ++ show p-    CurlSSLCert p       -> "CurlSSLCert " ++ show p-    CurlSSLPassword p   -> "CurlSSLPassword " ++ show p-    CurlSSLKeyPassword p -> "CurlSSLKeyPassword " ++ show p-    CurlCRLF p -> "CurlCRLF " ++ show p-    CurlQuote p -> "CurlQuote " ++ show p-    CurlWriteHeader p -> "CurlWriteHeader " ++ show p-    CurlCookieFile p -> "CurlCookieFile " ++ show p-    CurlSSLVersion p -> "CurlSSLVersion " ++ show p-    CurlTimeCondition p -> "CurlTimeCondition " ++ show p-    CurlTimeValue p -> "CurlTimeValue " ++ show p-    CurlCustomRequest p -> "CurlCustomRequest " ++ show p-    CurlPostQuote p -> "CurlPostQuote " ++ show p-    CurlWriteInfo p -> "CurlWriteInfo " ++ show p-    CurlVerbose p -> "CurlVerbose " ++ show p-    CurlHeader p -> "CurlHeader " ++ show p-    CurlNoProgress p -> "CurlNoProgress " ++ show p-    CurlNoBody p -> "CurlNoBody " ++ show p-    CurlFailOnError p -> "CurlFailOnError " ++ show p-    CurlUpload p -> "CurlUpload " ++ show p-    CurlPost p -> "CurlPost " ++ show p-    CurlFtpListOnly p -> "CurlFtpListOnly " ++ show p-    CurlFtpAppend p -> "CurlFtpAppend " ++ show p-    CurlUseNetRc p -> "CurlUseNetRc " ++ show p-    CurlFollowLocation p -> "CurlFollowLocation " ++ show p-    CurlTransferTextASCII p -> "CurlTransferTextASCII " ++ show p-    CurlPut p -> "CurlPut " ++ show p-    CurlProgressFunction{} -> "CurlProgressFunction <fun>"-    CurlProgressData p -> "CurlProgressData " ++ show p-    CurlAutoReferer p -> "CurlAutoReferer " ++ show p-    CurlProxyPort p -> "CurlProxyPort " ++ show p-    CurlPostFieldSize p -> "CurlPostFieldSize " ++ show p-    CurlHttpProxyTunnel p -> "CurlHttpProxyTunnel " ++ show p-    CurlInterface p -> "CurlInterface " ++ show p-    CurlKrb4Level p -> "CurlKrb4Level " ++ show p-    CurlSSLVerifyPeer p -> "CurlSSLVerifyPeer " ++ show p-    CurlCAInfo p -> "CurlCAInfo " ++ show p-    CurlMaxRedirs p -> "CurlMaxRedirs " ++ show p-    CurlFiletime p -> "CurlFiletime " ++ show p-    CurlTelnetOptions p -> "CurlTelnetOptions " ++ show p-    CurlMaxConnects p -> "CurlMaxConnects " ++ show p-    CurlClosePolicy p -> "CurlClosePolicy " ++ show p-    CurlFreshConnect p -> "CurlFreshConnect " ++ show p-    CurlForbidReuse p -> "CurlForbidReuse " ++ show p-    CurlRandomFile p -> "CurlRandomFile " ++ show p-    CurlEgdSocket p -> "CurlEgdSocket " ++ show p-    CurlConnectTimeout p -> "CurlConnectTimeout " ++ show p-    CurlHeaderFunction{} -> "CurlHeaderFunction <fun>"-    CurlHttpGet p -> "CurlHttpGet " ++ show p-    CurlSSLVerifyHost p -> "CurlSSLVerifyHost " ++ show p-    CurlCookieJar p -> "CurlCookieJar " ++ show p-    CurlSSLCipherList p -> "CurlSSLCipherList " ++ show p-    CurlHttpVersion p -> "CurlHttpVersion " ++ show p-    CurlFtpUseEPSV p -> "CurlFtpUseEPSV " ++ show p-    CurlSSLCertType p -> "CurlSSLCertType " ++ show p-    CurlSSLKey p -> "CurlSSLKey " ++ show p-    CurlSSLKeyType p -> "CurlSSLKeyType " ++ show p-    CurlSSLEngine p -> "CurlSSLEngine " ++ show p-    CurlSSLEngineDefault-> "CurlSSLEngineDefault"-    CurlDNSUseGlobalCache p -> "CurlDNSUseGlobalCache " ++ show p-    CurlDNSCacheTimeout p -> "CurlDNSCacheTimeout " ++ show p-    CurlPreQuote p -> "CurlPreQuote " ++ show p-    CurlDebugFunction{} -> "CurlDebugFunction <fun>"-    CurlDebugData p -> "CurlDebugData " ++ show p-    CurlCookieSession p -> "CurlCookieSession " ++ show p-    CurlCAPath p -> "CurlCAPath " ++ show p-    CurlBufferSize p -> "CurlBufferSize " ++ show p-    CurlNoSignal p -> "CurlNoSignal " ++ show p-    CurlShare p -> "CurlShare " ++ show p-    CurlProxyType p -> "CurlProxyType " ++ show p-    CurlEncoding p -> "CurlEncoding " ++ show p-    CurlPrivate p -> "CurlPrivate " ++ show p-    CurlHttp200Aliases p -> "CurlHttp200Aliases " ++ show p-    CurlUnrestrictedAuth p -> "CurlUnrestrictedAuth " ++ show p-    CurlFtppUseEPRT p -> "CurlFtppUseEPRT " ++ show p-    CurlHttpAuth p -> "CurlHttpAuth " ++ show p-    CurlSSLCtxFunction{} -> "CurlSSLCtxFunction <fun>"-    CurlSSLCtxData p -> "CurlSSLCtxData " ++ show p-    CurlFtpCreateMissingDirs p -> "CurlFtpCreateMissingDirs " ++ show p-    CurlProxyAuth p -> "CurlProxyAuth " ++ show p-    CurlFtpResponseTimeout p -> "CurlFtpResponseTimeout " ++ show p-    CurlIPResolve p -> "CurlIPResolve " ++ show p-    CurlMaxFileSize p -> "CurlMaxFileSize " ++ show p-    CurlInFileSizeLarge p -> "CurlInFileSizeLarge " ++ show p-    CurlResumeFromLarge p -> "CurlResumeFromLarge " ++ show p-    CurlMaxFileSizeLarge p -> "CurlMaxFileSizeLarge " ++ show p-    CurlNetrcFile p -> "CurlNetrcFile " ++ show p-    CurlFtpSSL p -> "CurlFtpSSL " ++ show p-    CurlPostFieldSizeLarge p -> "CurlPostFieldSizeLarge " ++ show p-    CurlTCPNoDelay p -> "CurlTCPNoDelay " ++ show p-    CurlFtpSSLAuth p -> "CurlFtpSSLAuth " ++ show p-    CurlIOCTLFunction p -> "CurlIOCTLFunction " ++ show p-    CurlIOCTLData p -> "CurlIOCTLData " ++ show p-    CurlFtpAccount p -> "CurlFtpAccount " ++ show p-    CurlCookieList p -> "CurlCookieList " ++ show p-    CurlIgnoreContentLength p -> "CurlIgnoreContentLength " ++ show p-    CurlFtpSkipPASVIP p -> "CurlFtpSkipPASVIP " ++ show p-    CurlFtpFileMethod p -> "CurlFtpFileMethod " ++ show p-    CurlLocalPort p -> "CurlLocalPort " ++ show p-    CurlLocalPortRange p -> "CurlLocalPortRange " ++ show p-    CurlConnectOnly p -> "CurlConnectOnly " ++ show p-    CurlConvFromNetworkFunction p -> "CurlConvFromNetworkFunction " ++ show p-    CurlConvToNetworkFunction p -> "CurlConvToNetworkFunction " ++ show p-    CurlConvFromUtf8Function p -> "CurlConvFromUtf8Function " ++ show p-    CurlMaxSendSpeedLarge p -> "CurlMaxSendSpeedLarge " ++ show p-    CurlMaxRecvSpeedLarge p -> "CurlMaxRecvSpeedLarge " ++ show p-    CurlFtpAlternativeToUser p -> "CurlFtpAlternativeToUser " ++ show p-    CurlSockOptFunction p -> "CurlSockOptFunction " ++ show p-    CurlSockOptData p -> "CurlSockOptData " ++ show p-    CurlSSLSessionIdCache p -> "CurlSSLSessionIdCache " ++ show p-    CurlSSHAuthTypes p -> "CurlSSHAuthTypes " ++ show p-    CurlSSHPublicKeyFile p -> "CurlSSHPublicKeyFile " ++ show p-    CurlSSHPrivateKeyFile p -> "CurlSSHPrivateKeyFile " ++ show p-    CurlFtpSSLCCC p -> "CurlFtpSSLCCC " ++ show p-    CurlTimeoutMS p -> "CurlTimeoutMS " ++ show p-    CurlConnectTimeoutMS p -> "CurlConnectTimeoutMS " ++ show p-    CurlHttpTransferDecoding p -> "CurlHttpTransferDecoding " ++ show p-    CurlHttpContentDecoding p -> "CurlHttpContentDecoding " ++ show p-    CurlNewFilePerms l -> "CurlNewFilePerms " ++ show l-    CurlNewDirectoryPerms p -> "CurlNewDirectoryPerms " ++ show p-    CurlPostRedirect p -> "CurlPostRedirect " ++ show p-    CurlSSHHostPublicKeyMD5 p -> "CurlSSHHostPublicKeyMD5 " ++ show p-    CurlCopyPostFields p -> "CurlCopyPostFields " ++ show p-    CurlProxyTransferMode p -> "CurlProxyTransferMode " ++ show p-    CurlCRLFile       p -> "CurlCRLFile " ++ show p-    CurlIssuerCert    p -> "CurlIssuerCert " ++ show p-    CurlAddressScope  p -> "CurlAddressScope " ++ show p-    CurlCertInfo      p -> "CurlCertInfo " ++ show p-    CurlUserName      p -> "CurlUserName " ++ show p-    CurlUserPassword  p -> "CurlUserPassword " ++ show p-    CurlProxyUser     p -> "CurlProxyUser " ++ show p-    CurlProxyPassword p -> "CurlProxyPassword " ++ show p
− Network/Shpider/Curl/Post.hs
@@ -1,126 +0,0 @@-{-# LANGUAGE ForeignFunctionInterface #-}-{-# OPTIONS -fvia-C -#include "curl/curl.h" #-}------------------------------------------------------------------------ |--- Module    : Network.Curl.Post--- Copyright : (c) Galois Inc 2007-2009--- License   : BSD3------ Maintainer: Sigbjorn Finne <sof@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.Shpider.Curl.Post where--import Network.Shpider.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-     } deriving ( Show )--data Content- = ContentFile   FilePath- | ContentBuffer (Ptr CChar) Long -- byte arrays also?- | ContentString String-   deriving ( Show )--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/Shpider/Curl/Types.hs
@@ -1,174 +0,0 @@-{-# LANGUAGE ForeignFunctionInterface, EmptyDataDecls #-}------------------------------------------------------------------------ |--- Module    : Network.Curl.Types--- Copyright : (c) Galois Inc 2007-2009--- License   : BSD3------ Maintainer: Sigbjorn Finne <sof@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.Shpider.Curl.Types-  ( CurlH, URLString, Port, Long, LLong, Slist_ -  , Curl, curlPrim, mkCurl, mkCurlWithCleanup-  , OptionMap, shareCleanup, runCleanup, updateCleanup-  , manual_cleanup , mkCurl_no_cleanup-  ) where--import Network.Shpider.Curl.Debug--import Foreign.Ptr-import Foreign.ForeignPtr-import Foreign.Storable-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.--- | No garbage collection so cookies are written deterministically-mkCurl_no_cleanup :: CurlH -> IO Curl-mkCurl_no_cleanup h = do-  debug "ALLOC: CURL"-  fh  <- newForeignPtr_ h -  v1  <- newMVar fh-  v2  <- newIORef om_empty -  let new_h = Curl { curlH = v1, curlCleanup = v2 }-  return new_h---- | 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"-                      runCleanup v2-                      withForeignPtr fh easy_cleanup-                      -  addForeignPtrFinalizer fin fh--  return new_h-- -- Manually cleanup a curl instance, writing cookies etc.-manual_cleanup curl = do -   fh <- readMVar $ curlH curl-   debug "FREE: CURL"-   runCleanup $ curlCleanup curl-   withForeignPtr fh easy_cleanup---- 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)--
Network/Shpider/Options.hs view
@@ -29,8 +29,8 @@  import Data.Maybe -import Network.Shpider.Curl.Opts-import Network.Shpider.Curl.Types+import Network.Curl.Opts+import Network.Curl.Types  import Network.Shpider.State import Network.Shpider.URL
Network/Shpider/State.hs view
@@ -38,7 +38,7 @@  import Control.Monad.State -import Network.Shpider.Curl.Curl+import Network.Curl  import Data.Maybe 
− configure
@@ -1,3855 +0,0 @@-#! /bin/sh-# Guess values for system-dependent variables and create Makefiles.-# Generated by GNU Autoconf 2.61 for Haskell curl package 1.1.-#-# Report bugs to <dons@galois.com>.-#-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,-# 2002, 2003, 2004, 2005, 2006 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 more Bourne compatible-DUALCASE=1; export DUALCASE # for MKS sh-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+"$@"}'='"$@"'-  setopt NO_GLOB_SUBST-else-  case `(set -o) 2>/dev/null` in-  *posix*) set -o posix ;;-esac--fi-----# PATH needs CR-# 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--# Support unset when possible.-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then-  as_unset=unset-else-  as_unset=false-fi---# IFS-# We need space, tab and new line, in precisely that order.  Quoting is-# there to prevent editors from complaining about space-tab.-# (If _AS_PATH_WALK were called with IFS unset, it would disable word-# splitting by setting IFS to empty value.)-as_nl='-'-IFS=" ""	$as_nl"--# Find who we are.  Look in the path if we contain no directory separator.-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-IFS=$as_save_IFS--     ;;-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_myself: error: cannot find myself; rerun with an absolute file name" >&2-  { (exit 1); exit 1; }-fi--# Work around bugs in pre-3.0 UWIN ksh.-for as_var in ENV MAIL MAILPATH-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var-done-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) >/dev/null 2>&1 && $as_unset $as_var-  fi-done--# Required to use basename.-if expr a : '\(a\)' >/dev/null 2>&1 &&-   test "X`expr 00001 : '.*\(...\)'`" = X001; 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'`--# CDPATH.-$as_unset CDPATH---if test "x$CONFIG_SHELL" = x; then-  if (eval ":") 2>/dev/null; then-  as_have_required=yes-else-  as_have_required=no-fi--  if test $as_have_required = yes && 	 (eval ":-(as_func_return () {-  (exit \$1)-}-as_func_success () {-  as_func_return 0-}-as_func_failure () {-  as_func_return 1-}-as_func_ret_success () {-  return 0-}-as_func_ret_failure () {-  return 1-}--exitcode=0-if as_func_success; then-  :-else-  exitcode=1-  echo as_func_success failed.-fi--if as_func_failure; then-  exitcode=1-  echo as_func_failure succeeded.-fi--if as_func_ret_success; then-  :-else-  exitcode=1-  echo as_func_ret_success failed.-fi--if as_func_ret_failure; then-  exitcode=1-  echo as_func_ret_failure succeeded.-fi--if ( set x; as_func_ret_success y && test x = \"\$1\" ); then-  :-else-  exitcode=1-  echo positional parameters were not saved.-fi--test \$exitcode = 0) || { (exit 1); exit 1; }--(-  as_lineno_1=\$LINENO-  as_lineno_2=\$LINENO-  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&-  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }-") 2> /dev/null; then-  :-else-  as_candidate_shells=-    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=.-  case $as_dir in-	 /*)-	   for as_base in sh bash ksh sh5; do-	     as_candidate_shells="$as_candidate_shells $as_dir/$as_base"-	   done;;-       esac-done-IFS=$as_save_IFS---      for as_shell in $as_candidate_shells $SHELL; do-	 # Try only shells that exist, to save several forks.-	 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&-		{ ("$as_shell") 2> /dev/null <<\_ASEOF-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+"$@"}'='"$@"'-  setopt NO_GLOB_SUBST-else-  case `(set -o) 2>/dev/null` in-  *posix*) set -o posix ;;-esac--fi---:-_ASEOF-}; then-  CONFIG_SHELL=$as_shell-	       as_have_required=yes-	       if { "$as_shell" 2> /dev/null <<\_ASEOF-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+"$@"}'='"$@"'-  setopt NO_GLOB_SUBST-else-  case `(set -o) 2>/dev/null` in-  *posix*) set -o posix ;;-esac--fi---:-(as_func_return () {-  (exit $1)-}-as_func_success () {-  as_func_return 0-}-as_func_failure () {-  as_func_return 1-}-as_func_ret_success () {-  return 0-}-as_func_ret_failure () {-  return 1-}--exitcode=0-if as_func_success; then-  :-else-  exitcode=1-  echo as_func_success failed.-fi--if as_func_failure; then-  exitcode=1-  echo as_func_failure succeeded.-fi--if as_func_ret_success; then-  :-else-  exitcode=1-  echo as_func_ret_success failed.-fi--if as_func_ret_failure; then-  exitcode=1-  echo as_func_ret_failure succeeded.-fi--if ( set x; as_func_ret_success y && test x = "$1" ); then-  :-else-  exitcode=1-  echo positional parameters were not saved.-fi--test $exitcode = 0) || { (exit 1); exit 1; }--(-  as_lineno_1=$LINENO-  as_lineno_2=$LINENO-  test "x$as_lineno_1" != "x$as_lineno_2" &&-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }--_ASEOF-}; then-  break-fi--fi--      done--      if test "x$CONFIG_SHELL" != x; then-  for as_var in BASH_ENV ENV-        do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var-        done-        export CONFIG_SHELL-        exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}-fi---    if test $as_have_required = no; then-  echo This script requires a shell more modern than all the-      echo shells that I found on your system.  Please install a-      echo modern shell, or manually run the script under such a-      echo shell if you do have one.-      { (exit 1); exit 1; }-fi---fi--fi----(eval "as_func_return () {-  (exit \$1)-}-as_func_success () {-  as_func_return 0-}-as_func_failure () {-  as_func_return 1-}-as_func_ret_success () {-  return 0-}-as_func_ret_failure () {-  return 1-}--exitcode=0-if as_func_success; then-  :-else-  exitcode=1-  echo as_func_success failed.-fi--if as_func_failure; then-  exitcode=1-  echo as_func_failure succeeded.-fi--if as_func_ret_success; then-  :-else-  exitcode=1-  echo as_func_ret_success failed.-fi--if as_func_ret_failure; then-  exitcode=1-  echo as_func_ret_failure succeeded.-fi--if ( set x; as_func_ret_success y && test x = \"\$1\" ); then-  :-else-  exitcode=1-  echo positional parameters were not saved.-fi--test \$exitcode = 0") || {-  echo No shell found that supports shell functions.-  echo Please tell autoconf@gnu.org about your system,-  echo including any error possibly output before this-  echo message-}----  as_lineno_1=$LINENO-  as_lineno_2=$LINENO-  test "x$as_lineno_1" != "x$as_lineno_2" &&-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {--  # 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 after each line using $LINENO; the second 'sed'-  # does the real work.  The second script uses 'N' to pair each-  # line-number line with the line containing $LINENO, 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-  # scripts with optimization help from Paolo Bonzini.  Blame Lee-  # E. McMahon (1931-1989) for sed's syntax.  :-)-  sed -n '-    p-    /[$]LINENO/=-  ' <$as_myself |-    sed '-      s/[$]LINENO.*/&-/-      t lineno-      b-      :lineno-      N-      :loop-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/-      t loop-      s/-\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 sensitive to this).-  . "./$as_me.lineno"-  # Exit status is that of the last command.-  exit-}---if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then-  as_dirname=dirname-else-  as_dirname=false-fi--ECHO_C= ECHO_N= ECHO_T=-case `echo -n x` in--n*)-  case `echo 'x\c'` in-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.-  *)   ECHO_C='\c';;-  esac;;-*)-  ECHO_N='-n';;-esac--if expr a : '\(a\)' >/dev/null 2>&1 &&-   test "X`expr 00001 : '.*\(...\)'`" = X001; then-  as_expr=expr-else-  as_expr=false-fi--rm -f conf$$ conf$$.exe conf$$.file-if test -d conf$$.dir; then-  rm -f conf$$.dir/conf$$.file-else-  rm -f conf$$.dir-  mkdir conf$$.dir-fi-echo >conf$$.file-if ln -s conf$$.file conf$$ 2>/dev/null; then-  as_ln_s='ln -s'-  # ... but there are two gotchas:-  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.-  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.-  # In both cases, we have to default to `cp -p'.-  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||-    as_ln_s='cp -p'-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$$.dir/conf$$.file conf$$.file-rmdir conf$$.dir 2>/dev/null--if mkdir -p . 2>/dev/null; then-  as_mkdir_p=:-else-  test -d ./-p && rmdir ./-p-  as_mkdir_p=false-fi--if test -x / >/dev/null 2>&1; then-  as_test_x='test -x'-else-  if ls -dL / >/dev/null 2>&1; then-    as_ls_L_option=L-  else-    as_ls_L_option=-  fi-  as_test_x='-    eval sh -c '\''-      if test -d "$1"; then-        test -d "$1/.";-      else-	case $1 in-        -*)set "./$1";;-	esac;-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in-	???[sx]*):;;*)false;;esac;fi-    '\'' sh-  '-fi-as_executable_p=$as_test_x--# 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'"----exec 7<&0 </dev/null 6>&1--# 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`--#-# Initializations.-#-ac_default_prefix=/usr/local-ac_clean_files=-ac_config_libobj_dir=.-LIBOBJS=-cross_compiling=no-subdirs=-MFLAGS=-MAKEFLAGS=-SHELL=${CONFIG_SHELL-/bin/sh}--# 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-datarootdir-datadir-sysconfdir-sharedstatedir-localstatedir-includedir-oldincludedir-docdir-infodir-htmldir-dvidir-pdfdir-psdir-libdir-localedir-mandir-DEFS-ECHO_C-ECHO_N-ECHO_T-LIBS-build_alias-host_alias-target_alias-CC-CFLAGS-LDFLAGS-CPPFLAGS-ac_ct_CC-EXEEXT-OBJEXT-CPP-CURL_BUILD_PACKAGE-BUILD_PACKAGE_BOOL-LIBOBJS-LTLIBOBJS'-ac_subst_files=''-      ac_precious_vars='build_alias-host_alias-target_alias-CC-CFLAGS-LDFLAGS-LIBS-CPPFLAGS-CPP'---# 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.-# (The list follows the same order as the GNU Coding Standards.)-bindir='${exec_prefix}/bin'-sbindir='${exec_prefix}/sbin'-libexecdir='${exec_prefix}/libexec'-datarootdir='${prefix}/share'-datadir='${datarootdir}'-sysconfdir='${prefix}/etc'-sharedstatedir='${prefix}/com'-localstatedir='${prefix}/var'-includedir='${prefix}/include'-oldincludedir='/usr/include'-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'-infodir='${datarootdir}/info'-htmldir='${docdir}'-dvidir='${docdir}'-pdfdir='${docdir}'-psdir='${docdir}'-libdir='${exec_prefix}/lib'-localedir='${datarootdir}/locale'-mandir='${datarootdir}/man'--ac_prev=-ac_dashdash=-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--  case $ac_option in-  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;-  *)	ac_optarg=yes ;;-  esac--  # Accept the important Cygnus configure options, so we can diagnose typos.--  case $ac_dashdash$ac_option in-  --)-    ac_dashdash=yes ;;--  -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)-    ac_prev=datadir ;;-  -datadir=* | --datadir=* | --datadi=* | --datad=*)-    datadir=$ac_optarg ;;--  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \-  | --dataroo | --dataro | --datar)-    ac_prev=datarootdir ;;-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)-    datarootdir=$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 ;;--  -docdir | --docdir | --docdi | --doc | --do)-    ac_prev=docdir ;;-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)-    docdir=$ac_optarg ;;--  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)-    ac_prev=dvidir ;;-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)-    dvidir=$ac_optarg ;;--  -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'`-    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 ;;--  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)-    ac_prev=htmldir ;;-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \-  | --ht=*)-    htmldir=$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 ;;--  -localedir | --localedir | --localedi | --localed | --locale)-    ac_prev=localedir ;;-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)-    localedir=$ac_optarg ;;--  -localstatedir | --localstatedir | --localstatedi | --localstated \-  | --localstate | --localstat | --localsta | --localst | --locals)-    ac_prev=localstatedir ;;-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)-    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 ;;--  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)-    ac_prev=pdfdir ;;-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)-    pdfdir=$ac_optarg ;;--  -psdir | --psdir | --psdi | --psd | --ps)-    ac_prev=psdir ;;-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)-    psdir=$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'`-    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; }; }-    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 directory names.-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \-		datadir sysconfdir sharedstatedir localstatedir includedir \-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \-		libdir localedir mandir-do-  eval ac_val=\$$ac_var-  case $ac_val in-    [\\/$]* | ?:[\\/]* )  continue;;-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;-  esac-  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2-   { (exit 1); exit 1; }; }-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---ac_pwd=`pwd` && test -n "$ac_pwd" &&-ac_ls_di=`ls -di .` &&-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||-  { echo "$as_me: error: Working directory cannot be determined" >&2-   { (exit 1); exit 1; }; }-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||-  { echo "$as_me: error: pwd does not report name of working directory" >&2-   { (exit 1); exit 1; }; }---# 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 the parent directory.-  ac_confdir=`$as_dirname -- "$0" ||-$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-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."-  { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2-   { (exit 1); exit 1; }; }-fi-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"-ac_abs_confdir=`(-	cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2-   { (exit 1); exit 1; }; }-	pwd)`-# When building in place, set srcdir=.-if test "$ac_abs_confdir" = "$ac_pwd"; then-  srcdir=.-fi-# Remove unnecessary trailing slashes from srcdir.-# Double slashes in file names in object file debugging info-# mess up M-x gdb in Emacs.-case $srcdir in-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;-esac-for ac_var in $ac_precious_vars; do-  eval ac_env_${ac_var}_set=\${${ac_var}+set}-  eval ac_env_${ac_var}_value=\$${ac_var}-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}-  eval ac_cv_env_${ac_var}_value=\$${ac_var}-done--#-# 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 \`..']--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]-  --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]-  --datarootdir=DIR      read-only arch.-independent data root [PREFIX/share]-  --datadir=DIR          read-only architecture-independent data [DATAROOTDIR]-  --infodir=DIR          info documentation [DATAROOTDIR/info]-  --localedir=DIR        locale-dependent data [DATAROOTDIR/locale]-  --mandir=DIR           man documentation [DATAROOTDIR/man]-  --docdir=DIR           documentation root [DATAROOTDIR/doc/curl]-  --htmldir=DIR          html documentation [DOCDIR]-  --dvidir=DIR           dvi documentation [DOCDIR]-  --pdfdir=DIR           pdf documentation [DOCDIR]-  --psdir=DIR            ps documentation [DOCDIR]-_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>-  LIBS        libraries to pass to the linker, e.g. -l<library>-  CPPFLAGS    C/C++/Objective 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-ac_status=$?-fi--if test "$ac_init_help" = "recursive"; then-  # If there are subdirs, report their specific --help.-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue-    test -d "$ac_dir" || continue-    ac_builddir=.--case "$ac_dir" in-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;-*)-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`-  # A ".." for each directory in $ac_dir_suffix.-  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`-  case $ac_top_builddir_sub in-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;-  esac ;;-esac-ac_abs_top_builddir=$ac_pwd-ac_abs_builddir=$ac_pwd$ac_dir_suffix-# for backward compatibility:-ac_top_builddir=$ac_top_build_prefix--case $srcdir in-  .)  # We are building in place.-    ac_srcdir=.-    ac_top_srcdir=$ac_top_builddir_sub-    ac_abs_top_srcdir=$ac_pwd ;;-  [\\/]* | ?:[\\/]* )  # Absolute name.-    ac_srcdir=$srcdir$ac_dir_suffix;-    ac_top_srcdir=$srcdir-    ac_abs_top_srcdir=$srcdir ;;-  *) # Relative name.-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix-    ac_top_srcdir=$ac_top_build_prefix$srcdir-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;-esac-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix--    cd "$ac_dir" || { ac_status=$?; continue; }-    # Check for guested 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-    else-      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2-    fi || ac_status=$?-    cd "$ac_pwd" || { ac_status=$?; break; }-  done-fi--test -n "$ac_init_help" && exit $ac_status-if $ac_init_version; then-  cat <<\_ACEOF-Haskell curl package configure 1.1-generated by GNU Autoconf 2.61--Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,-2002, 2003, 2004, 2005, 2006 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-fi-cat >config.log <<_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.61.  Invocation command line was--  $ $0 $@--_ACEOF-exec 5>>config.log-{-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`-/usr/bin/hostinfo      = `(/usr/bin/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-IFS=$as_save_IFS--} >&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_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_arg'"-      ;;-    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: Use '\'' to represent an apostrophe within the trap.-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.-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,-(-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do-    eval ac_val=\$$ac_var-    case $ac_val in #(-    *${as_nl}*)-      case $ac_var in #(-      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;-      esac-      case $ac_var in #(-      _ | IFS | as_nl) ;; #(-      *) $as_unset $ac_var ;;-      esac ;;-    esac-  done-  (set) 2>&1 |-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(-    *${as_nl}ac_space=\ *)-      sed -n \-	"s/'\''/'\''\\\\'\'''\''/g;-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"-      ;; #(-    *)-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"-      ;;-    esac |-    sort-)-    echo--    cat <<\_ASBOX-## ----------------- ##-## Output variables. ##-## ----------------- ##-_ASBOX-    echo-    for ac_var in $ac_subst_vars-    do-      eval ac_val=\$$ac_var-      case $ac_val in-      *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;-      esac-      echo "$ac_var='\''$ac_val'\''"-    done | sort-    echo--    if test -n "$ac_subst_files"; then-      cat <<\_ASBOX-## ------------------- ##-## File substitutions. ##-## ------------------- ##-_ASBOX-      echo-      for ac_var in $ac_subst_files-      do-	eval ac_val=\$$ac_var-	case $ac_val in-	*\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;-	esac-	echo "$ac_var='\''$ac_val'\''"-      done | sort-      echo-    fi--    if test -s confdefs.h; then-      cat <<\_ASBOX-## ----------- ##-## confdefs.h. ##-## ----------- ##-_ASBOX-      echo-      cat confdefs.h-      echo-    fi-    test "$ac_signal" != 0 &&-      echo "$as_me: caught signal $ac_signal"-    echo "$as_me: exit $exit_status"-  } >&5-  rm -f core *.core core.conftest.* &&-    rm -f -r 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 -f -r conftest* 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 -n "$CONFIG_SITE"; then-  set x "$CONFIG_SITE"-elif test "x$prefix" != xNONE; then-  set x "$prefix/share/config.site" "$prefix/etc/config.site"-else-  set x "$ac_default_prefix/share/config.site" \-	"$ac_default_prefix/etc/config.site"-fi-shift-for ac_site_file-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 $ac_precious_vars; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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-IFS=$as_save_IFS--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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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-IFS=$as_save_IFS--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--  if test "x$ac_ct_CC" = x; then-    CC=""-  else-    case $cross_compiling:$ac_tool_warned in-yes:)-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools-whose name does not start with the host triplet.  If you think this-configuration is useful to you, please write to autoconf@gnu.org." >&5-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools-whose name does not start with the host triplet.  If you think this-configuration is useful to you, please write to autoconf@gnu.org." >&2;}-ac_tool_warned=yes ;;-esac-    CC=$ac_ct_CC-  fi-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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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-IFS=$as_save_IFS--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-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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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-IFS=$as_save_IFS--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.exe-  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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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-IFS=$as_save_IFS--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.exe-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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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-IFS=$as_save_IFS--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--  if test "x$ac_ct_CC" = x; then-    CC=""-  else-    case $cross_compiling:$ac_tool_warned in-yes:)-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools-whose name does not start with the host triplet.  If you think this-configuration is useful to you, please write to autoconf@gnu.org." >&5-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools-whose name does not start with the host triplet.  If you think this-configuration is useful to you, please write to autoconf@gnu.org." >&2;}-ac_tool_warned=yes ;;-esac-    CC=$ac_ct_CC-  fi-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`-{ (ac_try="$ac_compiler --version >&5"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5-  (eval "$ac_compiler --version >&5") 2>&5-  ac_status=$?-  echo "$as_me:$LINENO: \$? = $ac_status" >&5-  (exit $ac_status); }-{ (ac_try="$ac_compiler -v >&5"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5-  (eval "$ac_compiler -v >&5") 2>&5-  ac_status=$?-  echo "$as_me:$LINENO: \$? = $ac_status" >&5-  (exit $ac_status); }-{ (ac_try="$ac_compiler -V >&5"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5-  (eval "$ac_compiler -V >&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[^ ]*//'`-#-# List of possible output files, starting from the most likely.-# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)-# only as a last resort.  b.out is created by i960 compilers.-ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'-#-# The IRIX 6 linker writes into existing files which may not be-# executable, retaining their permissions.  Remove them first so a-# subsequent execution test works.-ac_rmfiles=-for ac_file in $ac_files-do-  case $ac_file in-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;-  esac-done-rm -f $ac_rmfiles--if { (ac_try="$ac_link_default"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5-  (eval "$ac_link_default") 2>&5-  ac_status=$?-  echo "$as_me:$LINENO: \$? = $ac_status" >&5-  (exit $ac_status); }; then-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'-# in a Makefile.  We should not override ac_cv_exeext if it was cached,-# so that the user can short-circuit this test for compilers unknown to-# Autoconf.-for ac_file in $ac_files ''-do-  test -f "$ac_file" || continue-  case $ac_file in-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )-	;;-    [ab].out )-	# We found the default executable, but exeext='' is most-	# certainly right.-	break;;-    *.* )-        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;-	then :; else-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`-	fi-	# We set ac_cv_exeext here because the later test for it is not-	# safe: cross compilers may not add the suffix if given an `-o'-	# argument, so we may need to know it at that point already.-	# Even if this section looks crufty: it has the advantage of-	# actually working.-	break;;-    * )-	break;;-  esac-done-test "$ac_cv_exeext" = no && ac_cv_exeext=--else-  ac_file=''-fi--{ echo "$as_me:$LINENO: result: $ac_file" >&5-echo "${ECHO_T}$ac_file" >&6; }-if test -z "$ac_file"; then-  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--# Check that 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'-  { (case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 that 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 { (ac_try="$ac_link"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 | *.map | *.inf | *.o | *.obj ) ;;-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`-	  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 { (ac_try="$ac_compile"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5-  (eval "$ac_compile") 2>&5-  ac_status=$?-  echo "$as_me:$LINENO: \$? = $ac_status" >&5-  (exit $ac_status); }; then-  for ac_file in conftest.o conftest.obj conftest.*; do-  test -f "$ac_file" || continue;-  case $ac_file in-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;-    *) 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 { (ac_try="$ac_compile"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {-	 test -z "$ac_c_werror_flag" ||-	 test ! -s conftest.err-       } && test -s conftest.$ac_objext; 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 core 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-{ 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-  ac_save_c_werror_flag=$ac_c_werror_flag-   ac_c_werror_flag=yes-   ac_cv_prog_cc_g=no-   CFLAGS="-g"-   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 { (ac_try="$ac_compile"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {-	 test -z "$ac_c_werror_flag" ||-	 test ! -s conftest.err-       } && test -s conftest.$ac_objext; then-  ac_cv_prog_cc_g=yes-else-  echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--	CFLAGS=""-      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 { (ac_try="$ac_compile"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {-	 test -z "$ac_c_werror_flag" ||-	 test ! -s conftest.err-       } && test -s conftest.$ac_objext; then-  :-else-  echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--	ac_c_werror_flag=$ac_save_c_werror_flag-	 CFLAGS="-g"-	 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 { (ac_try="$ac_compile"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {-	 test -z "$ac_c_werror_flag" ||-	 test ! -s conftest.err-       } && test -s conftest.$ac_objext; then-  ac_cv_prog_cc_g=yes-else-  echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5---fi--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-   ac_c_werror_flag=$ac_save_c_werror_flag-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 ISO C89" >&5-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }-if test "${ac_cv_prog_cc_c89+set}" = set; then-  echo $ECHO_N "(cached) $ECHO_C" >&6-else-  ac_cv_prog_cc_c89=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 -std 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 -std.  */-int osf4_cc_array ['\x00' == 0 ? 1 : -1];--/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters-   inside strings and character constants.  */-#define FOO(x) 'x'-int xlc6_cc_array[FOO(a) == 'x' ? 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-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"-do-  CC="$ac_save_CC $ac_arg"-  rm -f conftest.$ac_objext-if { (ac_try="$ac_compile"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {-	 test -z "$ac_c_werror_flag" ||-	 test ! -s conftest.err-       } && test -s conftest.$ac_objext; then-  ac_cv_prog_cc_c89=$ac_arg-else-  echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5---fi--rm -f core conftest.err conftest.$ac_objext-  test "x$ac_cv_prog_cc_c89" != "xno" && break-done-rm -f conftest.$ac_ext-CC=$ac_save_CC--fi-# AC_CACHE_VAL-case "x$ac_cv_prog_cc_c89" in-  x)-    { echo "$as_me:$LINENO: result: none needed" >&5-echo "${ECHO_T}none needed" >&6; } ;;-  xno)-    { echo "$as_me:$LINENO: result: unsupported" >&5-echo "${ECHO_T}unsupported" >&6; } ;;-  *)-    CC="$CC $ac_cv_prog_cc_c89"-    { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;-esac---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 { (ac_try="$ac_cpp conftest.$ac_ext"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||-	 test ! -s conftest.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 nonexistent 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 { (ac_try="$ac_cpp conftest.$ac_ext"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||-	 test ! -s conftest.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 { (ac_try="$ac_cpp conftest.$ac_ext"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||-	 test ! -s conftest.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 nonexistent 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 { (ac_try="$ac_cpp conftest.$ac_ext"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||-	 test ! -s conftest.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 { (ac_try="$ac_cpp conftest.$ac_ext"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||-	 test ! -s conftest.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, we kill variables containing newlines.-# 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.-(-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do-    eval ac_val=\$$ac_var-    case $ac_val in #(-    *${as_nl}*)-      case $ac_var in #(-      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;-      esac-      case $ac_var in #(-      _ | IFS | as_nl) ;; #(-      *) $as_unset $ac_var ;;-      esac ;;-    esac-  done--  (set) 2>&1 |-    case $as_nl`(ac_space=' '; set) 2>&1` in #(-    *${as_nl}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 "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"-      ;;-    esac |-    sort-) |-  sed '-     /^ac_cv_env_/b end-     t clear-     :clear-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/-     t end-     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 "$as_me:$LINENO: updating cache $cache_file" >&5-echo "$as_me: updating cache $cache_file" >&6;}-    cat confcache >$cache_file-  else-    { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5-echo "$as_me: not updating unwritable cache $cache_file" >&6;}-  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}'--# 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 branch to the quote section.  Otherwise,-# look for a macro that doesn't take arguments.-ac_script='-t clear-:clear-s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\)/-D\1=\2/g-t quote-s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)/-D\1=\2/g-t quote-b any-:quote-s/[	 `~#$^&*(){}\\|;'\''"<>?]/\\&/g-s/\[/\\&/g-s/\]/\\&/g-s/\$/$$/g-H-:any-${-	g-	s/^\n//-	s/\n/ /g-	p-}-'-DEFS=`sed -n "$ac_script" confdefs.h`---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_script='s/\$U\././;s/\.o$//;s/\.obj$//'-  ac_i=`echo "$ac_i" | sed "$ac_script"`-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR-  #    will be set to the directory where LIBOBJS objects are built.-  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"-  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$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 more Bourne compatible-DUALCASE=1; export DUALCASE # for MKS sh-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+"$@"}'='"$@"'-  setopt NO_GLOB_SUBST-else-  case `(set -o) 2>/dev/null` in-  *posix*) set -o posix ;;-esac--fi-----# PATH needs CR-# 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--# Support unset when possible.-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then-  as_unset=unset-else-  as_unset=false-fi---# IFS-# We need space, tab and new line, in precisely that order.  Quoting is-# there to prevent editors from complaining about space-tab.-# (If _AS_PATH_WALK were called with IFS unset, it would disable word-# splitting by setting IFS to empty value.)-as_nl='-'-IFS=" ""	$as_nl"--# Find who we are.  Look in the path if we contain no directory separator.-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-IFS=$as_save_IFS--     ;;-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_myself: error: cannot find myself; rerun with an absolute file name" >&2-  { (exit 1); exit 1; }-fi--# Work around bugs in pre-3.0 UWIN ksh.-for as_var in ENV MAIL MAILPATH-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var-done-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) >/dev/null 2>&1 && $as_unset $as_var-  fi-done--# Required to use basename.-if expr a : '\(a\)' >/dev/null 2>&1 &&-   test "X`expr 00001 : '.*\(...\)'`" = X001; 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'`--# CDPATH.-$as_unset CDPATH----  as_lineno_1=$LINENO-  as_lineno_2=$LINENO-  test "x$as_lineno_1" != "x$as_lineno_2" &&-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {--  # 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 after each line using $LINENO; the second 'sed'-  # does the real work.  The second script uses 'N' to pair each-  # line-number line with the line containing $LINENO, 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-  # scripts with optimization help from Paolo Bonzini.  Blame Lee-  # E. McMahon (1931-1989) for sed's syntax.  :-)-  sed -n '-    p-    /[$]LINENO/=-  ' <$as_myself |-    sed '-      s/[$]LINENO.*/&-/-      t lineno-      b-      :lineno-      N-      :loop-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/-      t loop-      s/-\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 sensitive to this).-  . "./$as_me.lineno"-  # Exit status is that of the last command.-  exit-}---if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then-  as_dirname=dirname-else-  as_dirname=false-fi--ECHO_C= ECHO_N= ECHO_T=-case `echo -n x` in--n*)-  case `echo 'x\c'` in-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.-  *)   ECHO_C='\c';;-  esac;;-*)-  ECHO_N='-n';;-esac--if expr a : '\(a\)' >/dev/null 2>&1 &&-   test "X`expr 00001 : '.*\(...\)'`" = X001; then-  as_expr=expr-else-  as_expr=false-fi--rm -f conf$$ conf$$.exe conf$$.file-if test -d conf$$.dir; then-  rm -f conf$$.dir/conf$$.file-else-  rm -f conf$$.dir-  mkdir conf$$.dir-fi-echo >conf$$.file-if ln -s conf$$.file conf$$ 2>/dev/null; then-  as_ln_s='ln -s'-  # ... but there are two gotchas:-  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.-  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.-  # In both cases, we have to default to `cp -p'.-  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||-    as_ln_s='cp -p'-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$$.dir/conf$$.file conf$$.file-rmdir conf$$.dir 2>/dev/null--if mkdir -p . 2>/dev/null; then-  as_mkdir_p=:-else-  test -d ./-p && rmdir ./-p-  as_mkdir_p=false-fi--if test -x / >/dev/null 2>&1; then-  as_test_x='test -x'-else-  if ls -dL / >/dev/null 2>&1; then-    as_ls_L_option=L-  else-    as_ls_L_option=-  fi-  as_test_x='-    eval sh -c '\''-      if test -d "$1"; then-        test -d "$1/.";-      else-	case $1 in-        -*)set "./$1";;-	esac;-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in-	???[sx]*):;;*)false;;esac;fi-    '\'' sh-  '-fi-as_executable_p=$as_test_x--# 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'"---exec 6>&1--# Save the log message, to keep $[0] and so on meaningful, and to-# report actual input values of CONFIG_FILES etc. instead of their-# values after options handling.-ac_log="-This file was extended by Haskell curl package $as_me 1.1, which was-generated by GNU Autoconf 2.61.  Invocation command line was--  CONFIG_FILES    = $CONFIG_FILES-  CONFIG_HEADERS  = $CONFIG_HEADERS-  CONFIG_LINKS    = $CONFIG_LINKS-  CONFIG_COMMANDS = $CONFIG_COMMANDS-  $ $0 $@--on `(hostname || uname -n) 2>/dev/null | sed 1q`-"--_ACEOF--cat >>$CONFIG_STATUS <<_ACEOF-# Files that config.status was made for.-config_files="$ac_config_files"--_ACEOF--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 and configuration settings, 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.61,-  with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"--Copyright (C) 2006 Free Software Foundation, Inc.-This config.status script is free software; the Free Software Foundation-gives unlimited permission to copy, distribute and modify it."--ac_pwd='$ac_pwd'-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-    ;;-  esac--  case $ac_option in-  # Handling of the options.-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)-    ac_cs_recheck=: ;;-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )-    echo "$ac_cs_version"; exit ;;-  --debug | --debu | --deb | --de | --d | -d )-    debug=: ;;-  --file | --fil | --fi | --f )-    $ac_shift-    CONFIG_FILES="$CONFIG_FILES $ac_optarg"-    ac_need_defaults=false;;-  --he | --h |  --help | --hel | -h )-    echo "$ac_cs_usage"; exit ;;-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \-  | -silent | --silent | --silen | --sile | --sil | --si | --s)-    ac_cs_silent=: ;;--  # This is an error.-  -*) { 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"-     ac_need_defaults=false ;;--  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 CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6-  CONFIG_SHELL=$SHELL-  export CONFIG_SHELL-  exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion-fi--_ACEOF-cat >>$CONFIG_STATUS <<\_ACEOF-exec 5>>config.log-{-  echo-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX-## Running $as_me. ##-_ASBOX-  echo "$ac_log"-} >&5--_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF-_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF--# Handling of arguments.-for ac_config_target in $ac_config_targets-do-  case $ac_config_target in-    "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 against having it here, and in addition,-# creating and moving files from /tmp can sometimes cause problems.-# Hook for its removal unless debugging.-# Note that there is a small window in which the directory will not be cleaned:-# after its creation but before its name has been assigned to `$tmp'.-$debug ||-{-  tmp=-  trap 'exit_status=$?-  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$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 "./confXXXXXX") 2>/dev/null` &&-  test -n "$tmp" && test -d "$tmp"-}  ||-{-  tmp=./conf$$-$RANDOM-  (umask 077 && mkdir "$tmp")-} ||-{-   echo "$me: cannot create a temporary directory in ." >&2-   { (exit 1); exit 1; }-}--#-# Set up the sed scripts for 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--_ACEOF----ac_delim='%!_!# '-for ac_last_try in false false false false false :; do-  cat >conf$$subs.sed <<_ACEOF-SHELL!$SHELL$ac_delim-PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim-PACKAGE_NAME!$PACKAGE_NAME$ac_delim-PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim-PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim-PACKAGE_STRING!$PACKAGE_STRING$ac_delim-PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim-exec_prefix!$exec_prefix$ac_delim-prefix!$prefix$ac_delim-program_transform_name!$program_transform_name$ac_delim-bindir!$bindir$ac_delim-sbindir!$sbindir$ac_delim-libexecdir!$libexecdir$ac_delim-datarootdir!$datarootdir$ac_delim-datadir!$datadir$ac_delim-sysconfdir!$sysconfdir$ac_delim-sharedstatedir!$sharedstatedir$ac_delim-localstatedir!$localstatedir$ac_delim-includedir!$includedir$ac_delim-oldincludedir!$oldincludedir$ac_delim-docdir!$docdir$ac_delim-infodir!$infodir$ac_delim-htmldir!$htmldir$ac_delim-dvidir!$dvidir$ac_delim-pdfdir!$pdfdir$ac_delim-psdir!$psdir$ac_delim-libdir!$libdir$ac_delim-localedir!$localedir$ac_delim-mandir!$mandir$ac_delim-DEFS!$DEFS$ac_delim-ECHO_C!$ECHO_C$ac_delim-ECHO_N!$ECHO_N$ac_delim-ECHO_T!$ECHO_T$ac_delim-LIBS!$LIBS$ac_delim-build_alias!$build_alias$ac_delim-host_alias!$host_alias$ac_delim-target_alias!$target_alias$ac_delim-CC!$CC$ac_delim-CFLAGS!$CFLAGS$ac_delim-LDFLAGS!$LDFLAGS$ac_delim-CPPFLAGS!$CPPFLAGS$ac_delim-ac_ct_CC!$ac_ct_CC$ac_delim-EXEEXT!$EXEEXT$ac_delim-OBJEXT!$OBJEXT$ac_delim-CPP!$CPP$ac_delim-CURL_BUILD_PACKAGE!$CURL_BUILD_PACKAGE$ac_delim-BUILD_PACKAGE_BOOL!$BUILD_PACKAGE_BOOL$ac_delim-LIBOBJS!$LIBOBJS$ac_delim-LTLIBOBJS!$LTLIBOBJS$ac_delim-_ACEOF--  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 49; then-    break-  elif $ac_last_try; then-    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}-   { (exit 1); exit 1; }; }-  else-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "-  fi-done--ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`-if test -n "$ac_eof"; then-  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`-  ac_eof=`expr $ac_eof + 1`-fi--cat >>$CONFIG_STATUS <<_ACEOF-cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end-_ACEOF-sed '-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g-s/^/s,@/; s/!/@,|#_!!_#|/-:n-t n-s/'"$ac_delim"'$/,g/; t-s/$/\\/; p-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n-' >>$CONFIG_STATUS <conf$$subs.sed-rm -f conf$$subs.sed-cat >>$CONFIG_STATUS <<_ACEOF-:end-s/|#_!!_#|//g-CEOF$ac_eof-_ACEOF---# 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--cat >>$CONFIG_STATUS <<\_ACEOF-fi # test -n "$CONFIG_FILES"---for ac_tag in  :F $CONFIG_FILES-do-  case $ac_tag in-  :[FHLC]) ac_mode=$ac_tag; continue;;-  esac-  case $ac_mode$ac_tag in-  :[FHL]*:*);;-  :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5-echo "$as_me: error: Invalid tag $ac_tag." >&2;}-   { (exit 1); exit 1; }; };;-  :[FH]-) ac_tag=-:-;;-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;-  esac-  ac_save_IFS=$IFS-  IFS=:-  set x $ac_tag-  IFS=$ac_save_IFS-  shift-  ac_file=$1-  shift--  case $ac_mode in-  :L) ac_source=$1;;-  :[FH])-    ac_file_inputs=-    for ac_f-    do-      case $ac_f in-      -) ac_f="$tmp/stdin";;-      *) # Look for the file first in the build tree, then in the source tree-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,-	 # because $ac_f cannot contain `:'.-	 test -f "$ac_f" ||-	   case $ac_f in-	   [\\/$]*) false;;-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;-	   esac ||-	   { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5-echo "$as_me: error: cannot find input file: $ac_f" >&2;}-   { (exit 1); exit 1; }; };;-      esac-      ac_file_inputs="$ac_file_inputs $ac_f"-    done--    # 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.  */-    configure_input="Generated from "`IFS=:-	  echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."-    if test x"$ac_file" != x-; then-      configure_input="$ac_file.  $configure_input"-      { echo "$as_me:$LINENO: creating $ac_file" >&5-echo "$as_me: creating $ac_file" >&6;}-    fi--    case $ac_tag in-    *:-:* | *:-) cat >"$tmp/stdin";;-    esac-    ;;-  esac--  ac_dir=`$as_dirname -- "$ac_file" ||-$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'`-  { as_dir="$ac_dir"-  case $as_dir in #(-  -*) as_dir=./$as_dir;;-  esac-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {-    as_dirs=-    while :; do-      case $as_dir in #(-      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(-      *) as_qdir=$as_dir;;-      esac-      as_dirs="'$as_qdir' $as_dirs"-      as_dir=`$as_dirname -- "$as_dir" ||-$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'`-      test -d "$as_dir" && break-    done-    test -z "$as_dirs" || eval "mkdir $as_dirs"-  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5-echo "$as_me: error: cannot create directory $as_dir" >&2;}-   { (exit 1); exit 1; }; }; }-  ac_builddir=.--case "$ac_dir" in-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;-*)-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`-  # A ".." for each directory in $ac_dir_suffix.-  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`-  case $ac_top_builddir_sub in-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;-  esac ;;-esac-ac_abs_top_builddir=$ac_pwd-ac_abs_builddir=$ac_pwd$ac_dir_suffix-# for backward compatibility:-ac_top_builddir=$ac_top_build_prefix--case $srcdir in-  .)  # We are building in place.-    ac_srcdir=.-    ac_top_srcdir=$ac_top_builddir_sub-    ac_abs_top_srcdir=$ac_pwd ;;-  [\\/]* | ?:[\\/]* )  # Absolute name.-    ac_srcdir=$srcdir$ac_dir_suffix;-    ac_top_srcdir=$srcdir-    ac_abs_top_srcdir=$srcdir ;;-  *) # Relative name.-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix-    ac_top_srcdir=$ac_top_build_prefix$srcdir-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;-esac-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix---  case $ac_mode in-  :F)-  #-  # CONFIG_FILE-  #--_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF-# If the template does not know about datarootdir, expand it.-# FIXME: This hack should be removed a few years after 2.60.-ac_datarootdir_hack=; ac_datarootdir_seen=--case `sed -n '/datarootdir/ {-  p-  q-}-/@datadir@/p-/@docdir@/p-/@infodir@/p-/@localedir@/p-/@mandir@/p-' $ac_file_inputs` in-*datarootdir*) ac_datarootdir_seen=yes;;-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)-  { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5-echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}-_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF-  ac_datarootdir_hack='-  s&@datadir@&$datadir&g-  s&@docdir@&$docdir&g-  s&@infodir@&$infodir&g-  s&@localedir@&$localedir&g-  s&@mandir@&$mandir&g-    s&\\\${datarootdir}&$datarootdir&g' ;;-esac-_ACEOF--# Neutralize VPATH when `$srcdir' = `.'.-# Shell code in configure.ac might set extrasub.-# FIXME: do we really want to maintain this feature?-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&@top_builddir@&$ac_top_builddir_sub&;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&@abs_top_builddir@&$ac_abs_top_builddir&;t t-$ac_datarootdir_hack-" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out--test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&-  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&-  { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'-which seems to be undefined.  Please make sure it is defined." >&5-echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'-which seems to be undefined.  Please make sure it is defined." >&2;}--  rm -f "$tmp/stdin"-  case $ac_file in-  -) cat "$tmp/out"; rm -f "$tmp/out";;-  *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;-  esac- ;;----  esac--done # for ac_tag---{ (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
@@ -1,16 +0,0 @@-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
@@ -1,6 +0,0 @@--- @configure_input@--- System-dependent values used by Distribution.Simple.defaultUserHooks----buildable:  @BUILD_PACKAGE_BOOL@-cc-options: @CPPFLAGS@-ld-options: @LDFLAGS@
− curlc.c
@@ -1,69 +0,0 @@-/*- * Haskell FFI friendly wrappers to curl_easy_* functions- * for setting/getting option values. Could import these into- * .hs without too much trouble, but calling out to 'typed'- * versions saves the C compiler from issuing warnings.- *- * (c) 2007-2009, Galois, Inc.- *- */-#include <curl/curl.h>--int curl_easy_getinfo_long(void *curl, long tg, long *pl)-{-    return curl_easy_getinfo(curl, CURLINFO_LONG+tg, pl);-}--int curl_easy_getinfo_string(void *curl, long tg, char **s)-{-    return curl_easy_getinfo(curl, CURLINFO_STRING+tg, s);-}--int curl_easy_getinfo_double(void *curl, long tg, double *d)-{-    return curl_easy_getinfo(curl, CURLINFO_DOUBLE+tg, d);-}--int curl_easy_getinfo_slist(void *curl, long tg, char ***s)-{-    return curl_easy_getinfo(curl, CURLINFO_SLIST+tg, s);-}---int curl_easy_setopt_long(void *curl, int i, long x)-{ return curl_easy_setopt(curl,i,x); }--int curl_easy_setopt_longlong(void *curl, int i, long long x)-{ return curl_easy_setopt(curl,i,x); }--int curl_easy_setopt_string(void *curl, int i, char *x)-{ return curl_easy_setopt(curl,i,x); }--int curl_easy_setopt_ptr(void *curl, int i, void *x)-{ return curl_easy_setopt(curl,i,x); }--/*- * Function curl_version_str()- *- * Returns the libcurl version number as a "MAJOR.MINOR.PATCH" string.- *- * Note: a static string, so no free()ing required (or asked for! :-)- */-char*-curl_version_str() {-  return LIBCURL_VERSION;-}--/*- * Function curl_version_num()- *- * Returns the libcurl version number in 3-byte format 0xXXYYZZ,- * representing major,minor and patch levels. Encoded in a (host)- * 'int' value, making for easy comparisons.- *- * See curlver.h for complete story.- */-int-curl_version_num() {-  return LIBCURL_VERSION_NUM;-}
shpider.cabal view
@@ -1,10 +1,14 @@ Name:               shpider -Version:            0.1.1+Version:            0.2 Synopsis:           Web automation library in Haskell. Description:-    Shpider is a web automation library for Haskell.   It allows you to quickly write crawlers, and for simple cases ( like following links ) even without reading the page source.+    Shpider is a web automation library for Haskell.   It allows you to quickly+    write crawlers, and for simple cases ( like following links ) even without+    reading the page source.     .-    It has useful features such as turning relative links from a page into absolute links, options to authorize transactions only on a given domain, and the option to only download html documents.+    It has useful features such as turning relative links from a page into+    absolute links, options to authorize transactions only on a given domain,+    and the option to only download html documents.     .     It also provides a nice syntax for filling out forms.     .@@ -17,19 +21,29 @@     >            "occupation" =: "unemployed Haskell programmer"     >            "location" =: "mother's house"     .-    Shpider contains a patched version of the curl package ( the original package's garbage-collection caused non-deterministic behaviour ).  The curl licence is therefore distributed with this package. Category:           Web License:            BSD3 License-file:       LICENSE-Author:             Johnny Morrice-Maintainer:         Johnny Morrice <spoon@killersmurf.com>-Homepage:           http://github.com/elginer/shpider-Build-type:         Configure+Author:             Johnny Morrice <spoon@killersmurf.com>, Ozgun Ataman+Maintainer:         Ozgun Ataman <ozataman@gmail.com>+Homepage:           http://github.com/ozataman/shpider+Build-type:         Simple Cabal-version:      >= 1.2.0-Extra-source-files: LICENSE.CURL, configure, configure.ac, curl.buildinfo.in+Extra-source-files:  + Library-   Build-depends:   base < 5, regex-posix , tagsoup-parsec , url>=2 , containers , tagsoup , mtl , bytestring+   Build-depends:   +      base < 5+    , regex-posix +    , curl+    , tagsoup-parsec +    , url>=2 +    , containers +    , tagsoup +    , mtl +    , bytestring+    , web-encodings    Exposed-modules: Network.Shpider.URL                     Network.Shpider.Code                     Network.Shpider.State@@ -39,14 +53,4 @@                     Network.Shpider.Pairs                     Network.Shpider    Other-modules:   Network.Shpider.TextUtils-                    Network.Shpider.Curl.Curl-                    Network.Shpider.Curl.Types-                    Network.Shpider.Curl.Opts-                    Network.Shpider.Curl.Code-                    Network.Shpider.Curl.Info-                    Network.Shpider.Curl.Post-                    Network.Shpider.Curl.Debug-                    Network.Shpider.Curl.Easy-   -   c-sources: curlc.c-   Extra-libraries: curl+