curlhs 0.0.2 → 0.1.1
raw patch · 28 files changed
+7841/−3777 lines, 28 filesdep +rtlddep ~bytestringdep ~timesetup-changedPVP ok
version bump matches the API change (PVP)
Dependencies added: rtld
Dependency ranges changed: bytestring, time
API changes (from Hackage documentation)
- Network.Curlhs.Base: CCURLSHcode :: CInt -> CCURLSHcode
- Network.Curlhs.Base: CCURLSHoption'FLOCK :: CInt -> CCURLSHoption'FLOCK
- Network.Curlhs.Base: CCURLSHoption'FUNLOCK :: CInt -> CCURLSHoption'FUNLOCK
- Network.Curlhs.Base: CCURLSHoption'Lock :: CInt -> CCURLSHoption'Lock
- Network.Curlhs.Base: CCURLSHoption'UsrPtr :: CInt -> CCURLSHoption'UsrPtr
- Network.Curlhs.Base: CCURL_certinfo :: CInt -> Ptr (Ptr CCURL_slist) -> CCURL_certinfo
- Network.Curlhs.Base: CCURL_fileinfo :: Ptr CChar -> CCURLfiletype -> CTime -> CUInt -> CInt -> CInt -> CCURL_off_t -> CLong -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> Ptr CChar -> CUInt -> Ptr CChar -> CSize -> CSize -> CCURL_fileinfo
- Network.Curlhs.Base: CCURL_forms :: CCURLformoption -> Ptr CChar -> CCURL_forms
- Network.Curlhs.Base: CCURL_httppost :: Ptr CCURL_httppost -> Ptr CChar -> CLong -> Ptr CChar -> CLong -> Ptr CChar -> CLong -> Ptr CChar -> Ptr CCURL_slist -> Ptr CCURL_httppost -> CLong -> Ptr CChar -> Ptr () -> CCURL_httppost
- Network.Curlhs.Base: CCURL_infotype :: CInt -> CCURL_infotype
- Network.Curlhs.Base: CCURL_khkey :: Ptr CChar -> CSize -> CCURL_khtype -> CCURL_khkey
- Network.Curlhs.Base: CCURL_khmatch :: CInt -> CCURL_khmatch
- Network.Curlhs.Base: CCURL_khstat :: CInt -> CCURL_khstat
- Network.Curlhs.Base: CCURL_khtype :: CInt -> CCURL_khtype
- Network.Curlhs.Base: CCURL_lock_access :: CInt -> CCURL_lock_access
- Network.Curlhs.Base: CCURL_lock_data :: CInt -> CCURL_lock_data
- Network.Curlhs.Base: CCURL_slist :: Ptr CChar -> Ptr CCURL_slist -> CCURL_slist
- Network.Curlhs.Base: CCURL_sockaddr :: CInt -> CInt -> CInt -> CUInt -> Ptr () -> CCURL_sockaddr
- Network.Curlhs.Base: CCURL_version_info_data :: CCURLversion -> Ptr CChar -> CUInt -> Ptr CChar -> CInt -> Ptr CChar -> CLong -> Ptr CChar -> Ptr (Ptr CChar) -> Ptr CChar -> CInt -> Ptr CChar -> CInt -> Ptr CChar -> CCURL_version_info_data
- Network.Curlhs.Base: CCURLcode :: CInt -> CCURLcode
- Network.Curlhs.Base: CCURLfiletype :: CInt -> CCURLfiletype
- Network.Curlhs.Base: CCURLformcode :: CInt -> CCURLformcode
- Network.Curlhs.Base: CCURLformoption :: CInt -> CCURLformoption
- Network.Curlhs.Base: CCURLinfo'CDouble :: CInt -> CCURLinfo'CDouble
- Network.Curlhs.Base: CCURLinfo'CLong :: CInt -> CCURLinfo'CLong
- Network.Curlhs.Base: CCURLinfo'CString :: CInt -> CCURLinfo'CString
- Network.Curlhs.Base: CCURLinfo'CertI :: CInt -> CCURLinfo'CertI
- Network.Curlhs.Base: CCURLinfo'SList :: CInt -> CCURLinfo'SList
- Network.Curlhs.Base: CCURLiocmd :: CInt -> CCURLiocmd
- Network.Curlhs.Base: CCURLioerr :: CInt -> CCURLioerr
- Network.Curlhs.Base: CCURLoption'CFile :: CInt -> CCURLoption'CFile
- Network.Curlhs.Base: CCURLoption'CLong :: CInt -> CCURLoption'CLong
- Network.Curlhs.Base: CCURLoption'CString :: CInt -> CCURLoption'CString
- Network.Curlhs.Base: CCURLoption'CURLSH :: CInt -> CCURLoption'CURLSH
- Network.Curlhs.Base: CCURLoption'FunPtr :: CInt -> CCURLoption'FunPtr
- Network.Curlhs.Base: CCURLoption'HTTPP :: CInt -> CCURLoption'HTTPP
- Network.Curlhs.Base: CCURLoption'Int64 :: CInt -> CCURLoption'Int64
- Network.Curlhs.Base: CCURLoption'SList :: CInt -> CCURLoption'SList
- Network.Curlhs.Base: CCURLoption'UsrPtr :: CInt -> CCURLoption'UsrPtr
- Network.Curlhs.Base: CCURLsocktype :: CInt -> CCURLsocktype
- Network.Curlhs.Base: CCURLversion :: CInt -> CCURLversion
- Network.Curlhs.Base: cCURLAUTH_ANY :: CLong
- Network.Curlhs.Base: cCURLAUTH_ANYSAFE :: CLong
- Network.Curlhs.Base: cCURLAUTH_BASIC :: CLong
- Network.Curlhs.Base: cCURLAUTH_DIGEST :: CLong
- Network.Curlhs.Base: cCURLAUTH_DIGEST_IE :: CLong
- Network.Curlhs.Base: cCURLAUTH_GSSNEGOTIATE :: CLong
- Network.Curlhs.Base: cCURLAUTH_NONE :: CLong
- Network.Curlhs.Base: cCURLAUTH_NTLM :: CLong
- Network.Curlhs.Base: cCURLAUTH_NTLM_WB :: CLong
- Network.Curlhs.Base: cCURLAUTH_ONLY :: CLong
- Network.Curlhs.Base: cCURLCLOSEPOLICY_CALLBACK :: CLong
- Network.Curlhs.Base: cCURLCLOSEPOLICY_LEAST_RECENTLY_USED :: CLong
- Network.Curlhs.Base: cCURLCLOSEPOLICY_LEAST_TRAFFIC :: CLong
- Network.Curlhs.Base: cCURLCLOSEPOLICY_NONE :: CLong
- Network.Curlhs.Base: cCURLCLOSEPOLICY_OLDEST :: CLong
- Network.Curlhs.Base: cCURLCLOSEPOLICY_SLOWEST :: CLong
- Network.Curlhs.Base: cCURLE_ABORTED_BY_CALLBACK :: CCURLcode
- Network.Curlhs.Base: cCURLE_AGAIN :: CCURLcode
- Network.Curlhs.Base: cCURLE_BAD_CONTENT_ENCODING :: CCURLcode
- Network.Curlhs.Base: cCURLE_BAD_DOWNLOAD_RESUME :: CCURLcode
- Network.Curlhs.Base: cCURLE_BAD_FUNCTION_ARGUMENT :: CCURLcode
- Network.Curlhs.Base: cCURLE_CHUNK_FAILED :: CCURLcode
- Network.Curlhs.Base: cCURLE_CONV_FAILED :: CCURLcode
- Network.Curlhs.Base: cCURLE_CONV_REQD :: CCURLcode
- Network.Curlhs.Base: cCURLE_COULDNT_CONNECT :: CCURLcode
- Network.Curlhs.Base: cCURLE_COULDNT_RESOLVE_HOST :: CCURLcode
- Network.Curlhs.Base: cCURLE_COULDNT_RESOLVE_PROXY :: CCURLcode
- Network.Curlhs.Base: cCURLE_FAILED_INIT :: CCURLcode
- Network.Curlhs.Base: cCURLE_FILESIZE_EXCEEDED :: CCURLcode
- Network.Curlhs.Base: cCURLE_FILE_COULDNT_READ_FILE :: CCURLcode
- Network.Curlhs.Base: cCURLE_FTP_ACCEPT_FAILED :: CCURLcode
- Network.Curlhs.Base: cCURLE_FTP_ACCEPT_TIMEOUT :: CCURLcode
- Network.Curlhs.Base: cCURLE_FTP_BAD_FILE_LIST :: CCURLcode
- Network.Curlhs.Base: cCURLE_FTP_CANT_GET_HOST :: CCURLcode
- Network.Curlhs.Base: cCURLE_FTP_COULDNT_RETR_FILE :: CCURLcode
- Network.Curlhs.Base: cCURLE_FTP_COULDNT_SET_TYPE :: CCURLcode
- Network.Curlhs.Base: cCURLE_FTP_COULDNT_USE_REST :: CCURLcode
- Network.Curlhs.Base: cCURLE_FTP_PORT_FAILED :: CCURLcode
- Network.Curlhs.Base: cCURLE_FTP_PRET_FAILED :: CCURLcode
- Network.Curlhs.Base: cCURLE_FTP_WEIRD_227_FORMAT :: CCURLcode
- Network.Curlhs.Base: cCURLE_FTP_WEIRD_PASS_REPLY :: CCURLcode
- Network.Curlhs.Base: cCURLE_FTP_WEIRD_PASV_REPLY :: CCURLcode
- Network.Curlhs.Base: cCURLE_FTP_WEIRD_SERVER_REPLY :: CCURLcode
- Network.Curlhs.Base: cCURLE_FUNCTION_NOT_FOUND :: CCURLcode
- Network.Curlhs.Base: cCURLE_GOT_NOTHING :: CCURLcode
- Network.Curlhs.Base: cCURLE_HTTP_POST_ERROR :: CCURLcode
- Network.Curlhs.Base: cCURLE_HTTP_RETURNED_ERROR :: CCURLcode
- Network.Curlhs.Base: cCURLE_INTERFACE_FAILED :: CCURLcode
- Network.Curlhs.Base: cCURLE_LDAP_CANNOT_BIND :: CCURLcode
- Network.Curlhs.Base: cCURLE_LDAP_INVALID_URL :: CCURLcode
- Network.Curlhs.Base: cCURLE_LDAP_SEARCH_FAILED :: CCURLcode
- Network.Curlhs.Base: cCURLE_LOGIN_DENIED :: CCURLcode
- Network.Curlhs.Base: cCURLE_NOT_BUILT_IN :: CCURLcode
- Network.Curlhs.Base: cCURLE_OK :: CCURLcode
- Network.Curlhs.Base: cCURLE_OPERATION_TIMEDOUT :: CCURLcode
- Network.Curlhs.Base: cCURLE_OUT_OF_MEMORY :: CCURLcode
- Network.Curlhs.Base: cCURLE_PARTIAL_FILE :: CCURLcode
- Network.Curlhs.Base: cCURLE_PEER_FAILED_VERIFICATION :: CCURLcode
- Network.Curlhs.Base: cCURLE_QUOTE_ERROR :: CCURLcode
- Network.Curlhs.Base: cCURLE_RANGE_ERROR :: CCURLcode
- Network.Curlhs.Base: cCURLE_READ_ERROR :: CCURLcode
- Network.Curlhs.Base: cCURLE_RECV_ERROR :: CCURLcode
- Network.Curlhs.Base: cCURLE_REMOTE_ACCESS_DENIED :: CCURLcode
- Network.Curlhs.Base: cCURLE_REMOTE_DISK_FULL :: CCURLcode
- Network.Curlhs.Base: cCURLE_REMOTE_FILE_EXISTS :: CCURLcode
- Network.Curlhs.Base: cCURLE_REMOTE_FILE_NOT_FOUND :: CCURLcode
- Network.Curlhs.Base: cCURLE_RTSP_CSEQ_ERROR :: CCURLcode
- Network.Curlhs.Base: cCURLE_RTSP_SESSION_ERROR :: CCURLcode
- Network.Curlhs.Base: cCURLE_SEND_ERROR :: CCURLcode
- Network.Curlhs.Base: cCURLE_SEND_FAIL_REWIND :: CCURLcode
- Network.Curlhs.Base: cCURLE_SSH :: CCURLcode
- Network.Curlhs.Base: cCURLE_SSL_CACERT :: CCURLcode
- Network.Curlhs.Base: cCURLE_SSL_CACERT_BADFILE :: CCURLcode
- Network.Curlhs.Base: cCURLE_SSL_CERTPROBLEM :: CCURLcode
- Network.Curlhs.Base: cCURLE_SSL_CIPHER :: CCURLcode
- Network.Curlhs.Base: cCURLE_SSL_CONNECT_ERROR :: CCURLcode
- Network.Curlhs.Base: cCURLE_SSL_CRL_BADFILE :: CCURLcode
- Network.Curlhs.Base: cCURLE_SSL_ENGINE_INITFAILED :: CCURLcode
- Network.Curlhs.Base: cCURLE_SSL_ENGINE_NOTFOUND :: CCURLcode
- Network.Curlhs.Base: cCURLE_SSL_ENGINE_SETFAILED :: CCURLcode
- Network.Curlhs.Base: cCURLE_SSL_ISSUER_ERROR :: CCURLcode
- Network.Curlhs.Base: cCURLE_SSL_SHUTDOWN_FAILED :: CCURLcode
- Network.Curlhs.Base: cCURLE_TELNET_OPTION_SYNTAX :: CCURLcode
- Network.Curlhs.Base: cCURLE_TFTP_ILLEGAL :: CCURLcode
- Network.Curlhs.Base: cCURLE_TFTP_NOSUCHUSER :: CCURLcode
- Network.Curlhs.Base: cCURLE_TFTP_NOTFOUND :: CCURLcode
- Network.Curlhs.Base: cCURLE_TFTP_PERM :: CCURLcode
- Network.Curlhs.Base: cCURLE_TFTP_UNKNOWNID :: CCURLcode
- Network.Curlhs.Base: cCURLE_TOO_MANY_REDIRECTS :: CCURLcode
- Network.Curlhs.Base: cCURLE_UNKNOWN_OPTION :: CCURLcode
- Network.Curlhs.Base: cCURLE_UNSUPPORTED_PROTOCOL :: CCURLcode
- Network.Curlhs.Base: cCURLE_UPLOAD_FAILED :: CCURLcode
- Network.Curlhs.Base: cCURLE_URL_MALFORMAT :: CCURLcode
- Network.Curlhs.Base: cCURLE_USE_SSL_FAILED :: CCURLcode
- Network.Curlhs.Base: cCURLE_WRITE_ERROR :: CCURLcode
- Network.Curlhs.Base: cCURLFILETYPE_DEVICE_BLOCK :: CCURLfiletype
- Network.Curlhs.Base: cCURLFILETYPE_DEVICE_CHAR :: CCURLfiletype
- Network.Curlhs.Base: cCURLFILETYPE_DIRECTORY :: CCURLfiletype
- Network.Curlhs.Base: cCURLFILETYPE_DOOR :: CCURLfiletype
- Network.Curlhs.Base: cCURLFILETYPE_FILE :: CCURLfiletype
- Network.Curlhs.Base: cCURLFILETYPE_NAMEDPIPE :: CCURLfiletype
- Network.Curlhs.Base: cCURLFILETYPE_SOCKET :: CCURLfiletype
- Network.Curlhs.Base: cCURLFILETYPE_SYMLINK :: CCURLfiletype
- Network.Curlhs.Base: cCURLFILETYPE_UNKNOWN :: CCURLfiletype
- Network.Curlhs.Base: cCURLFINFOFLAG_KNOWN_FILENAME :: CUInt
- Network.Curlhs.Base: cCURLFINFOFLAG_KNOWN_FILETYPE :: CUInt
- Network.Curlhs.Base: cCURLFINFOFLAG_KNOWN_GID :: CUInt
- Network.Curlhs.Base: cCURLFINFOFLAG_KNOWN_HLINKCOUNT :: CUInt
- Network.Curlhs.Base: cCURLFINFOFLAG_KNOWN_PERM :: CUInt
- Network.Curlhs.Base: cCURLFINFOFLAG_KNOWN_SIZE :: CUInt
- Network.Curlhs.Base: cCURLFINFOFLAG_KNOWN_TIME :: CUInt
- Network.Curlhs.Base: cCURLFINFOFLAG_KNOWN_UID :: CUInt
- Network.Curlhs.Base: cCURLFTPAUTH_DEFAULT :: CLong
- Network.Curlhs.Base: cCURLFTPAUTH_SSL :: CLong
- Network.Curlhs.Base: cCURLFTPAUTH_TLS :: CLong
- Network.Curlhs.Base: cCURLFTPMETHOD_DEFAULT :: CLong
- Network.Curlhs.Base: cCURLFTPMETHOD_MULTICWD :: CLong
- Network.Curlhs.Base: cCURLFTPMETHOD_NOCWD :: CLong
- Network.Curlhs.Base: cCURLFTPMETHOD_SINGLECWD :: CLong
- Network.Curlhs.Base: cCURLFTPSSL_CCC_ACTIVE :: CLong
- Network.Curlhs.Base: cCURLFTPSSL_CCC_NONE :: CLong
- Network.Curlhs.Base: cCURLFTPSSL_CCC_PASSIVE :: CLong
- Network.Curlhs.Base: cCURLFTP_CREATE_DIR :: CLong
- Network.Curlhs.Base: cCURLFTP_CREATE_DIR_NONE :: CLong
- Network.Curlhs.Base: cCURLFTP_CREATE_DIR_RETRY :: CLong
- Network.Curlhs.Base: cCURLGSSAPI_DELEGATION_FLAG :: CLong
- Network.Curlhs.Base: cCURLGSSAPI_DELEGATION_NONE :: CLong
- Network.Curlhs.Base: cCURLGSSAPI_DELEGATION_POLICY_FLAG :: CLong
- Network.Curlhs.Base: cCURLINFO_APPCONNECT_TIME :: CCURLinfo'CDouble
- Network.Curlhs.Base: cCURLINFO_CERTINFO :: CCURLinfo'CertI
- Network.Curlhs.Base: cCURLINFO_CONDITION_UNMET :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_CONNECT_TIME :: CCURLinfo'CDouble
- Network.Curlhs.Base: cCURLINFO_CONTENT_LENGTH_DOWNLOAD :: CCURLinfo'CDouble
- Network.Curlhs.Base: cCURLINFO_CONTENT_LENGTH_UPLOAD :: CCURLinfo'CDouble
- Network.Curlhs.Base: cCURLINFO_CONTENT_TYPE :: CCURLinfo'CString
- Network.Curlhs.Base: cCURLINFO_COOKIELIST :: CCURLinfo'SList
- Network.Curlhs.Base: cCURLINFO_DATA_IN :: CCURL_infotype
- Network.Curlhs.Base: cCURLINFO_DATA_OUT :: CCURL_infotype
- Network.Curlhs.Base: cCURLINFO_EFFECTIVE_URL :: CCURLinfo'CString
- Network.Curlhs.Base: cCURLINFO_END :: CCURL_infotype
- Network.Curlhs.Base: cCURLINFO_FILETIME :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_FTP_ENTRY_PATH :: CCURLinfo'CString
- Network.Curlhs.Base: cCURLINFO_HEADER_IN :: CCURL_infotype
- Network.Curlhs.Base: cCURLINFO_HEADER_OUT :: CCURL_infotype
- Network.Curlhs.Base: cCURLINFO_HEADER_SIZE :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_HTTPAUTH_AVAIL :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_HTTP_CONNECTCODE :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_LASTSOCKET :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_LOCAL_IP :: CCURLinfo'CString
- Network.Curlhs.Base: cCURLINFO_LOCAL_PORT :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_NAMELOOKUP_TIME :: CCURLinfo'CDouble
- Network.Curlhs.Base: cCURLINFO_NUM_CONNECTS :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_OS_ERRNO :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_PRETRANSFER_TIME :: CCURLinfo'CDouble
- Network.Curlhs.Base: cCURLINFO_PRIMARY_IP :: CCURLinfo'CString
- Network.Curlhs.Base: cCURLINFO_PRIMARY_PORT :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_PRIVATE :: CCURLinfo'CString
- Network.Curlhs.Base: cCURLINFO_PROXYAUTH_AVAIL :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_REDIRECT_COUNT :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_REDIRECT_TIME :: CCURLinfo'CDouble
- Network.Curlhs.Base: cCURLINFO_REDIRECT_URL :: CCURLinfo'CString
- Network.Curlhs.Base: cCURLINFO_REQUEST_SIZE :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_RESPONSE_CODE :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_RTSP_CLIENT_CSEQ :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_RTSP_CSEQ_RECV :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_RTSP_SERVER_CSEQ :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_RTSP_SESSION_ID :: CCURLinfo'CString
- Network.Curlhs.Base: cCURLINFO_SIZE_DOWNLOAD :: CCURLinfo'CDouble
- Network.Curlhs.Base: cCURLINFO_SIZE_UPLOAD :: CCURLinfo'CDouble
- Network.Curlhs.Base: cCURLINFO_SPEED_DOWNLOAD :: CCURLinfo'CDouble
- Network.Curlhs.Base: cCURLINFO_SPEED_UPLOAD :: CCURLinfo'CDouble
- Network.Curlhs.Base: cCURLINFO_SSL_DATA_IN :: CCURL_infotype
- Network.Curlhs.Base: cCURLINFO_SSL_DATA_OUT :: CCURL_infotype
- Network.Curlhs.Base: cCURLINFO_SSL_ENGINES :: CCURLinfo'SList
- Network.Curlhs.Base: cCURLINFO_SSL_VERIFYRESULT :: CCURLinfo'CLong
- Network.Curlhs.Base: cCURLINFO_STARTTRANSFER_TIME :: CCURLinfo'CDouble
- Network.Curlhs.Base: cCURLINFO_TEXT :: CCURL_infotype
- Network.Curlhs.Base: cCURLINFO_TOTAL_TIME :: CCURLinfo'CDouble
- Network.Curlhs.Base: cCURLIOCMD_NOP :: CCURLiocmd
- Network.Curlhs.Base: cCURLIOCMD_RESTARTREAD :: CCURLiocmd
- Network.Curlhs.Base: cCURLIOE_FAILRESTART :: CCURLioerr
- Network.Curlhs.Base: cCURLIOE_OK :: CCURLioerr
- Network.Curlhs.Base: cCURLIOE_UNKNOWNCMD :: CCURLioerr
- Network.Curlhs.Base: cCURLKHMATCH_MISMATCH :: CCURL_khmatch
- Network.Curlhs.Base: cCURLKHMATCH_MISSING :: CCURL_khmatch
- Network.Curlhs.Base: cCURLKHMATCH_OK :: CCURL_khmatch
- Network.Curlhs.Base: cCURLKHSTAT_DEFER :: CCURL_khstat
- Network.Curlhs.Base: cCURLKHSTAT_FINE :: CCURL_khstat
- Network.Curlhs.Base: cCURLKHSTAT_FINE_ADD_TO_FILE :: CCURL_khstat
- Network.Curlhs.Base: cCURLKHSTAT_REJECT :: CCURL_khstat
- Network.Curlhs.Base: cCURLKHTYPE_DSS :: CCURL_khtype
- Network.Curlhs.Base: cCURLKHTYPE_RSA :: CCURL_khtype
- Network.Curlhs.Base: cCURLKHTYPE_RSA1 :: CCURL_khtype
- Network.Curlhs.Base: cCURLKHTYPE_UNKNOWN :: CCURL_khtype
- Network.Curlhs.Base: cCURLOPT_ACCEPTTIMEOUT_MS :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_ACCEPT_ENCODING :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_ADDRESS_SCOPE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_APPEND :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_AUTOREFERER :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_BUFFERSIZE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_CAINFO :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_CAPATH :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_CERTINFO :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_CHUNK_BGN_FUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_CHUNK_DATA :: CCURLoption'UsrPtr
- Network.Curlhs.Base: cCURLOPT_CHUNK_END_FUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_CLOSEPOLICY :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_CLOSESOCKETDATA :: CCURLoption'UsrPtr
- Network.Curlhs.Base: cCURLOPT_CLOSESOCKETFUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_CONNECTTIMEOUT :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_CONNECTTIMEOUT_MS :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_CONNECT_ONLY :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_CONV_FROM_NETWORK_FUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_CONV_FROM_UTF8_FUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_CONV_TO_NETWORK_FUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_COOKIE :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_COOKIEFILE :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_COOKIEJAR :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_COOKIELIST :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_COOKIESESSION :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_COPYPOSTFIELDS :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_CRLF :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_CRLFILE :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_CUSTOMREQUEST :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_DEBUGDATA :: CCURLoption'UsrPtr
- Network.Curlhs.Base: cCURLOPT_DEBUGFUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_DIRLISTONLY :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_DNS_CACHE_TIMEOUT :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_DNS_SERVERS :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_DNS_USE_GLOBAL_CACHE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_EGDSOCKET :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_ERRORBUFFER :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_FAILONERROR :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_FILE :: CCURLoption'CFile
- Network.Curlhs.Base: cCURLOPT_FILETIME :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_FNMATCH_DATA :: CCURLoption'UsrPtr
- Network.Curlhs.Base: cCURLOPT_FNMATCH_FUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_FOLLOWLOCATION :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_FORBID_REUSE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_FRESH_CONNECT :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_FTPPORT :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_FTPSSLAUTH :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_FTP_ACCOUNT :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_FTP_ALTERNATIVE_TO_USER :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_FTP_CREATE_MISSING_DIRS :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_FTP_FILEMETHOD :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_FTP_RESPONSE_TIMEOUT :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_FTP_SKIP_PASV_IP :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_FTP_SSL_CCC :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_FTP_USE_EPRT :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_FTP_USE_EPSV :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_FTP_USE_PRET :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_GSSAPI_DELEGATION :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_HEADER :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_HEADERDATA :: CCURLoption'UsrPtr
- Network.Curlhs.Base: cCURLOPT_HEADERFUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_HTTP200ALIASES :: CCURLoption'SList
- Network.Curlhs.Base: cCURLOPT_HTTPAUTH :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_HTTPGET :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_HTTPHEADER :: CCURLoption'SList
- Network.Curlhs.Base: cCURLOPT_HTTPPOST :: CCURLoption'HTTPP
- Network.Curlhs.Base: cCURLOPT_HTTPPROXYTUNNEL :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_HTTP_CONTENT_DECODING :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_HTTP_TRANSFER_DECODING :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_HTTP_VERSION :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_IGNORE_CONTENT_LENGTH :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_INFILE :: CCURLoption'CFile
- Network.Curlhs.Base: cCURLOPT_INFILESIZE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_INFILESIZE_LARGE :: CCURLoption'Int64
- Network.Curlhs.Base: cCURLOPT_INTERFACE :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_INTERLEAVEDATA :: CCURLoption'UsrPtr
- Network.Curlhs.Base: cCURLOPT_INTERLEAVEFUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_IOCTLDATA :: CCURLoption'UsrPtr
- Network.Curlhs.Base: cCURLOPT_IOCTLFUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_IPRESOLVE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_ISSUERCERT :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_KEYPASSWD :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_KRBLEVEL :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_LOCALPORT :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_LOCALPORTRANGE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_LOW_SPEED_LIMIT :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_LOW_SPEED_TIME :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_MAIL_AUTH :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_MAIL_FROM :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_MAIL_RCPT :: CCURLoption'SList
- Network.Curlhs.Base: cCURLOPT_MAXCONNECTS :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_MAXFILESIZE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_MAXFILESIZE_LARGE :: CCURLoption'Int64
- Network.Curlhs.Base: cCURLOPT_MAXREDIRS :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_MAX_RECV_SPEED_LARGE :: CCURLoption'Int64
- Network.Curlhs.Base: cCURLOPT_MAX_SEND_SPEED_LARGE :: CCURLoption'Int64
- Network.Curlhs.Base: cCURLOPT_NETRC :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_NETRC_FILE :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_NEW_DIRECTORY_PERMS :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_NEW_FILE_PERMS :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_NOBODY :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_NOPROGRESS :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_NOPROXY :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_NOSIGNAL :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_OPENSOCKETDATA :: CCURLoption'UsrPtr
- Network.Curlhs.Base: cCURLOPT_OPENSOCKETFUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_PASSWORD :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_PORT :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_POST :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_POSTFIELDS :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_POSTFIELDSIZE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_POSTFIELDSIZE_LARGE :: CCURLoption'Int64
- Network.Curlhs.Base: cCURLOPT_POSTQUOTE :: CCURLoption'SList
- Network.Curlhs.Base: cCURLOPT_POSTREDIR :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_PREQUOTE :: CCURLoption'SList
- Network.Curlhs.Base: cCURLOPT_PRIVATE :: CCURLoption'UsrPtr
- Network.Curlhs.Base: cCURLOPT_PROGRESSDATA :: CCURLoption'UsrPtr
- Network.Curlhs.Base: cCURLOPT_PROGRESSFUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_PROTOCOLS :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_PROXY :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_PROXYAUTH :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_PROXYPASSWORD :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_PROXYPORT :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_PROXYTYPE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_PROXYUSERNAME :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_PROXYUSERPWD :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_PROXY_TRANSFER_MODE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_PUT :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_QUOTE :: CCURLoption'SList
- Network.Curlhs.Base: cCURLOPT_RANDOM_FILE :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_RANGE :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_READDATA :: CCURLoption'UsrPtr
- Network.Curlhs.Base: cCURLOPT_READFUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_REDIR_PROTOCOLS :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_REFERER :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_RESOLVE :: CCURLoption'SList
- Network.Curlhs.Base: cCURLOPT_RESUME_FROM :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_RESUME_FROM_LARGE :: CCURLoption'Int64
- Network.Curlhs.Base: cCURLOPT_RTSPHEADER :: CCURLoption'SList
- Network.Curlhs.Base: cCURLOPT_RTSP_CLIENT_CSEQ :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_RTSP_REQUEST :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_RTSP_SERVER_CSEQ :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_RTSP_SESSION_ID :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_RTSP_STREAM_URI :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_RTSP_TRANSPORT :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_SEEKDATA :: CCURLoption'UsrPtr
- Network.Curlhs.Base: cCURLOPT_SEEKFUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_SHARE :: CCURLoption'CURLSH
- Network.Curlhs.Base: cCURLOPT_SOCKOPTDATA :: CCURLoption'UsrPtr
- Network.Curlhs.Base: cCURLOPT_SOCKOPTFUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_SOCKS5_GSSAPI_NEC :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_SOCKS5_GSSAPI_SERVICE :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_SSH_AUTH_TYPES :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_SSH_HOST_PUBLIC_KEY_MD5 :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_SSH_KEYDATA :: CCURLoption'UsrPtr
- Network.Curlhs.Base: cCURLOPT_SSH_KEYFUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_SSH_KNOWNHOSTS :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_SSH_PRIVATE_KEYFILE :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_SSH_PUBLIC_KEYFILE :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_SSLCERT :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_SSLCERTTYPE :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_SSLENGINE :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_SSLENGINE_DEFAULT :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_SSLKEY :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_SSLKEYTYPE :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_SSLVERSION :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_SSL_CIPHER_LIST :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_SSL_CTX_DATA :: CCURLoption'UsrPtr
- Network.Curlhs.Base: cCURLOPT_SSL_CTX_FUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_SSL_OPTIONS :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_SSL_SESSIONID_CACHE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_SSL_VERIFYHOST :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_SSL_VERIFYPEER :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_STDERR :: CCURLoption'CFile
- Network.Curlhs.Base: cCURLOPT_TCP_KEEPALIVE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_TCP_KEEPIDLE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_TCP_KEEPINTVL :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_TCP_NODELAY :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_TELNETOPTIONS :: CCURLoption'SList
- Network.Curlhs.Base: cCURLOPT_TFTP_BLKSIZE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_TIMECONDITION :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_TIMEOUT :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_TIMEOUT_MS :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_TIMEVALUE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_TLSAUTH_PASSWORD :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_TLSAUTH_TYPE :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_TLSAUTH_USERNAME :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_TRANSFERTEXT :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_TRANSFER_ENCODING :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_UNRESTRICTED_AUTH :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_UPLOAD :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_URL :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_USERAGENT :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_USERNAME :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_USERPWD :: CCURLoption'CString
- Network.Curlhs.Base: cCURLOPT_USE_SSL :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_VERBOSE :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_WILDCARDMATCH :: CCURLoption'CLong
- Network.Curlhs.Base: cCURLOPT_WRITEDATA :: CCURLoption'UsrPtr
- Network.Curlhs.Base: cCURLOPT_WRITEFUNCTION :: CCURLoption'FunPtr
- Network.Curlhs.Base: cCURLOPT_WRITEHEADER :: CCURLoption'CFile
- Network.Curlhs.Base: cCURLOPT_WRITEINFO :: CCURLoption'CString
- Network.Curlhs.Base: cCURLPAUSE_ALL :: CInt
- Network.Curlhs.Base: cCURLPAUSE_CONT :: CInt
- Network.Curlhs.Base: cCURLPAUSE_RECV :: CInt
- Network.Curlhs.Base: cCURLPAUSE_RECV_CONT :: CInt
- Network.Curlhs.Base: cCURLPAUSE_SEND :: CInt
- Network.Curlhs.Base: cCURLPAUSE_SEND_CONT :: CInt
- Network.Curlhs.Base: cCURLPROTO_ALL :: CLong
- Network.Curlhs.Base: cCURLPROTO_DICT :: CLong
- Network.Curlhs.Base: cCURLPROTO_FILE :: CLong
- Network.Curlhs.Base: cCURLPROTO_FTP :: CLong
- Network.Curlhs.Base: cCURLPROTO_FTPS :: CLong
- Network.Curlhs.Base: cCURLPROTO_GOPHER :: CLong
- Network.Curlhs.Base: cCURLPROTO_HTTP :: CLong
- Network.Curlhs.Base: cCURLPROTO_HTTPS :: CLong
- Network.Curlhs.Base: cCURLPROTO_IMAP :: CLong
- Network.Curlhs.Base: cCURLPROTO_IMAPS :: CLong
- Network.Curlhs.Base: cCURLPROTO_LDAP :: CLong
- Network.Curlhs.Base: cCURLPROTO_LDAPS :: CLong
- Network.Curlhs.Base: cCURLPROTO_POP3 :: CLong
- Network.Curlhs.Base: cCURLPROTO_POP3S :: CLong
- Network.Curlhs.Base: cCURLPROTO_RTMP :: CLong
- Network.Curlhs.Base: cCURLPROTO_RTMPE :: CLong
- Network.Curlhs.Base: cCURLPROTO_RTMPS :: CLong
- Network.Curlhs.Base: cCURLPROTO_RTMPT :: CLong
- Network.Curlhs.Base: cCURLPROTO_RTMPTE :: CLong
- Network.Curlhs.Base: cCURLPROTO_RTMPTS :: CLong
- Network.Curlhs.Base: cCURLPROTO_RTSP :: CLong
- Network.Curlhs.Base: cCURLPROTO_SCP :: CLong
- Network.Curlhs.Base: cCURLPROTO_SFTP :: CLong
- Network.Curlhs.Base: cCURLPROTO_SMTP :: CLong
- Network.Curlhs.Base: cCURLPROTO_SMTPS :: CLong
- Network.Curlhs.Base: cCURLPROTO_TELNET :: CLong
- Network.Curlhs.Base: cCURLPROTO_TFTP :: CLong
- Network.Curlhs.Base: cCURLPROXY_HTTP :: CLong
- Network.Curlhs.Base: cCURLPROXY_HTTP_1_0 :: CLong
- Network.Curlhs.Base: cCURLPROXY_SOCKS4 :: CLong
- Network.Curlhs.Base: cCURLPROXY_SOCKS4A :: CLong
- Network.Curlhs.Base: cCURLPROXY_SOCKS5 :: CLong
- Network.Curlhs.Base: cCURLPROXY_SOCKS5_HOSTNAME :: CLong
- Network.Curlhs.Base: cCURLSHE_BAD_OPTION :: CCURLSHcode
- Network.Curlhs.Base: cCURLSHE_INVALID :: CCURLSHcode
- Network.Curlhs.Base: cCURLSHE_IN_USE :: CCURLSHcode
- Network.Curlhs.Base: cCURLSHE_NOMEM :: CCURLSHcode
- Network.Curlhs.Base: cCURLSHE_NOT_BUILT_IN :: CCURLSHcode
- Network.Curlhs.Base: cCURLSHE_OK :: CCURLSHcode
- Network.Curlhs.Base: cCURLSHOPT_LOCKFUNC :: CCURLSHoption'FLOCK
- Network.Curlhs.Base: cCURLSHOPT_SHARE :: CCURLSHoption'Lock
- Network.Curlhs.Base: cCURLSHOPT_UNLOCKFUNC :: CCURLSHoption'FUNLOCK
- Network.Curlhs.Base: cCURLSHOPT_UNSHARE :: CCURLSHoption'Lock
- Network.Curlhs.Base: cCURLSHOPT_USERDATA :: CCURLSHoption'UsrPtr
- Network.Curlhs.Base: cCURLSOCKTYPE_IPCXN :: CCURLsocktype
- Network.Curlhs.Base: cCURLSSH_AUTH_ANY :: CLong
- Network.Curlhs.Base: cCURLSSH_AUTH_DEFAULT :: CLong
- Network.Curlhs.Base: cCURLSSH_AUTH_HOST :: CLong
- Network.Curlhs.Base: cCURLSSH_AUTH_KEYBOARD :: CLong
- Network.Curlhs.Base: cCURLSSH_AUTH_NONE :: CLong
- Network.Curlhs.Base: cCURLSSH_AUTH_PASSWORD :: CLong
- Network.Curlhs.Base: cCURLSSH_AUTH_PUBLICKEY :: CLong
- Network.Curlhs.Base: cCURLSSLOPT_ALLOW_BEAST :: CLong
- Network.Curlhs.Base: cCURLUSESSL_ALL :: CLong
- Network.Curlhs.Base: cCURLUSESSL_CONTROL :: CLong
- Network.Curlhs.Base: cCURLUSESSL_NONE :: CLong
- Network.Curlhs.Base: cCURLUSESSL_TRY :: CLong
- Network.Curlhs.Base: cCURLVERSION_FIRST :: CCURLversion
- Network.Curlhs.Base: cCURLVERSION_FOURTH :: CCURLversion
- Network.Curlhs.Base: cCURLVERSION_NOW :: CCURLversion
- Network.Curlhs.Base: cCURLVERSION_SECOND :: CCURLversion
- Network.Curlhs.Base: cCURLVERSION_THIRD :: CCURLversion
- Network.Curlhs.Base: cCURL_CHUNK_BGN_FUNC_FAIL :: CLong
- Network.Curlhs.Base: cCURL_CHUNK_BGN_FUNC_OK :: CLong
- Network.Curlhs.Base: cCURL_CHUNK_BGN_FUNC_SKIP :: CLong
- Network.Curlhs.Base: cCURL_CHUNK_END_FUNC_FAIL :: CLong
- Network.Curlhs.Base: cCURL_CHUNK_END_FUNC_OK :: CLong
- Network.Curlhs.Base: cCURL_ERROR_SIZE :: CLong
- Network.Curlhs.Base: cCURL_FNMATCHFUNC_FAIL :: CInt
- Network.Curlhs.Base: cCURL_FNMATCHFUNC_MATCH :: CInt
- Network.Curlhs.Base: cCURL_FNMATCHFUNC_NOMATCH :: CInt
- Network.Curlhs.Base: cCURL_FORMADD_DISABLED :: CCURLformcode
- Network.Curlhs.Base: cCURL_FORMADD_ILLEGAL_ARRAY :: CCURLformcode
- Network.Curlhs.Base: cCURL_FORMADD_INCOMPLETE :: CCURLformcode
- Network.Curlhs.Base: cCURL_FORMADD_MEMORY :: CCURLformcode
- Network.Curlhs.Base: cCURL_FORMADD_NULL :: CCURLformcode
- Network.Curlhs.Base: cCURL_FORMADD_OK :: CCURLformcode
- Network.Curlhs.Base: cCURL_FORMADD_OPTION_TWICE :: CCURLformcode
- Network.Curlhs.Base: cCURL_FORMADD_UNKNOWN_OPTION :: CCURLformcode
- Network.Curlhs.Base: cCURL_GLOBAL_ALL :: CLong
- Network.Curlhs.Base: cCURL_GLOBAL_DEFAULT :: CLong
- Network.Curlhs.Base: cCURL_GLOBAL_NOTHING :: CLong
- Network.Curlhs.Base: cCURL_GLOBAL_SSL :: CLong
- Network.Curlhs.Base: cCURL_GLOBAL_WIN32 :: CLong
- Network.Curlhs.Base: cCURL_HTTP_VERSION_1_0 :: CLong
- Network.Curlhs.Base: cCURL_HTTP_VERSION_1_1 :: CLong
- Network.Curlhs.Base: cCURL_HTTP_VERSION_NONE :: CLong
- Network.Curlhs.Base: cCURL_IPRESOLVE_V4 :: CLong
- Network.Curlhs.Base: cCURL_IPRESOLVE_V6 :: CLong
- Network.Curlhs.Base: cCURL_IPRESOLVE_WHATEVER :: CLong
- Network.Curlhs.Base: cCURL_LOCK_ACCESS_NONE :: CCURL_lock_access
- Network.Curlhs.Base: cCURL_LOCK_ACCESS_SHARED :: CCURL_lock_access
- Network.Curlhs.Base: cCURL_LOCK_ACCESS_SINGLE :: CCURL_lock_access
- Network.Curlhs.Base: cCURL_LOCK_DATA_CONNECT :: CCURL_lock_data
- Network.Curlhs.Base: cCURL_LOCK_DATA_COOKIE :: CCURL_lock_data
- Network.Curlhs.Base: cCURL_LOCK_DATA_DNS :: CCURL_lock_data
- Network.Curlhs.Base: cCURL_LOCK_DATA_SSL_SESSION :: CCURL_lock_data
- Network.Curlhs.Base: cCURL_MAX_HTTP_HEADER :: CSize
- Network.Curlhs.Base: cCURL_MAX_WRITE_SIZE :: CSize
- Network.Curlhs.Base: cCURL_NETRC_IGNORED :: CLong
- Network.Curlhs.Base: cCURL_NETRC_OPTIONAL :: CLong
- Network.Curlhs.Base: cCURL_NETRC_REQUIRED :: CLong
- Network.Curlhs.Base: cCURL_READFUNC_ABORT :: CSize
- Network.Curlhs.Base: cCURL_READFUNC_PAUSE :: CSize
- Network.Curlhs.Base: cCURL_REDIR_GET_ALL :: CLong
- Network.Curlhs.Base: cCURL_REDIR_POST_301 :: CLong
- Network.Curlhs.Base: cCURL_REDIR_POST_302 :: CLong
- Network.Curlhs.Base: cCURL_REDIR_POST_ALL :: CLong
- Network.Curlhs.Base: cCURL_RTSPREQ_ANNOUNCE :: CLong
- Network.Curlhs.Base: cCURL_RTSPREQ_DESCRIBE :: CLong
- Network.Curlhs.Base: cCURL_RTSPREQ_GET_PARAMETER :: CLong
- Network.Curlhs.Base: cCURL_RTSPREQ_NONE :: CLong
- Network.Curlhs.Base: cCURL_RTSPREQ_OPTIONS :: CLong
- Network.Curlhs.Base: cCURL_RTSPREQ_PAUSE :: CLong
- Network.Curlhs.Base: cCURL_RTSPREQ_PLAY :: CLong
- Network.Curlhs.Base: cCURL_RTSPREQ_RECEIVE :: CLong
- Network.Curlhs.Base: cCURL_RTSPREQ_RECORD :: CLong
- Network.Curlhs.Base: cCURL_RTSPREQ_SETUP :: CLong
- Network.Curlhs.Base: cCURL_RTSPREQ_SET_PARAMETER :: CLong
- Network.Curlhs.Base: cCURL_RTSPREQ_TEARDOWN :: CLong
- Network.Curlhs.Base: cCURL_SEEKFUNC_CANTSEEK :: CInt
- Network.Curlhs.Base: cCURL_SEEKFUNC_FAIL :: CInt
- Network.Curlhs.Base: cCURL_SEEKFUNC_OK :: CInt
- Network.Curlhs.Base: cCURL_SOCKET_BAD :: CCURL_socket_t
- Network.Curlhs.Base: cCURL_SOCKOPT_ALREADY_CONNECTED :: CInt
- Network.Curlhs.Base: cCURL_SOCKOPT_ERROR :: CInt
- Network.Curlhs.Base: cCURL_SOCKOPT_OK :: CInt
- Network.Curlhs.Base: cCURL_SSLVERSION_DEFAULT :: CLong
- Network.Curlhs.Base: cCURL_SSLVERSION_SSLv2 :: CLong
- Network.Curlhs.Base: cCURL_SSLVERSION_SSLv3 :: CLong
- Network.Curlhs.Base: cCURL_SSLVERSION_TLSv1 :: CLong
- Network.Curlhs.Base: cCURL_TIMECOND_IFMODSINCE :: CLong
- Network.Curlhs.Base: cCURL_TIMECOND_IFUNMODSINCE :: CLong
- Network.Curlhs.Base: cCURL_TIMECOND_LASTMOD :: CLong
- Network.Curlhs.Base: cCURL_TIMECOND_NONE :: CLong
- Network.Curlhs.Base: cCURL_TLSAUTH_NONE :: CLong
- Network.Curlhs.Base: cCURL_TLSAUTH_SRP :: CLong
- Network.Curlhs.Base: cCURL_VERSION_ASYNCHDNS :: CInt
- Network.Curlhs.Base: cCURL_VERSION_CONV :: CInt
- Network.Curlhs.Base: cCURL_VERSION_CURLDEBUG :: CInt
- Network.Curlhs.Base: cCURL_VERSION_DEBUG :: CInt
- Network.Curlhs.Base: cCURL_VERSION_GSSNEGOTIATE :: CInt
- Network.Curlhs.Base: cCURL_VERSION_IDN :: CInt
- Network.Curlhs.Base: cCURL_VERSION_IPV6 :: CInt
- Network.Curlhs.Base: cCURL_VERSION_KERBEROS4 :: CInt
- Network.Curlhs.Base: cCURL_VERSION_LARGEFILE :: CInt
- Network.Curlhs.Base: cCURL_VERSION_LIBZ :: CInt
- Network.Curlhs.Base: cCURL_VERSION_NTLM :: CInt
- Network.Curlhs.Base: cCURL_VERSION_NTLM_WB :: CInt
- Network.Curlhs.Base: cCURL_VERSION_SPNEGO :: CInt
- Network.Curlhs.Base: cCURL_VERSION_SSL :: CInt
- Network.Curlhs.Base: cCURL_VERSION_SSPI :: CInt
- Network.Curlhs.Base: cCURL_VERSION_TLSAUTH_SRP :: CInt
- Network.Curlhs.Base: cCURL_WRITEFUNC_PAUSE :: CSize
- Network.Curlhs.Base: cHTTPPOST_BUFFER :: CLong
- Network.Curlhs.Base: cHTTPPOST_CALLBACK :: CLong
- Network.Curlhs.Base: cHTTPPOST_FILENAME :: CLong
- Network.Curlhs.Base: cHTTPPOST_PTRBUFFER :: CLong
- Network.Curlhs.Base: cHTTPPOST_PTRCONTENTS :: CLong
- Network.Curlhs.Base: cHTTPPOST_PTRNAME :: CLong
- Network.Curlhs.Base: cHTTPPOST_READFILE :: CLong
- Network.Curlhs.Base: ccurl_certinfo_certinfo :: CCURL_certinfo -> Ptr (Ptr CCURL_slist)
- Network.Curlhs.Base: ccurl_certinfo_num_of_certs :: CCURL_certinfo -> CInt
- Network.Curlhs.Base: ccurl_easy_cleanup :: Ptr CCURL -> IO ()
- Network.Curlhs.Base: ccurl_easy_duphandle :: Ptr CCURL -> IO (Ptr CCURL)
- Network.Curlhs.Base: ccurl_easy_escape :: Ptr CCURL -> Ptr CChar -> CInt -> IO (Ptr CChar)
- Network.Curlhs.Base: ccurl_easy_getinfo'CDouble :: Ptr CCURL -> CCURLinfo'CDouble -> Ptr CDouble -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_getinfo'CLong :: Ptr CCURL -> CCURLinfo'CLong -> Ptr CLong -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_getinfo'CString :: Ptr CCURL -> CCURLinfo'CString -> Ptr (Ptr CChar) -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_getinfo'CertI :: Ptr CCURL -> CCURLinfo'CertI -> Ptr (Ptr CCURL_certinfo) -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_getinfo'SList :: Ptr CCURL -> CCURLinfo'SList -> Ptr (Ptr CCURL_slist) -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_init :: IO (Ptr CCURL)
- Network.Curlhs.Base: ccurl_easy_pause :: Ptr CCURL -> CInt -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_perform :: Ptr CCURL -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_recv :: Ptr CCURL -> Ptr a -> CSize -> Ptr CSize -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_reset :: Ptr CCURL -> IO ()
- Network.Curlhs.Base: ccurl_easy_send :: Ptr CCURL -> Ptr a -> CSize -> Ptr CSize -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'CFile :: Ptr CCURL -> CCURLoption'CFile -> Ptr CFile -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'CLong :: Ptr CCURL -> CCURLoption'CLong -> CLong -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'CString :: Ptr CCURL -> CCURLoption'CString -> Ptr CChar -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'CURLSH :: Ptr CCURL -> CCURLoption'CURLSH -> Ptr CCURLSH -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FCHUNKBGN :: Ptr CCURL -> FunPtr CCURL_chunk_bgn_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FCHUNKEND :: Ptr CCURL -> FunPtr CCURL_chunk_end_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FCLOSESOCKET :: Ptr CCURL -> FunPtr CCURL_closesocket_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FCONVFROM :: Ptr CCURL -> FunPtr CCURL_conv_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FCONVTO :: Ptr CCURL -> FunPtr CCURL_conv_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FCONVUTF8 :: Ptr CCURL -> FunPtr CCURL_conv_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FDEBUG :: Ptr CCURL -> FunPtr CCURL_debug_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FFNMATCH :: Ptr CCURL -> FunPtr CCURL_fnmatch_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FHEADER :: Ptr CCURL -> FunPtr CCURL_write_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FINTERLEAVE :: Ptr CCURL -> FunPtr CCURL_write_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FIOCTL :: Ptr CCURL -> FunPtr CCURL_ioctl_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FOPENSOCKET :: Ptr CCURL -> FunPtr CCURL_opensocket_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FPROGRESS :: Ptr CCURL -> FunPtr CCURL_progress_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FREAD :: Ptr CCURL -> FunPtr CCURL_read_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FSEEK :: Ptr CCURL -> FunPtr CCURL_seek_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FSOCKOPT :: Ptr CCURL -> FunPtr CCURL_sockopt_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FSSHKEY :: Ptr CCURL -> FunPtr CCURL_sshkey_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FSSLCTX :: Ptr CCURL -> FunPtr CCURL_ssl_ctx_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FWRITE :: Ptr CCURL -> FunPtr CCURL_write_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'FunPtr :: Ptr CCURL -> CCURLoption'FunPtr -> FunPtr a -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'HTTPP :: Ptr CCURL -> CCURLoption'HTTPP -> Ptr CCURL_httppost -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'Int64 :: Ptr CCURL -> CCURLoption'Int64 -> CCURL_off_t -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'SList :: Ptr CCURL -> CCURLoption'SList -> Ptr CCURL_slist -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_setopt'UsrPtr :: Ptr CCURL -> CCURLoption'UsrPtr -> Ptr () -> IO CCURLcode
- Network.Curlhs.Base: ccurl_easy_strerror :: CCURLcode -> IO (Ptr CChar)
- Network.Curlhs.Base: ccurl_easy_unescape :: Ptr CCURL -> Ptr CChar -> CInt -> Ptr CInt -> IO (Ptr CChar)
- Network.Curlhs.Base: ccurl_escape :: Ptr CChar -> CInt -> IO (Ptr CChar)
- Network.Curlhs.Base: ccurl_fileinfo_b_data :: CCURL_fileinfo -> Ptr CChar
- Network.Curlhs.Base: ccurl_fileinfo_b_size :: CCURL_fileinfo -> CSize
- Network.Curlhs.Base: ccurl_fileinfo_b_used :: CCURL_fileinfo -> CSize
- Network.Curlhs.Base: ccurl_fileinfo_filename :: CCURL_fileinfo -> Ptr CChar
- Network.Curlhs.Base: ccurl_fileinfo_filetype :: CCURL_fileinfo -> CCURLfiletype
- Network.Curlhs.Base: ccurl_fileinfo_flags :: CCURL_fileinfo -> CUInt
- Network.Curlhs.Base: ccurl_fileinfo_gid :: CCURL_fileinfo -> CInt
- Network.Curlhs.Base: ccurl_fileinfo_hardlinks :: CCURL_fileinfo -> CLong
- Network.Curlhs.Base: ccurl_fileinfo_perm :: CCURL_fileinfo -> CUInt
- Network.Curlhs.Base: ccurl_fileinfo_size :: CCURL_fileinfo -> CCURL_off_t
- Network.Curlhs.Base: ccurl_fileinfo_strings_group :: CCURL_fileinfo -> Ptr CChar
- Network.Curlhs.Base: ccurl_fileinfo_strings_perm :: CCURL_fileinfo -> Ptr CChar
- Network.Curlhs.Base: ccurl_fileinfo_strings_target :: CCURL_fileinfo -> Ptr CChar
- Network.Curlhs.Base: ccurl_fileinfo_strings_time :: CCURL_fileinfo -> Ptr CChar
- Network.Curlhs.Base: ccurl_fileinfo_strings_user :: CCURL_fileinfo -> Ptr CChar
- Network.Curlhs.Base: ccurl_fileinfo_time :: CCURL_fileinfo -> CTime
- Network.Curlhs.Base: ccurl_fileinfo_uid :: CCURL_fileinfo -> CInt
- Network.Curlhs.Base: ccurl_formfree :: Ptr CCURL_httppost -> IO ()
- Network.Curlhs.Base: ccurl_formget :: Ptr CCURL_httppost -> Ptr () -> FunPtr CCURL_formget_callback -> IO CInt
- Network.Curlhs.Base: ccurl_forms_option :: CCURL_forms -> CCURLformoption
- Network.Curlhs.Base: ccurl_forms_value :: CCURL_forms -> Ptr CChar
- Network.Curlhs.Base: ccurl_free :: Ptr a -> IO ()
- Network.Curlhs.Base: ccurl_getdate :: Ptr CChar -> Ptr CTime -> IO CTime
- Network.Curlhs.Base: ccurl_getenv :: Ptr CChar -> IO (Ptr CChar)
- Network.Curlhs.Base: ccurl_global_cleanup :: IO ()
- Network.Curlhs.Base: ccurl_global_init :: CLong -> IO CCURLcode
- Network.Curlhs.Base: ccurl_global_init_mem :: CLong -> FunPtr CCURL_malloc_callback -> FunPtr CCURL_free_callback -> FunPtr CCURL_realloc_callback -> FunPtr CCURL_strdup_callback -> FunPtr CCURL_calloc_callback -> IO CCURLcode
- Network.Curlhs.Base: ccurl_httppost_buffer :: CCURL_httppost -> Ptr CChar
- Network.Curlhs.Base: ccurl_httppost_bufferlength :: CCURL_httppost -> CLong
- Network.Curlhs.Base: ccurl_httppost_contentheader :: CCURL_httppost -> Ptr CCURL_slist
- Network.Curlhs.Base: ccurl_httppost_contents :: CCURL_httppost -> Ptr CChar
- Network.Curlhs.Base: ccurl_httppost_contentslength :: CCURL_httppost -> CLong
- Network.Curlhs.Base: ccurl_httppost_contenttype :: CCURL_httppost -> Ptr CChar
- Network.Curlhs.Base: ccurl_httppost_flags :: CCURL_httppost -> CLong
- Network.Curlhs.Base: ccurl_httppost_more :: CCURL_httppost -> Ptr CCURL_httppost
- Network.Curlhs.Base: ccurl_httppost_name :: CCURL_httppost -> Ptr CChar
- Network.Curlhs.Base: ccurl_httppost_namelength :: CCURL_httppost -> CLong
- Network.Curlhs.Base: ccurl_httppost_next :: CCURL_httppost -> Ptr CCURL_httppost
- Network.Curlhs.Base: ccurl_httppost_showfilename :: CCURL_httppost -> Ptr CChar
- Network.Curlhs.Base: ccurl_httppost_userp :: CCURL_httppost -> Ptr ()
- Network.Curlhs.Base: ccurl_khkey_key :: CCURL_khkey -> Ptr CChar
- Network.Curlhs.Base: ccurl_khkey_keytype :: CCURL_khkey -> CCURL_khtype
- Network.Curlhs.Base: ccurl_khkey_len :: CCURL_khkey -> CSize
- Network.Curlhs.Base: ccurl_share_cleanup :: Ptr CCURLSH -> IO CCURLSHcode
- Network.Curlhs.Base: ccurl_share_init :: IO (Ptr CCURLSH)
- Network.Curlhs.Base: ccurl_share_setopt'FLOCK :: Ptr CCURLSH -> CCURLSHoption'FLOCK -> FunPtr CCURL_lock_function -> IO CCURLSHcode
- Network.Curlhs.Base: ccurl_share_setopt'FUNLOCK :: Ptr CCURLSH -> CCURLSHoption'FUNLOCK -> FunPtr CCURL_unlock_function -> IO CCURLSHcode
- Network.Curlhs.Base: ccurl_share_setopt'Lock :: Ptr CCURLSH -> CCURLSHoption'Lock -> CCURL_lock_data -> IO CCURLSHcode
- Network.Curlhs.Base: ccurl_share_setopt'UsrPtr :: Ptr CCURLSH -> CCURLSHoption'UsrPtr -> Ptr () -> IO CCURLSHcode
- Network.Curlhs.Base: ccurl_share_strerror :: CCURLSHcode -> IO (Ptr CChar)
- Network.Curlhs.Base: ccurl_slist_append :: Ptr CCURL_slist -> Ptr CChar -> IO (Ptr CCURL_slist)
- Network.Curlhs.Base: ccurl_slist_data :: CCURL_slist -> Ptr CChar
- Network.Curlhs.Base: ccurl_slist_free_all :: Ptr CCURL_slist -> IO ()
- Network.Curlhs.Base: ccurl_slist_next :: CCURL_slist -> Ptr CCURL_slist
- Network.Curlhs.Base: ccurl_sockaddr_addr :: CCURL_sockaddr -> Ptr ()
- Network.Curlhs.Base: ccurl_sockaddr_addrlen :: CCURL_sockaddr -> CUInt
- Network.Curlhs.Base: ccurl_sockaddr_family :: CCURL_sockaddr -> CInt
- Network.Curlhs.Base: ccurl_sockaddr_protocol :: CCURL_sockaddr -> CInt
- Network.Curlhs.Base: ccurl_sockaddr_socktype :: CCURL_sockaddr -> CInt
- Network.Curlhs.Base: ccurl_strequal :: Ptr CChar -> Ptr CChar -> IO CInt
- Network.Curlhs.Base: ccurl_strnequal :: Ptr CChar -> Ptr CChar -> CSize -> IO CInt
- Network.Curlhs.Base: ccurl_unescape :: Ptr CChar -> CInt -> IO (Ptr CChar)
- Network.Curlhs.Base: ccurl_version :: IO (Ptr CChar)
- Network.Curlhs.Base: ccurl_version_info :: CCURLversion -> IO (Ptr CCURL_version_info_data)
- Network.Curlhs.Base: ccurl_version_info_data_age :: CCURL_version_info_data -> CCURLversion
- Network.Curlhs.Base: ccurl_version_info_data_ares :: CCURL_version_info_data -> Ptr CChar
- Network.Curlhs.Base: ccurl_version_info_data_ares_num :: CCURL_version_info_data -> CInt
- Network.Curlhs.Base: ccurl_version_info_data_features :: CCURL_version_info_data -> CInt
- Network.Curlhs.Base: ccurl_version_info_data_host :: CCURL_version_info_data -> Ptr CChar
- Network.Curlhs.Base: ccurl_version_info_data_iconv_ver_num :: CCURL_version_info_data -> CInt
- Network.Curlhs.Base: ccurl_version_info_data_libidn :: CCURL_version_info_data -> Ptr CChar
- Network.Curlhs.Base: ccurl_version_info_data_libssh_version :: CCURL_version_info_data -> Ptr CChar
- Network.Curlhs.Base: ccurl_version_info_data_libz_version :: CCURL_version_info_data -> Ptr CChar
- Network.Curlhs.Base: ccurl_version_info_data_protocols :: CCURL_version_info_data -> Ptr (Ptr CChar)
- Network.Curlhs.Base: ccurl_version_info_data_ssl_version :: CCURL_version_info_data -> Ptr CChar
- Network.Curlhs.Base: ccurl_version_info_data_ssl_version_num :: CCURL_version_info_data -> CLong
- Network.Curlhs.Base: ccurl_version_info_data_version :: CCURL_version_info_data -> Ptr CChar
- Network.Curlhs.Base: ccurl_version_info_data_version_num :: CCURL_version_info_data -> CUInt
- Network.Curlhs.Base: data CCURL
- Network.Curlhs.Base: data CCURLSH
- Network.Curlhs.Base: data CCURL_certinfo
- Network.Curlhs.Base: data CCURL_fileinfo
- Network.Curlhs.Base: data CCURL_forms
- Network.Curlhs.Base: data CCURL_httppost
- Network.Curlhs.Base: data CCURL_khkey
- Network.Curlhs.Base: data CCURL_slist
- Network.Curlhs.Base: data CCURL_sockaddr
- Network.Curlhs.Base: data CCURL_version_info_data
- Network.Curlhs.Base: instance Eq CCURLSHcode
- Network.Curlhs.Base: instance Eq CCURLSHoption'FLOCK
- Network.Curlhs.Base: instance Eq CCURLSHoption'FUNLOCK
- Network.Curlhs.Base: instance Eq CCURLSHoption'Lock
- Network.Curlhs.Base: instance Eq CCURLSHoption'UsrPtr
- Network.Curlhs.Base: instance Eq CCURL_infotype
- Network.Curlhs.Base: instance Eq CCURL_khmatch
- Network.Curlhs.Base: instance Eq CCURL_khstat
- Network.Curlhs.Base: instance Eq CCURL_khtype
- Network.Curlhs.Base: instance Eq CCURL_lock_access
- Network.Curlhs.Base: instance Eq CCURL_lock_data
- Network.Curlhs.Base: instance Eq CCURLcode
- Network.Curlhs.Base: instance Eq CCURLfiletype
- Network.Curlhs.Base: instance Eq CCURLformcode
- Network.Curlhs.Base: instance Eq CCURLformoption
- Network.Curlhs.Base: instance Eq CCURLinfo'CDouble
- Network.Curlhs.Base: instance Eq CCURLinfo'CLong
- Network.Curlhs.Base: instance Eq CCURLinfo'CString
- Network.Curlhs.Base: instance Eq CCURLinfo'CertI
- Network.Curlhs.Base: instance Eq CCURLinfo'SList
- Network.Curlhs.Base: instance Eq CCURLiocmd
- Network.Curlhs.Base: instance Eq CCURLioerr
- Network.Curlhs.Base: instance Eq CCURLoption'CFile
- Network.Curlhs.Base: instance Eq CCURLoption'CLong
- Network.Curlhs.Base: instance Eq CCURLoption'CString
- Network.Curlhs.Base: instance Eq CCURLoption'CURLSH
- Network.Curlhs.Base: instance Eq CCURLoption'FunPtr
- Network.Curlhs.Base: instance Eq CCURLoption'HTTPP
- Network.Curlhs.Base: instance Eq CCURLoption'Int64
- Network.Curlhs.Base: instance Eq CCURLoption'SList
- Network.Curlhs.Base: instance Eq CCURLoption'UsrPtr
- Network.Curlhs.Base: instance Eq CCURLsocktype
- Network.Curlhs.Base: instance Eq CCURLversion
- Network.Curlhs.Base: instance Show CCURLSHcode
- Network.Curlhs.Base: instance Show CCURLSHoption'FLOCK
- Network.Curlhs.Base: instance Show CCURLSHoption'FUNLOCK
- Network.Curlhs.Base: instance Show CCURLSHoption'Lock
- Network.Curlhs.Base: instance Show CCURLSHoption'UsrPtr
- Network.Curlhs.Base: instance Show CCURL_certinfo
- Network.Curlhs.Base: instance Show CCURL_fileinfo
- Network.Curlhs.Base: instance Show CCURL_forms
- Network.Curlhs.Base: instance Show CCURL_httppost
- Network.Curlhs.Base: instance Show CCURL_infotype
- Network.Curlhs.Base: instance Show CCURL_khkey
- Network.Curlhs.Base: instance Show CCURL_khmatch
- Network.Curlhs.Base: instance Show CCURL_khstat
- Network.Curlhs.Base: instance Show CCURL_khtype
- Network.Curlhs.Base: instance Show CCURL_lock_access
- Network.Curlhs.Base: instance Show CCURL_lock_data
- Network.Curlhs.Base: instance Show CCURL_slist
- Network.Curlhs.Base: instance Show CCURL_sockaddr
- Network.Curlhs.Base: instance Show CCURL_version_info_data
- Network.Curlhs.Base: instance Show CCURLcode
- Network.Curlhs.Base: instance Show CCURLfiletype
- Network.Curlhs.Base: instance Show CCURLformcode
- Network.Curlhs.Base: instance Show CCURLformoption
- Network.Curlhs.Base: instance Show CCURLinfo'CDouble
- Network.Curlhs.Base: instance Show CCURLinfo'CLong
- Network.Curlhs.Base: instance Show CCURLinfo'CString
- Network.Curlhs.Base: instance Show CCURLinfo'CertI
- Network.Curlhs.Base: instance Show CCURLinfo'SList
- Network.Curlhs.Base: instance Show CCURLiocmd
- Network.Curlhs.Base: instance Show CCURLioerr
- Network.Curlhs.Base: instance Show CCURLoption'CFile
- Network.Curlhs.Base: instance Show CCURLoption'CLong
- Network.Curlhs.Base: instance Show CCURLoption'CString
- Network.Curlhs.Base: instance Show CCURLoption'CURLSH
- Network.Curlhs.Base: instance Show CCURLoption'FunPtr
- Network.Curlhs.Base: instance Show CCURLoption'HTTPP
- Network.Curlhs.Base: instance Show CCURLoption'Int64
- Network.Curlhs.Base: instance Show CCURLoption'SList
- Network.Curlhs.Base: instance Show CCURLoption'UsrPtr
- Network.Curlhs.Base: instance Show CCURLsocktype
- Network.Curlhs.Base: instance Show CCURLversion
- Network.Curlhs.Base: instance Storable CCURL_certinfo
- Network.Curlhs.Base: instance Storable CCURL_slist
- Network.Curlhs.Base: instance Storable CCURL_version_info_data
- Network.Curlhs.Base: instance Storable CCURLversion
- Network.Curlhs.Base: libCURL_COPYRIGHT :: String
- Network.Curlhs.Base: libCURL_TIMESTAMP :: String
- Network.Curlhs.Base: libCURL_VERSION :: String
- Network.Curlhs.Base: libCURL_VERSION_MAJOR :: Int
- Network.Curlhs.Base: libCURL_VERSION_MINOR :: Int
- Network.Curlhs.Base: libCURL_VERSION_NUM :: Int
- Network.Curlhs.Base: libCURL_VERSION_PATCH :: Int
- Network.Curlhs.Base: newtype CCURLSHcode
- Network.Curlhs.Base: newtype CCURLSHoption'FLOCK
- Network.Curlhs.Base: newtype CCURLSHoption'FUNLOCK
- Network.Curlhs.Base: newtype CCURLSHoption'Lock
- Network.Curlhs.Base: newtype CCURLSHoption'UsrPtr
- Network.Curlhs.Base: newtype CCURL_infotype
- Network.Curlhs.Base: newtype CCURL_khmatch
- Network.Curlhs.Base: newtype CCURL_khstat
- Network.Curlhs.Base: newtype CCURL_khtype
- Network.Curlhs.Base: newtype CCURL_lock_access
- Network.Curlhs.Base: newtype CCURL_lock_data
- Network.Curlhs.Base: newtype CCURLcode
- Network.Curlhs.Base: newtype CCURLfiletype
- Network.Curlhs.Base: newtype CCURLformcode
- Network.Curlhs.Base: newtype CCURLformoption
- Network.Curlhs.Base: newtype CCURLinfo'CDouble
- Network.Curlhs.Base: newtype CCURLinfo'CLong
- Network.Curlhs.Base: newtype CCURLinfo'CString
- Network.Curlhs.Base: newtype CCURLinfo'CertI
- Network.Curlhs.Base: newtype CCURLinfo'SList
- Network.Curlhs.Base: newtype CCURLiocmd
- Network.Curlhs.Base: newtype CCURLioerr
- Network.Curlhs.Base: newtype CCURLoption'CFile
- Network.Curlhs.Base: newtype CCURLoption'CLong
- Network.Curlhs.Base: newtype CCURLoption'CString
- Network.Curlhs.Base: newtype CCURLoption'CURLSH
- Network.Curlhs.Base: newtype CCURLoption'FunPtr
- Network.Curlhs.Base: newtype CCURLoption'HTTPP
- Network.Curlhs.Base: newtype CCURLoption'Int64
- Network.Curlhs.Base: newtype CCURLoption'SList
- Network.Curlhs.Base: newtype CCURLoption'UsrPtr
- Network.Curlhs.Base: newtype CCURLsocktype
- Network.Curlhs.Base: newtype CCURLversion
- Network.Curlhs.Base: type CCURL_calloc_callback = CSize -> CSize -> IO (Ptr ())
- Network.Curlhs.Base: type CCURL_chunk_bgn_callback = Ptr () -> Ptr () -> CInt -> IO CLong
- Network.Curlhs.Base: type CCURL_chunk_end_callback = Ptr () -> IO CLong
- Network.Curlhs.Base: type CCURL_closesocket_callback = Ptr () -> CCURL_socket_t -> IO CInt
- Network.Curlhs.Base: type CCURL_conv_callback = Ptr CChar -> CSize -> IO CCURLcode
- Network.Curlhs.Base: type CCURL_debug_callback = Ptr CCURL -> CCURL_infotype -> Ptr CChar -> CSize -> Ptr () -> IO CInt
- Network.Curlhs.Base: type CCURL_fnmatch_callback = Ptr () -> Ptr CChar -> Ptr CChar -> IO CInt
- Network.Curlhs.Base: type CCURL_formget_callback = Ptr () -> Ptr CChar -> CSize -> IO CSize
- Network.Curlhs.Base: type CCURL_free_callback = Ptr () -> IO ()
- Network.Curlhs.Base: type CCURL_ioctl_callback = Ptr CCURL -> CCURLiocmd -> Ptr () -> IO CCURLioerr
- Network.Curlhs.Base: type CCURL_lock_function = Ptr CCURL -> CCURL_lock_data -> CCURL_lock_access -> Ptr () -> IO ()
- Network.Curlhs.Base: type CCURL_malloc_callback = CSize -> IO (Ptr ())
- Network.Curlhs.Base: type CCURL_off_t = CLLong
- Network.Curlhs.Base: type CCURL_opensocket_callback = Ptr () -> CCURLsocktype -> Ptr CCURL_sockaddr -> IO CCURL_socket_t
- Network.Curlhs.Base: type CCURL_progress_callback = Ptr () -> CDouble -> CDouble -> CDouble -> CDouble -> IO CInt
- Network.Curlhs.Base: type CCURL_read_callback = Ptr CChar -> CSize -> CSize -> Ptr () -> IO CSize
- Network.Curlhs.Base: type CCURL_realloc_callback = Ptr () -> CSize -> IO (Ptr ())
- Network.Curlhs.Base: type CCURL_seek_callback = Ptr () -> CCURL_off_t -> CInt -> IO CInt
- Network.Curlhs.Base: type CCURL_socket_t = CInt
- Network.Curlhs.Base: type CCURL_sockopt_callback = Ptr () -> CCURL_socket_t -> CCURLsocktype -> IO CInt
- Network.Curlhs.Base: type CCURL_sshkey_callback = Ptr CCURL -> Ptr CCURL_khkey -> Ptr CCURL_khkey -> CCURL_khmatch -> Ptr () -> IO CCURL_khstat
- Network.Curlhs.Base: type CCURL_ssl_ctx_callback = Ptr CCURL -> Ptr () -> Ptr () -> IO CCURLcode
- Network.Curlhs.Base: type CCURL_strdup_callback = Ptr CChar -> IO (Ptr CChar)
- Network.Curlhs.Base: type CCURL_unlock_function = Ptr CCURL -> CCURL_lock_data -> Ptr () -> IO ()
- Network.Curlhs.Base: type CCURL_write_callback = Ptr CChar -> CSize -> CSize -> Ptr () -> IO CSize
- Network.Curlhs.Base: wrap_ccurl_calloc_callback :: CCURL_calloc_callback -> IO (FunPtr CCURL_calloc_callback)
- Network.Curlhs.Base: wrap_ccurl_chunk_bgn_callback :: CCURL_chunk_bgn_callback -> IO (FunPtr CCURL_chunk_bgn_callback)
- Network.Curlhs.Base: wrap_ccurl_chunk_end_callback :: CCURL_chunk_end_callback -> IO (FunPtr CCURL_chunk_end_callback)
- Network.Curlhs.Base: wrap_ccurl_closesocket_callback :: CCURL_closesocket_callback -> IO (FunPtr CCURL_closesocket_callback)
- Network.Curlhs.Base: wrap_ccurl_conv_callback :: CCURL_conv_callback -> IO (FunPtr CCURL_conv_callback)
- Network.Curlhs.Base: wrap_ccurl_debug_callback :: CCURL_debug_callback -> IO (FunPtr CCURL_debug_callback)
- Network.Curlhs.Base: wrap_ccurl_fnmatch_callback :: CCURL_fnmatch_callback -> IO (FunPtr CCURL_fnmatch_callback)
- Network.Curlhs.Base: wrap_ccurl_formget_callback :: CCURL_formget_callback -> IO (FunPtr CCURL_formget_callback)
- Network.Curlhs.Base: wrap_ccurl_free_callback :: CCURL_free_callback -> IO (FunPtr CCURL_free_callback)
- Network.Curlhs.Base: wrap_ccurl_ioctl_callback :: CCURL_ioctl_callback -> IO (FunPtr CCURL_ioctl_callback)
- Network.Curlhs.Base: wrap_ccurl_lock_function :: CCURL_lock_function -> IO (FunPtr CCURL_lock_function)
- Network.Curlhs.Base: wrap_ccurl_malloc_callback :: CCURL_malloc_callback -> IO (FunPtr CCURL_malloc_callback)
- Network.Curlhs.Base: wrap_ccurl_opensocket_callback :: CCURL_opensocket_callback -> IO (FunPtr CCURL_opensocket_callback)
- Network.Curlhs.Base: wrap_ccurl_progress_callback :: CCURL_progress_callback -> IO (FunPtr CCURL_progress_callback)
- Network.Curlhs.Base: wrap_ccurl_read_callback :: CCURL_read_callback -> IO (FunPtr CCURL_read_callback)
- Network.Curlhs.Base: wrap_ccurl_realloc_callback :: CCURL_realloc_callback -> IO (FunPtr CCURL_realloc_callback)
- Network.Curlhs.Base: wrap_ccurl_seek_callback :: CCURL_seek_callback -> IO (FunPtr CCURL_seek_callback)
- Network.Curlhs.Base: wrap_ccurl_sockopt_callback :: CCURL_sockopt_callback -> IO (FunPtr CCURL_sockopt_callback)
- Network.Curlhs.Base: wrap_ccurl_sshkey_callback :: CCURL_sshkey_callback -> IO (FunPtr CCURL_sshkey_callback)
- Network.Curlhs.Base: wrap_ccurl_ssl_ctx_callback :: CCURL_ssl_ctx_callback -> IO (FunPtr CCURL_ssl_ctx_callback)
- Network.Curlhs.Base: wrap_ccurl_strdup_callback :: CCURL_strdup_callback -> IO (FunPtr CCURL_strdup_callback)
- Network.Curlhs.Base: wrap_ccurl_unlock_function :: CCURL_unlock_function -> IO (FunPtr CCURL_unlock_function)
- Network.Curlhs.Base: wrap_ccurl_write_callback :: CCURL_write_callback -> IO (FunPtr CCURL_write_callback)
- Network.Curlhs.Core: CURLAUTH_ANY :: CURLauth
- Network.Curlhs.Core: CURLAUTH_ANYSAFE :: CURLauth
- Network.Curlhs.Core: CURLAUTH_BASIC :: CURLauth
- Network.Curlhs.Core: CURLAUTH_DIGEST :: CURLauth
- Network.Curlhs.Core: CURLAUTH_DIGEST_IE :: CURLauth
- Network.Curlhs.Core: CURLAUTH_GSSNEGOTIATE :: CURLauth
- Network.Curlhs.Core: CURLAUTH_NTLM :: CURLauth
- Network.Curlhs.Core: CURLAUTH_NTLM_WB :: CURLauth
- Network.Curlhs.Core: CURLAUTH_ONLY :: CURLauth
- Network.Curlhs.Core: CURLCLOSEPOLICY_CALLBACK :: CURLclosepol
- Network.Curlhs.Core: CURLCLOSEPOLICY_LEAST_RECENTLY_USED :: CURLclosepol
- Network.Curlhs.Core: CURLCLOSEPOLICY_LEAST_TRAFFIC :: CURLclosepol
- Network.Curlhs.Core: CURLCLOSEPOLICY_NONE :: CURLclosepol
- Network.Curlhs.Core: CURLCLOSEPOLICY_OLDEST :: CURLclosepol
- Network.Curlhs.Core: CURLCLOSEPOLICY_SLOWEST :: CURLclosepol
- Network.Curlhs.Core: CURLE_ABORTED_BY_CALLBACK :: CURLcode
- Network.Curlhs.Core: CURLE_AGAIN :: CURLcode
- Network.Curlhs.Core: CURLE_BAD_CONTENT_ENCODING :: CURLcode
- Network.Curlhs.Core: CURLE_BAD_DOWNLOAD_RESUME :: CURLcode
- Network.Curlhs.Core: CURLE_BAD_FUNCTION_ARGUMENT :: CURLcode
- Network.Curlhs.Core: CURLE_CHUNK_FAILED :: CURLcode
- Network.Curlhs.Core: CURLE_CONV_FAILED :: CURLcode
- Network.Curlhs.Core: CURLE_CONV_REQD :: CURLcode
- Network.Curlhs.Core: CURLE_COULDNT_CONNECT :: CURLcode
- Network.Curlhs.Core: CURLE_COULDNT_RESOLVE_HOST :: CURLcode
- Network.Curlhs.Core: CURLE_COULDNT_RESOLVE_PROXY :: CURLcode
- Network.Curlhs.Core: CURLE_FAILED_INIT :: CURLcode
- Network.Curlhs.Core: CURLE_FILESIZE_EXCEEDED :: CURLcode
- Network.Curlhs.Core: CURLE_FILE_COULDNT_READ_FILE :: CURLcode
- Network.Curlhs.Core: CURLE_FTP_ACCEPT_FAILED :: CURLcode
- Network.Curlhs.Core: CURLE_FTP_ACCEPT_TIMEOUT :: CURLcode
- Network.Curlhs.Core: CURLE_FTP_BAD_FILE_LIST :: CURLcode
- Network.Curlhs.Core: CURLE_FTP_CANT_GET_HOST :: CURLcode
- Network.Curlhs.Core: CURLE_FTP_COULDNT_RETR_FILE :: CURLcode
- Network.Curlhs.Core: CURLE_FTP_COULDNT_SET_TYPE :: CURLcode
- Network.Curlhs.Core: CURLE_FTP_COULDNT_USE_REST :: CURLcode
- Network.Curlhs.Core: CURLE_FTP_PORT_FAILED :: CURLcode
- Network.Curlhs.Core: CURLE_FTP_PRET_FAILED :: CURLcode
- Network.Curlhs.Core: CURLE_FTP_WEIRD_227_FORMAT :: CURLcode
- Network.Curlhs.Core: CURLE_FTP_WEIRD_PASS_REPLY :: CURLcode
- Network.Curlhs.Core: CURLE_FTP_WEIRD_PASV_REPLY :: CURLcode
- Network.Curlhs.Core: CURLE_FTP_WEIRD_SERVER_REPLY :: CURLcode
- Network.Curlhs.Core: CURLE_FUNCTION_NOT_FOUND :: CURLcode
- Network.Curlhs.Core: CURLE_GOT_NOTHING :: CURLcode
- Network.Curlhs.Core: CURLE_HTTP_POST_ERROR :: CURLcode
- Network.Curlhs.Core: CURLE_HTTP_RETURNED_ERROR :: CURLcode
- Network.Curlhs.Core: CURLE_INTERFACE_FAILED :: CURLcode
- Network.Curlhs.Core: CURLE_LDAP_CANNOT_BIND :: CURLcode
- Network.Curlhs.Core: CURLE_LDAP_INVALID_URL :: CURLcode
- Network.Curlhs.Core: CURLE_LDAP_SEARCH_FAILED :: CURLcode
- Network.Curlhs.Core: CURLE_LOGIN_DENIED :: CURLcode
- Network.Curlhs.Core: CURLE_NOT_BUILT_IN :: CURLcode
- Network.Curlhs.Core: CURLE_OK :: CURLcode
- Network.Curlhs.Core: CURLE_OPERATION_TIMEDOUT :: CURLcode
- Network.Curlhs.Core: CURLE_OUT_OF_MEMORY :: CURLcode
- Network.Curlhs.Core: CURLE_PARTIAL_FILE :: CURLcode
- Network.Curlhs.Core: CURLE_PEER_FAILED_VERIFICATION :: CURLcode
- Network.Curlhs.Core: CURLE_QUOTE_ERROR :: CURLcode
- Network.Curlhs.Core: CURLE_RANGE_ERROR :: CURLcode
- Network.Curlhs.Core: CURLE_READ_ERROR :: CURLcode
- Network.Curlhs.Core: CURLE_RECV_ERROR :: CURLcode
- Network.Curlhs.Core: CURLE_REMOTE_ACCESS_DENIED :: CURLcode
- Network.Curlhs.Core: CURLE_REMOTE_DISK_FULL :: CURLcode
- Network.Curlhs.Core: CURLE_REMOTE_FILE_EXISTS :: CURLcode
- Network.Curlhs.Core: CURLE_REMOTE_FILE_NOT_FOUND :: CURLcode
- Network.Curlhs.Core: CURLE_RTSP_CSEQ_ERROR :: CURLcode
- Network.Curlhs.Core: CURLE_RTSP_SESSION_ERROR :: CURLcode
- Network.Curlhs.Core: CURLE_SEND_ERROR :: CURLcode
- Network.Curlhs.Core: CURLE_SEND_FAIL_REWIND :: CURLcode
- Network.Curlhs.Core: CURLE_SSH :: CURLcode
- Network.Curlhs.Core: CURLE_SSL_CACERT :: CURLcode
- Network.Curlhs.Core: CURLE_SSL_CACERT_BADFILE :: CURLcode
- Network.Curlhs.Core: CURLE_SSL_CERTPROBLEM :: CURLcode
- Network.Curlhs.Core: CURLE_SSL_CIPHER :: CURLcode
- Network.Curlhs.Core: CURLE_SSL_CONNECT_ERROR :: CURLcode
- Network.Curlhs.Core: CURLE_SSL_CRL_BADFILE :: CURLcode
- Network.Curlhs.Core: CURLE_SSL_ENGINE_INITFAILED :: CURLcode
- Network.Curlhs.Core: CURLE_SSL_ENGINE_NOTFOUND :: CURLcode
- Network.Curlhs.Core: CURLE_SSL_ENGINE_SETFAILED :: CURLcode
- Network.Curlhs.Core: CURLE_SSL_ISSUER_ERROR :: CURLcode
- Network.Curlhs.Core: CURLE_SSL_SHUTDOWN_FAILED :: CURLcode
- Network.Curlhs.Core: CURLE_TELNET_OPTION_SYNTAX :: CURLcode
- Network.Curlhs.Core: CURLE_TFTP_ILLEGAL :: CURLcode
- Network.Curlhs.Core: CURLE_TFTP_NOSUCHUSER :: CURLcode
- Network.Curlhs.Core: CURLE_TFTP_NOTFOUND :: CURLcode
- Network.Curlhs.Core: CURLE_TFTP_PERM :: CURLcode
- Network.Curlhs.Core: CURLE_TFTP_UNKNOWNID :: CURLcode
- Network.Curlhs.Core: CURLE_TOO_MANY_REDIRECTS :: CURLcode
- Network.Curlhs.Core: CURLE_UNKNOWN_OPTION :: CURLcode
- Network.Curlhs.Core: CURLE_UNSUPPORTED_PROTOCOL :: CURLcode
- Network.Curlhs.Core: CURLE_UPLOAD_FAILED :: CURLcode
- Network.Curlhs.Core: CURLE_URL_MALFORMAT :: CURLcode
- Network.Curlhs.Core: CURLE_USE_SSL_FAILED :: CURLcode
- Network.Curlhs.Core: CURLE_WRITE_ERROR :: CURLcode
- Network.Curlhs.Core: CURLFTPAUTH_DEFAULT :: CURLftpauth
- Network.Curlhs.Core: CURLFTPAUTH_SSL :: CURLftpauth
- Network.Curlhs.Core: CURLFTPAUTH_TLS :: CURLftpauth
- Network.Curlhs.Core: CURLFTPMETHOD_DEFAULT :: CURLftpmethod
- Network.Curlhs.Core: CURLFTPMETHOD_MULTICWD :: CURLftpmethod
- Network.Curlhs.Core: CURLFTPMETHOD_NOCWD :: CURLftpmethod
- Network.Curlhs.Core: CURLFTPMETHOD_SINGLECWD :: CURLftpmethod
- Network.Curlhs.Core: CURLFTPSSL_CCC_ACTIVE :: CURLftpssl
- Network.Curlhs.Core: CURLFTPSSL_CCC_NONE :: CURLftpssl
- Network.Curlhs.Core: CURLFTPSSL_CCC_PASSIVE :: CURLftpssl
- Network.Curlhs.Core: CURLFTP_CREATE_DIR :: CURLftpcreate
- Network.Curlhs.Core: CURLFTP_CREATE_DIR_NONE :: CURLftpcreate
- Network.Curlhs.Core: CURLFTP_CREATE_DIR_RETRY :: CURLftpcreate
- Network.Curlhs.Core: CURLGSSAPI_DELEGATION_FLAG :: CURLgssapi
- Network.Curlhs.Core: CURLGSSAPI_DELEGATION_NONE :: CURLgssapi
- Network.Curlhs.Core: CURLGSSAPI_DELEGATION_POLICY_FLAG :: CURLgssapi
- Network.Curlhs.Core: CURLOPT_ACCEPTTIMEOUT_MS :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_ACCEPT_ENCODING :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_ADDRESS_SCOPE :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_APPEND :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_AUTOREFERER :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_BUFFERSIZE :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_CAINFO :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_CAPATH :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_CERTINFO :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_CLOSEPOLICY :: CURLclosepol -> CURLoption
- Network.Curlhs.Core: CURLOPT_CONNECTTIMEOUT :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_CONNECTTIMEOUT_MS :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_CONNECT_ONLY :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_COOKIE :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_COOKIEFILE :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_COOKIEJAR :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_COOKIELIST :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_COOKIESESSION :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_COPYPOSTFIELDS :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_CRLF :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_CRLFILE :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_CUSTOMREQUEST :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_DIRLISTONLY :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_DNS_CACHE_TIMEOUT :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_DNS_SERVERS :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_DNS_USE_GLOBAL_CACHE :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_EGDSOCKET :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_FAILONERROR :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_FILETIME :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_FOLLOWLOCATION :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_FORBID_REUSE :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_FRESH_CONNECT :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_FTPPORT :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_FTPSSLAUTH :: CURLftpauth -> CURLoption
- Network.Curlhs.Core: CURLOPT_FTP_ACCOUNT :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_FTP_ALTERNATIVE_TO_USER :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_FTP_CREATE_MISSING_DIRS :: CURLftpcreate -> CURLoption
- Network.Curlhs.Core: CURLOPT_FTP_FILEMETHOD :: CURLftpmethod -> CURLoption
- Network.Curlhs.Core: CURLOPT_FTP_RESPONSE_TIMEOUT :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_FTP_SKIP_PASV_IP :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_FTP_SSL_CCC :: CURLftpssl -> CURLoption
- Network.Curlhs.Core: CURLOPT_FTP_USE_EPRT :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_FTP_USE_EPSV :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_FTP_USE_PRET :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_GSSAPI_DELEGATION :: CURLgssapi -> CURLoption
- Network.Curlhs.Core: CURLOPT_HEADER :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_HTTPAUTH :: [CURLauth] -> CURLoption
- Network.Curlhs.Core: CURLOPT_HTTPGET :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_HTTPPROXYTUNNEL :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_HTTP_CONTENT_DECODING :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_HTTP_TRANSFER_DECODING :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_HTTP_VERSION :: CURLhttpver -> CURLoption
- Network.Curlhs.Core: CURLOPT_IGNORE_CONTENT_LENGTH :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_INFILESIZE :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_INFILESIZE_LARGE :: Int64 -> CURLoption
- Network.Curlhs.Core: CURLOPT_INTERFACE :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_IPRESOLVE :: CURLipresolve -> CURLoption
- Network.Curlhs.Core: CURLOPT_ISSUERCERT :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_KEYPASSWD :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_KRBLEVEL :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_LOCALPORT :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_LOCALPORTRANGE :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_LOW_SPEED_LIMIT :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_LOW_SPEED_TIME :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_MAIL_AUTH :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_MAIL_FROM :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_MAXCONNECTS :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_MAXFILESIZE :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_MAXFILESIZE_LARGE :: Int64 -> CURLoption
- Network.Curlhs.Core: CURLOPT_MAXREDIRS :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_MAX_RECV_SPEED_LARGE :: Int64 -> CURLoption
- Network.Curlhs.Core: CURLOPT_MAX_SEND_SPEED_LARGE :: Int64 -> CURLoption
- Network.Curlhs.Core: CURLOPT_NETRC :: CURLnetrc -> CURLoption
- Network.Curlhs.Core: CURLOPT_NETRC_FILE :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_NEW_DIRECTORY_PERMS :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_NEW_FILE_PERMS :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_NOBODY :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_NOPROGRESS :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_NOPROXY :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_NOSIGNAL :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_PASSWORD :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_PORT :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_POST :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_POSTFIELDSIZE :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_POSTFIELDSIZE_LARGE :: Int64 -> CURLoption
- Network.Curlhs.Core: CURLOPT_POSTREDIR :: [CURLredir] -> CURLoption
- Network.Curlhs.Core: CURLOPT_PROTOCOLS :: [CURLproto] -> CURLoption
- Network.Curlhs.Core: CURLOPT_PROXY :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_PROXYAUTH :: [CURLauth] -> CURLoption
- Network.Curlhs.Core: CURLOPT_PROXYPASSWORD :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_PROXYPORT :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_PROXYTYPE :: CURLproxy -> CURLoption
- Network.Curlhs.Core: CURLOPT_PROXYUSERNAME :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_PROXYUSERPWD :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_PROXY_TRANSFER_MODE :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_PUT :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_RANDOM_FILE :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_RANGE :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_READFUNCTION :: (Maybe CURL_read_callback) -> CURLoption
- Network.Curlhs.Core: CURLOPT_REDIR_PROTOCOLS :: [CURLproto] -> CURLoption
- Network.Curlhs.Core: CURLOPT_REFERER :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_RESUME_FROM :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_RESUME_FROM_LARGE :: Int64 -> CURLoption
- Network.Curlhs.Core: CURLOPT_RTSP_CLIENT_CSEQ :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_RTSP_REQUEST :: CURLrtspreq -> CURLoption
- Network.Curlhs.Core: CURLOPT_RTSP_SERVER_CSEQ :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_RTSP_SESSION_ID :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_RTSP_STREAM_URI :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_RTSP_TRANSPORT :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_SOCKS5_GSSAPI_NEC :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_SOCKS5_GSSAPI_SERVICE :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSH_AUTH_TYPES :: [CURLsshauth] -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSH_KNOWNHOSTS :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSH_PRIVATE_KEYFILE :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSH_PUBLIC_KEYFILE :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSLCERT :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSLCERTTYPE :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSLENGINE :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSLENGINE_DEFAULT :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSLKEY :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSLKEYTYPE :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSLVERSION :: CURLsslver -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSL_CIPHER_LIST :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSL_OPTIONS :: CURLsslopt -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSL_SESSIONID_CACHE :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSL_VERIFYHOST :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_SSL_VERIFYPEER :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_TCP_KEEPALIVE :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_TCP_KEEPIDLE :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_TCP_KEEPINTVL :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_TCP_NODELAY :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_TFTP_BLKSIZE :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_TIMECONDITION :: CURLtimecond -> CURLoption
- Network.Curlhs.Core: CURLOPT_TIMEOUT :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_TIMEOUT_MS :: Int -> CURLoption
- Network.Curlhs.Core: CURLOPT_TIMEVALUE :: UTCTime -> CURLoption
- Network.Curlhs.Core: CURLOPT_TLSAUTH_PASSWORD :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_TLSAUTH_TYPE :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_TLSAUTH_USERNAME :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_TRANSFERTEXT :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_TRANSFER_ENCODING :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_UNRESTRICTED_AUTH :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_UPLOAD :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_URL :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_USERAGENT :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_USERNAME :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_USERPWD :: ByteString -> CURLoption
- Network.Curlhs.Core: CURLOPT_USE_SSL :: CURLusessl -> CURLoption
- Network.Curlhs.Core: CURLOPT_VERBOSE :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_WILDCARDMATCH :: Bool -> CURLoption
- Network.Curlhs.Core: CURLOPT_WRITEFUNCTION :: (Maybe CURL_write_callback) -> CURLoption
- Network.Curlhs.Core: CURLPROTO_ALL :: CURLproto
- Network.Curlhs.Core: CURLPROTO_DICT :: CURLproto
- Network.Curlhs.Core: CURLPROTO_FILE :: CURLproto
- Network.Curlhs.Core: CURLPROTO_FTP :: CURLproto
- Network.Curlhs.Core: CURLPROTO_FTPS :: CURLproto
- Network.Curlhs.Core: CURLPROTO_GOPHER :: CURLproto
- Network.Curlhs.Core: CURLPROTO_HTTP :: CURLproto
- Network.Curlhs.Core: CURLPROTO_HTTPS :: CURLproto
- Network.Curlhs.Core: CURLPROTO_IMAP :: CURLproto
- Network.Curlhs.Core: CURLPROTO_IMAPS :: CURLproto
- Network.Curlhs.Core: CURLPROTO_LDAP :: CURLproto
- Network.Curlhs.Core: CURLPROTO_LDAPS :: CURLproto
- Network.Curlhs.Core: CURLPROTO_POP3 :: CURLproto
- Network.Curlhs.Core: CURLPROTO_POP3S :: CURLproto
- Network.Curlhs.Core: CURLPROTO_RTMP :: CURLproto
- Network.Curlhs.Core: CURLPROTO_RTMPE :: CURLproto
- Network.Curlhs.Core: CURLPROTO_RTMPS :: CURLproto
- Network.Curlhs.Core: CURLPROTO_RTMPT :: CURLproto
- Network.Curlhs.Core: CURLPROTO_RTMPTE :: CURLproto
- Network.Curlhs.Core: CURLPROTO_RTMPTS :: CURLproto
- Network.Curlhs.Core: CURLPROTO_RTSP :: CURLproto
- Network.Curlhs.Core: CURLPROTO_SCP :: CURLproto
- Network.Curlhs.Core: CURLPROTO_SFTP :: CURLproto
- Network.Curlhs.Core: CURLPROTO_SMTP :: CURLproto
- Network.Curlhs.Core: CURLPROTO_SMTPS :: CURLproto
- Network.Curlhs.Core: CURLPROTO_TELNET :: CURLproto
- Network.Curlhs.Core: CURLPROTO_TFTP :: CURLproto
- Network.Curlhs.Core: CURLPROXY_HTTP :: CURLproxy
- Network.Curlhs.Core: CURLPROXY_HTTP_1_0 :: CURLproxy
- Network.Curlhs.Core: CURLPROXY_SOCKS4 :: CURLproxy
- Network.Curlhs.Core: CURLPROXY_SOCKS4A :: CURLproxy
- Network.Curlhs.Core: CURLPROXY_SOCKS5 :: CURLproxy
- Network.Curlhs.Core: CURLPROXY_SOCKS5_HOSTNAME :: CURLproxy
- Network.Curlhs.Core: CURLSSH_AUTH_ANY :: CURLsshauth
- Network.Curlhs.Core: CURLSSH_AUTH_DEFAULT :: CURLsshauth
- Network.Curlhs.Core: CURLSSH_AUTH_HOST :: CURLsshauth
- Network.Curlhs.Core: CURLSSH_AUTH_KEYBOARD :: CURLsshauth
- Network.Curlhs.Core: CURLSSH_AUTH_NONE :: CURLsshauth
- Network.Curlhs.Core: CURLSSH_AUTH_PASSWORD :: CURLsshauth
- Network.Curlhs.Core: CURLSSH_AUTH_PUBLICKEY :: CURLsshauth
- Network.Curlhs.Core: CURLSSLOPT_ALLOW_BEAST :: CURLsslopt
- Network.Curlhs.Core: CURLUSESSL_ALL :: CURLusessl
- Network.Curlhs.Core: CURLUSESSL_CONTROL :: CURLusessl
- Network.Curlhs.Core: CURLUSESSL_NONE :: CURLusessl
- Network.Curlhs.Core: CURLUSESSL_TRY :: CURLusessl
- Network.Curlhs.Core: CURL_HTTP_VERSION_1_0 :: CURLhttpver
- Network.Curlhs.Core: CURL_HTTP_VERSION_1_1 :: CURLhttpver
- Network.Curlhs.Core: CURL_HTTP_VERSION_NONE :: CURLhttpver
- Network.Curlhs.Core: CURL_IPRESOLVE_V4 :: CURLipresolve
- Network.Curlhs.Core: CURL_IPRESOLVE_V6 :: CURLipresolve
- Network.Curlhs.Core: CURL_IPRESOLVE_WHATEVER :: CURLipresolve
- Network.Curlhs.Core: CURL_NETRC_IGNORED :: CURLnetrc
- Network.Curlhs.Core: CURL_NETRC_OPTIONAL :: CURLnetrc
- Network.Curlhs.Core: CURL_NETRC_REQUIRED :: CURLnetrc
- Network.Curlhs.Core: CURL_READFUNC_ABORT :: CURL_read_response
- Network.Curlhs.Core: CURL_READFUNC_OK :: ByteString -> CURL_read_response
- Network.Curlhs.Core: CURL_READFUNC_PAUSE :: CURL_read_response
- Network.Curlhs.Core: CURL_REDIR_GET_ALL :: CURLredir
- Network.Curlhs.Core: CURL_REDIR_POST_301 :: CURLredir
- Network.Curlhs.Core: CURL_REDIR_POST_302 :: CURLredir
- Network.Curlhs.Core: CURL_REDIR_POST_ALL :: CURLredir
- Network.Curlhs.Core: CURL_RTSPREQ_ANNOUNCE :: CURLrtspreq
- Network.Curlhs.Core: CURL_RTSPREQ_DESCRIBE :: CURLrtspreq
- Network.Curlhs.Core: CURL_RTSPREQ_GET_PARAMETER :: CURLrtspreq
- Network.Curlhs.Core: CURL_RTSPREQ_OPTIONS :: CURLrtspreq
- Network.Curlhs.Core: CURL_RTSPREQ_PAUSE :: CURLrtspreq
- Network.Curlhs.Core: CURL_RTSPREQ_PLAY :: CURLrtspreq
- Network.Curlhs.Core: CURL_RTSPREQ_RECEIVE :: CURLrtspreq
- Network.Curlhs.Core: CURL_RTSPREQ_RECORD :: CURLrtspreq
- Network.Curlhs.Core: CURL_RTSPREQ_SETUP :: CURLrtspreq
- Network.Curlhs.Core: CURL_RTSPREQ_SET_PARAMETER :: CURLrtspreq
- Network.Curlhs.Core: CURL_RTSPREQ_TEARDOWN :: CURLrtspreq
- Network.Curlhs.Core: CURL_SSLVERSION_DEFAULT :: CURLsslver
- Network.Curlhs.Core: CURL_SSLVERSION_SSLv2 :: CURLsslver
- Network.Curlhs.Core: CURL_SSLVERSION_SSLv3 :: CURLsslver
- Network.Curlhs.Core: CURL_SSLVERSION_TLSv1 :: CURLsslver
- Network.Curlhs.Core: CURL_TIMECOND_IFMODSINCE :: CURLtimecond
- Network.Curlhs.Core: CURL_TIMECOND_IFUNMODSINCE :: CURLtimecond
- Network.Curlhs.Core: CURL_TIMECOND_LASTMOD :: CURLtimecond
- Network.Curlhs.Core: CURL_TIMECOND_NONE :: CURLtimecond
- Network.Curlhs.Core: CURL_TLSAUTH_SRP :: CURLtlsauth
- Network.Curlhs.Core: CURL_VERSION_ASYNCHDNS :: CURL_version
- Network.Curlhs.Core: CURL_VERSION_CONV :: CURL_version
- Network.Curlhs.Core: CURL_VERSION_CURLDEBUG :: CURL_version
- Network.Curlhs.Core: CURL_VERSION_DEBUG :: CURL_version
- Network.Curlhs.Core: CURL_VERSION_GSSNEGOTIATE :: CURL_version
- Network.Curlhs.Core: CURL_VERSION_IDN :: CURL_version
- Network.Curlhs.Core: CURL_VERSION_IPV6 :: CURL_version
- Network.Curlhs.Core: CURL_VERSION_KERBEROS4 :: CURL_version
- Network.Curlhs.Core: CURL_VERSION_LARGEFILE :: CURL_version
- Network.Curlhs.Core: CURL_VERSION_LIBZ :: CURL_version
- Network.Curlhs.Core: CURL_VERSION_NTLM :: CURL_version
- Network.Curlhs.Core: CURL_VERSION_NTLM_WB :: CURL_version
- Network.Curlhs.Core: CURL_VERSION_SPNEGO :: CURL_version
- Network.Curlhs.Core: CURL_VERSION_SSL :: CURL_version
- Network.Curlhs.Core: CURL_VERSION_SSPI :: CURL_version
- Network.Curlhs.Core: CURL_VERSION_TLSAUTH_SRP :: CURL_version
- Network.Curlhs.Core: CURL_WRITEFUNC_FAIL :: CURL_write_response
- Network.Curlhs.Core: CURL_WRITEFUNC_OK :: CURL_write_response
- Network.Curlhs.Core: CURL_WRITEFUNC_PAUSE :: CURL_write_response
- Network.Curlhs.Core: CURL_version_info_data :: String -> Int -> String -> [CURL_version] -> Maybe String -> Int -> Maybe String -> [String] -> Maybe String -> Int -> Maybe String -> Int -> Maybe String -> CURL_version_info_data
- Network.Curlhs.Core: CURLinfo :: String -> Maybe Int -> Maybe Int -> Maybe UTCTime -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Int -> Maybe String -> Double -> Double -> Double -> Double -> Int -> Int -> Int -> [String] -> Maybe Double -> Maybe Double -> Maybe String -> [CURLauth] -> [CURLauth] -> Int -> Int -> String -> Int -> String -> Int -> [String] -> Maybe Int -> Maybe String -> [[String]] -> Bool -> Maybe String -> Int -> Int -> Int -> CURLinfo
- Network.Curlhs.Core: curl_easy_cleanup :: CURL -> IO ()
- Network.Curlhs.Core: curl_easy_getinfo :: CURL -> IO CURLinfo
- Network.Curlhs.Core: curl_easy_init :: IO CURL
- Network.Curlhs.Core: curl_easy_perform :: CURL -> IO ()
- Network.Curlhs.Core: curl_easy_reset :: CURL -> IO ()
- Network.Curlhs.Core: curl_easy_setopt :: CURL -> [CURLoption] -> IO ()
- Network.Curlhs.Core: curl_easy_strerror :: CURLcode -> IO ByteString
- Network.Curlhs.Core: curl_version :: IO String
- Network.Curlhs.Core: curl_version_info :: IO CURL_version_info_data
- Network.Curlhs.Core: curl_version_info_data_ares :: CURL_version_info_data -> Maybe String
- Network.Curlhs.Core: curl_version_info_data_ares_num :: CURL_version_info_data -> Int
- Network.Curlhs.Core: curl_version_info_data_features :: CURL_version_info_data -> [CURL_version]
- Network.Curlhs.Core: curl_version_info_data_host :: CURL_version_info_data -> String
- Network.Curlhs.Core: curl_version_info_data_iconv_ver_num :: CURL_version_info_data -> Int
- Network.Curlhs.Core: curl_version_info_data_libidn :: CURL_version_info_data -> Maybe String
- Network.Curlhs.Core: curl_version_info_data_libssh_version :: CURL_version_info_data -> Maybe String
- Network.Curlhs.Core: curl_version_info_data_libz_version :: CURL_version_info_data -> Maybe String
- Network.Curlhs.Core: curl_version_info_data_protocols :: CURL_version_info_data -> [String]
- Network.Curlhs.Core: curl_version_info_data_ssl_version :: CURL_version_info_data -> Maybe String
- Network.Curlhs.Core: curl_version_info_data_ssl_version_num :: CURL_version_info_data -> Int
- Network.Curlhs.Core: curl_version_info_data_version :: CURL_version_info_data -> String
- Network.Curlhs.Core: curl_version_info_data_version_num :: CURL_version_info_data -> Int
- Network.Curlhs.Core: curlinfo_appconnect_time :: CURLinfo -> Double
- Network.Curlhs.Core: curlinfo_certinfo :: CURLinfo -> [[String]]
- Network.Curlhs.Core: curlinfo_condition_unmet :: CURLinfo -> Bool
- Network.Curlhs.Core: curlinfo_connect_time :: CURLinfo -> Double
- Network.Curlhs.Core: curlinfo_content_length_download :: CURLinfo -> Maybe Double
- Network.Curlhs.Core: curlinfo_content_length_upload :: CURLinfo -> Maybe Double
- Network.Curlhs.Core: curlinfo_content_type :: CURLinfo -> Maybe String
- Network.Curlhs.Core: curlinfo_cookielist :: CURLinfo -> [String]
- Network.Curlhs.Core: curlinfo_effective_url :: CURLinfo -> String
- Network.Curlhs.Core: curlinfo_filetime :: CURLinfo -> Maybe UTCTime
- Network.Curlhs.Core: curlinfo_ftp_entry_path :: CURLinfo -> Maybe String
- Network.Curlhs.Core: curlinfo_header_size :: CURLinfo -> Int
- Network.Curlhs.Core: curlinfo_http_connectcode :: CURLinfo -> Maybe Int
- Network.Curlhs.Core: curlinfo_httpauth_avail :: CURLinfo -> [CURLauth]
- Network.Curlhs.Core: curlinfo_lastsocket :: CURLinfo -> Maybe Int
- Network.Curlhs.Core: curlinfo_local_ip :: CURLinfo -> String
- Network.Curlhs.Core: curlinfo_local_port :: CURLinfo -> Int
- Network.Curlhs.Core: curlinfo_namelookup_time :: CURLinfo -> Double
- Network.Curlhs.Core: curlinfo_num_connects :: CURLinfo -> Int
- Network.Curlhs.Core: curlinfo_os_errno :: CURLinfo -> Int
- Network.Curlhs.Core: curlinfo_pretransfer_time :: CURLinfo -> Double
- Network.Curlhs.Core: curlinfo_primary_ip :: CURLinfo -> String
- Network.Curlhs.Core: curlinfo_primary_port :: CURLinfo -> Int
- Network.Curlhs.Core: curlinfo_proxyauth_avail :: CURLinfo -> [CURLauth]
- Network.Curlhs.Core: curlinfo_redirect_count :: CURLinfo -> Int
- Network.Curlhs.Core: curlinfo_redirect_time :: CURLinfo -> Double
- Network.Curlhs.Core: curlinfo_redirect_url :: CURLinfo -> Maybe String
- Network.Curlhs.Core: curlinfo_request_size :: CURLinfo -> Int
- Network.Curlhs.Core: curlinfo_response_code :: CURLinfo -> Maybe Int
- Network.Curlhs.Core: curlinfo_rtsp_client_cseq :: CURLinfo -> Int
- Network.Curlhs.Core: curlinfo_rtsp_cseq_recv :: CURLinfo -> Int
- Network.Curlhs.Core: curlinfo_rtsp_server_cseq :: CURLinfo -> Int
- Network.Curlhs.Core: curlinfo_rtsp_session_id :: CURLinfo -> Maybe String
- Network.Curlhs.Core: curlinfo_size_download :: CURLinfo -> Double
- Network.Curlhs.Core: curlinfo_size_upload :: CURLinfo -> Double
- Network.Curlhs.Core: curlinfo_speed_download :: CURLinfo -> Double
- Network.Curlhs.Core: curlinfo_speed_upload :: CURLinfo -> Double
- Network.Curlhs.Core: curlinfo_ssl_engines :: CURLinfo -> [String]
- Network.Curlhs.Core: curlinfo_ssl_verifyresult :: CURLinfo -> Int
- Network.Curlhs.Core: curlinfo_starttransfer_time :: CURLinfo -> Double
- Network.Curlhs.Core: curlinfo_total_time :: CURLinfo -> Double
- Network.Curlhs.Core: data CURL
- Network.Curlhs.Core: data CURL_read_response
- Network.Curlhs.Core: data CURL_version
- Network.Curlhs.Core: data CURL_version_info_data
- Network.Curlhs.Core: data CURL_write_response
- Network.Curlhs.Core: data CURLauth
- Network.Curlhs.Core: data CURLclosepol
- Network.Curlhs.Core: data CURLcode
- Network.Curlhs.Core: data CURLftpauth
- Network.Curlhs.Core: data CURLftpcreate
- Network.Curlhs.Core: data CURLftpmethod
- Network.Curlhs.Core: data CURLftpssl
- Network.Curlhs.Core: data CURLgssapi
- Network.Curlhs.Core: data CURLhttpver
- Network.Curlhs.Core: data CURLinfo
- Network.Curlhs.Core: data CURLipresolve
- Network.Curlhs.Core: data CURLnetrc
- Network.Curlhs.Core: data CURLoption
- Network.Curlhs.Core: data CURLproto
- Network.Curlhs.Core: data CURLproxy
- Network.Curlhs.Core: data CURLredir
- Network.Curlhs.Core: data CURLrtspreq
- Network.Curlhs.Core: data CURLsshauth
- Network.Curlhs.Core: data CURLsslopt
- Network.Curlhs.Core: data CURLsslver
- Network.Curlhs.Core: data CURLtimecond
- Network.Curlhs.Core: data CURLtlsauth
- Network.Curlhs.Core: data CURLusessl
- Network.Curlhs.Core: type CURL_read_callback = Int -> IO CURL_read_response
- Network.Curlhs.Core: type CURL_write_callback = ByteString -> IO CURL_write_response
+ Network.CURL720: CURLAUTH_ANY :: CURLauth
+ Network.CURL720: CURLAUTH_ANYSAFE :: CURLauth
+ Network.CURL720: CURLAUTH_BASIC :: CURLauth
+ Network.CURL720: CURLAUTH_DIGEST :: CURLauth
+ Network.CURL720: CURLAUTH_DIGEST_IE :: CURLauth
+ Network.CURL720: CURLAUTH_GSSNEGOTIATE :: CURLauth
+ Network.CURL720: CURLAUTH_NTLM :: CURLauth
+ Network.CURL720: CURLAUTH_ONLY :: CURLauth
+ Network.CURL720: CURLE :: CURL -> String -> String -> CURLC -> CURLE
+ Network.CURL720: CURLE_ABORTED_BY_CALLBACK :: CURLC
+ Network.CURL720: CURLE_AGAIN :: CURLC
+ Network.CURL720: CURLE_BAD_CONTENT_ENCODING :: CURLC
+ Network.CURL720: CURLE_BAD_DOWNLOAD_RESUME :: CURLC
+ Network.CURL720: CURLE_BAD_FUNCTION_ARGUMENT :: CURLC
+ Network.CURL720: CURLE_CHUNK_FAILED :: CURLC
+ Network.CURL720: CURLE_CONV_FAILED :: CURLC
+ Network.CURL720: CURLE_CONV_REQD :: CURLC
+ Network.CURL720: CURLE_COULDNT_CONNECT :: CURLC
+ Network.CURL720: CURLE_COULDNT_RESOLVE_HOST :: CURLC
+ Network.CURL720: CURLE_COULDNT_RESOLVE_PROXY :: CURLC
+ Network.CURL720: CURLE_FAILED_INIT :: CURLC
+ Network.CURL720: CURLE_FILESIZE_EXCEEDED :: CURLC
+ Network.CURL720: CURLE_FILE_COULDNT_READ_FILE :: CURLC
+ Network.CURL720: CURLE_FTP_ACCEPT_FAILED :: CURLC
+ Network.CURL720: CURLE_FTP_ACCEPT_TIMEOUT :: CURLC
+ Network.CURL720: CURLE_FTP_BAD_FILE_LIST :: CURLC
+ Network.CURL720: CURLE_FTP_CANT_GET_HOST :: CURLC
+ Network.CURL720: CURLE_FTP_COULDNT_RETR_FILE :: CURLC
+ Network.CURL720: CURLE_FTP_COULDNT_SET_TYPE :: CURLC
+ Network.CURL720: CURLE_FTP_COULDNT_USE_REST :: CURLC
+ Network.CURL720: CURLE_FTP_PORT_FAILED :: CURLC
+ Network.CURL720: CURLE_FTP_PRET_FAILED :: CURLC
+ Network.CURL720: CURLE_FTP_WEIRD_227_FORMAT :: CURLC
+ Network.CURL720: CURLE_FTP_WEIRD_PASS_REPLY :: CURLC
+ Network.CURL720: CURLE_FTP_WEIRD_PASV_REPLY :: CURLC
+ Network.CURL720: CURLE_FTP_WEIRD_SERVER_REPLY :: CURLC
+ Network.CURL720: CURLE_FUNCTION_NOT_FOUND :: CURLC
+ Network.CURL720: CURLE_GOT_NOTHING :: CURLC
+ Network.CURL720: CURLE_HTTP_POST_ERROR :: CURLC
+ Network.CURL720: CURLE_HTTP_RETURNED_ERROR :: CURLC
+ Network.CURL720: CURLE_INTERFACE_FAILED :: CURLC
+ Network.CURL720: CURLE_LDAP_CANNOT_BIND :: CURLC
+ Network.CURL720: CURLE_LDAP_INVALID_URL :: CURLC
+ Network.CURL720: CURLE_LDAP_SEARCH_FAILED :: CURLC
+ Network.CURL720: CURLE_LOGIN_DENIED :: CURLC
+ Network.CURL720: CURLE_NOT_BUILT_IN :: CURLC
+ Network.CURL720: CURLE_OPERATION_TIMEDOUT :: CURLC
+ Network.CURL720: CURLE_OUT_OF_MEMORY :: CURLC
+ Network.CURL720: CURLE_PARTIAL_FILE :: CURLC
+ Network.CURL720: CURLE_PEER_FAILED_VERIFICATION :: CURLC
+ Network.CURL720: CURLE_QUOTE_ERROR :: CURLC
+ Network.CURL720: CURLE_RANGE_ERROR :: CURLC
+ Network.CURL720: CURLE_READ_ERROR :: CURLC
+ Network.CURL720: CURLE_RECV_ERROR :: CURLC
+ Network.CURL720: CURLE_REMOTE_ACCESS_DENIED :: CURLC
+ Network.CURL720: CURLE_REMOTE_DISK_FULL :: CURLC
+ Network.CURL720: CURLE_REMOTE_FILE_EXISTS :: CURLC
+ Network.CURL720: CURLE_REMOTE_FILE_NOT_FOUND :: CURLC
+ Network.CURL720: CURLE_RTSP_CSEQ_ERROR :: CURLC
+ Network.CURL720: CURLE_RTSP_SESSION_ERROR :: CURLC
+ Network.CURL720: CURLE_SEND_ERROR :: CURLC
+ Network.CURL720: CURLE_SEND_FAIL_REWIND :: CURLC
+ Network.CURL720: CURLE_SSH :: CURLC
+ Network.CURL720: CURLE_SSL_CACERT :: CURLC
+ Network.CURL720: CURLE_SSL_CACERT_BADFILE :: CURLC
+ Network.CURL720: CURLE_SSL_CERTPROBLEM :: CURLC
+ Network.CURL720: CURLE_SSL_CIPHER :: CURLC
+ Network.CURL720: CURLE_SSL_CONNECT_ERROR :: CURLC
+ Network.CURL720: CURLE_SSL_CRL_BADFILE :: CURLC
+ Network.CURL720: CURLE_SSL_ENGINE_INITFAILED :: CURLC
+ Network.CURL720: CURLE_SSL_ENGINE_NOTFOUND :: CURLC
+ Network.CURL720: CURLE_SSL_ENGINE_SETFAILED :: CURLC
+ Network.CURL720: CURLE_SSL_ISSUER_ERROR :: CURLC
+ Network.CURL720: CURLE_SSL_SHUTDOWN_FAILED :: CURLC
+ Network.CURL720: CURLE_TELNET_OPTION_SYNTAX :: CURLC
+ Network.CURL720: CURLE_TFTP_ILLEGAL :: CURLC
+ Network.CURL720: CURLE_TFTP_NOSUCHUSER :: CURLC
+ Network.CURL720: CURLE_TFTP_NOTFOUND :: CURLC
+ Network.CURL720: CURLE_TFTP_PERM :: CURLC
+ Network.CURL720: CURLE_TFTP_UNKNOWNID :: CURLC
+ Network.CURL720: CURLE_TOO_MANY_REDIRECTS :: CURLC
+ Network.CURL720: CURLE_UNKNOWN_ERROR :: CURLC
+ Network.CURL720: CURLE_UNKNOWN_OPTION :: CURLC
+ Network.CURL720: CURLE_UNSUPPORTED_PROTOCOL :: CURLC
+ Network.CURL720: CURLE_UPLOAD_FAILED :: CURLC
+ Network.CURL720: CURLE_URL_MALFORMAT :: CURLC
+ Network.CURL720: CURLE_USE_SSL_FAILED :: CURLC
+ Network.CURL720: CURLE_WRITE_ERROR :: CURLC
+ Network.CURL720: CURLFTPAUTH_DEFAULT :: CURLftpauth
+ Network.CURL720: CURLFTPAUTH_SSL :: CURLftpauth
+ Network.CURL720: CURLFTPAUTH_TLS :: CURLftpauth
+ Network.CURL720: CURLFTPMETHOD_DEFAULT :: CURLftpmethod
+ Network.CURL720: CURLFTPMETHOD_MULTICWD :: CURLftpmethod
+ Network.CURL720: CURLFTPMETHOD_NOCWD :: CURLftpmethod
+ Network.CURL720: CURLFTPMETHOD_SINGLECWD :: CURLftpmethod
+ Network.CURL720: CURLFTPSSL_CCC_ACTIVE :: CURLftpssl
+ Network.CURL720: CURLFTPSSL_CCC_NONE :: CURLftpssl
+ Network.CURL720: CURLFTPSSL_CCC_PASSIVE :: CURLftpssl
+ Network.CURL720: CURLFTP_CREATE_DIR :: CURLftpcreate
+ Network.CURL720: CURLFTP_CREATE_DIR_NONE :: CURLftpcreate
+ Network.CURL720: CURLFTP_CREATE_DIR_RETRY :: CURLftpcreate
+ Network.CURL720: CURLINFO_APPCONNECT_TIME :: CURLinfo Double
+ Network.CURL720: CURLINFO_CERTINFO :: CURLinfo [[String]]
+ Network.CURL720: CURLINFO_CONDITION_UNMET :: CURLinfo Bool
+ Network.CURL720: CURLINFO_CONNECT_TIME :: CURLinfo Double
+ Network.CURL720: CURLINFO_CONTENT_LENGTH_DOWNLOAD :: CURLinfo Double
+ Network.CURL720: CURLINFO_CONTENT_LENGTH_UPLOAD :: CURLinfo Double
+ Network.CURL720: CURLINFO_CONTENT_TYPE :: CURLinfo String
+ Network.CURL720: CURLINFO_COOKIELIST :: CURLinfo [String]
+ Network.CURL720: CURLINFO_EFFECTIVE_URL :: CURLinfo String
+ Network.CURL720: CURLINFO_FILETIME :: CURLinfo (Maybe UTCTime)
+ Network.CURL720: CURLINFO_FTP_ENTRY_PATH :: CURLinfo String
+ Network.CURL720: CURLINFO_HEADER_SIZE :: CURLinfo CLong
+ Network.CURL720: CURLINFO_HTTPAUTH_AVAIL :: CURLinfo [CURLauth]
+ Network.CURL720: CURLINFO_HTTP_CONNECTCODE :: CURLinfo CLong
+ Network.CURL720: CURLINFO_LASTSOCKET :: CURLinfo CLong
+ Network.CURL720: CURLINFO_NAMELOOKUP_TIME :: CURLinfo Double
+ Network.CURL720: CURLINFO_NUM_CONNECTS :: CURLinfo CLong
+ Network.CURL720: CURLINFO_OS_ERRNO :: CURLinfo CLong
+ Network.CURL720: CURLINFO_PRETRANSFER_TIME :: CURLinfo Double
+ Network.CURL720: CURLINFO_PRIMARY_IP :: CURLinfo String
+ Network.CURL720: CURLINFO_PROXYAUTH_AVAIL :: CURLinfo [CURLauth]
+ Network.CURL720: CURLINFO_REDIRECT_COUNT :: CURLinfo CLong
+ Network.CURL720: CURLINFO_REDIRECT_TIME :: CURLinfo Double
+ Network.CURL720: CURLINFO_REDIRECT_URL :: CURLinfo String
+ Network.CURL720: CURLINFO_REQUEST_SIZE :: CURLinfo CLong
+ Network.CURL720: CURLINFO_RESPONSE_CODE :: CURLinfo CLong
+ Network.CURL720: CURLINFO_RTSP_CLIENT_CSEQ :: CURLinfo CLong
+ Network.CURL720: CURLINFO_RTSP_CSEQ_RECV :: CURLinfo CLong
+ Network.CURL720: CURLINFO_RTSP_SERVER_CSEQ :: CURLinfo CLong
+ Network.CURL720: CURLINFO_RTSP_SESSION_ID :: CURLinfo String
+ Network.CURL720: CURLINFO_SIZE_DOWNLOAD :: CURLinfo Double
+ Network.CURL720: CURLINFO_SIZE_UPLOAD :: CURLinfo Double
+ Network.CURL720: CURLINFO_SPEED_DOWNLOAD :: CURLinfo Double
+ Network.CURL720: CURLINFO_SPEED_UPLOAD :: CURLinfo Double
+ Network.CURL720: CURLINFO_SSL_ENGINES :: CURLinfo [String]
+ Network.CURL720: CURLINFO_SSL_VERIFYRESULT :: CURLinfo CLong
+ Network.CURL720: CURLINFO_STARTTRANSFER_TIME :: CURLinfo Double
+ Network.CURL720: CURLINFO_TOTAL_TIME :: CURLinfo Double
+ Network.CURL720: CURLOPT_ACCEPT_ENCODING :: String -> CURLoption
+ Network.CURL720: CURLOPT_ADDRESS_SCOPE :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_APPEND :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_AUTOREFERER :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_BUFFERSIZE :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_CAINFO :: FilePath -> CURLoption
+ Network.CURL720: CURLOPT_CAPATH :: FilePath -> CURLoption
+ Network.CURL720: CURLOPT_CERTINFO :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_CONNECTTIMEOUT :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_CONNECTTIMEOUT_MS :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_CONNECT_ONLY :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_COOKIE :: String -> CURLoption
+ Network.CURL720: CURLOPT_COOKIEFILE :: FilePath -> CURLoption
+ Network.CURL720: CURLOPT_COOKIEJAR :: FilePath -> CURLoption
+ Network.CURL720: CURLOPT_COOKIELIST :: String -> CURLoption
+ Network.CURL720: CURLOPT_COOKIESESSION :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_COPYPOSTFIELDS :: String -> CURLoption
+ Network.CURL720: CURLOPT_CRLF :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_CRLFILE :: FilePath -> CURLoption
+ Network.CURL720: CURLOPT_CUSTOMREQUEST :: String -> CURLoption
+ Network.CURL720: CURLOPT_DIRLISTONLY :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_DNS_CACHE_TIMEOUT :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_EGDSOCKET :: String -> CURLoption
+ Network.CURL720: CURLOPT_FAILONERROR :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_FILETIME :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_FOLLOWLOCATION :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_FORBID_REUSE :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_FRESH_CONNECT :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_FTPPORT :: String -> CURLoption
+ Network.CURL720: CURLOPT_FTPSSLAUTH :: CURLftpauth -> CURLoption
+ Network.CURL720: CURLOPT_FTP_ACCOUNT :: String -> CURLoption
+ Network.CURL720: CURLOPT_FTP_ALTERNATIVE_TO_USER :: String -> CURLoption
+ Network.CURL720: CURLOPT_FTP_CREATE_MISSING_DIRS :: CURLftpcreate -> CURLoption
+ Network.CURL720: CURLOPT_FTP_FILEMETHOD :: CURLftpmethod -> CURLoption
+ Network.CURL720: CURLOPT_FTP_RESPONSE_TIMEOUT :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_FTP_SKIP_PASV_IP :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_FTP_SSL_CCC :: CURLftpssl -> CURLoption
+ Network.CURL720: CURLOPT_FTP_USE_EPRT :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_FTP_USE_EPSV :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_FTP_USE_PRET :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_HEADER :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_HTTP200ALIASES :: [String] -> CURLoption
+ Network.CURL720: CURLOPT_HTTPAUTH :: [CURLauth] -> CURLoption
+ Network.CURL720: CURLOPT_HTTPGET :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_HTTPHEADER :: [String] -> CURLoption
+ Network.CURL720: CURLOPT_HTTPPROXYTUNNEL :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_HTTP_CONTENT_DECODING :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_HTTP_TRANSFER_DECODING :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_HTTP_VERSION :: CURLhttpver -> CURLoption
+ Network.CURL720: CURLOPT_IGNORE_CONTENT_LENGTH :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_INFILESIZE :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_INFILESIZE_LARGE :: Int64 -> CURLoption
+ Network.CURL720: CURLOPT_INTERFACE :: String -> CURLoption
+ Network.CURL720: CURLOPT_IPRESOLVE :: CURLipresolve -> CURLoption
+ Network.CURL720: CURLOPT_ISSUERCERT :: FilePath -> CURLoption
+ Network.CURL720: CURLOPT_KEYPASSWD :: String -> CURLoption
+ Network.CURL720: CURLOPT_KRBLEVEL :: String -> CURLoption
+ Network.CURL720: CURLOPT_LOCALPORT :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_LOCALPORTRANGE :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_LOW_SPEED_LIMIT :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_LOW_SPEED_TIME :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_MAIL_FROM :: String -> CURLoption
+ Network.CURL720: CURLOPT_MAIL_RCPT :: [String] -> CURLoption
+ Network.CURL720: CURLOPT_MAXCONNECTS :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_MAXFILESIZE :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_MAXFILESIZE_LARGE :: Int64 -> CURLoption
+ Network.CURL720: CURLOPT_MAXREDIRS :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_MAX_RECV_SPEED_LARGE :: Int64 -> CURLoption
+ Network.CURL720: CURLOPT_MAX_SEND_SPEED_LARGE :: Int64 -> CURLoption
+ Network.CURL720: CURLOPT_NETRC :: CURLnetrc -> CURLoption
+ Network.CURL720: CURLOPT_NETRC_FILE :: FilePath -> CURLoption
+ Network.CURL720: CURLOPT_NEW_DIRECTORY_PERMS :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_NEW_FILE_PERMS :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_NOBODY :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_NOPROGRESS :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_NOPROXY :: String -> CURLoption
+ Network.CURL720: CURLOPT_NOSIGNAL :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_PASSWORD :: String -> CURLoption
+ Network.CURL720: CURLOPT_PORT :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_POST :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_POSTFIELDSIZE :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_POSTFIELDSIZE_LARGE :: Int64 -> CURLoption
+ Network.CURL720: CURLOPT_POSTQUOTE :: [String] -> CURLoption
+ Network.CURL720: CURLOPT_POSTREDIR :: [CURLredir] -> CURLoption
+ Network.CURL720: CURLOPT_PREQUOTE :: [String] -> CURLoption
+ Network.CURL720: CURLOPT_PROTOCOLS :: [CURLproto] -> CURLoption
+ Network.CURL720: CURLOPT_PROXY :: String -> CURLoption
+ Network.CURL720: CURLOPT_PROXYAUTH :: [CURLauth] -> CURLoption
+ Network.CURL720: CURLOPT_PROXYPASSWORD :: String -> CURLoption
+ Network.CURL720: CURLOPT_PROXYPORT :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_PROXYTYPE :: CURLproxy -> CURLoption
+ Network.CURL720: CURLOPT_PROXYUSERNAME :: String -> CURLoption
+ Network.CURL720: CURLOPT_PROXYUSERPWD :: String -> CURLoption
+ Network.CURL720: CURLOPT_PROXY_TRANSFER_MODE :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_PUT :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_QUOTE :: [String] -> CURLoption
+ Network.CURL720: CURLOPT_RANDOM_FILE :: FilePath -> CURLoption
+ Network.CURL720: CURLOPT_RANGE :: String -> CURLoption
+ Network.CURL720: CURLOPT_READFUNCTION :: (Maybe CURL_read_callback) -> CURLoption
+ Network.CURL720: CURLOPT_REDIR_PROTOCOLS :: [CURLproto] -> CURLoption
+ Network.CURL720: CURLOPT_REFERER :: String -> CURLoption
+ Network.CURL720: CURLOPT_RESUME_FROM :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_RESUME_FROM_LARGE :: Int64 -> CURLoption
+ Network.CURL720: CURLOPT_RTSP_CLIENT_CSEQ :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_RTSP_HEADER :: [String] -> CURLoption
+ Network.CURL720: CURLOPT_RTSP_REQUEST :: CURLrtspreq -> CURLoption
+ Network.CURL720: CURLOPT_RTSP_SERVER_CSEQ :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_RTSP_SESSION_ID :: String -> CURLoption
+ Network.CURL720: CURLOPT_RTSP_STREAM_URI :: String -> CURLoption
+ Network.CURL720: CURLOPT_RTSP_TRANSPORT :: String -> CURLoption
+ Network.CURL720: CURLOPT_SHARE :: (Maybe CURLSH) -> CURLoption
+ Network.CURL720: CURLOPT_SOCKS5_GSSAPI_NEC :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_SOCKS5_GSSAPI_SERVICE :: String -> CURLoption
+ Network.CURL720: CURLOPT_SSH_AUTH_TYPES :: [CURLsshauth] -> CURLoption
+ Network.CURL720: CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 :: String -> CURLoption
+ Network.CURL720: CURLOPT_SSH_KNOWNHOSTS :: FilePath -> CURLoption
+ Network.CURL720: CURLOPT_SSH_PRIVATE_KEYFILE :: FilePath -> CURLoption
+ Network.CURL720: CURLOPT_SSH_PUBLIC_KEYFILE :: FilePath -> CURLoption
+ Network.CURL720: CURLOPT_SSLCERT :: FilePath -> CURLoption
+ Network.CURL720: CURLOPT_SSLCERTTYPE :: String -> CURLoption
+ Network.CURL720: CURLOPT_SSLENGINE :: String -> CURLoption
+ Network.CURL720: CURLOPT_SSLENGINE_DEFAULT :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_SSLKEY :: FilePath -> CURLoption
+ Network.CURL720: CURLOPT_SSLKEYTYPE :: String -> CURLoption
+ Network.CURL720: CURLOPT_SSLVERSION :: CURLsslver -> CURLoption
+ Network.CURL720: CURLOPT_SSL_CIPHER_LIST :: String -> CURLoption
+ Network.CURL720: CURLOPT_SSL_SESSIONID_CACHE :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_SSL_VERIFYHOST :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_SSL_VERIFYPEER :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_TCP_NODELAY :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_TELNETOPTIONS :: [String] -> CURLoption
+ Network.CURL720: CURLOPT_TFTP_BLKSIZE :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_TIMECONDITION :: CURLtimecond -> CURLoption
+ Network.CURL720: CURLOPT_TIMEOUT :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_TIMEOUT_MS :: CLong -> CURLoption
+ Network.CURL720: CURLOPT_TIMEVALUE :: UTCTime -> CURLoption
+ Network.CURL720: CURLOPT_TRANSFERTEXT :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_UNRESTRICTED_AUTH :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_UPLOAD :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_URL :: String -> CURLoption
+ Network.CURL720: CURLOPT_USERAGENT :: String -> CURLoption
+ Network.CURL720: CURLOPT_USERNAME :: String -> CURLoption
+ Network.CURL720: CURLOPT_USERPWD :: String -> CURLoption
+ Network.CURL720: CURLOPT_USE_SSL :: CURLusessl -> CURLoption
+ Network.CURL720: CURLOPT_VERBOSE :: Bool -> CURLoption
+ Network.CURL720: CURLOPT_WRITEFUNCTION :: (Maybe CURL_write_callback) -> CURLoption
+ Network.CURL720: CURLPROTO_ALL :: CURLproto
+ Network.CURL720: CURLPROTO_DICT :: CURLproto
+ Network.CURL720: CURLPROTO_FILE :: CURLproto
+ Network.CURL720: CURLPROTO_FTP :: CURLproto
+ Network.CURL720: CURLPROTO_FTPS :: CURLproto
+ Network.CURL720: CURLPROTO_HTTP :: CURLproto
+ Network.CURL720: CURLPROTO_HTTPS :: CURLproto
+ Network.CURL720: CURLPROTO_IMAP :: CURLproto
+ Network.CURL720: CURLPROTO_IMAPS :: CURLproto
+ Network.CURL720: CURLPROTO_LDAP :: CURLproto
+ Network.CURL720: CURLPROTO_LDAPS :: CURLproto
+ Network.CURL720: CURLPROTO_POP3 :: CURLproto
+ Network.CURL720: CURLPROTO_POP3S :: CURLproto
+ Network.CURL720: CURLPROTO_RTSP :: CURLproto
+ Network.CURL720: CURLPROTO_SCP :: CURLproto
+ Network.CURL720: CURLPROTO_SFTP :: CURLproto
+ Network.CURL720: CURLPROTO_SMTP :: CURLproto
+ Network.CURL720: CURLPROTO_SMTPS :: CURLproto
+ Network.CURL720: CURLPROTO_TELNET :: CURLproto
+ Network.CURL720: CURLPROTO_TFTP :: CURLproto
+ Network.CURL720: CURLPROXY_HTTP :: CURLproxy
+ Network.CURL720: CURLPROXY_HTTP_1_0 :: CURLproxy
+ Network.CURL720: CURLPROXY_SOCKS4 :: CURLproxy
+ Network.CURL720: CURLPROXY_SOCKS4A :: CURLproxy
+ Network.CURL720: CURLPROXY_SOCKS5 :: CURLproxy
+ Network.CURL720: CURLPROXY_SOCKS5_HOSTNAME :: CURLproxy
+ Network.CURL720: CURLSHE :: CURLSH -> String -> String -> CURLSHC -> CURLSHE
+ Network.CURL720: CURLSHE_BAD_OPTION :: CURLSHC
+ Network.CURL720: CURLSHE_FAILED_INIT :: CURLSHC
+ Network.CURL720: CURLSHE_INVALID :: CURLSHC
+ Network.CURL720: CURLSHE_IN_USE :: CURLSHC
+ Network.CURL720: CURLSHE_NOMEM :: CURLSHC
+ Network.CURL720: CURLSHE_NOT_BUILT_IN :: CURLSHC
+ Network.CURL720: CURLSHE_UNKNOWN_ERROR :: CURLSHC
+ Network.CURL720: CURLSHOPT_SHARE :: CURLSHlockdata -> CURLSHoption
+ Network.CURL720: CURLSHOPT_UNSHARE :: CURLSHlockdata -> CURLSHoption
+ Network.CURL720: CURLSSH_AUTH_ANY :: CURLsshauth
+ Network.CURL720: CURLSSH_AUTH_DEFAULT :: CURLsshauth
+ Network.CURL720: CURLSSH_AUTH_HOST :: CURLsshauth
+ Network.CURL720: CURLSSH_AUTH_KEYBOARD :: CURLsshauth
+ Network.CURL720: CURLSSH_AUTH_NONE :: CURLsshauth
+ Network.CURL720: CURLSSH_AUTH_PASSWORD :: CURLsshauth
+ Network.CURL720: CURLSSH_AUTH_PUBLICKEY :: CURLsshauth
+ Network.CURL720: CURLUSESSL_ALL :: CURLusessl
+ Network.CURL720: CURLUSESSL_CONTROL :: CURLusessl
+ Network.CURL720: CURLUSESSL_NONE :: CURLusessl
+ Network.CURL720: CURLUSESSL_TRY :: CURLusessl
+ Network.CURL720: CURL_HTTP_VERSION_1_0 :: CURLhttpver
+ Network.CURL720: CURL_HTTP_VERSION_1_1 :: CURLhttpver
+ Network.CURL720: CURL_HTTP_VERSION_NONE :: CURLhttpver
+ Network.CURL720: CURL_IPRESOLVE_V4 :: CURLipresolve
+ Network.CURL720: CURL_IPRESOLVE_V6 :: CURLipresolve
+ Network.CURL720: CURL_IPRESOLVE_WHATEVER :: CURLipresolve
+ Network.CURL720: CURL_LOCK_DATA_COOKIE :: CURLSHlockdata
+ Network.CURL720: CURL_LOCK_DATA_DNS :: CURLSHlockdata
+ Network.CURL720: CURL_LOCK_DATA_SSL_SESSION :: CURLSHlockdata
+ Network.CURL720: CURL_NETRC_IGNORED :: CURLnetrc
+ Network.CURL720: CURL_NETRC_OPTIONAL :: CURLnetrc
+ Network.CURL720: CURL_NETRC_REQUIRED :: CURLnetrc
+ Network.CURL720: CURL_READFUNC_ABORT :: CURL_read_response
+ Network.CURL720: CURL_READFUNC_OK :: ByteString -> CURL_read_response
+ Network.CURL720: CURL_READFUNC_PAUSE :: CURL_read_response
+ Network.CURL720: CURL_REDIR_GET_ALL :: CURLredir
+ Network.CURL720: CURL_REDIR_POST_301 :: CURLredir
+ Network.CURL720: CURL_REDIR_POST_302 :: CURLredir
+ Network.CURL720: CURL_REDIR_POST_ALL :: CURLredir
+ Network.CURL720: CURL_RTSPREQ_ANNOUNCE :: CURLrtspreq
+ Network.CURL720: CURL_RTSPREQ_DESCRIBE :: CURLrtspreq
+ Network.CURL720: CURL_RTSPREQ_GET_PARAMETER :: CURLrtspreq
+ Network.CURL720: CURL_RTSPREQ_OPTIONS :: CURLrtspreq
+ Network.CURL720: CURL_RTSPREQ_PAUSE :: CURLrtspreq
+ Network.CURL720: CURL_RTSPREQ_PLAY :: CURLrtspreq
+ Network.CURL720: CURL_RTSPREQ_RECEIVE :: CURLrtspreq
+ Network.CURL720: CURL_RTSPREQ_RECORD :: CURLrtspreq
+ Network.CURL720: CURL_RTSPREQ_SETUP :: CURLrtspreq
+ Network.CURL720: CURL_RTSPREQ_SET_PARAMETER :: CURLrtspreq
+ Network.CURL720: CURL_RTSPREQ_TEARDOWN :: CURLrtspreq
+ Network.CURL720: CURL_SSLVERSION_DEFAULT :: CURLsslver
+ Network.CURL720: CURL_SSLVERSION_SSLv2 :: CURLsslver
+ Network.CURL720: CURL_SSLVERSION_SSLv3 :: CURLsslver
+ Network.CURL720: CURL_SSLVERSION_TLSv1 :: CURLsslver
+ Network.CURL720: CURL_TIMECOND_IFMODSINCE :: CURLtimecond
+ Network.CURL720: CURL_TIMECOND_IFUNMODSINCE :: CURLtimecond
+ Network.CURL720: CURL_TIMECOND_LASTMOD :: CURLtimecond
+ Network.CURL720: CURL_TIMECOND_NONE :: CURLtimecond
+ Network.CURL720: CURL_VERSION_ASYNCHDNS :: CURLfeature
+ Network.CURL720: CURL_VERSION_CONV :: CURLfeature
+ Network.CURL720: CURL_VERSION_CURLDEBUG :: CURLfeature
+ Network.CURL720: CURL_VERSION_DEBUG :: CURLfeature
+ Network.CURL720: CURL_VERSION_GSSNEGOTIATE :: CURLfeature
+ Network.CURL720: CURL_VERSION_IDN :: CURLfeature
+ Network.CURL720: CURL_VERSION_IPV6 :: CURLfeature
+ Network.CURL720: CURL_VERSION_KERBEROS4 :: CURLfeature
+ Network.CURL720: CURL_VERSION_LARGEFILE :: CURLfeature
+ Network.CURL720: CURL_VERSION_LIBZ :: CURLfeature
+ Network.CURL720: CURL_VERSION_NTLM :: CURLfeature
+ Network.CURL720: CURL_VERSION_SPNEGO :: CURLfeature
+ Network.CURL720: CURL_VERSION_SSL :: CURLfeature
+ Network.CURL720: CURL_VERSION_SSPI :: CURLfeature
+ Network.CURL720: CURL_WRITEFUNC_FAIL :: CURL_write_response
+ Network.CURL720: CURL_WRITEFUNC_OK :: CURL_write_response
+ Network.CURL720: CURL_WRITEFUNC_PAUSE :: CURL_write_response
+ Network.CURL720: CURL_version_info :: String -> Int -> String -> [CURLfeature] -> String -> Int -> String -> [String] -> String -> Int -> String -> Int -> String -> CURL_version_info
+ Network.CURL720: curl_easy_cleanup :: CURL -> IO ()
+ Network.CURL720: curl_easy_getinfo :: CURL -> CURLinfo a -> IO a
+ Network.CURL720: curl_easy_init :: IO CURL
+ Network.CURL720: curl_easy_perform :: CURL -> IO ()
+ Network.CURL720: curl_easy_recv :: CURL -> Int -> IO ByteString
+ Network.CURL720: curl_easy_reset :: CURL -> IO ()
+ Network.CURL720: curl_easy_send :: CURL -> ByteString -> IO Int
+ Network.CURL720: curl_easy_setopt :: CURL -> [CURLoption] -> IO ()
+ Network.CURL720: curl_share_cleanup :: CURLSH -> IO ()
+ Network.CURL720: curl_share_init :: IO CURLSH
+ Network.CURL720: curl_share_setopt :: CURLSH -> [CURLSHoption] -> IO ()
+ Network.CURL720: curl_version :: IO String
+ Network.CURL720: curl_version_info :: IO CURL_version_info
+ Network.CURL720: curl_version_info_ares :: CURL_version_info -> String
+ Network.CURL720: curl_version_info_ares_num :: CURL_version_info -> Int
+ Network.CURL720: curl_version_info_features :: CURL_version_info -> [CURLfeature]
+ Network.CURL720: curl_version_info_host :: CURL_version_info -> String
+ Network.CURL720: curl_version_info_iconv_ver_num :: CURL_version_info -> Int
+ Network.CURL720: curl_version_info_libidn :: CURL_version_info -> String
+ Network.CURL720: curl_version_info_libssh_version :: CURL_version_info -> String
+ Network.CURL720: curl_version_info_libz_version :: CURL_version_info -> String
+ Network.CURL720: curl_version_info_protocols :: CURL_version_info -> [String]
+ Network.CURL720: curl_version_info_ssl_version :: CURL_version_info -> String
+ Network.CURL720: curl_version_info_ssl_version_num :: CURL_version_info -> Int
+ Network.CURL720: curl_version_info_version :: CURL_version_info -> String
+ Network.CURL720: curl_version_info_version_num :: CURL_version_info -> Int
+ Network.CURL720: data CURL
+ Network.CURL720: data CURLC
+ Network.CURL720: data CURLE
+ Network.CURL720: data CURLSH
+ Network.CURL720: data CURLSHC
+ Network.CURL720: data CURLSHE
+ Network.CURL720: data CURLSHlockdata
+ Network.CURL720: data CURLSHoption
+ Network.CURL720: data CURL_read_response
+ Network.CURL720: data CURL_version_info
+ Network.CURL720: data CURL_write_response
+ Network.CURL720: data CURLauth
+ Network.CURL720: data CURLfeature
+ Network.CURL720: data CURLftpauth
+ Network.CURL720: data CURLftpcreate
+ Network.CURL720: data CURLftpmethod
+ Network.CURL720: data CURLftpssl
+ Network.CURL720: data CURLhttpver
+ Network.CURL720: data CURLinfo a
+ Network.CURL720: data CURLipresolve
+ Network.CURL720: data CURLnetrc
+ Network.CURL720: data CURLoption
+ Network.CURL720: data CURLproto
+ Network.CURL720: data CURLproxy
+ Network.CURL720: data CURLredir
+ Network.CURL720: data CURLrtspreq
+ Network.CURL720: data CURLsshauth
+ Network.CURL720: data CURLsslver
+ Network.CURL720: data CURLtimecond
+ Network.CURL720: data CURLusessl
+ Network.CURL720: type CURL_read_callback = Int -> IO CURL_read_response
+ Network.CURL720: type CURL_write_callback = ByteString -> IO CURL_write_response
+ Network.CURL730: CURLAUTH_ANY :: CURLauth
+ Network.CURL730: CURLAUTH_ANYSAFE :: CURLauth
+ Network.CURL730: CURLAUTH_BASIC :: CURLauth
+ Network.CURL730: CURLAUTH_DIGEST :: CURLauth
+ Network.CURL730: CURLAUTH_DIGEST_IE :: CURLauth
+ Network.CURL730: CURLAUTH_GSSNEGOTIATE :: CURLauth
+ Network.CURL730: CURLAUTH_NTLM :: CURLauth
+ Network.CURL730: CURLAUTH_NTLM_WB :: CURLauth
+ Network.CURL730: CURLAUTH_ONLY :: CURLauth
+ Network.CURL730: CURLE :: CURL -> String -> String -> CURLC -> CURLE
+ Network.CURL730: CURLE_ABORTED_BY_CALLBACK :: CURLC
+ Network.CURL730: CURLE_AGAIN :: CURLC
+ Network.CURL730: CURLE_BAD_CONTENT_ENCODING :: CURLC
+ Network.CURL730: CURLE_BAD_DOWNLOAD_RESUME :: CURLC
+ Network.CURL730: CURLE_BAD_FUNCTION_ARGUMENT :: CURLC
+ Network.CURL730: CURLE_CHUNK_FAILED :: CURLC
+ Network.CURL730: CURLE_CONV_FAILED :: CURLC
+ Network.CURL730: CURLE_CONV_REQD :: CURLC
+ Network.CURL730: CURLE_COULDNT_CONNECT :: CURLC
+ Network.CURL730: CURLE_COULDNT_RESOLVE_HOST :: CURLC
+ Network.CURL730: CURLE_COULDNT_RESOLVE_PROXY :: CURLC
+ Network.CURL730: CURLE_FAILED_INIT :: CURLC
+ Network.CURL730: CURLE_FILESIZE_EXCEEDED :: CURLC
+ Network.CURL730: CURLE_FILE_COULDNT_READ_FILE :: CURLC
+ Network.CURL730: CURLE_FTP_ACCEPT_FAILED :: CURLC
+ Network.CURL730: CURLE_FTP_ACCEPT_TIMEOUT :: CURLC
+ Network.CURL730: CURLE_FTP_BAD_FILE_LIST :: CURLC
+ Network.CURL730: CURLE_FTP_CANT_GET_HOST :: CURLC
+ Network.CURL730: CURLE_FTP_COULDNT_RETR_FILE :: CURLC
+ Network.CURL730: CURLE_FTP_COULDNT_SET_TYPE :: CURLC
+ Network.CURL730: CURLE_FTP_COULDNT_USE_REST :: CURLC
+ Network.CURL730: CURLE_FTP_PORT_FAILED :: CURLC
+ Network.CURL730: CURLE_FTP_PRET_FAILED :: CURLC
+ Network.CURL730: CURLE_FTP_WEIRD_227_FORMAT :: CURLC
+ Network.CURL730: CURLE_FTP_WEIRD_PASS_REPLY :: CURLC
+ Network.CURL730: CURLE_FTP_WEIRD_PASV_REPLY :: CURLC
+ Network.CURL730: CURLE_FTP_WEIRD_SERVER_REPLY :: CURLC
+ Network.CURL730: CURLE_FUNCTION_NOT_FOUND :: CURLC
+ Network.CURL730: CURLE_GOT_NOTHING :: CURLC
+ Network.CURL730: CURLE_HTTP_POST_ERROR :: CURLC
+ Network.CURL730: CURLE_HTTP_RETURNED_ERROR :: CURLC
+ Network.CURL730: CURLE_INTERFACE_FAILED :: CURLC
+ Network.CURL730: CURLE_LDAP_CANNOT_BIND :: CURLC
+ Network.CURL730: CURLE_LDAP_INVALID_URL :: CURLC
+ Network.CURL730: CURLE_LDAP_SEARCH_FAILED :: CURLC
+ Network.CURL730: CURLE_LOGIN_DENIED :: CURLC
+ Network.CURL730: CURLE_NOT_BUILT_IN :: CURLC
+ Network.CURL730: CURLE_OPERATION_TIMEDOUT :: CURLC
+ Network.CURL730: CURLE_OUT_OF_MEMORY :: CURLC
+ Network.CURL730: CURLE_PARTIAL_FILE :: CURLC
+ Network.CURL730: CURLE_PEER_FAILED_VERIFICATION :: CURLC
+ Network.CURL730: CURLE_QUOTE_ERROR :: CURLC
+ Network.CURL730: CURLE_RANGE_ERROR :: CURLC
+ Network.CURL730: CURLE_READ_ERROR :: CURLC
+ Network.CURL730: CURLE_RECV_ERROR :: CURLC
+ Network.CURL730: CURLE_REMOTE_ACCESS_DENIED :: CURLC
+ Network.CURL730: CURLE_REMOTE_DISK_FULL :: CURLC
+ Network.CURL730: CURLE_REMOTE_FILE_EXISTS :: CURLC
+ Network.CURL730: CURLE_REMOTE_FILE_NOT_FOUND :: CURLC
+ Network.CURL730: CURLE_RTSP_CSEQ_ERROR :: CURLC
+ Network.CURL730: CURLE_RTSP_SESSION_ERROR :: CURLC
+ Network.CURL730: CURLE_SEND_ERROR :: CURLC
+ Network.CURL730: CURLE_SEND_FAIL_REWIND :: CURLC
+ Network.CURL730: CURLE_SSH :: CURLC
+ Network.CURL730: CURLE_SSL_CACERT :: CURLC
+ Network.CURL730: CURLE_SSL_CACERT_BADFILE :: CURLC
+ Network.CURL730: CURLE_SSL_CERTPROBLEM :: CURLC
+ Network.CURL730: CURLE_SSL_CIPHER :: CURLC
+ Network.CURL730: CURLE_SSL_CONNECT_ERROR :: CURLC
+ Network.CURL730: CURLE_SSL_CRL_BADFILE :: CURLC
+ Network.CURL730: CURLE_SSL_ENGINE_INITFAILED :: CURLC
+ Network.CURL730: CURLE_SSL_ENGINE_NOTFOUND :: CURLC
+ Network.CURL730: CURLE_SSL_ENGINE_SETFAILED :: CURLC
+ Network.CURL730: CURLE_SSL_ISSUER_ERROR :: CURLC
+ Network.CURL730: CURLE_SSL_SHUTDOWN_FAILED :: CURLC
+ Network.CURL730: CURLE_TELNET_OPTION_SYNTAX :: CURLC
+ Network.CURL730: CURLE_TFTP_ILLEGAL :: CURLC
+ Network.CURL730: CURLE_TFTP_NOSUCHUSER :: CURLC
+ Network.CURL730: CURLE_TFTP_NOTFOUND :: CURLC
+ Network.CURL730: CURLE_TFTP_PERM :: CURLC
+ Network.CURL730: CURLE_TFTP_UNKNOWNID :: CURLC
+ Network.CURL730: CURLE_TOO_MANY_REDIRECTS :: CURLC
+ Network.CURL730: CURLE_UNKNOWN_ERROR :: CURLC
+ Network.CURL730: CURLE_UNKNOWN_OPTION :: CURLC
+ Network.CURL730: CURLE_UNSUPPORTED_PROTOCOL :: CURLC
+ Network.CURL730: CURLE_UPLOAD_FAILED :: CURLC
+ Network.CURL730: CURLE_URL_MALFORMAT :: CURLC
+ Network.CURL730: CURLE_USE_SSL_FAILED :: CURLC
+ Network.CURL730: CURLE_WRITE_ERROR :: CURLC
+ Network.CURL730: CURLFTPAUTH_DEFAULT :: CURLftpauth
+ Network.CURL730: CURLFTPAUTH_SSL :: CURLftpauth
+ Network.CURL730: CURLFTPAUTH_TLS :: CURLftpauth
+ Network.CURL730: CURLFTPMETHOD_DEFAULT :: CURLftpmethod
+ Network.CURL730: CURLFTPMETHOD_MULTICWD :: CURLftpmethod
+ Network.CURL730: CURLFTPMETHOD_NOCWD :: CURLftpmethod
+ Network.CURL730: CURLFTPMETHOD_SINGLECWD :: CURLftpmethod
+ Network.CURL730: CURLFTPSSL_CCC_ACTIVE :: CURLftpssl
+ Network.CURL730: CURLFTPSSL_CCC_NONE :: CURLftpssl
+ Network.CURL730: CURLFTPSSL_CCC_PASSIVE :: CURLftpssl
+ Network.CURL730: CURLFTP_CREATE_DIR :: CURLftpcreate
+ Network.CURL730: CURLFTP_CREATE_DIR_NONE :: CURLftpcreate
+ Network.CURL730: CURLFTP_CREATE_DIR_RETRY :: CURLftpcreate
+ Network.CURL730: CURLGSSAPI_DELEGATION_FLAG :: CURLgssapi
+ Network.CURL730: CURLGSSAPI_DELEGATION_NONE :: CURLgssapi
+ Network.CURL730: CURLGSSAPI_DELEGATION_POLICY_FLAG :: CURLgssapi
+ Network.CURL730: CURLINFO_APPCONNECT_TIME :: CURLinfo Double
+ Network.CURL730: CURLINFO_CERTINFO :: CURLinfo [[String]]
+ Network.CURL730: CURLINFO_CONDITION_UNMET :: CURLinfo Bool
+ Network.CURL730: CURLINFO_CONNECT_TIME :: CURLinfo Double
+ Network.CURL730: CURLINFO_CONTENT_LENGTH_DOWNLOAD :: CURLinfo Double
+ Network.CURL730: CURLINFO_CONTENT_LENGTH_UPLOAD :: CURLinfo Double
+ Network.CURL730: CURLINFO_CONTENT_TYPE :: CURLinfo String
+ Network.CURL730: CURLINFO_COOKIELIST :: CURLinfo [String]
+ Network.CURL730: CURLINFO_EFFECTIVE_URL :: CURLinfo String
+ Network.CURL730: CURLINFO_FILETIME :: CURLinfo (Maybe UTCTime)
+ Network.CURL730: CURLINFO_FTP_ENTRY_PATH :: CURLinfo String
+ Network.CURL730: CURLINFO_HEADER_SIZE :: CURLinfo CLong
+ Network.CURL730: CURLINFO_HTTPAUTH_AVAIL :: CURLinfo [CURLauth]
+ Network.CURL730: CURLINFO_HTTP_CONNECTCODE :: CURLinfo CLong
+ Network.CURL730: CURLINFO_LASTSOCKET :: CURLinfo CLong
+ Network.CURL730: CURLINFO_LOCAL_IP :: CURLinfo String
+ Network.CURL730: CURLINFO_LOCAL_PORT :: CURLinfo CLong
+ Network.CURL730: CURLINFO_NAMELOOKUP_TIME :: CURLinfo Double
+ Network.CURL730: CURLINFO_NUM_CONNECTS :: CURLinfo CLong
+ Network.CURL730: CURLINFO_OS_ERRNO :: CURLinfo CLong
+ Network.CURL730: CURLINFO_PRETRANSFER_TIME :: CURLinfo Double
+ Network.CURL730: CURLINFO_PRIMARY_IP :: CURLinfo String
+ Network.CURL730: CURLINFO_PRIMARY_PORT :: CURLinfo CLong
+ Network.CURL730: CURLINFO_PROXYAUTH_AVAIL :: CURLinfo [CURLauth]
+ Network.CURL730: CURLINFO_REDIRECT_COUNT :: CURLinfo CLong
+ Network.CURL730: CURLINFO_REDIRECT_TIME :: CURLinfo Double
+ Network.CURL730: CURLINFO_REDIRECT_URL :: CURLinfo String
+ Network.CURL730: CURLINFO_REQUEST_SIZE :: CURLinfo CLong
+ Network.CURL730: CURLINFO_RESPONSE_CODE :: CURLinfo CLong
+ Network.CURL730: CURLINFO_RTSP_CLIENT_CSEQ :: CURLinfo CLong
+ Network.CURL730: CURLINFO_RTSP_CSEQ_RECV :: CURLinfo CLong
+ Network.CURL730: CURLINFO_RTSP_SERVER_CSEQ :: CURLinfo CLong
+ Network.CURL730: CURLINFO_RTSP_SESSION_ID :: CURLinfo String
+ Network.CURL730: CURLINFO_SIZE_DOWNLOAD :: CURLinfo Double
+ Network.CURL730: CURLINFO_SIZE_UPLOAD :: CURLinfo Double
+ Network.CURL730: CURLINFO_SPEED_DOWNLOAD :: CURLinfo Double
+ Network.CURL730: CURLINFO_SPEED_UPLOAD :: CURLinfo Double
+ Network.CURL730: CURLINFO_SSL_ENGINES :: CURLinfo [String]
+ Network.CURL730: CURLINFO_SSL_VERIFYRESULT :: CURLinfo CLong
+ Network.CURL730: CURLINFO_STARTTRANSFER_TIME :: CURLinfo Double
+ Network.CURL730: CURLINFO_TOTAL_TIME :: CURLinfo Double
+ Network.CURL730: CURLOPT_ACCEPTTIMEOUT_MS :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_ACCEPT_ENCODING :: String -> CURLoption
+ Network.CURL730: CURLOPT_ADDRESS_SCOPE :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_APPEND :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_AUTOREFERER :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_BUFFERSIZE :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_CAINFO :: FilePath -> CURLoption
+ Network.CURL730: CURLOPT_CAPATH :: FilePath -> CURLoption
+ Network.CURL730: CURLOPT_CERTINFO :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_CONNECTTIMEOUT :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_CONNECTTIMEOUT_MS :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_CONNECT_ONLY :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_COOKIE :: String -> CURLoption
+ Network.CURL730: CURLOPT_COOKIEFILE :: FilePath -> CURLoption
+ Network.CURL730: CURLOPT_COOKIEJAR :: FilePath -> CURLoption
+ Network.CURL730: CURLOPT_COOKIELIST :: String -> CURLoption
+ Network.CURL730: CURLOPT_COOKIESESSION :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_COPYPOSTFIELDS :: String -> CURLoption
+ Network.CURL730: CURLOPT_CRLF :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_CRLFILE :: FilePath -> CURLoption
+ Network.CURL730: CURLOPT_CUSTOMREQUEST :: String -> CURLoption
+ Network.CURL730: CURLOPT_DIRLISTONLY :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_DNS_CACHE_TIMEOUT :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_DNS_SERVERS :: String -> CURLoption
+ Network.CURL730: CURLOPT_EGDSOCKET :: String -> CURLoption
+ Network.CURL730: CURLOPT_FAILONERROR :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_FILETIME :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_FOLLOWLOCATION :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_FORBID_REUSE :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_FRESH_CONNECT :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_FTPPORT :: String -> CURLoption
+ Network.CURL730: CURLOPT_FTPSSLAUTH :: CURLftpauth -> CURLoption
+ Network.CURL730: CURLOPT_FTP_ACCOUNT :: String -> CURLoption
+ Network.CURL730: CURLOPT_FTP_ALTERNATIVE_TO_USER :: String -> CURLoption
+ Network.CURL730: CURLOPT_FTP_CREATE_MISSING_DIRS :: CURLftpcreate -> CURLoption
+ Network.CURL730: CURLOPT_FTP_FILEMETHOD :: CURLftpmethod -> CURLoption
+ Network.CURL730: CURLOPT_FTP_RESPONSE_TIMEOUT :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_FTP_SKIP_PASV_IP :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_FTP_SSL_CCC :: CURLftpssl -> CURLoption
+ Network.CURL730: CURLOPT_FTP_USE_EPRT :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_FTP_USE_EPSV :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_FTP_USE_PRET :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_GSSAPI_DELEGATION :: CURLgssapi -> CURLoption
+ Network.CURL730: CURLOPT_HEADER :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_HTTP200ALIASES :: [String] -> CURLoption
+ Network.CURL730: CURLOPT_HTTPAUTH :: [CURLauth] -> CURLoption
+ Network.CURL730: CURLOPT_HTTPGET :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_HTTPHEADER :: [String] -> CURLoption
+ Network.CURL730: CURLOPT_HTTPPROXYTUNNEL :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_HTTP_CONTENT_DECODING :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_HTTP_TRANSFER_DECODING :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_HTTP_VERSION :: CURLhttpver -> CURLoption
+ Network.CURL730: CURLOPT_IGNORE_CONTENT_LENGTH :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_INFILESIZE :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_INFILESIZE_LARGE :: Int64 -> CURLoption
+ Network.CURL730: CURLOPT_INTERFACE :: String -> CURLoption
+ Network.CURL730: CURLOPT_IPRESOLVE :: CURLipresolve -> CURLoption
+ Network.CURL730: CURLOPT_ISSUERCERT :: FilePath -> CURLoption
+ Network.CURL730: CURLOPT_KEYPASSWD :: String -> CURLoption
+ Network.CURL730: CURLOPT_KRBLEVEL :: String -> CURLoption
+ Network.CURL730: CURLOPT_LOCALPORT :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_LOCALPORTRANGE :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_LOW_SPEED_LIMIT :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_LOW_SPEED_TIME :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_MAIL_AUTH :: String -> CURLoption
+ Network.CURL730: CURLOPT_MAIL_FROM :: String -> CURLoption
+ Network.CURL730: CURLOPT_MAIL_RCPT :: [String] -> CURLoption
+ Network.CURL730: CURLOPT_MAXCONNECTS :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_MAXFILESIZE :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_MAXFILESIZE_LARGE :: Int64 -> CURLoption
+ Network.CURL730: CURLOPT_MAXREDIRS :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_MAX_RECV_SPEED_LARGE :: Int64 -> CURLoption
+ Network.CURL730: CURLOPT_MAX_SEND_SPEED_LARGE :: Int64 -> CURLoption
+ Network.CURL730: CURLOPT_NETRC :: CURLnetrc -> CURLoption
+ Network.CURL730: CURLOPT_NETRC_FILE :: FilePath -> CURLoption
+ Network.CURL730: CURLOPT_NEW_DIRECTORY_PERMS :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_NEW_FILE_PERMS :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_NOBODY :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_NOPROGRESS :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_NOPROXY :: String -> CURLoption
+ Network.CURL730: CURLOPT_NOSIGNAL :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_PASSWORD :: String -> CURLoption
+ Network.CURL730: CURLOPT_PORT :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_POST :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_POSTFIELDSIZE :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_POSTFIELDSIZE_LARGE :: Int64 -> CURLoption
+ Network.CURL730: CURLOPT_POSTQUOTE :: [String] -> CURLoption
+ Network.CURL730: CURLOPT_POSTREDIR :: [CURLredir] -> CURLoption
+ Network.CURL730: CURLOPT_PREQUOTE :: [String] -> CURLoption
+ Network.CURL730: CURLOPT_PROTOCOLS :: [CURLproto] -> CURLoption
+ Network.CURL730: CURLOPT_PROXY :: String -> CURLoption
+ Network.CURL730: CURLOPT_PROXYAUTH :: [CURLauth] -> CURLoption
+ Network.CURL730: CURLOPT_PROXYPASSWORD :: String -> CURLoption
+ Network.CURL730: CURLOPT_PROXYPORT :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_PROXYTYPE :: CURLproxy -> CURLoption
+ Network.CURL730: CURLOPT_PROXYUSERNAME :: String -> CURLoption
+ Network.CURL730: CURLOPT_PROXYUSERPWD :: String -> CURLoption
+ Network.CURL730: CURLOPT_PROXY_TRANSFER_MODE :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_PUT :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_QUOTE :: [String] -> CURLoption
+ Network.CURL730: CURLOPT_RANDOM_FILE :: FilePath -> CURLoption
+ Network.CURL730: CURLOPT_RANGE :: String -> CURLoption
+ Network.CURL730: CURLOPT_READFUNCTION :: (Maybe CURL_read_callback) -> CURLoption
+ Network.CURL730: CURLOPT_REDIR_PROTOCOLS :: [CURLproto] -> CURLoption
+ Network.CURL730: CURLOPT_REFERER :: String -> CURLoption
+ Network.CURL730: CURLOPT_RESOLVE :: [String] -> CURLoption
+ Network.CURL730: CURLOPT_RESUME_FROM :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_RESUME_FROM_LARGE :: Int64 -> CURLoption
+ Network.CURL730: CURLOPT_RTSP_CLIENT_CSEQ :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_RTSP_HEADER :: [String] -> CURLoption
+ Network.CURL730: CURLOPT_RTSP_REQUEST :: CURLrtspreq -> CURLoption
+ Network.CURL730: CURLOPT_RTSP_SERVER_CSEQ :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_RTSP_SESSION_ID :: String -> CURLoption
+ Network.CURL730: CURLOPT_RTSP_STREAM_URI :: String -> CURLoption
+ Network.CURL730: CURLOPT_RTSP_TRANSPORT :: String -> CURLoption
+ Network.CURL730: CURLOPT_SHARE :: (Maybe CURLSH) -> CURLoption
+ Network.CURL730: CURLOPT_SOCKS5_GSSAPI_NEC :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_SOCKS5_GSSAPI_SERVICE :: String -> CURLoption
+ Network.CURL730: CURLOPT_SSH_AUTH_TYPES :: [CURLsshauth] -> CURLoption
+ Network.CURL730: CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 :: String -> CURLoption
+ Network.CURL730: CURLOPT_SSH_KNOWNHOSTS :: FilePath -> CURLoption
+ Network.CURL730: CURLOPT_SSH_PRIVATE_KEYFILE :: FilePath -> CURLoption
+ Network.CURL730: CURLOPT_SSH_PUBLIC_KEYFILE :: FilePath -> CURLoption
+ Network.CURL730: CURLOPT_SSLCERT :: FilePath -> CURLoption
+ Network.CURL730: CURLOPT_SSLCERTTYPE :: String -> CURLoption
+ Network.CURL730: CURLOPT_SSLENGINE :: String -> CURLoption
+ Network.CURL730: CURLOPT_SSLENGINE_DEFAULT :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_SSLKEY :: FilePath -> CURLoption
+ Network.CURL730: CURLOPT_SSLKEYTYPE :: String -> CURLoption
+ Network.CURL730: CURLOPT_SSLVERSION :: CURLsslver -> CURLoption
+ Network.CURL730: CURLOPT_SSL_CIPHER_LIST :: String -> CURLoption
+ Network.CURL730: CURLOPT_SSL_OPTIONS :: [CURLsslopt] -> CURLoption
+ Network.CURL730: CURLOPT_SSL_SESSIONID_CACHE :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_SSL_VERIFYHOST :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_SSL_VERIFYPEER :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_TCP_KEEPALIVE :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_TCP_KEEPIDLE :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_TCP_KEEPINTVL :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_TCP_NODELAY :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_TELNETOPTIONS :: [String] -> CURLoption
+ Network.CURL730: CURLOPT_TFTP_BLKSIZE :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_TIMECONDITION :: CURLtimecond -> CURLoption
+ Network.CURL730: CURLOPT_TIMEOUT :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_TIMEOUT_MS :: CLong -> CURLoption
+ Network.CURL730: CURLOPT_TIMEVALUE :: UTCTime -> CURLoption
+ Network.CURL730: CURLOPT_TLSAUTH_PASSWORD :: String -> CURLoption
+ Network.CURL730: CURLOPT_TLSAUTH_TYPE :: String -> CURLoption
+ Network.CURL730: CURLOPT_TLSAUTH_USERNAME :: String -> CURLoption
+ Network.CURL730: CURLOPT_TRANSFERTEXT :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_TRANSFER_ENCODING :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_UNRESTRICTED_AUTH :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_UPLOAD :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_URL :: String -> CURLoption
+ Network.CURL730: CURLOPT_USERAGENT :: String -> CURLoption
+ Network.CURL730: CURLOPT_USERNAME :: String -> CURLoption
+ Network.CURL730: CURLOPT_USERPWD :: String -> CURLoption
+ Network.CURL730: CURLOPT_USE_SSL :: CURLusessl -> CURLoption
+ Network.CURL730: CURLOPT_VERBOSE :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_WILDCARDMATCH :: Bool -> CURLoption
+ Network.CURL730: CURLOPT_WRITEFUNCTION :: (Maybe CURL_write_callback) -> CURLoption
+ Network.CURL730: CURLPROTO_ALL :: CURLproto
+ Network.CURL730: CURLPROTO_DICT :: CURLproto
+ Network.CURL730: CURLPROTO_FILE :: CURLproto
+ Network.CURL730: CURLPROTO_FTP :: CURLproto
+ Network.CURL730: CURLPROTO_FTPS :: CURLproto
+ Network.CURL730: CURLPROTO_GOPHER :: CURLproto
+ Network.CURL730: CURLPROTO_HTTP :: CURLproto
+ Network.CURL730: CURLPROTO_HTTPS :: CURLproto
+ Network.CURL730: CURLPROTO_IMAP :: CURLproto
+ Network.CURL730: CURLPROTO_IMAPS :: CURLproto
+ Network.CURL730: CURLPROTO_LDAP :: CURLproto
+ Network.CURL730: CURLPROTO_LDAPS :: CURLproto
+ Network.CURL730: CURLPROTO_POP3 :: CURLproto
+ Network.CURL730: CURLPROTO_POP3S :: CURLproto
+ Network.CURL730: CURLPROTO_RTMP :: CURLproto
+ Network.CURL730: CURLPROTO_RTMPE :: CURLproto
+ Network.CURL730: CURLPROTO_RTMPS :: CURLproto
+ Network.CURL730: CURLPROTO_RTMPT :: CURLproto
+ Network.CURL730: CURLPROTO_RTMPTE :: CURLproto
+ Network.CURL730: CURLPROTO_RTMPTS :: CURLproto
+ Network.CURL730: CURLPROTO_RTSP :: CURLproto
+ Network.CURL730: CURLPROTO_SCP :: CURLproto
+ Network.CURL730: CURLPROTO_SFTP :: CURLproto
+ Network.CURL730: CURLPROTO_SMTP :: CURLproto
+ Network.CURL730: CURLPROTO_SMTPS :: CURLproto
+ Network.CURL730: CURLPROTO_TELNET :: CURLproto
+ Network.CURL730: CURLPROTO_TFTP :: CURLproto
+ Network.CURL730: CURLPROXY_HTTP :: CURLproxy
+ Network.CURL730: CURLPROXY_HTTP_1_0 :: CURLproxy
+ Network.CURL730: CURLPROXY_SOCKS4 :: CURLproxy
+ Network.CURL730: CURLPROXY_SOCKS4A :: CURLproxy
+ Network.CURL730: CURLPROXY_SOCKS5 :: CURLproxy
+ Network.CURL730: CURLPROXY_SOCKS5_HOSTNAME :: CURLproxy
+ Network.CURL730: CURLSHE :: CURLSH -> String -> String -> CURLSHC -> CURLSHE
+ Network.CURL730: CURLSHE_BAD_OPTION :: CURLSHC
+ Network.CURL730: CURLSHE_FAILED_INIT :: CURLSHC
+ Network.CURL730: CURLSHE_INVALID :: CURLSHC
+ Network.CURL730: CURLSHE_IN_USE :: CURLSHC
+ Network.CURL730: CURLSHE_NOMEM :: CURLSHC
+ Network.CURL730: CURLSHE_NOT_BUILT_IN :: CURLSHC
+ Network.CURL730: CURLSHE_UNKNOWN_ERROR :: CURLSHC
+ Network.CURL730: CURLSHOPT_SHARE :: CURLSHlockdata -> CURLSHoption
+ Network.CURL730: CURLSHOPT_UNSHARE :: CURLSHlockdata -> CURLSHoption
+ Network.CURL730: CURLSSH_AUTH_AGENT :: CURLsshauth
+ Network.CURL730: CURLSSH_AUTH_ANY :: CURLsshauth
+ Network.CURL730: CURLSSH_AUTH_DEFAULT :: CURLsshauth
+ Network.CURL730: CURLSSH_AUTH_HOST :: CURLsshauth
+ Network.CURL730: CURLSSH_AUTH_KEYBOARD :: CURLsshauth
+ Network.CURL730: CURLSSH_AUTH_NONE :: CURLsshauth
+ Network.CURL730: CURLSSH_AUTH_PASSWORD :: CURLsshauth
+ Network.CURL730: CURLSSH_AUTH_PUBLICKEY :: CURLsshauth
+ Network.CURL730: CURLSSLOPT_ALLOW_BEAST :: CURLsslopt
+ Network.CURL730: CURLUSESSL_ALL :: CURLusessl
+ Network.CURL730: CURLUSESSL_CONTROL :: CURLusessl
+ Network.CURL730: CURLUSESSL_NONE :: CURLusessl
+ Network.CURL730: CURLUSESSL_TRY :: CURLusessl
+ Network.CURL730: CURL_HTTP_VERSION_1_0 :: CURLhttpver
+ Network.CURL730: CURL_HTTP_VERSION_1_1 :: CURLhttpver
+ Network.CURL730: CURL_HTTP_VERSION_NONE :: CURLhttpver
+ Network.CURL730: CURL_IPRESOLVE_V4 :: CURLipresolve
+ Network.CURL730: CURL_IPRESOLVE_V6 :: CURLipresolve
+ Network.CURL730: CURL_IPRESOLVE_WHATEVER :: CURLipresolve
+ Network.CURL730: CURL_LOCK_DATA_COOKIE :: CURLSHlockdata
+ Network.CURL730: CURL_LOCK_DATA_DNS :: CURLSHlockdata
+ Network.CURL730: CURL_LOCK_DATA_SSL_SESSION :: CURLSHlockdata
+ Network.CURL730: CURL_NETRC_IGNORED :: CURLnetrc
+ Network.CURL730: CURL_NETRC_OPTIONAL :: CURLnetrc
+ Network.CURL730: CURL_NETRC_REQUIRED :: CURLnetrc
+ Network.CURL730: CURL_READFUNC_ABORT :: CURL_read_response
+ Network.CURL730: CURL_READFUNC_OK :: ByteString -> CURL_read_response
+ Network.CURL730: CURL_READFUNC_PAUSE :: CURL_read_response
+ Network.CURL730: CURL_REDIR_GET_ALL :: CURLredir
+ Network.CURL730: CURL_REDIR_POST_301 :: CURLredir
+ Network.CURL730: CURL_REDIR_POST_302 :: CURLredir
+ Network.CURL730: CURL_REDIR_POST_303 :: CURLredir
+ Network.CURL730: CURL_REDIR_POST_ALL :: CURLredir
+ Network.CURL730: CURL_RTSPREQ_ANNOUNCE :: CURLrtspreq
+ Network.CURL730: CURL_RTSPREQ_DESCRIBE :: CURLrtspreq
+ Network.CURL730: CURL_RTSPREQ_GET_PARAMETER :: CURLrtspreq
+ Network.CURL730: CURL_RTSPREQ_OPTIONS :: CURLrtspreq
+ Network.CURL730: CURL_RTSPREQ_PAUSE :: CURLrtspreq
+ Network.CURL730: CURL_RTSPREQ_PLAY :: CURLrtspreq
+ Network.CURL730: CURL_RTSPREQ_RECEIVE :: CURLrtspreq
+ Network.CURL730: CURL_RTSPREQ_RECORD :: CURLrtspreq
+ Network.CURL730: CURL_RTSPREQ_SETUP :: CURLrtspreq
+ Network.CURL730: CURL_RTSPREQ_SET_PARAMETER :: CURLrtspreq
+ Network.CURL730: CURL_RTSPREQ_TEARDOWN :: CURLrtspreq
+ Network.CURL730: CURL_SSLVERSION_DEFAULT :: CURLsslver
+ Network.CURL730: CURL_SSLVERSION_SSLv2 :: CURLsslver
+ Network.CURL730: CURL_SSLVERSION_SSLv3 :: CURLsslver
+ Network.CURL730: CURL_SSLVERSION_TLSv1 :: CURLsslver
+ Network.CURL730: CURL_TIMECOND_IFMODSINCE :: CURLtimecond
+ Network.CURL730: CURL_TIMECOND_IFUNMODSINCE :: CURLtimecond
+ Network.CURL730: CURL_TIMECOND_LASTMOD :: CURLtimecond
+ Network.CURL730: CURL_TIMECOND_NONE :: CURLtimecond
+ Network.CURL730: CURL_TLSAUTH_SRP :: CURLtlsauth
+ Network.CURL730: CURL_VERSION_ASYNCHDNS :: CURLfeature
+ Network.CURL730: CURL_VERSION_CONV :: CURLfeature
+ Network.CURL730: CURL_VERSION_CURLDEBUG :: CURLfeature
+ Network.CURL730: CURL_VERSION_DEBUG :: CURLfeature
+ Network.CURL730: CURL_VERSION_GSSNEGOTIATE :: CURLfeature
+ Network.CURL730: CURL_VERSION_IDN :: CURLfeature
+ Network.CURL730: CURL_VERSION_IPV6 :: CURLfeature
+ Network.CURL730: CURL_VERSION_KERBEROS4 :: CURLfeature
+ Network.CURL730: CURL_VERSION_LARGEFILE :: CURLfeature
+ Network.CURL730: CURL_VERSION_LIBZ :: CURLfeature
+ Network.CURL730: CURL_VERSION_NTLM :: CURLfeature
+ Network.CURL730: CURL_VERSION_NTLM_WB :: CURLfeature
+ Network.CURL730: CURL_VERSION_SPNEGO :: CURLfeature
+ Network.CURL730: CURL_VERSION_SSL :: CURLfeature
+ Network.CURL730: CURL_VERSION_SSPI :: CURLfeature
+ Network.CURL730: CURL_VERSION_TLSAUTH_SRP :: CURLfeature
+ Network.CURL730: CURL_WRITEFUNC_FAIL :: CURL_write_response
+ Network.CURL730: CURL_WRITEFUNC_OK :: CURL_write_response
+ Network.CURL730: CURL_WRITEFUNC_PAUSE :: CURL_write_response
+ Network.CURL730: CURL_version_info :: String -> Int -> String -> [CURLfeature] -> String -> Int -> String -> [String] -> String -> Int -> String -> Int -> String -> CURL_version_info
+ Network.CURL730: curl_easy_cleanup :: CURL -> IO ()
+ Network.CURL730: curl_easy_getinfo :: CURL -> CURLinfo a -> IO a
+ Network.CURL730: curl_easy_init :: IO CURL
+ Network.CURL730: curl_easy_perform :: CURL -> IO ()
+ Network.CURL730: curl_easy_recv :: CURL -> Int -> IO ByteString
+ Network.CURL730: curl_easy_reset :: CURL -> IO ()
+ Network.CURL730: curl_easy_send :: CURL -> ByteString -> IO Int
+ Network.CURL730: curl_easy_setopt :: CURL -> [CURLoption] -> IO ()
+ Network.CURL730: curl_share_cleanup :: CURLSH -> IO ()
+ Network.CURL730: curl_share_init :: IO CURLSH
+ Network.CURL730: curl_share_setopt :: CURLSH -> [CURLSHoption] -> IO ()
+ Network.CURL730: curl_version :: IO String
+ Network.CURL730: curl_version_info :: IO CURL_version_info
+ Network.CURL730: curl_version_info_ares :: CURL_version_info -> String
+ Network.CURL730: curl_version_info_ares_num :: CURL_version_info -> Int
+ Network.CURL730: curl_version_info_features :: CURL_version_info -> [CURLfeature]
+ Network.CURL730: curl_version_info_host :: CURL_version_info -> String
+ Network.CURL730: curl_version_info_iconv_ver_num :: CURL_version_info -> Int
+ Network.CURL730: curl_version_info_libidn :: CURL_version_info -> String
+ Network.CURL730: curl_version_info_libssh_version :: CURL_version_info -> String
+ Network.CURL730: curl_version_info_libz_version :: CURL_version_info -> String
+ Network.CURL730: curl_version_info_protocols :: CURL_version_info -> [String]
+ Network.CURL730: curl_version_info_ssl_version :: CURL_version_info -> String
+ Network.CURL730: curl_version_info_ssl_version_num :: CURL_version_info -> Int
+ Network.CURL730: curl_version_info_version :: CURL_version_info -> String
+ Network.CURL730: curl_version_info_version_num :: CURL_version_info -> Int
+ Network.CURL730: data CURL
+ Network.CURL730: data CURLC
+ Network.CURL730: data CURLE
+ Network.CURL730: data CURLSH
+ Network.CURL730: data CURLSHC
+ Network.CURL730: data CURLSHE
+ Network.CURL730: data CURLSHlockdata
+ Network.CURL730: data CURLSHoption
+ Network.CURL730: data CURL_read_response
+ Network.CURL730: data CURL_version_info
+ Network.CURL730: data CURL_write_response
+ Network.CURL730: data CURLauth
+ Network.CURL730: data CURLfeature
+ Network.CURL730: data CURLftpauth
+ Network.CURL730: data CURLftpcreate
+ Network.CURL730: data CURLftpmethod
+ Network.CURL730: data CURLftpssl
+ Network.CURL730: data CURLgssapi
+ Network.CURL730: data CURLhttpver
+ Network.CURL730: data CURLinfo a
+ Network.CURL730: data CURLipresolve
+ Network.CURL730: data CURLnetrc
+ Network.CURL730: data CURLoption
+ Network.CURL730: data CURLproto
+ Network.CURL730: data CURLproxy
+ Network.CURL730: data CURLredir
+ Network.CURL730: data CURLrtspreq
+ Network.CURL730: data CURLsshauth
+ Network.CURL730: data CURLsslopt
+ Network.CURL730: data CURLsslver
+ Network.CURL730: data CURLtimecond
+ Network.CURL730: data CURLtlsauth
+ Network.CURL730: data CURLusessl
+ Network.CURL730: type CURL_read_callback = Int -> IO CURL_read_response
+ Network.CURL730: type CURL_write_callback = ByteString -> IO CURL_write_response
+ Network.CURLXXX: CURL720 :: LIBCURL
+ Network.CURLXXX: CURL730 :: LIBCURL
+ Network.CURLXXX: class RTLD so
+ Network.CURLXXX: data LIBCURL
+ Network.CURLXXX: freelib :: RTLD so => so -> IO ()
+ Network.CURLXXX: loadlib :: RTLD so => so -> IO ()
+ Network.CURLXXX: withlib :: RTLD so => so -> IO a -> IO a
Files
- LICENSE +1/−1
- Network/CURL000/LibC0.c +114/−0
- Network/CURL000/LibCC.hsc +503/−0
- Network/CURL000/LibHS.hsc +776/−0
- Network/CURL000/LibLD.hs +96/−0
- Network/CURL000/Types.hsc +879/−0
- Network/CURL000/curl-7.30.0/COPYING +21/−0
- Network/CURL000/curl-7.30.0/curl.h +2227/−0
- Network/CURL000/curl-7.30.0/curlbuild.h +585/−0
- Network/CURL000/curl-7.30.0/curlrules.h +262/−0
- Network/CURL000/curl-7.30.0/curlver.h +69/−0
- Network/CURL000/curl-7.30.0/easy.h +102/−0
- Network/CURL000/curl-7.30.0/multi.h +397/−0
- Network/CURL000/curl-7.30.0/stdcheaders.h +33/−0
- Network/CURL000/curl-7.30.0/typecheck-gcc.h +604/−0
- Network/CURL720.hs +525/−0
- Network/CURL730.hs +575/−0
- Network/CURLXXX.hs +23/−0
- Network/Curlhs/Base.hsc +0/−1814
- Network/Curlhs/Core.hs +0/−122
- Network/Curlhs/Easy.hs +0/−284
- Network/Curlhs/Errors.hsc +0/−216
- Network/Curlhs/Setopt.hsc +0/−513
- Network/Curlhs/Types.hs +0/−675
- README +0/−6
- README.md +15/−0
- Setup.hs +1/−108
- curlhs.cabal +33/−38
LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2012 Krzysztof Kardzis+Copyright (c) 2012-2014 Krzysztof Kardzis Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above
+ Network/CURL000/LibC0.c view
@@ -0,0 +1,114 @@+/* ------------------------------------------------------------------------- */+/* | */+/* Module : Network.CURL000.LibC0 */+/* Copyright : Copyright © 2012-2014 Krzysztof Kardzis */+/* License : ISC License (MIT/BSD-style, see LICENSE file for details) */+/* */+/* Maintainer : Krzysztof Kardzis <kkardzis@gmail.com> */+/* Stability : experimental */+/* Portability : non-portable */+/* */+/* ------------------------------------------------------------------------- */++#include "curl-7.30.0/curl.h"++#include "RTLD.h"+++/* ------------------------------------------------------------------------- */+/* global symbol table (for run-time linking) */+/* ------------------------------------------------------------------------- */+enum { CURL720, CURL730 };++#define CURLXXX CURL730+#define SYMTAB curlSYMTAB++SYMTABENTRY curlSYMTAB[] =+ { {CURL720, CURLXXX, "curl_easy_cleanup"}+ , {CURL720, CURLXXX, "curl_easy_duphandle"}+ , {CURL720, CURLXXX, "curl_easy_escape"}+ , {CURL720, CURLXXX, "curl_easy_getinfo"}+ , {CURL720, CURLXXX, "curl_easy_init"}+ , {CURL720, CURLXXX, "curl_easy_pause"}+ , {CURL720, CURLXXX, "curl_easy_perform"}+ , {CURL720, CURLXXX, "curl_easy_recv"}+ , {CURL720, CURLXXX, "curl_easy_reset"}+ , {CURL720, CURLXXX, "curl_easy_send"}+ , {CURL720, CURLXXX, "curl_easy_setopt"}+ , {CURL720, CURLXXX, "curl_easy_strerror"}+ , {CURL720, CURLXXX, "curl_easy_unescape"}+ , {CURL720, CURLXXX, "curl_escape"}+ , {CURL720, CURLXXX, "curl_formadd"}+ , {CURL720, CURLXXX, "curl_formfree"}+ , {CURL720, CURLXXX, "curl_formget"}+ , {CURL720, CURLXXX, "curl_free"}+ , {CURL720, CURLXXX, "curl_getdate"}+ , {CURL720, CURLXXX, "curl_getenv"}+ , {CURL720, CURLXXX, "curl_global_cleanup"}+ , {CURL720, CURLXXX, "curl_global_init"}+ , {CURL720, CURLXXX, "curl_global_init_mem"}+ , {CURL720, CURLXXX, "curl_maprintf"}+ , {CURL720, CURLXXX, "curl_mfprintf"}+ , {CURL720, CURLXXX, "curl_mprintf"}+ , {CURL720, CURLXXX, "curl_msnprintf"}+ , {CURL720, CURLXXX, "curl_msprintf"}+ , {CURL720, CURLXXX, "curl_multi_add_handle"}+ , {CURL720, CURLXXX, "curl_multi_assign"}+ , {CURL720, CURLXXX, "curl_multi_cleanup"}+ , {CURL720, CURLXXX, "curl_multi_fdset"}+ , {CURL720, CURLXXX, "curl_multi_info_read"}+ , {CURL720, CURLXXX, "curl_multi_init"}+ , {CURL720, CURLXXX, "curl_multi_perform"}+ , {CURL720, CURLXXX, "curl_multi_remove_handle"}+ , {CURL720, CURLXXX, "curl_multi_setopt"}+ , {CURL720, CURLXXX, "curl_multi_socket"}+ , {CURL720, CURLXXX, "curl_multi_socket_action"}+ , {CURL720, CURLXXX, "curl_multi_socket_all"}+ , {CURL720, CURLXXX, "curl_multi_strerror"}+ , {CURL720, CURLXXX, "curl_multi_timeout"}+ // {CURL728, CURLXXX, "curl_multi_wait"}+ , {CURL730, CURLXXX, "curl_multi_wait"}+ , {CURL720, CURLXXX, "curl_mvaprintf"}+ , {CURL720, CURLXXX, "curl_mvfprintf"}+ , {CURL720, CURLXXX, "curl_mvprintf"}+ , {CURL720, CURLXXX, "curl_mvsnprintf"}+ , {CURL720, CURLXXX, "curl_mvsprintf"}+ , {CURL720, CURLXXX, "curl_share_cleanup"}+ , {CURL720, CURLXXX, "curl_share_init"}+ , {CURL720, CURLXXX, "curl_share_setopt"}+ , {CURL720, CURLXXX, "curl_share_strerror"}+ , {CURL720, CURLXXX, "curl_slist_append"}+ , {CURL720, CURLXXX, "curl_slist_free_all"}+ , {CURL720, CURLXXX, "curl_strequal"}+ , {CURL720, CURLXXX, "curl_strnequal"}+ , {CURL720, CURLXXX, "curl_unescape"}+ , {CURL720, CURLXXX, "curl_version"}+ , {CURL720, CURLXXX, "curl_version_info"}+ };++/* Force section .data instead of default .bss, because with .bss something */+/* wrong happens during linking in ghci/runghc (at least on FreeBSD). */+void* __attribute__((section(".data"))) curlADRTAB[TABLEN] = {};+++/* ------------------------------------------------------------------------- */+/* wrappers for variadic functions */+/* ------------------------------------------------------------------------- */+typedef int (*setoptFP)(void *, int, ...);++int curlOptLong(setoptFP setopt, void *handle, int opt, long val) {+ return setopt(handle, opt, val);+};++int curlOptCOff(setoptFP setopt, void *handle, int opt, curl_off_t val) {+ return setopt(handle, opt, val);+};++int curlOptDPtr(setoptFP setopt, void *handle, int opt, void *val) {+ return setopt(handle, opt, val);+};++int curlOptFPtr(setoptFP setopt, void *handle, int opt, void (*val)()) {+ return setopt(handle, opt, val);+};+
+ Network/CURL000/LibCC.hsc view
@@ -0,0 +1,503 @@+-------------------------------------------------------------------------------+-- |+-- Module : Network.CURL000.LibCC+-- Copyright : Copyright © 2012-2014 Krzysztof Kardzis+-- License : ISC License (MIT/BSD-style, see LICENSE file for details)+-- +-- Maintainer : Krzysztof Kardzis <kkardzis@gmail.com>+-- Stability : experimental+-- Portability : non-portable+--+-------------------------------------------------------------------------------+{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE EmptyDataDecls #-}++module Network.CURL000.LibCC+ ( curlADRTAB+ , curlSYMTAB+ , curlTABLEN++ , curl_easy_cleanup+ , curl_easy_duphandle+ , curl_easy_escape+ , curl_easy_getinfo+ , curl_easy_init+ , curl_easy_pause+ , curl_easy_perform+ , curl_easy_recv+ , curl_easy_reset+ , curl_easy_send+ , curl_easy_setopt'Long+ , curl_easy_setopt'COff+ , curl_easy_setopt'DPtr+ , curl_easy_setopt'FPtr+ , curl_easy_strerror+ , curl_easy_unescape+ -- curl_escape+ , curl_formadd+ , curl_formfree+ , curl_formget+ , curl_free+ , curl_getdate+ -- curl_getenv+ , curl_global_cleanup+ , curl_global_init+ , curl_global_init_mem+ -- curl_maprintf+ -- curl_mfprintf+ -- curl_mprintf+ -- curl_msnprintf+ -- curl_msprintf+ , curl_multi_add_handle+ , curl_multi_assign+ , curl_multi_cleanup+ , curl_multi_fdset+ , curl_multi_info_read+ , curl_multi_init+ , curl_multi_perform+ , curl_multi_remove_handle+ , curl_multi_setopt+ , curl_multi_socket+ , curl_multi_socket_action+ , curl_multi_socket_all+ , curl_multi_strerror+ , curl_multi_timeout+ , curl_multi_wait+ -- curl_mvaprintf+ -- curl_mvfprintf+ -- curl_mvprintf+ -- curl_mvsnprintf+ -- curl_mvsprintf+ , curl_share_cleanup+ , curl_share_init+ , curl_share_setopt'Long+ , curl_share_setopt'FPtr+ , curl_share_strerror+ , curl_slist_append+ , curl_slist_free_all+ -- curl_strequal+ -- curl_strnequal+ -- curl_unescape+ , curl_version+ , curl_version_info++ , CURL_write_callback, wrapCURL_write_callback+ , CURL_read_callback , wrapCURL_read_callback++ , CURL_lock_function , wrapCURL_lock_function+ , CURL_unlock_function, wrapCURL_unlock_function++ , CURL, CURLM, CURLSH++ , CURLslist (..)+ , CURLcerts (..)++ , CURL_off_t++ ) where++import Foreign.Storable+import Foreign.C.String+import Foreign.C.Types+import Foreign.Ptr++import Control.Applicative ((<$>), (<*>))+import Control.Monad (when)++import System.IO.Unsafe (unsafePerformIO)+import System.RTLD++#include "LibC0.c"+++-------------------------------------------------------------------------------+foreign import ccall "&curlADRTAB" curlADRTAB :: Ptr (FunPtr ())+foreign import ccall "&curlSYMTAB" curlSYMTAB :: Ptr SYMTABENTRY++curlTABLEN :: Int+curlTABLEN = #{const TABLEN}++peekFP :: Int -> IO (FunPtr a)+peekFP fid = do+ fp <- peekElemOff curlADRTAB fid+ when (fp==nullFunPtr) (nullFP fid)+ return (castFunPtr fp)++nullFP :: Int -> IO ()+nullFP fid =+ let name = unsafePerformIO $+ peekElemOff curlSYMTAB fid >>= \(RTSYM (_,_,cs)) -> peekCString cs+ in error $ concat ["<curlhs> failed to call '", name, "' (NULL)"]++++-------------------------------------------------------------------------------+data CURL+data CURLM+data CURLSH++data CURLhttppost+data CURLvinfo+data CURLwaitfd+data CURLmsg++type CURLcode = CInt+type CURLMcode = CInt+type CURLSHcode = CInt++type CURLoption = CInt+type CURLMoption = CInt+type CURLSHopt = CInt++type CURL_lock_data = CInt+type CURL_lock_access = CInt++type CURLinfo = CInt+type CURLversion = CInt++type CURLformcode = CInt+type CURLformoption = CInt++type CURLsocket = CInt++type CURL_off_t = CLLong -- ??++type CURL_formget_callback = IO ()+type CURL_malloc_callback = IO ()+type CURL_free_callback = IO ()+type CURL_realloc_callback = IO ()+type CURL_calloc_callback = IO ()+type CURL_strdup_callback = IO ()+++data CURLslist = CURLslist (Ptr CChar) (Ptr CURLslist)++instance Storable CURLslist where+ sizeOf _ = #{size struct curl_slist}+ alignment _ = #{alignof struct curl_slist}+ poke _ _ = undefined+ peek ptr = CURLslist+ <$> #{peek struct curl_slist, data} ptr+ <*> #{peek struct curl_slist, next} ptr+++data CURLcerts = CURLcerts CInt (Ptr (Ptr CURLslist))++instance Storable CURLcerts where+ sizeOf _ = #{size struct curl_certinfo}+ alignment _ = #{alignof struct curl_certinfo}+ poke _ _ = undefined+ peek ptr = CURLcerts+ <$> #{peek struct curl_certinfo, num_of_certs} ptr+ <*> #{peek struct curl_certinfo, certinfo } ptr+++-------------------------------------------------------------------------------+#{SAFECALL curl_easy_cleanup \+, Ptr CURL {- ^ handle -} \+, IO () }++#{SAFECALL curl_easy_duphandle \+, Ptr CURL {- ^ handle -} \+, IO (Ptr CURL) {- ^ handle -} }++#{SAFECALL curl_easy_escape \+, Ptr CURL {- ^ handle -} \+, Ptr CChar {- ^ const string (url) -} \+, CInt {- ^ length -} \+, IO (Ptr CChar) {- ^ URL encoded string -} }++-- #{SAFECALL curl_easy_getinfo \+-- , Ptr CURL {- ^ handle -} \+-- , CURLinfo {- ^ info -} \+-- , Ptr () {- ^ param -} \+-- , IO CURLcode {- ^ status -} }++#{SAFECALL curl_easy_init \+, IO (Ptr CURL) {- ^ handle -} }++#{SAFECALL curl_easy_pause \+, Ptr CURL {- ^ handle -} \+, CInt {- ^ bitmask -} \+, IO CURLcode {- ^ status -} }++#{SAFECALL curl_easy_perform \+, Ptr CURL {- ^ handle -} \+, IO CURLcode {- ^ status -} }++#{SAFECALL curl_easy_recv \+, Ptr CURL {- ^ handle -} \+, Ptr () {- ^ buffer -} \+, CSize {- ^ buflen -} \+, Ptr CSize {- ^ n -} \+, IO CURLcode {- ^ status -} }++#{SAFECALL curl_easy_reset \+, Ptr CURL {- ^ handle -} \+, IO () }++#{SAFECALL curl_easy_send \+, Ptr CURL {- ^ handle -} \+, Ptr () {- ^ const buffer -} \+, CSize {- ^ buflen -} \+, Ptr CSize {- ^ n -} \+, IO CURLcode {- ^ status -} }++-- #{SAFECALL curl_easy_setopt \+-- , Ptr CURL {- ^ handle -} \+-- , CURLoption {- ^ option -} \+-- , Ptr () {- ^ param -} \+-- , IO CURLcode {- ^ status -} }++#{SAFECALL curl_easy_strerror \+, CURLcode {- ^ errornum -} \+, IO (Ptr CChar) {- ^ const string -} }++#{SAFECALL curl_easy_unescape \+, Ptr CURL {- ^ handle -} \+, Ptr CChar {- ^ const string -} \+, CInt {- ^ inlength -} \+, Ptr CInt {- ^ outlength -} \+, IO (Ptr CChar) {- ^ decoded string -} }+++-------------------------------------------------------------------------------+#{SAFECALL curl_formadd \+, Ptr (Ptr CURLhttppost) {- ^ httppost -} \+, Ptr (Ptr CURLhttppost) {- ^ lastpost -} \+, CURLformoption {- ^ option -} \+, Ptr () {- ^ value -} \+, IO CURLformcode {- ^ status -} }++#{SAFECALL curl_formfree \+, Ptr CURLhttppost {- ^ form -} \+, IO () }++#{SAFECALL curl_formget \+, Ptr CURLhttppost {- ^ form -} \+, Ptr () {- ^ userp -} \+, FunPtr CURL_formget_callback {- ^ append -} \+, IO CInt {- ^ status -} }+++-------------------------------------------------------------------------------+#{SAFECALL curl_free \+, Ptr () {- ^ ptr -} \+, IO () }+++-------------------------------------------------------------------------------+#{SAFECALL curl_getdate \+, Ptr CChar {- ^ const datestring -} \+, Ptr CTime {- ^ const now (unused) -} \+, IO CTime {- ^ time -} }+++-------------------------------------------------------------------------------+#{SAFECALL curl_global_cleanup \+, IO () }++#{SAFECALL curl_global_init \+, CLong {- ^ flags -} \+, IO CURLcode {- ^ status -} }++#{SAFECALL curl_global_init_mem \+, CLong {- ^ flags -} \+, FunPtr CURL_malloc_callback {- ^ m -} \+, FunPtr CURL_free_callback {- ^ f -} \+, FunPtr CURL_realloc_callback {- ^ r -} \+, FunPtr CURL_strdup_callback {- ^ s -} \+, FunPtr CURL_calloc_callback {- ^ c -} \+, IO CURLcode {- ^ status -} }+++-------------------------------------------------------------------------------+#{SAFECALL curl_multi_add_handle \+, Ptr CURLM {- ^ multi handle -} \+, Ptr CURL {- ^ easy handle -} \+, IO CURLMcode {- ^ multi status -} }++#{SAFECALL curl_multi_assign \+, Ptr CURLM {- ^ multi handle -} \+, CURLsocket {- ^ sockfd -} \+, Ptr () {- ^ sockptr -} \+, IO CURLMcode {- ^ multi status -} }++#{SAFECALL curl_multi_cleanup \+, Ptr CURLM {- ^ multi handle -} \+, IO CURLMcode {- ^ multi status -} }++#{SAFECALL curl_multi_fdset \+, Ptr CURLM {- ^ multi handle -} \+, Ptr () {- ^ read_fd_set -} \+, Ptr () {- ^ write_fd_set -} \+, Ptr () {- ^ exc_fd_set -} \+, Ptr CInt {- ^ max_fd -} \+, IO CURLMcode {- ^ multi status -} }++#{SAFECALL curl_multi_info_read \+, Ptr CURLM {- ^ multi handle -} \+, Ptr CInt {- ^ msgs_in_queue -} \+, IO (Ptr CURLmsg) {- ^ message -} }++#{SAFECALL curl_multi_init \+, IO (Ptr CURLM) {- ^ multi handle -} }++#{SAFECALL curl_multi_perform \+, Ptr CURLM {- ^ multi handle -} \+, Ptr CInt {- ^ running handles -} \+, IO CURLMcode {- ^ multi status -} }++#{SAFECALL curl_multi_remove_handle \+, Ptr CURLM {- ^ multi handle -} \+, Ptr CURL {- ^ easy handle -} \+, IO CURLMcode {- ^ multi status -} }++#{SAFECALL curl_multi_setopt \+, Ptr CURLM {- ^ multi handle -} \+, CURLMoption {- ^ option -} \+, Ptr () {- ^ value -} \+, IO CURLMcode {- ^ multi status -} }++#{SAFECALL curl_multi_socket \+, Ptr CURLM {- ^ multi handle -} \+, CURLsocket {- ^ sockfd -} \+, Ptr CInt {- ^ running handles -} \+, IO CURLMcode {- ^ multi status -} }++#{SAFECALL curl_multi_socket_action \+, Ptr CURLM {- ^ multi handle -} \+, CURLsocket {- ^ sockfd -} \+, CInt {- ^ ev_bitmask -} \+, Ptr CInt {- ^ running handles -} \+, IO CURLMcode {- ^ multi status -} }++#{SAFECALL curl_multi_socket_all \+, Ptr CURLM {- ^ multi handle -} \+, Ptr CInt {- ^ running handles -} \+, IO CURLMcode {- ^ multi status -} }++#{SAFECALL curl_multi_strerror \+, CURLMcode {- ^ errornum -} \+, IO (Ptr CChar) {- ^ const string -} }++#{SAFECALL curl_multi_timeout \+, Ptr CURLM {- ^ multi handle -} \+, Ptr CLong {- ^ timeout -} \+, IO CURLMcode {- ^ multi status -} }++#{SAFECALL curl_multi_wait \+, Ptr CURLM {- ^ multi handle -} \+, Ptr CURLwaitfd {- ^ extra_fds[] -} \+, CUInt {- ^ extra_nfds -} \+, CInt {- ^ timeout_ms -} \+, Ptr CInt {- ^ numfds -} \+, IO CURLMcode {- ^ multi status -} }+++-------------------------------------------------------------------------------+#{SAFECALL curl_share_cleanup \+, Ptr CURLSH {- ^ share handle -} \+, IO CURLSHcode {- ^ share status -} }++#{SAFECALL curl_share_init \+, IO (Ptr CURLSH) {- ^ share handle -} }++-- #{SAFECALL curl_share_setopt \+-- , Ptr CURLSH {- ^ share handle -} \+-- , CURLSHopt {- ^ option -} \+-- , Ptr () {- ^ value -} \+-- , IO CURLSHcode {- ^ share status -} }++#{SAFECALL curl_share_strerror \+, CURLSHcode {- ^ errornum -} \+, IO (Ptr CChar) {- ^ const string -} }+++-------------------------------------------------------------------------------+#{SAFECALL curl_slist_append \+, Ptr CURLslist {- ^ list -} \+, Ptr CChar {- ^ const string -} \+, IO (Ptr CURLslist) {- ^ list -} }++#{SAFECALL curl_slist_free_all \+, Ptr CURLslist {- ^ list -} \+, IO () }+++-------------------------------------------------------------------------------+#{SAFECALL curl_version \+, IO (Ptr CChar) {- ^ string -} }++#{SAFECALL curl_version_info \+, CURLversion {- ^ type/age -} \+, IO (Ptr CURLvinfo) }+++-------------------------------------------------------------------------------+-- Callbacks+-------------------------------------------------------------------------------+#{WRAP CURL_write_callback, Ptr CChar -> CSize -> CSize -> Ptr () -> IO CSize}+#{WRAP CURL_read_callback , Ptr CChar -> CSize -> CSize -> Ptr () -> IO CSize}+++#{WRAP CURL_lock_function \+, Ptr CURL -> CURL_lock_data -> CURL_lock_access -> Ptr () -> IO ()}++#{WRAP CURL_unlock_function \+, Ptr CURL -> CURL_lock_data -> Ptr () -> IO ()}+++-------------------------------------------------------------------------------+-- Wrappers for variadic functions+-------------------------------------------------------------------------------+{-# NOINLINE curl_easy_getinfo #-}+curl_easy_getinfo :: Ptr CURL -> CURLinfo -> Ptr () -> IO CURLcode+curl_easy_getinfo a b c =+ peekFP #{FPID curl_easy_getinfo} >>= \fp -> curlOptDPtr fp (castPtr a) b c+++{-# NOINLINE curl_easy_setopt'Long #-}+curl_easy_setopt'Long :: Ptr CURL -> CURLoption -> CLong -> IO CURLcode+curl_easy_setopt'Long a b c =+ peekFP #{FPID curl_easy_setopt} >>= \fp -> curlOptLong fp (castPtr a) b c++{-# NOINLINE curl_easy_setopt'COff #-}+curl_easy_setopt'COff :: Ptr CURL -> CURLoption -> CURL_off_t -> IO CURLcode+curl_easy_setopt'COff a b c =+ peekFP #{FPID curl_easy_setopt} >>= \fp -> curlOptCOff fp (castPtr a) b c++{-# NOINLINE curl_easy_setopt'DPtr #-}+curl_easy_setopt'DPtr :: Ptr CURL -> CURLoption -> Ptr () -> IO CURLcode+curl_easy_setopt'DPtr a b c =+ peekFP #{FPID curl_easy_setopt} >>= \fp -> curlOptDPtr fp (castPtr a) b c++{-# NOINLINE curl_easy_setopt'FPtr #-}+curl_easy_setopt'FPtr :: Ptr CURL -> CURLoption -> FunPtr () -> IO CURLcode+curl_easy_setopt'FPtr a b c =+ peekFP #{FPID curl_easy_setopt} >>= \fp -> curlOptFPtr fp (castPtr a) b c+++{-# NOINLINE curl_share_setopt'Long #-}+curl_share_setopt'Long :: Ptr CURLSH -> CURLSHopt -> CLong -> IO CURLSHcode+curl_share_setopt'Long a b c =+ peekFP #{FPID curl_share_setopt} >>= \fp -> curlOptLong fp (castPtr a) b c++{-# NOINLINE curl_share_setopt'FPtr #-}+curl_share_setopt'FPtr :: Ptr CURLSH -> CURLSHopt -> FunPtr () -> IO CURLSHcode+curl_share_setopt'FPtr a b c =+ peekFP #{FPID curl_share_setopt} >>= \fp -> curlOptFPtr fp (castPtr a) b c+++foreign import ccall safe curlOptLong+ :: FunPtr () -> Ptr () -> CInt -> CLong -> IO CInt++foreign import ccall safe curlOptCOff+ :: FunPtr () -> Ptr () -> CInt -> CURL_off_t -> IO CInt++foreign import ccall safe curlOptDPtr+ :: FunPtr () -> Ptr () -> CInt -> Ptr () -> IO CInt++foreign import ccall safe curlOptFPtr+ :: FunPtr () -> Ptr () -> CInt -> FunPtr () -> IO CInt+
+ Network/CURL000/LibHS.hsc view
@@ -0,0 +1,776 @@+-------------------------------------------------------------------------------+-- |+-- Module : Network.CURL000.LibHS+-- Copyright : Copyright © 2012-2014 Krzysztof Kardzis+-- License : ISC License (MIT/BSD-style, see LICENSE file for details)+-- +-- Maintainer : Krzysztof Kardzis <kkardzis@gmail.com>+-- Stability : experimental+-- Portability : non-portable+--+-------------------------------------------------------------------------------+{-# LANGUAGE GADTs #-}++module Network.CURL000.LibHS+ ( curl_easy_cleanup+ -- curl_easy_duphandle+ -- curl_easy_escape+ , curl_easy_getinfo+ , curl_easy_init+ -- curl_easy_pause+ , curl_easy_perform+ , curl_easy_recv+ , curl_easy_reset+ , curl_easy_send+ , curl_easy_setopt+ -- curl_easy_strerror+ -- curl_easy_unescape+ -- curl_escape+ -- curl_formadd+ -- curl_formfree+ -- curl_formget+ -- curl_free+ -- curl_getdate+ -- curl_getenv+ , curl_global_cleanup+ , curl_global_init+ -- curl_global_init_mem+ -- curl_maprintf+ -- curl_mfprintf+ -- curl_mprintf+ -- curl_msnprintf+ -- curl_msprintf+ -- curl_multi_add_handle+ -- curl_multi_assign+ -- curl_multi_cleanup+ -- curl_multi_fdset+ -- curl_multi_info_read+ -- curl_multi_init+ -- curl_multi_perform+ -- curl_multi_remove_handle+ -- curl_multi_setopt+ -- curl_multi_socket+ -- curl_multi_socket_action+ -- curl_multi_socket_all+ -- curl_multi_strerror+ -- curl_multi_timeout+ -- curl_multi_wait+ -- curl_mvaprintf+ -- curl_mvfprintf+ -- curl_mvprintf+ -- curl_mvsnprintf+ -- curl_mvsprintf+ , curl_share_cleanup+ , curl_share_init+ , curl_share_setopt+ -- curl_share_strerror+ -- curl_slist_append+ -- curl_slist_free_all+ -- curl_strequal+ -- curl_strnequal+ -- curl_unescape+ , curl_version+ , curl_version_info++ ) where++import qualified Network.CURL000.LibCC as C++import Network.CURL000.Types++import qualified Data.ByteString as BS+import Data.ByteString.Unsafe (unsafeUseAsCStringLen)+import Data.ByteString (ByteString, packCStringLen)+import Data.IORef (IORef, newIORef, atomicModifyIORef)+import Data.Time.Clock (UTCTime)+import Data.Time.Clock.POSIX (utcTimeToPOSIXSeconds, posixSecondsToUTCTime)+import Data.List (partition)+import Data.Unique (newUnique)++import Control.Applicative ((<$>), (<*>))+import Control.Concurrent (MVar, newMVar, takeMVar, tryPutMVar, modifyMVar)+import Control.Concurrent (withMVar, modifyMVar_)+import Control.Exception (throwIO, bracketOnError)+import Control.Monad (when, forM_, foldM)++import Foreign.Marshal.Alloc+import Foreign.Marshal.Array+import Foreign.Marshal.Utils+import Foreign.Storable+import Foreign.C.String+import Foreign.C.Types+import Foreign.Ptr++#include "LibC0.c"+++-------------------------------------------------------------------------------+-- | Global libcurl initialisation+-- (<http://curl.haxx.se/libcurl/c/curl_global_init.html>).+-------------------------------------------------------------------------------+curl_global_init :: IO ()+curl_global_init = do+ code <- C.curl_global_init #{const CURL_GLOBAL_ALL}+ when (code/=0) (error "<curlhs> curl_global_init failed")+++-------------------------------------------------------------------------------+-- | Global libcurl cleanup+-- (<http://curl.haxx.se/libcurl/c/curl_global_cleanup.html>).+-------------------------------------------------------------------------------+curl_global_cleanup :: IO ()+curl_global_cleanup = C.curl_global_cleanup+++-------------------------------------------------------------------------------+-- | Returns the libcurl version string+-- (<http://curl.haxx.se/libcurl/c/curl_version.html>).+-------------------------------------------------------------------------------+curl_version :: IO String+curl_version = C.curl_version >>= peekCAString+++-------------------------------------------------------------------------------+-- | Returns run-time libcurl version info+-- (<http://curl.haxx.se/libcurl/c/curl_version_info.html>).+-------------------------------------------------------------------------------+curl_version_info :: IO CURL_version_info+curl_version_info =+ C.curl_version_info #{const CURLVERSION_NOW} >>= \ptr -> CURL_version_info+ <$> (#{peek curl_version_info_data, version } ptr >>= peekCAString)+ <*> (#{peek curl_version_info_data, version_num } ptr >>= peekCUInt)+ <*> (#{peek curl_version_info_data, host } ptr >>= peekCAString)+ <*> (#{peek curl_version_info_data, features } ptr >>= peekCFeatures)+ <*> (#{peek curl_version_info_data, ssl_version } ptr >>= peekCString0)+ <*> (#{peek curl_version_info_data, ssl_version_num} ptr >>= peekCLong)+ <*> (#{peek curl_version_info_data, libz_version } ptr >>= peekCString0)+ <*> (#{peek curl_version_info_data, protocols } ptr >>= peekCStringL)+ <*> (#{peek curl_version_info_data, ares } ptr >>= peekCString0)+ <*> (#{peek curl_version_info_data, ares_num } ptr >>= peekCInt)+ <*> (#{peek curl_version_info_data, libidn } ptr >>= peekCString0)+ <*> (#{peek curl_version_info_data, iconv_ver_num } ptr >>= peekCInt)+ <*> (#{peek curl_version_info_data, libssh_version } ptr >>= peekCString0)++peekCString0 :: Ptr CChar -> IO String+peekCString0 ptr = if (ptr==nullPtr) then return [] else peekCAString ptr++peekCStringL :: Ptr (Ptr CChar) -> IO [String]+peekCStringL ptr = peekArray0 nullPtr ptr >>= mapM peekCAString++peekCFeatures :: CInt -> IO [CURLfeature]+peekCFeatures = return . fromCIntMask++peekCUInt :: CUInt -> IO Int+peekCUInt = return . fromIntegral++peekCInt :: CInt -> IO Int+peekCInt = return . fromIntegral++peekCLong :: CLong -> IO Int+peekCLong = return . fromIntegral++++-------------------------------------------------------------------------------+-- | Start a libcurl easy session+-- (<http://curl.haxx.se/libcurl/c/curl_easy_init.html>).+-------------------------------------------------------------------------------+curl_easy_init :: IO CURL+curl_easy_init = do+ ccurl <- C.curl_easy_init; curlmvar <- newMVar ccurl+ uid <- newUnique; cbref <- newIORef []; slref <- newIORef []+ let curl = CURL uid curlmvar cbref slref+ if (ccurl/=nullPtr) then return curl else do+ desc <- C.curl_easy_strerror #{const CURLE_FAILED_INIT} >>= peekCString0+ throwCURLE curl "curl_easy_init" desc CURLE_FAILED_INIT+++-------------------------------------------------------------------------------+throwCURLE :: CURL -> String -> String -> CURLC -> IO a+throwCURLE curl func desc code = throwIO (CURLE curl func desc code)++checkCURLE :: CURL -> String -> (IO CInt) -> IO ()+checkCURLE curl func action =+ action >>= \code -> when (code/=0) $ do+ desc <- C.curl_easy_strerror code >>= peekCString0+ throwCURLE curl func desc (toCURLC code)++withCCURL :: CURL -> (Ptr C.CURL -> IO a) -> IO a+withCCURL (CURL _ curlmvar _ _) = withMVar curlmvar+++-------------------------------------------------------------------------------+-- | Reset all options of a libcurl session handle+-- (<http://curl.haxx.se/libcurl/c/curl_easy_reset.html>).+-------------------------------------------------------------------------------+curl_easy_reset :: CURL -> IO ()+curl_easy_reset (CURL _ curlmvar cbref slref) =+ modifyMVar_ curlmvar $ \ccurl -> do+ when (ccurl/=nullPtr) (C.curl_easy_reset ccurl)+ freeCURL cbref slref >> return ccurl+++-------------------------------------------------------------------------------+-- | End a libcurl easy session+-- (<http://curl.haxx.se/libcurl/c/curl_easy_cleanup.html>).+-------------------------------------------------------------------------------+curl_easy_cleanup :: CURL -> IO ()+curl_easy_cleanup (CURL _ curlmvar cbref slref) =+ modifyMVar_ curlmvar $ \ccurl -> do+ when (ccurl/=nullPtr) (C.curl_easy_cleanup ccurl)+ freeCURL cbref slref >> return nullPtr++freeCURL :: IORef [CURLCB] -> IORef [CURLSL] -> IO ()+freeCURL cbref slref = do+ atomicModifyIORef cbref (\cbs -> ([],cbs)) >>= mapM_ freeCB+ atomicModifyIORef slref (\sls -> ([],sls)) >>= mapM_ freeSL+++-------------------------------------------------------------------------------+-- | Perform a file transfer+-- (<http://curl.haxx.se/libcurl/c/curl_easy_perform.html>).+-------------------------------------------------------------------------------+curl_easy_perform :: CURL -> IO ()+curl_easy_perform curl =+ withCCURL curl (checkCURLE curl "curl_easy_perform" . C.curl_easy_perform)+++-------------------------------------------------------------------------------+-- | Receives raw data on an @easy@ connection+-- (<http://curl.haxx.se/libcurl/c/curl_easy_recv.html>).+-------------------------------------------------------------------------------+curl_easy_recv :: CURL -> Int -> IO ByteString+curl_easy_recv curl len =+ withCCURL curl $ \ccurl -> alloca $ \nptr -> allocaBytes len $ \buff -> do+ let check = checkCURLE curl "curl_easy_recv"+ check $ C.curl_easy_recv ccurl buff (fromIntegral len) nptr+ n <- fmap fromIntegral (peek nptr)+ packCStringLen (castPtr buff, n)+++-------------------------------------------------------------------------------+-- | Sends raw data over an @easy@ connection+-- (<http://curl.haxx.se/libcurl/c/curl_easy_send.html>).+-------------------------------------------------------------------------------+curl_easy_send :: CURL -> ByteString -> IO Int+curl_easy_send curl bs =+ withCCURL curl $ \ccurl -> alloca $ \nptr -> do+ let check = checkCURLE curl "curl_easy_send"+ check $ unsafeUseAsCStringLen bs $ \(cs, cl) ->+ C.curl_easy_send ccurl (castPtr cs) (fromIntegral cl) nptr+ fmap fromIntegral (peek nptr)+++-------------------------------------------------------------------------------+-- | Extract information from a curl handle+-- (<http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html>).+-------------------------------------------------------------------------------+#define hsc_getopt(opt, foo) printf(#opt " -> getopt %d " #foo, opt)+curl_easy_getinfo :: CURL -> CURLinfo a -> IO a+curl_easy_getinfo curl opt = withCCURL curl $ \ccurl ->+ let getopt :: Storable x => CInt -> (Ptr x -> IO a) -> IO a+ getopt x fpeek = alloca $ \ptr -> getptr x (castPtr ptr) >> fpeek ptr+ getptr x ptr = check $ C.curl_easy_getinfo ccurl x ptr+ check = checkCURLE curl "curl_easy_getinfo"+ in case opt of+ #{getopt CURLINFO_EFFECTIVE_URL , getString}+ #{getopt CURLINFO_RESPONSE_CODE , getCLong }+ #{getopt CURLINFO_HTTP_CONNECTCODE , getCLong }+ #{getopt CURLINFO_FILETIME , getTime }+ #{getopt CURLINFO_TOTAL_TIME , getDouble}+ #{getopt CURLINFO_NAMELOOKUP_TIME , getDouble}+ #{getopt CURLINFO_CONNECT_TIME , getDouble}+ #{getopt CURLINFO_APPCONNECT_TIME , getDouble}+ #{getopt CURLINFO_PRETRANSFER_TIME , getDouble}+ #{getopt CURLINFO_STARTTRANSFER_TIME , getDouble}+ #{getopt CURLINFO_REDIRECT_TIME , getDouble}+ #{getopt CURLINFO_REDIRECT_COUNT , getCLong }+ #{getopt CURLINFO_REDIRECT_URL , getString}+ #{getopt CURLINFO_SIZE_UPLOAD , getDouble}+ #{getopt CURLINFO_SIZE_DOWNLOAD , getDouble}+ #{getopt CURLINFO_SPEED_DOWNLOAD , getDouble}+ #{getopt CURLINFO_SPEED_UPLOAD , getDouble}+ #{getopt CURLINFO_HEADER_SIZE , getCLong }+ #{getopt CURLINFO_REQUEST_SIZE , getCLong }+ #{getopt CURLINFO_SSL_VERIFYRESULT , getCLong }+ #{getopt CURLINFO_SSL_ENGINES , getSList }+ #{getopt CURLINFO_CONTENT_LENGTH_DOWNLOAD, getDouble}+ #{getopt CURLINFO_CONTENT_LENGTH_UPLOAD , getDouble}+ #{getopt CURLINFO_CONTENT_TYPE , getString}+ #{getopt CURLINFO_HTTPAUTH_AVAIL , getAuth }+ #{getopt CURLINFO_PROXYAUTH_AVAIL , getAuth }+ #{getopt CURLINFO_OS_ERRNO , getCLong }+ #{getopt CURLINFO_NUM_CONNECTS , getCLong }+ #{getopt CURLINFO_PRIMARY_IP , getString}+ #{getopt CURLINFO_PRIMARY_PORT , getCLong }+ #{getopt CURLINFO_LOCAL_IP , getString}+ #{getopt CURLINFO_LOCAL_PORT , getCLong }+ #{getopt CURLINFO_COOKIELIST , getSList }+ #{getopt CURLINFO_LASTSOCKET , getCLong }+ #{getopt CURLINFO_FTP_ENTRY_PATH , getString}+ #{getopt CURLINFO_CERTINFO , getCerts }+ #{getopt CURLINFO_CONDITION_UNMET , getBool }+ #{getopt CURLINFO_RTSP_SESSION_ID , getString}+ #{getopt CURLINFO_RTSP_CLIENT_CSEQ , getCLong }+ #{getopt CURLINFO_RTSP_SERVER_CSEQ , getCLong }+ #{getopt CURLINFO_RTSP_CSEQ_RECV , getCLong }++getString :: Ptr (Ptr CChar) -> IO String+getString ptr = peek ptr >>= peekCString0++getDouble :: Ptr CDouble -> IO Double+getDouble = fmap realToFrac . peek++getCLong :: Ptr CLong -> IO CLong+getCLong = peek++getBool :: Ptr CLong -> IO Bool+getBool = fmap toBool . peek++getAuth :: Ptr CLong -> IO [CURLauth]+getAuth = fmap fromCLongMask . peek++getTime :: Ptr CLong -> IO (Maybe UTCTime)+getTime =+ let mconv f x = if (x==(-1) || x==0) then Nothing else Just (f x)+ in fmap (mconv (posixSecondsToUTCTime . realToFrac)) . peek++getCerts :: Ptr (Ptr C.CURLcerts) -> IO [[String]]+getCerts ptr =+ peek ptr >>= \certs -> if (certs==nullPtr) then return [] else+ peek certs >>= \(C.CURLcerts len tab) ->+ peekArray (fromIntegral len) tab >>= mapM peekCURLslist++getSList :: Ptr (Ptr C.CURLslist) -> IO [String]+getSList ptr =+ peek ptr >>= \slist -> do+ strings <- peekCURLslist slist+ C.curl_slist_free_all slist+ return strings++peekCURLslist :: Ptr C.CURLslist -> IO [String]+peekCURLslist ptr =+ if (ptr==nullPtr) then return [] else+ peek ptr >>= \(C.CURLslist cs csl) -> do+ slist_head <- peekCAString cs+ slist_tail <- peekCURLslist csl+ return (slist_head : slist_tail)+++-------------------------------------------------------------------------------+-- | Set options for a curl easy handle+-- (<http://curl.haxx.se/libcurl/c/curl_easy_setopt.html>).+-------------------------------------------------------------------------------+curl_easy_setopt :: CURL -> [CURLoption] -> IO ()+curl_easy_setopt curl@(CURL _ _ cbref slref) opts =+ withCCURL curl $ \ccurl -> forM_ opts $ \opt ->+ checkCURLE curl "curl_easy_setopt" $ case opt of++ #define hsc_setopt(opt, foo) printf(#opt " x -> " #foo " ccurl %d x", opt)++ ---- CALLBACK OPTIONS -------------------------------------------------------+ #{setopt CURLOPT_WRITEFUNCTION , curlcb FWRITE}+ #{setopt CURLOPT_READFUNCTION , curlcb FREAD }++ ---- BEHAVIOR OPTIONS -------------------------------------------------------+ #{setopt CURLOPT_VERBOSE , bool }+ #{setopt CURLOPT_HEADER , bool }+ #{setopt CURLOPT_NOPROGRESS , bool }+ #{setopt CURLOPT_NOSIGNAL , bool }+ #{setopt CURLOPT_WILDCARDMATCH , bool }++ ---- ERROR OPTIONS ----------------------------------------------------------+ -- CURLOPT_ERRORBUFFER+ -- CURLOPT_STDERR+ #{setopt CURLOPT_FAILONERROR , bool }++ ---- NETWORK OPTIONS --------------------------------------------------------+ #{setopt CURLOPT_URL , string }+ #{setopt CURLOPT_PROTOCOLS , enum }+ #{setopt CURLOPT_REDIR_PROTOCOLS , enum }+ #{setopt CURLOPT_PROXY , string }+ #{setopt CURLOPT_PROXYPORT , clong }+ #{setopt CURLOPT_PROXYTYPE , enum }+ #{setopt CURLOPT_NOPROXY , string }+ #{setopt CURLOPT_HTTPPROXYTUNNEL , bool }+ #{setopt CURLOPT_SOCKS5_GSSAPI_SERVICE , string }+ #{setopt CURLOPT_SOCKS5_GSSAPI_NEC , bool }+ #{setopt CURLOPT_INTERFACE , string }+ #{setopt CURLOPT_LOCALPORT , clong }+ #{setopt CURLOPT_LOCALPORTRANGE , clong }+ #{setopt CURLOPT_DNS_CACHE_TIMEOUT , clong }+ -- #{setopt CURLOPT_DNS_USE_GLOBAL_CACHE , bool }+ #{setopt CURLOPT_BUFFERSIZE , clong }+ #{setopt CURLOPT_PORT , clong }+ #{setopt CURLOPT_TCP_NODELAY , bool }+ #{setopt CURLOPT_ADDRESS_SCOPE , clong }+ #{setopt CURLOPT_TCP_KEEPALIVE , bool }+ #{setopt CURLOPT_TCP_KEEPIDLE , clong }+ #{setopt CURLOPT_TCP_KEEPINTVL , clong }++ ---- NAMES and PASSWORDS OPTIONS (Authentication) ---------------------------+ #{setopt CURLOPT_NETRC , enum }+ #{setopt CURLOPT_NETRC_FILE , string }+ #{setopt CURLOPT_USERPWD , string }+ #{setopt CURLOPT_PROXYUSERPWD , string }+ #{setopt CURLOPT_USERNAME , string }+ #{setopt CURLOPT_PASSWORD , string }+ #{setopt CURLOPT_PROXYUSERNAME , string }+ #{setopt CURLOPT_PROXYPASSWORD , string }+ #{setopt CURLOPT_HTTPAUTH , enum }+ #{setopt CURLOPT_TLSAUTH_TYPE , string }+ #{setopt CURLOPT_TLSAUTH_USERNAME , string }+ #{setopt CURLOPT_TLSAUTH_PASSWORD , string }+ #{setopt CURLOPT_PROXYAUTH , enum }++ ---- HTTP OPTIONS -----------------------------------------------------------+ #{setopt CURLOPT_AUTOREFERER , bool }+ #{setopt CURLOPT_ACCEPT_ENCODING , string }+ #{setopt CURLOPT_TRANSFER_ENCODING , bool }+ #{setopt CURLOPT_FOLLOWLOCATION , bool }+ #{setopt CURLOPT_UNRESTRICTED_AUTH , bool }+ #{setopt CURLOPT_MAXREDIRS , clong }+ #{setopt CURLOPT_POSTREDIR , enum }+ #{setopt CURLOPT_PUT , bool }+ #{setopt CURLOPT_POST , bool }+ -- #{setopt CURLOPT_POSTFIELDS , buffer }+ #{setopt CURLOPT_POSTFIELDSIZE , clong }+ #{setopt CURLOPT_POSTFIELDSIZE_LARGE , int64 }+ #{setopt CURLOPT_COPYPOSTFIELDS , string }+ -- CURLOPT_HTTPPOST+ #{setopt CURLOPT_REFERER , string }+ #{setopt CURLOPT_USERAGENT , string }+ #{setopt CURLOPT_HTTPHEADER , slist }+ #{setopt CURLOPT_HTTP200ALIASES , slist }+ #{setopt CURLOPT_COOKIE , string }+ #{setopt CURLOPT_COOKIEFILE , string }+ #{setopt CURLOPT_COOKIEJAR , string }+ #{setopt CURLOPT_COOKIESESSION , bool }+ #{setopt CURLOPT_COOKIELIST , string }+ #{setopt CURLOPT_HTTPGET , bool }+ #{setopt CURLOPT_HTTP_VERSION , enum }+ #{setopt CURLOPT_IGNORE_CONTENT_LENGTH , bool }+ #{setopt CURLOPT_HTTP_CONTENT_DECODING , bool }+ #{setopt CURLOPT_HTTP_TRANSFER_DECODING , bool }++ ---- SMTP OPTIONS -----------------------------------------------------------+ #{setopt CURLOPT_MAIL_FROM , string }+ #{setopt CURLOPT_MAIL_RCPT , slist }+ #{setopt CURLOPT_MAIL_AUTH , string }++ ---- TFTP OPTIONS -----------------------------------------------------------+ #{setopt CURLOPT_TFTP_BLKSIZE , clong }++ ---- FTP OPTIONS ------------------------------------------------------------+ #{setopt CURLOPT_FTPPORT , string }+ #{setopt CURLOPT_QUOTE , slist }+ #{setopt CURLOPT_POSTQUOTE , slist }+ #{setopt CURLOPT_PREQUOTE , slist }+ #{setopt CURLOPT_DIRLISTONLY , bool }+ #{setopt CURLOPT_APPEND , bool }+ #{setopt CURLOPT_FTP_USE_EPRT , bool }+ #{setopt CURLOPT_FTP_USE_EPSV , bool }+ #{setopt CURLOPT_FTP_USE_PRET , bool }+ #{setopt CURLOPT_FTP_CREATE_MISSING_DIRS, enum }+ #{setopt CURLOPT_FTP_RESPONSE_TIMEOUT , clong }+ #{setopt CURLOPT_FTP_ALTERNATIVE_TO_USER, string }+ #{setopt CURLOPT_FTP_SKIP_PASV_IP , bool }+ #{setopt CURLOPT_FTPSSLAUTH , enum }+ #{setopt CURLOPT_FTP_SSL_CCC , enum }+ #{setopt CURLOPT_FTP_ACCOUNT , string }+ #{setopt CURLOPT_FTP_FILEMETHOD , enum }++ ---- RTSP OPTIONS -----------------------------------------------------------+ #define CURLOPT_RTSP_HEADER CURLOPT_RTSPHEADER+ #{setopt CURLOPT_RTSP_REQUEST , enum }+ #{setopt CURLOPT_RTSP_SESSION_ID , string }+ #{setopt CURLOPT_RTSP_STREAM_URI , string }+ #{setopt CURLOPT_RTSP_TRANSPORT , string }+ #{setopt CURLOPT_RTSP_HEADER , slist }+ #{setopt CURLOPT_RTSP_CLIENT_CSEQ , clong }+ #{setopt CURLOPT_RTSP_SERVER_CSEQ , clong }++ ---- PROTOCOL OPTIONS -------------------------------------------------------+ #{setopt CURLOPT_TRANSFERTEXT , bool }+ #{setopt CURLOPT_PROXY_TRANSFER_MODE , bool }+ #{setopt CURLOPT_CRLF , bool }+ #{setopt CURLOPT_RANGE , string }+ #{setopt CURLOPT_RESUME_FROM , clong }+ #{setopt CURLOPT_RESUME_FROM_LARGE , int64 }+ #{setopt CURLOPT_CUSTOMREQUEST , string }+ #{setopt CURLOPT_FILETIME , bool }+ #{setopt CURLOPT_NOBODY , bool }+ #{setopt CURLOPT_INFILESIZE , clong }+ #{setopt CURLOPT_INFILESIZE_LARGE , int64 }+ #{setopt CURLOPT_UPLOAD , bool }+ #{setopt CURLOPT_MAXFILESIZE , clong }+ #{setopt CURLOPT_MAXFILESIZE_LARGE , int64 }+ #{setopt CURLOPT_TIMECONDITION , enum }+ #{setopt CURLOPT_TIMEVALUE , time }++ ---- CONNECTION OPTIONS -----------------------------------------------------+ #{setopt CURLOPT_TIMEOUT , clong }+ #{setopt CURLOPT_TIMEOUT_MS , clong }+ #{setopt CURLOPT_LOW_SPEED_LIMIT , clong }+ #{setopt CURLOPT_LOW_SPEED_TIME , clong }+ #{setopt CURLOPT_MAX_SEND_SPEED_LARGE , int64 }+ #{setopt CURLOPT_MAX_RECV_SPEED_LARGE , int64 }+ #{setopt CURLOPT_MAXCONNECTS , clong }+ -- #{setopt CURLOPT_CLOSEPOLICY , enum }+ #{setopt CURLOPT_FRESH_CONNECT , bool }+ #{setopt CURLOPT_FORBID_REUSE , bool }+ #{setopt CURLOPT_CONNECTTIMEOUT , clong }+ #{setopt CURLOPT_CONNECTTIMEOUT_MS , clong }+ #{setopt CURLOPT_IPRESOLVE , enum }+ #{setopt CURLOPT_CONNECT_ONLY , bool }+ #{setopt CURLOPT_USE_SSL , enum }+ #{setopt CURLOPT_RESOLVE , slist }+ #{setopt CURLOPT_DNS_SERVERS , string }+ #{setopt CURLOPT_ACCEPTTIMEOUT_MS , clong }++ ---- SSL and SECURITY OPTIONS -----------------------------------------------+ #{setopt CURLOPT_SSLCERT , string }+ #{setopt CURLOPT_SSLCERTTYPE , string }+ #{setopt CURLOPT_SSLKEY , string }+ #{setopt CURLOPT_SSLKEYTYPE , string }+ #{setopt CURLOPT_KEYPASSWD , string }+ #{setopt CURLOPT_SSLENGINE , string }+ #{setopt CURLOPT_SSLENGINE_DEFAULT , bool }+ #{setopt CURLOPT_SSLVERSION , enum }+ #{setopt CURLOPT_SSL_VERIFYPEER , bool }+ #{setopt CURLOPT_CAINFO , string }+ #{setopt CURLOPT_ISSUERCERT , string }+ #{setopt CURLOPT_CAPATH , string }+ #{setopt CURLOPT_CRLFILE , string }+ #{setopt CURLOPT_SSL_VERIFYHOST , clong }+ #{setopt CURLOPT_CERTINFO , bool }+ #{setopt CURLOPT_RANDOM_FILE , string }+ #{setopt CURLOPT_EGDSOCKET , string }+ #{setopt CURLOPT_SSL_CIPHER_LIST , string }+ #{setopt CURLOPT_SSL_SESSIONID_CACHE , bool }+ #{setopt CURLOPT_SSL_OPTIONS , enum }+ #{setopt CURLOPT_KRBLEVEL , string }+ #{setopt CURLOPT_GSSAPI_DELEGATION , enum }++ ---- SSH OPTIONS ------------------------------------------------------------+ #{setopt CURLOPT_SSH_AUTH_TYPES , enum }+ #{setopt CURLOPT_SSH_HOST_PUBLIC_KEY_MD5, string }+ #{setopt CURLOPT_SSH_PUBLIC_KEYFILE , string }+ #{setopt CURLOPT_SSH_PRIVATE_KEYFILE , string }+ #{setopt CURLOPT_SSH_KNOWNHOSTS , string }+ -- CURLOPT_SSH_KEYFUNCTION+ -- CURLOPT_SSH_KEYDATA++ ---- OTHER OPTIONS ----------------------------------------------------------+ -- CURLOPT_PRIVATE+ #{setopt CURLOPT_SHARE , curlsh }+ #{setopt CURLOPT_NEW_FILE_PERMS , clong }+ #{setopt CURLOPT_NEW_DIRECTORY_PERMS , clong }++ ---- TELNET OPTIONS ---------------------------------------------------------+ #{setopt CURLOPT_TELNETOPTIONS , slist }++ where+ ---------------------------------------------------------------------------+ enum ccurl copt x = C.curl_easy_setopt'Long ccurl copt (toCLong x)+ bool ccurl copt x = C.curl_easy_setopt'Long ccurl copt (fromBool x)+ time ccurl copt x = C.curl_easy_setopt'Long ccurl copt (fromUTCTime x)+ clong ccurl copt x = C.curl_easy_setopt'Long ccurl copt (fromIntegral x)+ int64 ccurl copt x = C.curl_easy_setopt'COff ccurl copt (fromIntegral x)+ fromUTCTime = truncate . utcTimeToPOSIXSeconds+ ---------------------------------------------------------------------------+ string ccurl copt x = withCAString x $ \p ->+ C.curl_easy_setopt'DPtr ccurl copt (castPtr p)+ ---------------------------------------------------------------------------+ slist ccurl copt x = makeSL slref ccurl copt x+ ---------------------------------------------------------------------------+ curlcb :: CURLCBT a -> Ptr C.CURL -> CInt -> Maybe a -> IO CInt+ curlcb cbt ccurl copt x = makeCB cbref cbt ccurl copt x+ ---------------------------------------------------------------------------+ curlsh ccurl copt Nothing = C.curl_easy_setopt'DPtr ccurl copt nullPtr+ curlsh ccurl copt (Just (CURLSH _ mvar)) =+ withMVar mvar $ \(ccurlsh,_,_) ->+ C.curl_easy_setopt'DPtr ccurl copt (castPtr ccurlsh)+++-------------------------------------------------------------------------------+wrapSL :: [String] -> IO (Maybe (Ptr C.CURLslist))+wrapSL = foldM wrap (Just nullPtr)+ where+ wrap Nothing _ = return Nothing+ wrap (Just sl) xs =+ withCAString xs (C.curl_slist_append sl) >>= \nsl ->+ if (nsl/=nullPtr) then return (Just nsl) else do+ when (sl/=nullPtr) (C.curl_slist_free_all sl)+ return Nothing++freeSL :: CURLSL -> IO ()+freeSL (_,sl) = when (sl/=nullPtr) (C.curl_slist_free_all sl)++makeSL :: IORef [CURLSL] -> Ptr C.CURL -> CInt -> [String] -> IO CInt+makeSL slref ccurl copt xs =+ let cons sl (tokeep, tofree) = ((copt,sl):tokeep, tofree)+ keep 0 sl sls = cons sl $ partition ((==copt) . fst) sls+ keep _ sl sls = cons sl $ (sls,[])+ in wrapSL xs >>= \msl -> case msl of+ Nothing -> return #{const CURLE_OUT_OF_MEMORY}+ Just sl -> do+ code <- C.curl_easy_setopt'DPtr ccurl copt (castPtr sl)+ atomicModifyIORef slref (keep code sl) >>= mapM_ freeSL+ return code+++-------------------------------------------------------------------------------+wrapCB :: CURLCBT a -> a -> IO (FunPtr ())+wrapCB cbt = case cbt of+ FWRITE -> fmap castFunPtr . C.wrapCURL_write_callback . write_callback+ FREAD -> fmap castFunPtr . C.wrapCURL_read_callback . read_callback++freeCB :: CURLCB -> IO ()+freeCB (CURLCB _ fp) = when (fp/=nullFunPtr) (freeHaskellFunPtr fp)++makeCB+ :: IORef [CURLCB] -> CURLCBT a -> Ptr C.CURL -> CInt -> Maybe a -> IO CInt+makeCB cbref cbt ccurl copt mcb =+ let comp :: CURLCBT a -> CURLCB -> Bool+ comp FWRITE (CURLCB FWRITE _) = True; comp FWRITE _ = False+ comp FREAD (CURLCB FREAD _) = True; comp FREAD _ = False+ cons fp (tokeep, tofree) = ((CURLCB cbt fp):tokeep, tofree)+ keep 0 fp cbs = cons fp $ partition (comp cbt) cbs+ keep _ fp cbs = cons fp $ (cbs,[])+ in maybe (return nullFunPtr) (wrapCB cbt) mcb >>= \fp -> do+ code <- C.curl_easy_setopt'FPtr ccurl copt fp+ atomicModifyIORef cbref (keep code fp) >>= mapM_ freeCB+ return code+++-------------------------------------------------------------------------------+write_callback :: CURL_write_callback -> C.CURL_write_callback+write_callback fwrite ptr size nmemb _ = do+ stat <- packCStringLen (ptr, fromIntegral (size * nmemb)) >>= fwrite+ return $ case stat of+ CURL_WRITEFUNC_OK -> (size * nmemb)+ CURL_WRITEFUNC_FAIL -> 0+ CURL_WRITEFUNC_PAUSE -> #{const CURL_WRITEFUNC_PAUSE}+++-------------------------------------------------------------------------------+read_callback :: CURL_read_callback -> C.CURL_read_callback+read_callback fread buff size nmemb _ = do+ let buffLen = fromIntegral (size * nmemb)+ stat <- fread buffLen+ case stat of+ CURL_READFUNC_PAUSE -> return #{const CURL_READFUNC_PAUSE}+ CURL_READFUNC_ABORT -> return #{const CURL_READFUNC_ABORT}+ CURL_READFUNC_OK bs -> unsafeUseAsCStringLen (BS.take buffLen bs)+ (\(cs, cl) -> copyBytes buff cs cl >> return (fromIntegral cl))+++-------------------------------------------------------------------------------+-- | Create a shared object+-- (<http://curl.haxx.se/libcurl/c/curl_share_init.html>).+-------------------------------------------------------------------------------+curl_share_init :: IO CURLSH+curl_share_init = bracketOnError createcurlsh curl_share_cleanup setupcurlsh+ where+ -----------------+ createcurlsh = do+ ccurlsh <- C.curl_share_init+ (f1,f2) <- if (ccurlsh == nullPtr)+ then return (nullFunPtr, nullFunPtr)+ else do+ shlocks <- newSHLocks+ f1 <- C.wrapCURL_lock_function (lock_function shlocks)+ f2 <- C.wrapCURL_unlock_function (unlock_function shlocks)+ return (castFunPtr f1, castFunPtr f2)+ uid <- newUnique; mvar <- newMVar (ccurlsh,f1,f2)+ return (CURLSH uid mvar)+ ------------------------------------+ setupcurlsh curlsh@(CURLSH _ mvar) =+ withMVar mvar $ \(ccurlsh,f1,f2) -> do+ let func = "curl_share_init"+ if (ccurlsh == nullPtr)+ then do+ let getstrerror x = C.curl_easy_strerror x >>= peekCString0+ desc <- getstrerror #{const CURLE_FAILED_INIT}+ throwCURLSHE curlsh func desc CURLSHE_FAILED_INIT+ else do+ let withCHECK = checkCURLSHE curlsh func+ let setshopt = C.curl_share_setopt'FPtr ccurlsh+ withCHECK $ setshopt #{const CURLSHOPT_LOCKFUNC } f1+ withCHECK $ setshopt #{const CURLSHOPT_UNLOCKFUNC} f2+ return curlsh+++-------------------------------------------------------------------------------+-- | Clean up a shared object+-- (<http://curl.haxx.se/libcurl/c/curl_share_cleanup.html>).+-------------------------------------------------------------------------------+curl_share_cleanup :: CURLSH -> IO ()+curl_share_cleanup curlsh@(CURLSH _ mvar) =+ let withCHECK = checkCURLSHE curlsh "curl_share_cleanup"+ in modifyMVar_ mvar $ \(ccurlsh,f1,f2) -> do+ when (ccurlsh/=nullPtr) (withCHECK $ C.curl_share_cleanup ccurlsh)+ when (f1/=nullFunPtr) (freeHaskellFunPtr f1)+ when (f2/=nullFunPtr) (freeHaskellFunPtr f2)+ return (nullPtr,nullFunPtr,nullFunPtr)+++-------------------------------------------------------------------------------+-- | Set options for a shared object+-- (<http://curl.haxx.se/libcurl/c/curl_share_setopt.html>).+-------------------------------------------------------------------------------+#define hsc_curlshopt(opt, foo) printf(#opt " x -> " #foo " %d x", opt)+curl_share_setopt :: CURLSH -> [CURLSHoption] -> IO ()+curl_share_setopt curlsh@(CURLSH _ mvar) opts =+ withMVar mvar $ \(ccurlsh,_,_) -> do+ let func = "curl_share_setopt"+ when (ccurlsh==nullPtr) $ do+ desc <- C.curl_share_strerror #{const CURLSHE_INVALID} >>= peekCString0+ throwCURLSHE curlsh func desc CURLSHE_INVALID+ let enum copt x = C.curl_share_setopt'Long ccurlsh copt (toCLong x)+ flip mapM_ opts $ \opt -> checkCURLSHE curlsh func $ case opt of+ #{curlshopt CURLSHOPT_SHARE , enum}+ #{curlshopt CURLSHOPT_UNSHARE, enum}+++-------------------------------------------------------------------------------+throwCURLSHE :: CURLSH -> String -> String -> CURLSHC -> IO a+throwCURLSHE curlsh func desc code = throwIO (CURLSHE curlsh func desc code)++checkCURLSHE :: CURLSH -> String -> (IO CInt) -> IO ()+checkCURLSHE curlsh func action =+ action >>= \code -> when (code/=0) $ do+ desc <- C.curl_share_strerror code >>= peekCString0+ throwCURLSHE curlsh func desc (toCURLSHC code)+++-------------------------------------------------------------------------------+type SHLocks = MVar [(SHLockID, SHLock)]+type SHLock = MVar ()+type SHLockID = CInt++newSHLocks :: IO SHLocks+newSHLocks = newMVar []++getSHLock :: SHLock -> IO ()+getSHLock shlock = takeMVar shlock++putSHLock :: SHLock -> IO ()+putSHLock shlock = tryPutMVar shlock () >> return ()++lookupSHLock :: SHLocks -> SHLockID -> IO SHLock+lookupSHLock mvar shlockid =+ modifyMVar mvar $ \shlocks ->+ case (lookup shlockid shlocks) of+ Just shlock -> return (shlocks, shlock)+ Nothing -> newMVar () >>= \nl -> return ((shlockid, nl):shlocks, nl)++lock_function :: SHLocks -> C.CURL_lock_function+lock_function shlocks _ccurl lockdata _lockaccess _usrptr =+ lookupSHLock shlocks lockdata >>= getSHLock++unlock_function :: SHLocks -> C.CURL_unlock_function+unlock_function shlocks _ccurl lockdata _usrptr =+ lookupSHLock shlocks lockdata >>= putSHLock+
+ Network/CURL000/LibLD.hs view
@@ -0,0 +1,96 @@+-------------------------------------------------------------------------------+-- |+-- Module : Network.CURL000.LibLD+-- Copyright : Copyright © 2012-2014 Krzysztof Kardzis+-- License : ISC License (MIT/BSD-style, see LICENSE file for details)+-- +-- Maintainer : Krzysztof Kardzis <kkardzis@gmail.com>+-- Stability : experimental+-- Portability : non-portable+--+-------------------------------------------------------------------------------++module Network.CURL000.LibLD+ ( RTLD(..), LIBCURL(..)+ ) where++import Network.CURL000.LibCC (curlADRTAB, curlSYMTAB, curlTABLEN)+import Network.CURL000.LibHS (curl_global_init, curl_global_cleanup)+import Network.CURL000.LibHS (curl_version)++import Text.ParserCombinators.ReadP (ReadP, readP_to_S, string)+import Text.Read.Lex (readDecP)++import Control.Concurrent (MVar, newMVar)+import System.IO.Unsafe (unsafePerformIO)++import System.Info (os)+import System.RTLD+++-------------------------------------------------------------------------------+data LIBCURL = CURL720 | CURL730+ deriving (Eq, Ord, Enum, Bounded)++instance RTLD LIBCURL where+ loadlib x = rtload curlRTSO x+ freelib _ = rtfree curlRTSO+++-------------------------------------------------------------------------------+curlGlobalState :: MVar (Maybe (LIBCURL, LIBH, Int))+curlGlobalState = unsafePerformIO (newMVar Nothing)+{-# NOINLINE curlGlobalState #-}++curlRTSO :: RTSO LIBCURL+curlRTSO = RTSO+ { rtPKGMVAR = curlGlobalState+ , rtPKGNAME = "<curlhs>"+ , rtLIBNAME = libname+ , rtSONAMES = sonames+ , rtONLOAD = const curl_global_init+ , rtONFREE = const curl_global_cleanup+ , rtGETAPI = const (fmap readapi curl_version)+ , rtSYMTAB = curlSYMTAB+ , rtADRTAB = curlADRTAB+ , rtTABLEN = curlTABLEN+ }+++-------------------------------------------------------------------------------+libname :: LIBCURL -> String+libname CURL720 = "libcurl/7.20"+libname CURL730 = "libcurl/7.30"++readapi :: String -> Maybe LIBCURL+readapi xs = parse >>= check+ where+ readP = readP_to_S (string "libcurl/7." >> (readDecP :: ReadP Int))+ parse = case (readP xs) of [(v,_)] -> Just v; _ -> Nothing+ check v+ | v>=20 && v<30 = Just CURL720+ | v>=30 = Just CURL730+ | otherwise = Nothing+++-------------------------------------------------------------------------------+sonames :: LIBCURL -> [String]+sonames+ | os == "mingw32" = winsonames+ | os == "darwin" = osxsonames+ | os == "linux" = gnusonames+ | os == "freebsd" = bsdsonames+ | otherwise = const []++winsonames :: LIBCURL -> [String]+winsonames _ = ["libcurl.dll"]++osxsonames :: LIBCURL -> [String]+osxsonames _ = ["libcurl.dylib"]++gnusonames :: LIBCURL -> [String]+gnusonames _ = ["libcurl.so.4", "libcurl.so"]++bsdsonames :: LIBCURL -> [String]+bsdsonames _ = ["libcurl.so"]+
+ Network/CURL000/Types.hsc view
@@ -0,0 +1,879 @@+-------------------------------------------------------------------------------+-- |+-- Module : Network.CURL000.Types+-- Copyright : Copyright © 2012-2014 Krzysztof Kardzis+-- License : ISC License (MIT/BSD-style, see LICENSE file for details)+-- +-- Maintainer : Krzysztof Kardzis <kkardzis@gmail.com>+-- Stability : experimental+-- Portability : non-portable+--+-------------------------------------------------------------------------------+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE EmptyDataDecls #-}+{-# LANGUAGE GADTs #-}++module Network.CURL000.Types where++import qualified Network.CURL000.LibCC as C++import Control.Exception (Exception)+import Control.Concurrent (MVar)++import Data.Time.Clock (UTCTime)+import Data.ByteString (ByteString)+import Data.Typeable (Typeable, typeOf)+import Data.Maybe (mapMaybe)+import Data.List (foldl')+import Data.Bits ((.|.), (.&.))+import Data.Int (Int64)+import Data.Unique (Unique, hashUnique)+import Data.IORef (IORef)++import Foreign.C.Types+import Foreign.Ptr++#include "LibC0.c"+++-------------------------------------------------------------------------------+class ENUM a where+ toENUM :: a -> Int+ enumlist :: [a]++instance ENUM a => ENUM [a] where+ toENUM = foldl' (.|.) 0 . map toENUM+ enumlist = []++toCInt :: ENUM a => a -> CInt+toCInt = fromIntegral . toENUM++toCLong :: ENUM a => a -> CLong+toCLong = fromIntegral . toENUM++fromCIntMask :: ENUM a => CInt -> [a]+fromCIntMask mask =+ let checkBit x = if ((mask .&. (toCInt x)) == 0) then Nothing else Just x+ in mapMaybe checkBit enumlist++fromCLongMask :: ENUM a => CLong -> [a]+fromCLongMask mask =+ let checkBit x = if ((mask .&. (toCLong x)) == 0) then Nothing else Just x+ in mapMaybe checkBit enumlist++fromCInt :: (ENUM a, Typeable a) => CInt -> a+fromCInt cval =+ let enums = map (\enum -> (toCInt enum, enum)) enumlist+ enumE = error $ concat ["<curlhs> unknown constant (", v, ") -> ", t]+ (v,t) = (show cval, show $ typeOf $ snd $ head enums)+ in maybe enumE id $ lookup cval enums++++{-+-------------------------------------------------------------------------------+deriving instance Typeable CURLMcode+deriving instance Show CURLMcode+instance Exception CURLMcode++#{ENUM CURLMcode \+, CURLM_CALL_MULTI_PERFORM \+, CURLM_BAD_HANDLE \+, CURLM_BAD_EASY_HANDLE \+, CURLM_OUT_OF_MEMORY \+, CURLM_INTERNAL_ERROR \+, CURLM_BAD_SOCKET \+, CURLM_UNKNOWN_OPTION }+-}+++-------------------------------------------------------------------------------+deriving instance Show CURLfeature++#{ENUM CURLfeature \+, CURL_VERSION_IPV6 \+, CURL_VERSION_KERBEROS4 \+, CURL_VERSION_SSL \+, CURL_VERSION_LIBZ \+, CURL_VERSION_NTLM \+, CURL_VERSION_GSSNEGOTIATE \+, CURL_VERSION_DEBUG \+, CURL_VERSION_CURLDEBUG \+, CURL_VERSION_ASYNCHDNS \+, CURL_VERSION_SPNEGO \+, CURL_VERSION_LARGEFILE \+, CURL_VERSION_IDN \+, CURL_VERSION_SSPI \+, CURL_VERSION_CONV \+, CURL_VERSION_TLSAUTH_SRP \+, CURL_VERSION_NTLM_WB }+++-------------------------------------------------------------------------------+#{ENUM CURLproto \+, CURLPROTO_ALL \+, CURLPROTO_HTTP \+, CURLPROTO_HTTPS \+, CURLPROTO_FTP \+, CURLPROTO_FTPS \+, CURLPROTO_SCP \+, CURLPROTO_SFTP \+, CURLPROTO_TELNET \+, CURLPROTO_LDAP \+, CURLPROTO_LDAPS \+, CURLPROTO_DICT \+, CURLPROTO_FILE \+, CURLPROTO_TFTP \+, CURLPROTO_IMAP \+, CURLPROTO_IMAPS \+, CURLPROTO_POP3 \+, CURLPROTO_POP3S \+, CURLPROTO_SMTP \+, CURLPROTO_SMTPS \+, CURLPROTO_RTSP \+, CURLPROTO_RTMP \+, CURLPROTO_RTMPT \+, CURLPROTO_RTMPE \+, CURLPROTO_RTMPTE \+, CURLPROTO_RTMPS \+, CURLPROTO_RTMPTS \+, CURLPROTO_GOPHER }+++-------------------------------------------------------------------------------+#{ENUM CURLproxy \+, CURLPROXY_HTTP \+, CURLPROXY_HTTP_1_0 \+, CURLPROXY_SOCKS4 \+, CURLPROXY_SOCKS5 \+, CURLPROXY_SOCKS4A \+, CURLPROXY_SOCKS5_HOSTNAME }+++-------------------------------------------------------------------------------+#{ENUM CURLnetrc \+, CURL_NETRC_IGNORED \+, CURL_NETRC_OPTIONAL \+, CURL_NETRC_REQUIRED }+++-------------------------------------------------------------------------------+#{ENUM CURLauth \+, CURLAUTH_BASIC \+, CURLAUTH_DIGEST \+, CURLAUTH_DIGEST_IE \+, CURLAUTH_GSSNEGOTIATE \+, CURLAUTH_NTLM \+, CURLAUTH_NTLM_WB \+, CURLAUTH_ONLY \+, CURLAUTH_ANY \+, CURLAUTH_ANYSAFE }+++-------------------------------------------------------------------------------+#{ENUM CURLtlsauth \+, CURL_TLSAUTH_SRP }+++-------------------------------------------------------------------------------+#{ENUM CURLredir \+, CURL_REDIR_GET_ALL \+, CURL_REDIR_POST_301 \+, CURL_REDIR_POST_302 \+, CURL_REDIR_POST_303 \+, CURL_REDIR_POST_ALL }+++-------------------------------------------------------------------------------+#{ENUM CURLhttpver \+, CURL_HTTP_VERSION_NONE \+, CURL_HTTP_VERSION_1_0 \+, CURL_HTTP_VERSION_1_1 }+++-------------------------------------------------------------------------------+#{ENUM CURLftpcreate \+, CURLFTP_CREATE_DIR_NONE \+, CURLFTP_CREATE_DIR \+, CURLFTP_CREATE_DIR_RETRY }+++-------------------------------------------------------------------------------+#{ENUM CURLftpauth \+, CURLFTPAUTH_DEFAULT \+, CURLFTPAUTH_SSL \+, CURLFTPAUTH_TLS }+++-------------------------------------------------------------------------------+#{ENUM CURLftpssl \+, CURLFTPSSL_CCC_NONE \+, CURLFTPSSL_CCC_PASSIVE \+, CURLFTPSSL_CCC_ACTIVE }+ ++-------------------------------------------------------------------------------+#{ENUM CURLftpmethod \+, CURLFTPMETHOD_DEFAULT \+, CURLFTPMETHOD_MULTICWD \+, CURLFTPMETHOD_NOCWD \+, CURLFTPMETHOD_SINGLECWD }+++-------------------------------------------------------------------------------+#{ENUM CURLrtspreq \+, CURL_RTSPREQ_OPTIONS \+, CURL_RTSPREQ_DESCRIBE \+, CURL_RTSPREQ_ANNOUNCE \+, CURL_RTSPREQ_SETUP \+, CURL_RTSPREQ_PLAY \+, CURL_RTSPREQ_PAUSE \+, CURL_RTSPREQ_TEARDOWN \+, CURL_RTSPREQ_GET_PARAMETER \+, CURL_RTSPREQ_SET_PARAMETER \+, CURL_RTSPREQ_RECORD \+, CURL_RTSPREQ_RECEIVE }+++-------------------------------------------------------------------------------+#{ENUM CURLtimecond \+, CURL_TIMECOND_NONE \+, CURL_TIMECOND_IFMODSINCE \+, CURL_TIMECOND_IFUNMODSINCE \+, CURL_TIMECOND_LASTMOD }+++{-+-------------------------------------------------------------------------------+#{ENUM CURLclosepol \+, CURLCLOSEPOLICY_NONE \+, CURLCLOSEPOLICY_OLDEST \+, CURLCLOSEPOLICY_LEAST_RECENTLY_USED \+, CURLCLOSEPOLICY_LEAST_TRAFFIC \+, CURLCLOSEPOLICY_SLOWEST \+, CURLCLOSEPOLICY_CALLBACK }+-}+++-------------------------------------------------------------------------------+#{ENUM CURLipresolve \+, CURL_IPRESOLVE_WHATEVER \+, CURL_IPRESOLVE_V4 \+, CURL_IPRESOLVE_V6 }+++-------------------------------------------------------------------------------+#{ENUM CURLusessl \+, CURLUSESSL_NONE \+, CURLUSESSL_TRY \+, CURLUSESSL_CONTROL \+, CURLUSESSL_ALL }+++-------------------------------------------------------------------------------+#{ENUM CURLsslver \+, CURL_SSLVERSION_DEFAULT \+, CURL_SSLVERSION_TLSv1 \+, CURL_SSLVERSION_SSLv2 \+, CURL_SSLVERSION_SSLv3 }+++-------------------------------------------------------------------------------+#{ENUM CURLsslopt \+, CURLSSLOPT_ALLOW_BEAST }+++-------------------------------------------------------------------------------+#{ENUM CURLgssapi \+, CURLGSSAPI_DELEGATION_NONE \+, CURLGSSAPI_DELEGATION_POLICY_FLAG \+, CURLGSSAPI_DELEGATION_FLAG }+++-------------------------------------------------------------------------------+#{ENUM CURLsshauth \+, CURLSSH_AUTH_ANY \+, CURLSSH_AUTH_NONE \+, CURLSSH_AUTH_PUBLICKEY \+, CURLSSH_AUTH_PASSWORD \+, CURLSSH_AUTH_HOST \+, CURLSSH_AUTH_KEYBOARD \+, CURLSSH_AUTH_AGENT \+, CURLSSH_AUTH_DEFAULT }+++-------------------------------------------------------------------------------+data CURLSH = CURLSH Unique (MVar ((Ptr C.CURLSH),(FunPtr ()),(FunPtr ())))++instance Show CURLSH where+ showsPrec p (CURLSH u _) = showString "CURLSH#" . showsPrec p (hashUnique u)++instance Eq CURLSH where+ (CURLSH u1 _) == (CURLSH u2 _) = u1 == u2+++-------------------------------------------------------------------------------+data CURLSHE = CURLSHE CURLSH String String CURLSHC+ deriving (Eq, Typeable)++instance Exception CURLSHE++instance Show CURLSHE where+ showsPrec p (CURLSHE curlsh func desc code) =+ showsPrec p code . showString " (" . showString func . showString " "+ . showsPrec p curlsh . showString ") " . showString desc+++-------------------------------------------------------------------------------+data CURLSHC+ = CURLSHE_FAILED_INIT+ | CURLSHE_BAD_OPTION+ | CURLSHE_IN_USE+ | CURLSHE_INVALID+ | CURLSHE_NOMEM+ | CURLSHE_NOT_BUILT_IN+ | CURLSHE_UNKNOWN_ERROR+ deriving (Show, Eq)++toCURLSHC :: CInt -> CURLSHC+toCURLSHC x = case x of+ #{const CURLSHE_BAD_OPTION } -> CURLSHE_BAD_OPTION+ #{const CURLSHE_IN_USE } -> CURLSHE_IN_USE+ #{const CURLSHE_INVALID } -> CURLSHE_INVALID+ #{const CURLSHE_NOMEM } -> CURLSHE_NOMEM+ #{const CURLSHE_NOT_BUILT_IN} -> CURLSHE_NOT_BUILT_IN+ _ -> CURLSHE_UNKNOWN_ERROR+++-------------------------------------------------------------------------------+data CURLSHoption+ = CURLSHOPT_SHARE CURLSHlockdata+ | CURLSHOPT_UNSHARE CURLSHlockdata+++-------------------------------------------------------------------------------+#{ENUM CURLSHlockdata \+, CURL_LOCK_DATA_COOKIE \+, CURL_LOCK_DATA_DNS \+, CURL_LOCK_DATA_SSL_SESSION }+++-------------------------------------------------------------------------------+data CURL_version_info = CURL_version_info+ { curl_version_info_version :: String+ , curl_version_info_version_num :: Int+ , curl_version_info_host :: String+ , curl_version_info_features :: [CURLfeature]+ , curl_version_info_ssl_version :: String+ , curl_version_info_ssl_version_num :: Int+ , curl_version_info_libz_version :: String+ , curl_version_info_protocols :: [String]+ , curl_version_info_ares :: String+ , curl_version_info_ares_num :: Int+ , curl_version_info_libidn :: String+ , curl_version_info_iconv_ver_num :: Int+ , curl_version_info_libssh_version :: String+ } deriving (Show)+++-------------------------------------------------------------------------------+data CURLinfo a where+ CURLINFO_EFFECTIVE_URL :: CURLinfo String -- Ptr CChar+ CURLINFO_RESPONSE_CODE :: CURLinfo CLong -- CLong+ CURLINFO_HTTP_CONNECTCODE :: CURLinfo CLong -- CLong+ CURLINFO_FILETIME :: CURLinfo (Maybe UTCTime) -- CLong+ CURLINFO_TOTAL_TIME :: CURLinfo Double -- CDouble+ CURLINFO_NAMELOOKUP_TIME :: CURLinfo Double -- CDouble+ CURLINFO_CONNECT_TIME :: CURLinfo Double -- CDouble+ CURLINFO_APPCONNECT_TIME :: CURLinfo Double -- CDouble+ CURLINFO_PRETRANSFER_TIME :: CURLinfo Double -- CDouble+ CURLINFO_STARTTRANSFER_TIME :: CURLinfo Double -- CDouble+ CURLINFO_REDIRECT_TIME :: CURLinfo Double -- CDouble+ CURLINFO_REDIRECT_COUNT :: CURLinfo CLong -- CLong+ CURLINFO_REDIRECT_URL :: CURLinfo String -- Ptr CChar+ CURLINFO_SIZE_UPLOAD :: CURLinfo Double -- CDouble+ CURLINFO_SIZE_DOWNLOAD :: CURLinfo Double -- CDouble+ CURLINFO_SPEED_DOWNLOAD :: CURLinfo Double -- CDouble+ CURLINFO_SPEED_UPLOAD :: CURLinfo Double -- CDouble+ CURLINFO_HEADER_SIZE :: CURLinfo CLong -- CLong+ CURLINFO_REQUEST_SIZE :: CURLinfo CLong -- CLong+ CURLINFO_SSL_VERIFYRESULT :: CURLinfo CLong -- CLong+ CURLINFO_SSL_ENGINES :: CURLinfo [String] -- Ptr CURLslist+ CURLINFO_CONTENT_LENGTH_DOWNLOAD :: CURLinfo Double -- CDouble+ CURLINFO_CONTENT_LENGTH_UPLOAD :: CURLinfo Double -- CDouble+ CURLINFO_CONTENT_TYPE :: CURLinfo String -- Ptr CChar+ -- CURLINFO_PRIVATE+ CURLINFO_HTTPAUTH_AVAIL :: CURLinfo [CURLauth] -- CLong+ CURLINFO_PROXYAUTH_AVAIL :: CURLinfo [CURLauth] -- CLong+ CURLINFO_OS_ERRNO :: CURLinfo CLong -- CLong+ CURLINFO_NUM_CONNECTS :: CURLinfo CLong -- CLong+ CURLINFO_PRIMARY_IP :: CURLinfo String -- Ptr CChar+ CURLINFO_PRIMARY_PORT :: CURLinfo CLong -- CLong+ CURLINFO_LOCAL_IP :: CURLinfo String -- Ptr CChar+ CURLINFO_LOCAL_PORT :: CURLinfo CLong -- CLong+ CURLINFO_COOKIELIST :: CURLinfo [String] -- Ptr CURLslist+ CURLINFO_LASTSOCKET :: CURLinfo CLong -- CLong+ CURLINFO_FTP_ENTRY_PATH :: CURLinfo String -- Ptr CChar+ CURLINFO_CERTINFO :: CURLinfo [[String]] -- Ptr CURLcertinfo+ CURLINFO_CONDITION_UNMET :: CURLinfo Bool -- CLong+ CURLINFO_RTSP_SESSION_ID :: CURLinfo String -- Ptr CChar+ CURLINFO_RTSP_CLIENT_CSEQ :: CURLinfo CLong -- CLong+ CURLINFO_RTSP_SERVER_CSEQ :: CURLinfo CLong -- CLong+ CURLINFO_RTSP_CSEQ_RECV :: CURLinfo CLong -- CLong+++-------------------------------------------------------------------------------+data CURLoption+ ---- BEHAVIOR OPTIONS -------------------------------------------------------+ = CURLOPT_VERBOSE Bool+ | CURLOPT_HEADER Bool+ | CURLOPT_NOPROGRESS Bool+ | CURLOPT_NOSIGNAL Bool+ | CURLOPT_WILDCARDMATCH Bool++ ---- CALLBACK OPTIONS -------------------------------------------------------+ | CURLOPT_WRITEFUNCTION (Maybe CURL_write_callback)+ -- CURLOPT_WRITEDATA+ | CURLOPT_READFUNCTION (Maybe CURL_read_callback)+ -- CURLOPT_READDATA+ -- CURLOPT_IOCTLFUNCTION+ -- CURLOPT_IOCTLDATA+ -- CURLOPT_SEEKFUNCTION+ -- CURLOPT_SEEKDATA+ -- CURLOPT_SOCKOPTFUNCTION+ -- CURLOPT_SOCKOPTDATA+ -- CURLOPT_OPENSOCKETFUNCTION+ -- CURLOPT_OPENSOCKETDATA+ -- CURLOPT_CLOSESOCKETFUNCTION+ -- CURLOPT_CLOSESOCKETDATA+ -- CURLOPT_PROGRESSFUNCTION+ -- CURLOPT_PROGRESSDATA+ -- CURLOPT_HEADERFUNCTION+ -- CURLOPT_HEADERDATA+ -- CURLOPT_DEBUGFUNCTION+ -- CURLOPT_DEBUGDATA+ -- CURLOPT_SSL_CTX_FUNCTION+ -- CURLOPT_SSL_CTX_DATA+ -- CURLOPT_CONV_TO_NETWORK_FUNCTION+ -- CURLOPT_CONV_FROM_NETWORK_FUNCTION+ -- CURLOPT_CONV_FROM_UTF8_FUNCTION+ -- CURLOPT_INTERLEAVEFUNCTION+ -- CURLOPT_INTERLEAVEDATA+ -- CURLOPT_CHUNK_BGN_FUNCTION+ -- CURLOPT_CHUNK_END_FUNCTION+ -- CURLOPT_CHUNK_DATA+ -- CURLOPT_FNMATCH_FUNCTION+ -- CURLOPT_FNMATCH_DATA++ ---- ERROR OPTIONS ----------------------------------------------------------+ -- CURLOPT_ERRORBUFFER ?+ -- CURLOPT_STDERR ?+ | CURLOPT_FAILONERROR Bool++ ---- NETWORK OPTIONS --------------------------------------------------------+ | CURLOPT_URL String+ | CURLOPT_PROTOCOLS [CURLproto]+ | CURLOPT_REDIR_PROTOCOLS [CURLproto]+ | CURLOPT_PROXY String+ | CURLOPT_PROXYPORT CLong+ | CURLOPT_PROXYTYPE CURLproxy+ | CURLOPT_NOPROXY String -- or better [String]+ | CURLOPT_HTTPPROXYTUNNEL Bool+ | CURLOPT_SOCKS5_GSSAPI_SERVICE String+ | CURLOPT_SOCKS5_GSSAPI_NEC Bool+ | CURLOPT_INTERFACE String+ | CURLOPT_LOCALPORT CLong+ | CURLOPT_LOCALPORTRANGE CLong+ | CURLOPT_DNS_CACHE_TIMEOUT CLong+ -- CURLOPT_DNS_USE_GLOBAL_CACHE Bool+ | CURLOPT_BUFFERSIZE CLong+ | CURLOPT_PORT CLong+ | CURLOPT_TCP_NODELAY Bool+ | CURLOPT_ADDRESS_SCOPE CLong+ | CURLOPT_TCP_KEEPALIVE Bool+ | CURLOPT_TCP_KEEPIDLE CLong+ | CURLOPT_TCP_KEEPINTVL CLong++ ---- NAMES and PASSWORDS OPTIONS (Authentication) ---------------------------+ | CURLOPT_NETRC CURLnetrc+ | CURLOPT_NETRC_FILE FilePath+ | CURLOPT_USERPWD String+ | CURLOPT_PROXYUSERPWD String+ | CURLOPT_USERNAME String+ | CURLOPT_PASSWORD String+ | CURLOPT_PROXYUSERNAME String+ | CURLOPT_PROXYPASSWORD String+ | CURLOPT_HTTPAUTH [CURLauth]+ | CURLOPT_TLSAUTH_TYPE String -- should be [CURLtlsauth]+ | CURLOPT_TLSAUTH_USERNAME String+ | CURLOPT_TLSAUTH_PASSWORD String+ | CURLOPT_PROXYAUTH [CURLauth]++ ---- HTTP OPTIONS -----------------------------------------------------------+ | CURLOPT_AUTOREFERER Bool+ | CURLOPT_ACCEPT_ENCODING String+ | CURLOPT_TRANSFER_ENCODING Bool+ | CURLOPT_FOLLOWLOCATION Bool+ | CURLOPT_UNRESTRICTED_AUTH Bool+ | CURLOPT_MAXREDIRS CLong+ | CURLOPT_POSTREDIR [CURLredir]+ | CURLOPT_PUT Bool+ | CURLOPT_POST Bool+ -- CURLOPT_POSTFIELDS String -- not copied+ | CURLOPT_POSTFIELDSIZE CLong+ | CURLOPT_POSTFIELDSIZE_LARGE Int64+ | CURLOPT_COPYPOSTFIELDS String+ -- CURLOPT_HTTPPOST [CURL_httppost]+ | CURLOPT_REFERER String+ | CURLOPT_USERAGENT String+ | CURLOPT_HTTPHEADER [String]+ | CURLOPT_HTTP200ALIASES [String]+ | CURLOPT_COOKIE String -- or better [String]+ | CURLOPT_COOKIEFILE FilePath+ | CURLOPT_COOKIEJAR FilePath+ | CURLOPT_COOKIESESSION Bool+ | CURLOPT_COOKIELIST String+ | CURLOPT_HTTPGET Bool+ | CURLOPT_HTTP_VERSION CURLhttpver+ | CURLOPT_IGNORE_CONTENT_LENGTH Bool+ | CURLOPT_HTTP_CONTENT_DECODING Bool+ | CURLOPT_HTTP_TRANSFER_DECODING Bool++ ---- SMTP OPTIONS -----------------------------------------------------------+ | CURLOPT_MAIL_FROM String+ | CURLOPT_MAIL_RCPT [String]+ | CURLOPT_MAIL_AUTH String++ ---- TFTP OPTIONS -----------------------------------------------------------+ | CURLOPT_TFTP_BLKSIZE CLong++ ---- FTP OPTIONS ------------------------------------------------------------+ | CURLOPT_FTPPORT String+ | CURLOPT_QUOTE [String]+ | CURLOPT_POSTQUOTE [String]+ | CURLOPT_PREQUOTE [String]+ | CURLOPT_DIRLISTONLY Bool+ | CURLOPT_APPEND Bool+ | CURLOPT_FTP_USE_EPRT Bool+ | CURLOPT_FTP_USE_EPSV Bool+ | CURLOPT_FTP_USE_PRET Bool+ | CURLOPT_FTP_CREATE_MISSING_DIRS CURLftpcreate+ | CURLOPT_FTP_RESPONSE_TIMEOUT CLong+ | CURLOPT_FTP_ALTERNATIVE_TO_USER String+ | CURLOPT_FTP_SKIP_PASV_IP Bool+ | CURLOPT_FTPSSLAUTH CURLftpauth+ | CURLOPT_FTP_SSL_CCC CURLftpssl+ | CURLOPT_FTP_ACCOUNT String+ | CURLOPT_FTP_FILEMETHOD CURLftpmethod++ ---- RTSP OPTIONS -----------------------------------------------------------+ | CURLOPT_RTSP_REQUEST CURLrtspreq+ | CURLOPT_RTSP_SESSION_ID String+ | CURLOPT_RTSP_STREAM_URI String+ | CURLOPT_RTSP_TRANSPORT String+ | CURLOPT_RTSP_HEADER [String]+ | CURLOPT_RTSP_CLIENT_CSEQ CLong+ | CURLOPT_RTSP_SERVER_CSEQ CLong++ ---- PROTOCOL OPTIONS -------------------------------------------------------+ | CURLOPT_TRANSFERTEXT Bool+ | CURLOPT_PROXY_TRANSFER_MODE Bool+ | CURLOPT_CRLF Bool+ | CURLOPT_RANGE String+ | CURLOPT_RESUME_FROM CLong+ | CURLOPT_RESUME_FROM_LARGE Int64+ | CURLOPT_CUSTOMREQUEST String+ | CURLOPT_FILETIME Bool+ | CURLOPT_NOBODY Bool+ | CURLOPT_INFILESIZE CLong+ | CURLOPT_INFILESIZE_LARGE Int64+ | CURLOPT_UPLOAD Bool+ | CURLOPT_MAXFILESIZE CLong+ | CURLOPT_MAXFILESIZE_LARGE Int64+ | CURLOPT_TIMECONDITION CURLtimecond+ | CURLOPT_TIMEVALUE UTCTime++ ---- CONNECTION OPTIONS -----------------------------------------------------+ | CURLOPT_TIMEOUT CLong+ | CURLOPT_TIMEOUT_MS CLong+ | CURLOPT_LOW_SPEED_LIMIT CLong+ | CURLOPT_LOW_SPEED_TIME CLong+ | CURLOPT_MAX_SEND_SPEED_LARGE Int64+ | CURLOPT_MAX_RECV_SPEED_LARGE Int64+ | CURLOPT_MAXCONNECTS CLong+ -- CURLOPT_CLOSEPOLICY CURLclosepol+ | CURLOPT_FRESH_CONNECT Bool+ | CURLOPT_FORBID_REUSE Bool+ | CURLOPT_CONNECTTIMEOUT CLong+ | CURLOPT_CONNECTTIMEOUT_MS CLong+ | CURLOPT_IPRESOLVE CURLipresolve+ | CURLOPT_CONNECT_ONLY Bool+ | CURLOPT_USE_SSL CURLusessl+ | CURLOPT_RESOLVE [String]+ | CURLOPT_DNS_SERVERS String -- or better [String]+ | CURLOPT_ACCEPTTIMEOUT_MS CLong++ ---- SSL and SECURITY OPTIONS -----------------------------------------------+ | CURLOPT_SSLCERT FilePath+ | CURLOPT_SSLCERTTYPE String+ | CURLOPT_SSLKEY FilePath+ | CURLOPT_SSLKEYTYPE String+ | CURLOPT_KEYPASSWD String+ | CURLOPT_SSLENGINE String+ | CURLOPT_SSLENGINE_DEFAULT Bool+ | CURLOPT_SSLVERSION CURLsslver+ | CURLOPT_SSL_VERIFYPEER Bool+ | CURLOPT_CAINFO FilePath+ | CURLOPT_ISSUERCERT FilePath+ | CURLOPT_CAPATH FilePath+ | CURLOPT_CRLFILE FilePath+ | CURLOPT_SSL_VERIFYHOST CLong+ | CURLOPT_CERTINFO Bool+ | CURLOPT_RANDOM_FILE FilePath+ | CURLOPT_EGDSOCKET String+ | CURLOPT_SSL_CIPHER_LIST String -- or better [String]+ | CURLOPT_SSL_SESSIONID_CACHE Bool+ | CURLOPT_SSL_OPTIONS [CURLsslopt]+ | CURLOPT_KRBLEVEL String+ | CURLOPT_GSSAPI_DELEGATION CURLgssapi++ ---- SSH OPTIONS ------------------------------------------------------------+ | CURLOPT_SSH_AUTH_TYPES [CURLsshauth]+ | CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 String+ | CURLOPT_SSH_PUBLIC_KEYFILE FilePath+ | CURLOPT_SSH_PRIVATE_KEYFILE FilePath+ | CURLOPT_SSH_KNOWNHOSTS FilePath+ -- CURLOPT_SSH_KEYFUNCTION (Maybe CURL_sshkey_callback)+ -- CURLOPT_SSH_KEYDATA -- ?++ ---- OTHER OPTIONS ----------------------------------------------------------+ -- CURLOPT_PRIVATE -- ?+ | CURLOPT_SHARE (Maybe CURLSH)+ | CURLOPT_NEW_FILE_PERMS CLong+ | CURLOPT_NEW_DIRECTORY_PERMS CLong++ ---- TELNET OPTIONS ---------------------------------------------------------+ | CURLOPT_TELNETOPTIONS [String]+++-------------------------------------------------------------------------------+type CURL_write_callback = ByteString -> IO CURL_write_response++data CURL_write_response+ = CURL_WRITEFUNC_OK+ | CURL_WRITEFUNC_FAIL+ | CURL_WRITEFUNC_PAUSE+ deriving (Eq)+++type CURL_read_callback = Int -> IO CURL_read_response++data CURL_read_response+ = CURL_READFUNC_OK ByteString+ | CURL_READFUNC_ABORT+ | CURL_READFUNC_PAUSE+ deriving (Eq)++++-------------------------------------------------------------------------------+data CURLC+ = CURLE_UNSUPPORTED_PROTOCOL+ | CURLE_FAILED_INIT+ | CURLE_URL_MALFORMAT+ | CURLE_NOT_BUILT_IN+ | CURLE_COULDNT_RESOLVE_PROXY+ | CURLE_COULDNT_RESOLVE_HOST+ | CURLE_COULDNT_CONNECT+ | CURLE_FTP_WEIRD_SERVER_REPLY+ | CURLE_REMOTE_ACCESS_DENIED+ | CURLE_FTP_ACCEPT_FAILED+ | CURLE_FTP_WEIRD_PASS_REPLY+ | CURLE_FTP_ACCEPT_TIMEOUT+ | CURLE_FTP_WEIRD_PASV_REPLY+ | CURLE_FTP_WEIRD_227_FORMAT+ | CURLE_FTP_CANT_GET_HOST+ | CURLE_FTP_COULDNT_SET_TYPE+ | CURLE_PARTIAL_FILE+ | CURLE_FTP_COULDNT_RETR_FILE+ | CURLE_QUOTE_ERROR+ | CURLE_HTTP_RETURNED_ERROR+ | CURLE_WRITE_ERROR+ | CURLE_UPLOAD_FAILED+ | CURLE_READ_ERROR+ | CURLE_OUT_OF_MEMORY+ | CURLE_OPERATION_TIMEDOUT+ | CURLE_FTP_PORT_FAILED+ | CURLE_FTP_COULDNT_USE_REST+ | CURLE_RANGE_ERROR+ | CURLE_HTTP_POST_ERROR+ | CURLE_SSL_CONNECT_ERROR+ | CURLE_BAD_DOWNLOAD_RESUME+ | CURLE_FILE_COULDNT_READ_FILE+ | CURLE_LDAP_CANNOT_BIND+ | CURLE_LDAP_SEARCH_FAILED+ | CURLE_FUNCTION_NOT_FOUND+ | CURLE_ABORTED_BY_CALLBACK+ | CURLE_BAD_FUNCTION_ARGUMENT+ | CURLE_INTERFACE_FAILED+ | CURLE_TOO_MANY_REDIRECTS+ | CURLE_UNKNOWN_OPTION+ | CURLE_TELNET_OPTION_SYNTAX+ | CURLE_PEER_FAILED_VERIFICATION+ | CURLE_GOT_NOTHING+ | CURLE_SSL_ENGINE_NOTFOUND+ | CURLE_SSL_ENGINE_SETFAILED+ | CURLE_SEND_ERROR+ | CURLE_RECV_ERROR+ | CURLE_SSL_CERTPROBLEM+ | CURLE_SSL_CIPHER+ | CURLE_SSL_CACERT+ | CURLE_BAD_CONTENT_ENCODING+ | CURLE_LDAP_INVALID_URL+ | CURLE_FILESIZE_EXCEEDED+ | CURLE_USE_SSL_FAILED+ | CURLE_SEND_FAIL_REWIND+ | CURLE_SSL_ENGINE_INITFAILED+ | CURLE_LOGIN_DENIED+ | CURLE_TFTP_NOTFOUND+ | CURLE_TFTP_PERM+ | CURLE_REMOTE_DISK_FULL+ | CURLE_TFTP_ILLEGAL+ | CURLE_TFTP_UNKNOWNID+ | CURLE_REMOTE_FILE_EXISTS+ | CURLE_TFTP_NOSUCHUSER+ | CURLE_CONV_FAILED+ | CURLE_CONV_REQD+ | CURLE_SSL_CACERT_BADFILE+ | CURLE_REMOTE_FILE_NOT_FOUND+ | CURLE_SSH+ | CURLE_SSL_SHUTDOWN_FAILED+ | CURLE_AGAIN+ | CURLE_SSL_CRL_BADFILE+ | CURLE_SSL_ISSUER_ERROR+ | CURLE_FTP_PRET_FAILED+ | CURLE_RTSP_CSEQ_ERROR+ | CURLE_RTSP_SESSION_ERROR+ | CURLE_FTP_BAD_FILE_LIST+ | CURLE_CHUNK_FAILED+ | CURLE_UNKNOWN_ERROR+ deriving (Show, Eq)++toCURLC :: CInt -> CURLC+toCURLC x = case x of+ #{const CURLE_UNSUPPORTED_PROTOCOL } -> CURLE_UNSUPPORTED_PROTOCOL+ #{const CURLE_FAILED_INIT } -> CURLE_FAILED_INIT+ #{const CURLE_URL_MALFORMAT } -> CURLE_URL_MALFORMAT+ #{const CURLE_NOT_BUILT_IN } -> CURLE_NOT_BUILT_IN+ #{const CURLE_COULDNT_RESOLVE_PROXY } -> CURLE_COULDNT_RESOLVE_PROXY+ #{const CURLE_COULDNT_RESOLVE_HOST } -> CURLE_COULDNT_RESOLVE_HOST+ #{const CURLE_COULDNT_CONNECT } -> CURLE_COULDNT_CONNECT+ #{const CURLE_FTP_WEIRD_SERVER_REPLY } -> CURLE_FTP_WEIRD_SERVER_REPLY+ #{const CURLE_REMOTE_ACCESS_DENIED } -> CURLE_REMOTE_ACCESS_DENIED+ #{const CURLE_FTP_ACCEPT_FAILED } -> CURLE_FTP_ACCEPT_FAILED+ #{const CURLE_FTP_WEIRD_PASS_REPLY } -> CURLE_FTP_WEIRD_PASS_REPLY+ #{const CURLE_FTP_ACCEPT_TIMEOUT } -> CURLE_FTP_ACCEPT_TIMEOUT+ #{const CURLE_FTP_WEIRD_PASV_REPLY } -> CURLE_FTP_WEIRD_PASV_REPLY+ #{const CURLE_FTP_WEIRD_227_FORMAT } -> CURLE_FTP_WEIRD_227_FORMAT+ #{const CURLE_FTP_CANT_GET_HOST } -> CURLE_FTP_CANT_GET_HOST+ #{const CURLE_FTP_COULDNT_SET_TYPE } -> CURLE_FTP_COULDNT_SET_TYPE+ #{const CURLE_PARTIAL_FILE } -> CURLE_PARTIAL_FILE+ #{const CURLE_FTP_COULDNT_RETR_FILE } -> CURLE_FTP_COULDNT_RETR_FILE+ #{const CURLE_QUOTE_ERROR } -> CURLE_QUOTE_ERROR+ #{const CURLE_HTTP_RETURNED_ERROR } -> CURLE_HTTP_RETURNED_ERROR+ #{const CURLE_WRITE_ERROR } -> CURLE_WRITE_ERROR+ #{const CURLE_UPLOAD_FAILED } -> CURLE_UPLOAD_FAILED+ #{const CURLE_READ_ERROR } -> CURLE_READ_ERROR+ #{const CURLE_OUT_OF_MEMORY } -> CURLE_OUT_OF_MEMORY+ #{const CURLE_OPERATION_TIMEDOUT } -> CURLE_OPERATION_TIMEDOUT+ #{const CURLE_FTP_PORT_FAILED } -> CURLE_FTP_PORT_FAILED+ #{const CURLE_FTP_COULDNT_USE_REST } -> CURLE_FTP_COULDNT_USE_REST+ #{const CURLE_RANGE_ERROR } -> CURLE_RANGE_ERROR+ #{const CURLE_HTTP_POST_ERROR } -> CURLE_HTTP_POST_ERROR+ #{const CURLE_SSL_CONNECT_ERROR } -> CURLE_SSL_CONNECT_ERROR+ #{const CURLE_BAD_DOWNLOAD_RESUME } -> CURLE_BAD_DOWNLOAD_RESUME+ #{const CURLE_FILE_COULDNT_READ_FILE } -> CURLE_FILE_COULDNT_READ_FILE+ #{const CURLE_LDAP_CANNOT_BIND } -> CURLE_LDAP_CANNOT_BIND+ #{const CURLE_LDAP_SEARCH_FAILED } -> CURLE_LDAP_SEARCH_FAILED+ #{const CURLE_FUNCTION_NOT_FOUND } -> CURLE_FUNCTION_NOT_FOUND+ #{const CURLE_ABORTED_BY_CALLBACK } -> CURLE_ABORTED_BY_CALLBACK+ #{const CURLE_BAD_FUNCTION_ARGUMENT } -> CURLE_BAD_FUNCTION_ARGUMENT+ #{const CURLE_INTERFACE_FAILED } -> CURLE_INTERFACE_FAILED+ #{const CURLE_TOO_MANY_REDIRECTS } -> CURLE_TOO_MANY_REDIRECTS+ #{const CURLE_UNKNOWN_OPTION } -> CURLE_UNKNOWN_OPTION+ #{const CURLE_TELNET_OPTION_SYNTAX } -> CURLE_TELNET_OPTION_SYNTAX+ #{const CURLE_PEER_FAILED_VERIFICATION} -> CURLE_PEER_FAILED_VERIFICATION+ #{const CURLE_GOT_NOTHING } -> CURLE_GOT_NOTHING+ #{const CURLE_SSL_ENGINE_NOTFOUND } -> CURLE_SSL_ENGINE_NOTFOUND+ #{const CURLE_SSL_ENGINE_SETFAILED } -> CURLE_SSL_ENGINE_SETFAILED+ #{const CURLE_SEND_ERROR } -> CURLE_SEND_ERROR+ #{const CURLE_RECV_ERROR } -> CURLE_RECV_ERROR+ #{const CURLE_SSL_CERTPROBLEM } -> CURLE_SSL_CERTPROBLEM+ #{const CURLE_SSL_CIPHER } -> CURLE_SSL_CIPHER+ #{const CURLE_SSL_CACERT } -> CURLE_SSL_CACERT+ #{const CURLE_BAD_CONTENT_ENCODING } -> CURLE_BAD_CONTENT_ENCODING+ #{const CURLE_LDAP_INVALID_URL } -> CURLE_LDAP_INVALID_URL+ #{const CURLE_FILESIZE_EXCEEDED } -> CURLE_FILESIZE_EXCEEDED+ #{const CURLE_USE_SSL_FAILED } -> CURLE_USE_SSL_FAILED+ #{const CURLE_SEND_FAIL_REWIND } -> CURLE_SEND_FAIL_REWIND+ #{const CURLE_SSL_ENGINE_INITFAILED } -> CURLE_SSL_ENGINE_INITFAILED+ #{const CURLE_LOGIN_DENIED } -> CURLE_LOGIN_DENIED+ #{const CURLE_TFTP_NOTFOUND } -> CURLE_TFTP_NOTFOUND+ #{const CURLE_TFTP_PERM } -> CURLE_TFTP_PERM+ #{const CURLE_REMOTE_DISK_FULL } -> CURLE_REMOTE_DISK_FULL+ #{const CURLE_TFTP_ILLEGAL } -> CURLE_TFTP_ILLEGAL+ #{const CURLE_TFTP_UNKNOWNID } -> CURLE_TFTP_UNKNOWNID+ #{const CURLE_REMOTE_FILE_EXISTS } -> CURLE_REMOTE_FILE_EXISTS+ #{const CURLE_TFTP_NOSUCHUSER } -> CURLE_TFTP_NOSUCHUSER+ #{const CURLE_CONV_FAILED } -> CURLE_CONV_FAILED+ #{const CURLE_CONV_REQD } -> CURLE_CONV_REQD+ #{const CURLE_SSL_CACERT_BADFILE } -> CURLE_SSL_CACERT_BADFILE+ #{const CURLE_REMOTE_FILE_NOT_FOUND } -> CURLE_REMOTE_FILE_NOT_FOUND+ #{const CURLE_SSH } -> CURLE_SSH+ #{const CURLE_SSL_SHUTDOWN_FAILED } -> CURLE_SSL_SHUTDOWN_FAILED+ #{const CURLE_AGAIN } -> CURLE_AGAIN+ #{const CURLE_SSL_CRL_BADFILE } -> CURLE_SSL_CRL_BADFILE+ #{const CURLE_SSL_ISSUER_ERROR } -> CURLE_SSL_ISSUER_ERROR+ #{const CURLE_FTP_PRET_FAILED } -> CURLE_FTP_PRET_FAILED+ #{const CURLE_RTSP_CSEQ_ERROR } -> CURLE_RTSP_CSEQ_ERROR+ #{const CURLE_RTSP_SESSION_ERROR } -> CURLE_RTSP_SESSION_ERROR+ #{const CURLE_FTP_BAD_FILE_LIST } -> CURLE_FTP_BAD_FILE_LIST+ #{const CURLE_CHUNK_FAILED } -> CURLE_CHUNK_FAILED+ _ -> CURLE_UNKNOWN_ERROR+++-------------------------------------------------------------------------------+data CURLCB where+ CURLCB :: CURLCBT a -> FunPtr () -> CURLCB++data CURLCBT a where+ FWRITE :: CURLCBT CURL_write_callback+ FREAD :: CURLCBT CURL_read_callback++type CURLSL = (CInt, Ptr C.CURLslist)+++-------------------------------------------------------------------------------+data CURL = CURL Unique (MVar (Ptr C.CURL)) (IORef [CURLCB]) (IORef [CURLSL])++instance Show CURL where+ showsPrec p (CURL u _ _ _) = showString "CURL#" . showsPrec p (hashUnique u)++instance Eq CURL where+ (CURL u1 _ _ _) == (CURL u2 _ _ _) = u1 == u2+++-------------------------------------------------------------------------------+data CURLE = CURLE CURL String String CURLC+ deriving (Eq, Typeable)++instance Exception CURLE++instance Show CURLE where+ showsPrec p (CURLE curl func desc code) =+ showString "\n<curlhs> " . showString desc+ . showString "\n<curlhs> " . showsPrec p code . showString " ("+ . showString func . showString " <" . showsPrec p curl . showString ">)"++
+ Network/CURL000/curl-7.30.0/COPYING view
@@ -0,0 +1,21 @@+COPYRIGHT AND PERMISSION NOTICE++Copyright (c) 1996 - 2013, Daniel Stenberg, <daniel@haxx.se>.++All rights reserved.++Permission to use, copy, modify, and distribute this software for any purpose+with or without fee is hereby granted, provided that the above copyright+notice and this permission notice appear in all copies.++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 OF THIRD PARTY RIGHTS. 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.++Except as contained in this notice, the name of a copyright holder shall not+be used in advertising or otherwise to promote the sale, use or other dealings+in this Software without prior written authorization of the copyright holder.
+ Network/CURL000/curl-7.30.0/curl.h view
@@ -0,0 +1,2227 @@+#ifndef __CURL_CURL_H+#define __CURL_CURL_H+/***************************************************************************+ * _ _ ____ _+ * Project ___| | | | _ \| |+ * / __| | | | |_) | |+ * | (__| |_| | _ <| |___+ * \___|\___/|_| \_\_____|+ *+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.+ *+ * This software is licensed as described in the file COPYING, which+ * you should have received as part of this distribution. The terms+ * are also available at http://curl.haxx.se/docs/copyright.html.+ *+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell+ * copies of the Software, and permit persons to whom the Software is+ * furnished to do so, under the terms of the COPYING file.+ *+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY+ * KIND, either express or implied.+ *+ ***************************************************************************/++/*+ * If you have libcurl problems, all docs and details are found here:+ * http://curl.haxx.se/libcurl/+ *+ * curl-library mailing list subscription and unsubscription web interface:+ * http://cool.haxx.se/mailman/listinfo/curl-library/+ */++#include "curlver.h" /* libcurl version defines */+#include "curlbuild.h" /* libcurl build definitions */+#include "curlrules.h" /* libcurl rules enforcement */++/*+ * Define WIN32 when build target is Win32 API+ */++#if (defined(_WIN32) || defined(__WIN32__)) && \+ !defined(WIN32) && !defined(__SYMBIAN32__)+#define WIN32+#endif++#include <stdio.h>+#include <limits.h>++#if defined(__FreeBSD__) && (__FreeBSD__ >= 2)+/* Needed for __FreeBSD_version symbol definition */+#include <osreldate.h>+#endif++/* The include stuff here below is mainly for time_t! */+#include <sys/types.h>+#include <time.h>++#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__CYGWIN__)+#if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H) || defined(__LWIP_OPT_H__))+/* The check above prevents the winsock2 inclusion if winsock.h already was+ included, since they can't co-exist without problems */+#include <winsock2.h>+#include <ws2tcpip.h>+#endif+#endif++/* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish+ libc5-based Linux systems. Only include it on systems that are known to+ require it! */+#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \+ defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \+ defined(ANDROID) || defined(__ANDROID__) || \+ (defined(__FreeBSD_version) && (__FreeBSD_version < 800000))+#include <sys/select.h>+#endif++#if !defined(WIN32) && !defined(_WIN32_WCE)+#include <sys/socket.h>+#endif++#if !defined(WIN32) && !defined(__WATCOMC__) && !defined(__VXWORKS__)+#include <sys/time.h>+#endif++#ifdef __BEOS__+#include <support/SupportDefs.h>+#endif++#ifdef __cplusplus+extern "C" {+#endif++typedef void CURL;++/*+ * libcurl external API function linkage decorations.+ */++#ifdef CURL_STATICLIB+# define CURL_EXTERN+#elif defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__)+# if defined(BUILDING_LIBCURL)+# define CURL_EXTERN __declspec(dllexport)+# else+# define CURL_EXTERN __declspec(dllimport)+# endif+#elif defined(BUILDING_LIBCURL) && defined(CURL_HIDDEN_SYMBOLS)+# define CURL_EXTERN CURL_EXTERN_SYMBOL+#else+# define CURL_EXTERN+#endif++#ifndef curl_socket_typedef+/* socket typedef */+#if defined(WIN32) && !defined(__LWIP_OPT_H__)+typedef SOCKET curl_socket_t;+#define CURL_SOCKET_BAD INVALID_SOCKET+#else+typedef int curl_socket_t;+#define CURL_SOCKET_BAD -1+#endif+#define curl_socket_typedef+#endif /* curl_socket_typedef */++struct curl_httppost {+ struct curl_httppost *next; /* next entry in the list */+ char *name; /* pointer to allocated name */+ long namelength; /* length of name length */+ char *contents; /* pointer to allocated data contents */+ long contentslength; /* length of contents field */+ char *buffer; /* pointer to allocated buffer contents */+ long bufferlength; /* length of buffer field */+ char *contenttype; /* Content-Type */+ struct curl_slist* contentheader; /* list of extra headers for this form */+ struct curl_httppost *more; /* if one field name has more than one+ file, this link should link to following+ files */+ long flags; /* as defined below */+#define HTTPPOST_FILENAME (1<<0) /* specified content is a file name */+#define HTTPPOST_READFILE (1<<1) /* specified content is a file name */+#define HTTPPOST_PTRNAME (1<<2) /* name is only stored pointer+ do not free in formfree */+#define HTTPPOST_PTRCONTENTS (1<<3) /* contents is only stored pointer+ do not free in formfree */+#define HTTPPOST_BUFFER (1<<4) /* upload file from buffer */+#define HTTPPOST_PTRBUFFER (1<<5) /* upload file from pointer contents */+#define HTTPPOST_CALLBACK (1<<6) /* upload file contents by using the+ regular read callback to get the data+ and pass the given pointer as custom+ pointer */++ char *showfilename; /* The file name to show. If not set, the+ actual file name will be used (if this+ is a file part) */+ void *userp; /* custom pointer used for+ HTTPPOST_CALLBACK posts */+};++typedef int (*curl_progress_callback)(void *clientp,+ double dltotal,+ double dlnow,+ double ultotal,+ double ulnow);++#ifndef CURL_MAX_WRITE_SIZE+ /* Tests have proven that 20K is a very bad buffer size for uploads on+ Windows, while 16K for some odd reason performed a lot better.+ We do the ifndef check to allow this value to easier be changed at build+ time for those who feel adventurous. The practical minimum is about+ 400 bytes since libcurl uses a buffer of this size as a scratch area+ (unrelated to network send operations). */+#define CURL_MAX_WRITE_SIZE 16384+#endif++#ifndef CURL_MAX_HTTP_HEADER+/* The only reason to have a max limit for this is to avoid the risk of a bad+ server feeding libcurl with a never-ending header that will cause reallocs+ infinitely */+#define CURL_MAX_HTTP_HEADER (100*1024)+#endif++/* This is a magic return code for the write callback that, when returned,+ will signal libcurl to pause receiving on the current transfer. */+#define CURL_WRITEFUNC_PAUSE 0x10000001++typedef size_t (*curl_write_callback)(char *buffer,+ size_t size,+ size_t nitems,+ void *outstream);++++/* enumeration of file types */+typedef enum {+ CURLFILETYPE_FILE = 0,+ CURLFILETYPE_DIRECTORY,+ CURLFILETYPE_SYMLINK,+ CURLFILETYPE_DEVICE_BLOCK,+ CURLFILETYPE_DEVICE_CHAR,+ CURLFILETYPE_NAMEDPIPE,+ CURLFILETYPE_SOCKET,+ CURLFILETYPE_DOOR, /* is possible only on Sun Solaris now */++ CURLFILETYPE_UNKNOWN /* should never occur */+} curlfiletype;++#define CURLFINFOFLAG_KNOWN_FILENAME (1<<0)+#define CURLFINFOFLAG_KNOWN_FILETYPE (1<<1)+#define CURLFINFOFLAG_KNOWN_TIME (1<<2)+#define CURLFINFOFLAG_KNOWN_PERM (1<<3)+#define CURLFINFOFLAG_KNOWN_UID (1<<4)+#define CURLFINFOFLAG_KNOWN_GID (1<<5)+#define CURLFINFOFLAG_KNOWN_SIZE (1<<6)+#define CURLFINFOFLAG_KNOWN_HLINKCOUNT (1<<7)++/* Content of this structure depends on information which is known and is+ achievable (e.g. by FTP LIST parsing). Please see the url_easy_setopt(3) man+ page for callbacks returning this structure -- some fields are mandatory,+ some others are optional. The FLAG field has special meaning. */+struct curl_fileinfo {+ char *filename;+ curlfiletype filetype;+ time_t time;+ unsigned int perm;+ int uid;+ int gid;+ curl_off_t size;+ long int hardlinks;++ struct {+ /* If some of these fields is not NULL, it is a pointer to b_data. */+ char *time;+ char *perm;+ char *user;+ char *group;+ char *target; /* pointer to the target filename of a symlink */+ } strings;++ unsigned int flags;++ /* used internally */+ char * b_data;+ size_t b_size;+ size_t b_used;+};++/* return codes for CURLOPT_CHUNK_BGN_FUNCTION */+#define CURL_CHUNK_BGN_FUNC_OK 0+#define CURL_CHUNK_BGN_FUNC_FAIL 1 /* tell the lib to end the task */+#define CURL_CHUNK_BGN_FUNC_SKIP 2 /* skip this chunk over */++/* if splitting of data transfer is enabled, this callback is called before+ download of an individual chunk started. Note that parameter "remains" works+ only for FTP wildcard downloading (for now), otherwise is not used */+typedef long (*curl_chunk_bgn_callback)(const void *transfer_info,+ void *ptr,+ int remains);++/* return codes for CURLOPT_CHUNK_END_FUNCTION */+#define CURL_CHUNK_END_FUNC_OK 0+#define CURL_CHUNK_END_FUNC_FAIL 1 /* tell the lib to end the task */++/* If splitting of data transfer is enabled this callback is called after+ download of an individual chunk finished.+ Note! After this callback was set then it have to be called FOR ALL chunks.+ Even if downloading of this chunk was skipped in CHUNK_BGN_FUNC.+ This is the reason why we don't need "transfer_info" parameter in this+ callback and we are not interested in "remains" parameter too. */+typedef long (*curl_chunk_end_callback)(void *ptr);++/* return codes for FNMATCHFUNCTION */+#define CURL_FNMATCHFUNC_MATCH 0 /* string corresponds to the pattern */+#define CURL_FNMATCHFUNC_NOMATCH 1 /* pattern doesn't match the string */+#define CURL_FNMATCHFUNC_FAIL 2 /* an error occurred */++/* callback type for wildcard downloading pattern matching. If the+ string matches the pattern, return CURL_FNMATCHFUNC_MATCH value, etc. */+typedef int (*curl_fnmatch_callback)(void *ptr,+ const char *pattern,+ const char *string);++/* These are the return codes for the seek callbacks */+#define CURL_SEEKFUNC_OK 0+#define CURL_SEEKFUNC_FAIL 1 /* fail the entire transfer */+#define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking can't be done, so+ libcurl might try other means instead */+typedef int (*curl_seek_callback)(void *instream,+ curl_off_t offset,+ int origin); /* 'whence' */++/* This is a return code for the read callback that, when returned, will+ signal libcurl to immediately abort the current transfer. */+#define CURL_READFUNC_ABORT 0x10000000+/* This is a return code for the read callback that, when returned, will+ signal libcurl to pause sending data on the current transfer. */+#define CURL_READFUNC_PAUSE 0x10000001++typedef size_t (*curl_read_callback)(char *buffer,+ size_t size,+ size_t nitems,+ void *instream);++typedef enum {+ CURLSOCKTYPE_IPCXN, /* socket created for a specific IP connection */+ CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */+ CURLSOCKTYPE_LAST /* never use */+} curlsocktype;++/* The return code from the sockopt_callback can signal information back+ to libcurl: */+#define CURL_SOCKOPT_OK 0+#define CURL_SOCKOPT_ERROR 1 /* causes libcurl to abort and return+ CURLE_ABORTED_BY_CALLBACK */+#define CURL_SOCKOPT_ALREADY_CONNECTED 2++typedef int (*curl_sockopt_callback)(void *clientp,+ curl_socket_t curlfd,+ curlsocktype purpose);++struct curl_sockaddr {+ int family;+ int socktype;+ int protocol;+ unsigned int addrlen; /* addrlen was a socklen_t type before 7.18.0 but it+ turned really ugly and painful on the systems that+ lack this type */+ struct sockaddr addr;+};++typedef curl_socket_t+(*curl_opensocket_callback)(void *clientp,+ curlsocktype purpose,+ struct curl_sockaddr *address);++typedef int+(*curl_closesocket_callback)(void *clientp, curl_socket_t item);++typedef enum {+ CURLIOE_OK, /* I/O operation successful */+ CURLIOE_UNKNOWNCMD, /* command was unknown to callback */+ CURLIOE_FAILRESTART, /* failed to restart the read */+ CURLIOE_LAST /* never use */+} curlioerr;++typedef enum {+ CURLIOCMD_NOP, /* no operation */+ CURLIOCMD_RESTARTREAD, /* restart the read stream from start */+ CURLIOCMD_LAST /* never use */+} curliocmd;++typedef curlioerr (*curl_ioctl_callback)(CURL *handle,+ int cmd,+ void *clientp);++/*+ * The following typedef's are signatures of malloc, free, realloc, strdup and+ * calloc respectively. Function pointers of these types can be passed to the+ * curl_global_init_mem() function to set user defined memory management+ * callback routines.+ */+typedef void *(*curl_malloc_callback)(size_t size);+typedef void (*curl_free_callback)(void *ptr);+typedef void *(*curl_realloc_callback)(void *ptr, size_t size);+typedef char *(*curl_strdup_callback)(const char *str);+typedef void *(*curl_calloc_callback)(size_t nmemb, size_t size);++/* the kind of data that is passed to information_callback*/+typedef enum {+ CURLINFO_TEXT = 0,+ CURLINFO_HEADER_IN, /* 1 */+ CURLINFO_HEADER_OUT, /* 2 */+ CURLINFO_DATA_IN, /* 3 */+ CURLINFO_DATA_OUT, /* 4 */+ CURLINFO_SSL_DATA_IN, /* 5 */+ CURLINFO_SSL_DATA_OUT, /* 6 */+ CURLINFO_END+} curl_infotype;++typedef int (*curl_debug_callback)+ (CURL *handle, /* the handle/transfer this concerns */+ curl_infotype type, /* what kind of data */+ char *data, /* points to the data */+ size_t size, /* size of the data pointed to */+ void *userptr); /* whatever the user please */++/* All possible error codes from all sorts of curl functions. Future versions+ may return other values, stay prepared.++ Always add new return codes last. Never *EVER* remove any. The return+ codes must remain the same!+ */++typedef enum {+ CURLE_OK = 0,+ CURLE_UNSUPPORTED_PROTOCOL, /* 1 */+ CURLE_FAILED_INIT, /* 2 */+ CURLE_URL_MALFORMAT, /* 3 */+ CURLE_NOT_BUILT_IN, /* 4 - [was obsoleted in August 2007 for+ 7.17.0, reused in April 2011 for 7.21.5] */+ CURLE_COULDNT_RESOLVE_PROXY, /* 5 */+ CURLE_COULDNT_RESOLVE_HOST, /* 6 */+ CURLE_COULDNT_CONNECT, /* 7 */+ CURLE_FTP_WEIRD_SERVER_REPLY, /* 8 */+ CURLE_REMOTE_ACCESS_DENIED, /* 9 a service was denied by the server+ due to lack of access - when login fails+ this is not returned. */+ CURLE_FTP_ACCEPT_FAILED, /* 10 - [was obsoleted in April 2006 for+ 7.15.4, reused in Dec 2011 for 7.24.0]*/+ CURLE_FTP_WEIRD_PASS_REPLY, /* 11 */+ CURLE_FTP_ACCEPT_TIMEOUT, /* 12 - timeout occurred accepting server+ [was obsoleted in August 2007 for 7.17.0,+ reused in Dec 2011 for 7.24.0]*/+ CURLE_FTP_WEIRD_PASV_REPLY, /* 13 */+ CURLE_FTP_WEIRD_227_FORMAT, /* 14 */+ CURLE_FTP_CANT_GET_HOST, /* 15 */+ CURLE_OBSOLETE16, /* 16 - NOT USED */+ CURLE_FTP_COULDNT_SET_TYPE, /* 17 */+ CURLE_PARTIAL_FILE, /* 18 */+ CURLE_FTP_COULDNT_RETR_FILE, /* 19 */+ CURLE_OBSOLETE20, /* 20 - NOT USED */+ CURLE_QUOTE_ERROR, /* 21 - quote command failure */+ CURLE_HTTP_RETURNED_ERROR, /* 22 */+ CURLE_WRITE_ERROR, /* 23 */+ CURLE_OBSOLETE24, /* 24 - NOT USED */+ CURLE_UPLOAD_FAILED, /* 25 - failed upload "command" */+ CURLE_READ_ERROR, /* 26 - couldn't open/read from file */+ CURLE_OUT_OF_MEMORY, /* 27 */+ /* Note: CURLE_OUT_OF_MEMORY may sometimes indicate a conversion error+ instead of a memory allocation error if CURL_DOES_CONVERSIONS+ is defined+ */+ CURLE_OPERATION_TIMEDOUT, /* 28 - the timeout time was reached */+ CURLE_OBSOLETE29, /* 29 - NOT USED */+ CURLE_FTP_PORT_FAILED, /* 30 - FTP PORT operation failed */+ CURLE_FTP_COULDNT_USE_REST, /* 31 - the REST command failed */+ CURLE_OBSOLETE32, /* 32 - NOT USED */+ CURLE_RANGE_ERROR, /* 33 - RANGE "command" didn't work */+ CURLE_HTTP_POST_ERROR, /* 34 */+ CURLE_SSL_CONNECT_ERROR, /* 35 - wrong when connecting with SSL */+ CURLE_BAD_DOWNLOAD_RESUME, /* 36 - couldn't resume download */+ CURLE_FILE_COULDNT_READ_FILE, /* 37 */+ CURLE_LDAP_CANNOT_BIND, /* 38 */+ CURLE_LDAP_SEARCH_FAILED, /* 39 */+ CURLE_OBSOLETE40, /* 40 - NOT USED */+ CURLE_FUNCTION_NOT_FOUND, /* 41 */+ CURLE_ABORTED_BY_CALLBACK, /* 42 */+ CURLE_BAD_FUNCTION_ARGUMENT, /* 43 */+ CURLE_OBSOLETE44, /* 44 - NOT USED */+ CURLE_INTERFACE_FAILED, /* 45 - CURLOPT_INTERFACE failed */+ CURLE_OBSOLETE46, /* 46 - NOT USED */+ CURLE_TOO_MANY_REDIRECTS , /* 47 - catch endless re-direct loops */+ CURLE_UNKNOWN_OPTION, /* 48 - User specified an unknown option */+ CURLE_TELNET_OPTION_SYNTAX , /* 49 - Malformed telnet option */+ CURLE_OBSOLETE50, /* 50 - NOT USED */+ CURLE_PEER_FAILED_VERIFICATION, /* 51 - peer's certificate or fingerprint+ wasn't verified fine */+ CURLE_GOT_NOTHING, /* 52 - when this is a specific error */+ CURLE_SSL_ENGINE_NOTFOUND, /* 53 - SSL crypto engine not found */+ CURLE_SSL_ENGINE_SETFAILED, /* 54 - can not set SSL crypto engine as+ default */+ CURLE_SEND_ERROR, /* 55 - failed sending network data */+ CURLE_RECV_ERROR, /* 56 - failure in receiving network data */+ CURLE_OBSOLETE57, /* 57 - NOT IN USE */+ CURLE_SSL_CERTPROBLEM, /* 58 - problem with the local certificate */+ CURLE_SSL_CIPHER, /* 59 - couldn't use specified cipher */+ CURLE_SSL_CACERT, /* 60 - problem with the CA cert (path?) */+ CURLE_BAD_CONTENT_ENCODING, /* 61 - Unrecognized/bad encoding */+ CURLE_LDAP_INVALID_URL, /* 62 - Invalid LDAP URL */+ CURLE_FILESIZE_EXCEEDED, /* 63 - Maximum file size exceeded */+ CURLE_USE_SSL_FAILED, /* 64 - Requested FTP SSL level failed */+ CURLE_SEND_FAIL_REWIND, /* 65 - Sending the data requires a rewind+ that failed */+ CURLE_SSL_ENGINE_INITFAILED, /* 66 - failed to initialise ENGINE */+ CURLE_LOGIN_DENIED, /* 67 - user, password or similar was not+ accepted and we failed to login */+ CURLE_TFTP_NOTFOUND, /* 68 - file not found on server */+ CURLE_TFTP_PERM, /* 69 - permission problem on server */+ CURLE_REMOTE_DISK_FULL, /* 70 - out of disk space on server */+ CURLE_TFTP_ILLEGAL, /* 71 - Illegal TFTP operation */+ CURLE_TFTP_UNKNOWNID, /* 72 - Unknown transfer ID */+ CURLE_REMOTE_FILE_EXISTS, /* 73 - File already exists */+ CURLE_TFTP_NOSUCHUSER, /* 74 - No such user */+ CURLE_CONV_FAILED, /* 75 - conversion failed */+ CURLE_CONV_REQD, /* 76 - caller must register conversion+ callbacks using curl_easy_setopt options+ CURLOPT_CONV_FROM_NETWORK_FUNCTION,+ CURLOPT_CONV_TO_NETWORK_FUNCTION, and+ CURLOPT_CONV_FROM_UTF8_FUNCTION */+ CURLE_SSL_CACERT_BADFILE, /* 77 - could not load CACERT file, missing+ or wrong format */+ CURLE_REMOTE_FILE_NOT_FOUND, /* 78 - remote file not found */+ CURLE_SSH, /* 79 - error from the SSH layer, somewhat+ generic so the error message will be of+ interest when this has happened */++ CURLE_SSL_SHUTDOWN_FAILED, /* 80 - Failed to shut down the SSL+ connection */+ CURLE_AGAIN, /* 81 - socket is not ready for send/recv,+ wait till it's ready and try again (Added+ in 7.18.2) */+ CURLE_SSL_CRL_BADFILE, /* 82 - could not load CRL file, missing or+ wrong format (Added in 7.19.0) */+ CURLE_SSL_ISSUER_ERROR, /* 83 - Issuer check failed. (Added in+ 7.19.0) */+ CURLE_FTP_PRET_FAILED, /* 84 - a PRET command failed */+ CURLE_RTSP_CSEQ_ERROR, /* 85 - mismatch of RTSP CSeq numbers */+ CURLE_RTSP_SESSION_ERROR, /* 86 - mismatch of RTSP Session Ids */+ CURLE_FTP_BAD_FILE_LIST, /* 87 - unable to parse FTP file list */+ CURLE_CHUNK_FAILED, /* 88 - chunk callback reported error */+ CURLE_NO_CONNECTION_AVAILABLE, /* 89 - No connection available, the+ session will be queued */+ CURL_LAST /* never use! */+} CURLcode;++#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all+ the obsolete stuff removed! */++/* Previously obsoletes error codes re-used in 7.24.0 */+#define CURLE_OBSOLETE10 CURLE_FTP_ACCEPT_FAILED+#define CURLE_OBSOLETE12 CURLE_FTP_ACCEPT_TIMEOUT++/* compatibility with older names */+#define CURLOPT_ENCODING CURLOPT_ACCEPT_ENCODING++/* The following were added in 7.21.5, April 2011 */+#define CURLE_UNKNOWN_TELNET_OPTION CURLE_UNKNOWN_OPTION++/* The following were added in 7.17.1 */+/* These are scheduled to disappear by 2009 */+#define CURLE_SSL_PEER_CERTIFICATE CURLE_PEER_FAILED_VERIFICATION++/* The following were added in 7.17.0 */+/* These are scheduled to disappear by 2009 */+#define CURLE_OBSOLETE CURLE_OBSOLETE50 /* no one should be using this! */+#define CURLE_BAD_PASSWORD_ENTERED CURLE_OBSOLETE46+#define CURLE_BAD_CALLING_ORDER CURLE_OBSOLETE44+#define CURLE_FTP_USER_PASSWORD_INCORRECT CURLE_OBSOLETE10+#define CURLE_FTP_CANT_RECONNECT CURLE_OBSOLETE16+#define CURLE_FTP_COULDNT_GET_SIZE CURLE_OBSOLETE32+#define CURLE_FTP_COULDNT_SET_ASCII CURLE_OBSOLETE29+#define CURLE_FTP_WEIRD_USER_REPLY CURLE_OBSOLETE12+#define CURLE_FTP_WRITE_ERROR CURLE_OBSOLETE20+#define CURLE_LIBRARY_NOT_FOUND CURLE_OBSOLETE40+#define CURLE_MALFORMAT_USER CURLE_OBSOLETE24+#define CURLE_SHARE_IN_USE CURLE_OBSOLETE57+#define CURLE_URL_MALFORMAT_USER CURLE_NOT_BUILT_IN++#define CURLE_FTP_ACCESS_DENIED CURLE_REMOTE_ACCESS_DENIED+#define CURLE_FTP_COULDNT_SET_BINARY CURLE_FTP_COULDNT_SET_TYPE+#define CURLE_FTP_QUOTE_ERROR CURLE_QUOTE_ERROR+#define CURLE_TFTP_DISKFULL CURLE_REMOTE_DISK_FULL+#define CURLE_TFTP_EXISTS CURLE_REMOTE_FILE_EXISTS+#define CURLE_HTTP_RANGE_ERROR CURLE_RANGE_ERROR+#define CURLE_FTP_SSL_FAILED CURLE_USE_SSL_FAILED++/* The following were added earlier */++#define CURLE_OPERATION_TIMEOUTED CURLE_OPERATION_TIMEDOUT++#define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR+#define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED+#define CURLE_FTP_COULDNT_STOR_FILE CURLE_UPLOAD_FAILED++#define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE+#define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME++/* This was the error code 50 in 7.7.3 and a few earlier versions, this+ is no longer used by libcurl but is instead #defined here only to not+ make programs break */+#define CURLE_ALREADY_COMPLETE 99999++#endif /*!CURL_NO_OLDIES*/++/* This prototype applies to all conversion callbacks */+typedef CURLcode (*curl_conv_callback)(char *buffer, size_t length);++typedef CURLcode (*curl_ssl_ctx_callback)(CURL *curl, /* easy handle */+ void *ssl_ctx, /* actually an+ OpenSSL SSL_CTX */+ void *userptr);++typedef enum {+ CURLPROXY_HTTP = 0, /* added in 7.10, new in 7.19.4 default is to use+ CONNECT HTTP/1.1 */+ CURLPROXY_HTTP_1_0 = 1, /* added in 7.19.4, force to use CONNECT+ HTTP/1.0 */+ CURLPROXY_SOCKS4 = 4, /* support added in 7.15.2, enum existed already+ in 7.10 */+ CURLPROXY_SOCKS5 = 5, /* added in 7.10 */+ CURLPROXY_SOCKS4A = 6, /* added in 7.18.0 */+ CURLPROXY_SOCKS5_HOSTNAME = 7 /* Use the SOCKS5 protocol but pass along the+ host name rather than the IP address. added+ in 7.18.0 */+} curl_proxytype; /* this enum was added in 7.10 */++/*+ * Bitmasks for CURLOPT_HTTPAUTH and CURLOPT_PROXYAUTH options:+ *+ * CURLAUTH_NONE - No HTTP authentication+ * CURLAUTH_BASIC - HTTP Basic authentication (default)+ * CURLAUTH_DIGEST - HTTP Digest authentication+ * CURLAUTH_GSSNEGOTIATE - HTTP GSS-Negotiate authentication+ * CURLAUTH_NTLM - HTTP NTLM authentication+ * CURLAUTH_DIGEST_IE - HTTP Digest authentication with IE flavour+ * CURLAUTH_NTLM_WB - HTTP NTLM authentication delegated to winbind helper+ * CURLAUTH_ONLY - Use together with a single other type to force no+ * authentication or just that single type+ * CURLAUTH_ANY - All fine types set+ * CURLAUTH_ANYSAFE - All fine types except Basic+ */++#define CURLAUTH_NONE ((unsigned long)0)+#define CURLAUTH_BASIC (((unsigned long)1)<<0)+#define CURLAUTH_DIGEST (((unsigned long)1)<<1)+#define CURLAUTH_GSSNEGOTIATE (((unsigned long)1)<<2)+#define CURLAUTH_NTLM (((unsigned long)1)<<3)+#define CURLAUTH_DIGEST_IE (((unsigned long)1)<<4)+#define CURLAUTH_NTLM_WB (((unsigned long)1)<<5)+#define CURLAUTH_ONLY (((unsigned long)1)<<31)+#define CURLAUTH_ANY (~CURLAUTH_DIGEST_IE)+#define CURLAUTH_ANYSAFE (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE))++#define CURLSSH_AUTH_ANY ~0 /* all types supported by the server */+#define CURLSSH_AUTH_NONE 0 /* none allowed, silly but complete */+#define CURLSSH_AUTH_PUBLICKEY (1<<0) /* public/private key files */+#define CURLSSH_AUTH_PASSWORD (1<<1) /* password */+#define CURLSSH_AUTH_HOST (1<<2) /* host key files */+#define CURLSSH_AUTH_KEYBOARD (1<<3) /* keyboard interactive */+#define CURLSSH_AUTH_AGENT (1<<4) /* agent (ssh-agent, pageant...) */+#define CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_ANY++#define CURLGSSAPI_DELEGATION_NONE 0 /* no delegation (default) */+#define CURLGSSAPI_DELEGATION_POLICY_FLAG (1<<0) /* if permitted by policy */+#define CURLGSSAPI_DELEGATION_FLAG (1<<1) /* delegate always */++#define CURL_ERROR_SIZE 256++struct curl_khkey {+ const char *key; /* points to a zero-terminated string encoded with base64+ if len is zero, otherwise to the "raw" data */+ size_t len;+ enum type {+ CURLKHTYPE_UNKNOWN,+ CURLKHTYPE_RSA1,+ CURLKHTYPE_RSA,+ CURLKHTYPE_DSS+ } keytype;+};++/* this is the set of return values expected from the curl_sshkeycallback+ callback */+enum curl_khstat {+ CURLKHSTAT_FINE_ADD_TO_FILE,+ CURLKHSTAT_FINE,+ CURLKHSTAT_REJECT, /* reject the connection, return an error */+ CURLKHSTAT_DEFER, /* do not accept it, but we can't answer right now so+ this causes a CURLE_DEFER error but otherwise the+ connection will be left intact etc */+ CURLKHSTAT_LAST /* not for use, only a marker for last-in-list */+};++/* this is the set of status codes pass in to the callback */+enum curl_khmatch {+ CURLKHMATCH_OK, /* match */+ CURLKHMATCH_MISMATCH, /* host found, key mismatch! */+ CURLKHMATCH_MISSING, /* no matching host/key found */+ CURLKHMATCH_LAST /* not for use, only a marker for last-in-list */+};++typedef int+ (*curl_sshkeycallback) (CURL *easy, /* easy handle */+ const struct curl_khkey *knownkey, /* known */+ const struct curl_khkey *foundkey, /* found */+ enum curl_khmatch, /* libcurl's view on the keys */+ void *clientp); /* custom pointer passed from app */++/* parameter for the CURLOPT_USE_SSL option */+typedef enum {+ CURLUSESSL_NONE, /* do not attempt to use SSL */+ CURLUSESSL_TRY, /* try using SSL, proceed anyway otherwise */+ CURLUSESSL_CONTROL, /* SSL for the control connection or fail */+ CURLUSESSL_ALL, /* SSL for all communication or fail */+ CURLUSESSL_LAST /* not an option, never use */+} curl_usessl;++/* Definition of bits for the CURLOPT_SSL_OPTIONS argument: */++/* - ALLOW_BEAST tells libcurl to allow the BEAST SSL vulnerability in the+ name of improving interoperability with older servers. Some SSL libraries+ have introduced work-arounds for this flaw but those work-arounds sometimes+ make the SSL communication fail. To regain functionality with those broken+ servers, a user can this way allow the vulnerability back. */+#define CURLSSLOPT_ALLOW_BEAST (1<<0)++#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all+ the obsolete stuff removed! */++/* Backwards compatibility with older names */+/* These are scheduled to disappear by 2009 */++#define CURLFTPSSL_NONE CURLUSESSL_NONE+#define CURLFTPSSL_TRY CURLUSESSL_TRY+#define CURLFTPSSL_CONTROL CURLUSESSL_CONTROL+#define CURLFTPSSL_ALL CURLUSESSL_ALL+#define CURLFTPSSL_LAST CURLUSESSL_LAST+#define curl_ftpssl curl_usessl+#endif /*!CURL_NO_OLDIES*/++/* parameter for the CURLOPT_FTP_SSL_CCC option */+typedef enum {+ CURLFTPSSL_CCC_NONE, /* do not send CCC */+ CURLFTPSSL_CCC_PASSIVE, /* Let the server initiate the shutdown */+ CURLFTPSSL_CCC_ACTIVE, /* Initiate the shutdown */+ CURLFTPSSL_CCC_LAST /* not an option, never use */+} curl_ftpccc;++/* parameter for the CURLOPT_FTPSSLAUTH option */+typedef enum {+ CURLFTPAUTH_DEFAULT, /* let libcurl decide */+ CURLFTPAUTH_SSL, /* use "AUTH SSL" */+ CURLFTPAUTH_TLS, /* use "AUTH TLS" */+ CURLFTPAUTH_LAST /* not an option, never use */+} curl_ftpauth;++/* parameter for the CURLOPT_FTP_CREATE_MISSING_DIRS option */+typedef enum {+ CURLFTP_CREATE_DIR_NONE, /* do NOT create missing dirs! */+ CURLFTP_CREATE_DIR, /* (FTP/SFTP) if CWD fails, try MKD and then CWD+ again if MKD succeeded, for SFTP this does+ similar magic */+ CURLFTP_CREATE_DIR_RETRY, /* (FTP only) if CWD fails, try MKD and then CWD+ again even if MKD failed! */+ CURLFTP_CREATE_DIR_LAST /* not an option, never use */+} curl_ftpcreatedir;++/* parameter for the CURLOPT_FTP_FILEMETHOD option */+typedef enum {+ CURLFTPMETHOD_DEFAULT, /* let libcurl pick */+ CURLFTPMETHOD_MULTICWD, /* single CWD operation for each path part */+ CURLFTPMETHOD_NOCWD, /* no CWD at all */+ CURLFTPMETHOD_SINGLECWD, /* one CWD to full dir, then work on file */+ CURLFTPMETHOD_LAST /* not an option, never use */+} curl_ftpmethod;++/* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */+#define CURLPROTO_HTTP (1<<0)+#define CURLPROTO_HTTPS (1<<1)+#define CURLPROTO_FTP (1<<2)+#define CURLPROTO_FTPS (1<<3)+#define CURLPROTO_SCP (1<<4)+#define CURLPROTO_SFTP (1<<5)+#define CURLPROTO_TELNET (1<<6)+#define CURLPROTO_LDAP (1<<7)+#define CURLPROTO_LDAPS (1<<8)+#define CURLPROTO_DICT (1<<9)+#define CURLPROTO_FILE (1<<10)+#define CURLPROTO_TFTP (1<<11)+#define CURLPROTO_IMAP (1<<12)+#define CURLPROTO_IMAPS (1<<13)+#define CURLPROTO_POP3 (1<<14)+#define CURLPROTO_POP3S (1<<15)+#define CURLPROTO_SMTP (1<<16)+#define CURLPROTO_SMTPS (1<<17)+#define CURLPROTO_RTSP (1<<18)+#define CURLPROTO_RTMP (1<<19)+#define CURLPROTO_RTMPT (1<<20)+#define CURLPROTO_RTMPE (1<<21)+#define CURLPROTO_RTMPTE (1<<22)+#define CURLPROTO_RTMPS (1<<23)+#define CURLPROTO_RTMPTS (1<<24)+#define CURLPROTO_GOPHER (1<<25)+#define CURLPROTO_ALL (~0) /* enable everything */++/* long may be 32 or 64 bits, but we should never depend on anything else+ but 32 */+#define CURLOPTTYPE_LONG 0+#define CURLOPTTYPE_OBJECTPOINT 10000+#define CURLOPTTYPE_FUNCTIONPOINT 20000+#define CURLOPTTYPE_OFF_T 30000++/* name is uppercase CURLOPT_<name>,+ type is one of the defined CURLOPTTYPE_<type>+ number is unique identifier */+#ifdef CINIT+#undef CINIT+#endif++#ifdef CURL_ISOCPP+#define CINIT(na,t,nu) CURLOPT_ ## na = CURLOPTTYPE_ ## t + nu+#else+/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */+#define LONG CURLOPTTYPE_LONG+#define OBJECTPOINT CURLOPTTYPE_OBJECTPOINT+#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT+#define OFF_T CURLOPTTYPE_OFF_T+#define CINIT(name,type,number) CURLOPT_/**/name = type + number+#endif++/*+ * This macro-mania below setups the CURLOPT_[what] enum, to be used with+ * curl_easy_setopt(). The first argument in the CINIT() macro is the [what]+ * word.+ */++typedef enum {+ /* This is the FILE * or void * the regular output should be written to. */+ CINIT(FILE, OBJECTPOINT, 1),++ /* The full URL to get/put */+ CINIT(URL, OBJECTPOINT, 2),++ /* Port number to connect to, if other than default. */+ CINIT(PORT, LONG, 3),++ /* Name of proxy to use. */+ CINIT(PROXY, OBJECTPOINT, 4),++ /* "name:password" to use when fetching. */+ CINIT(USERPWD, OBJECTPOINT, 5),++ /* "name:password" to use with proxy. */+ CINIT(PROXYUSERPWD, OBJECTPOINT, 6),++ /* Range to get, specified as an ASCII string. */+ CINIT(RANGE, OBJECTPOINT, 7),++ /* not used */++ /* Specified file stream to upload from (use as input): */+ CINIT(INFILE, OBJECTPOINT, 9),++ /* Buffer to receive error messages in, must be at least CURL_ERROR_SIZE+ * bytes big. If this is not used, error messages go to stderr instead: */+ CINIT(ERRORBUFFER, OBJECTPOINT, 10),++ /* Function that will be called to store the output (instead of fwrite). The+ * parameters will use fwrite() syntax, make sure to follow them. */+ CINIT(WRITEFUNCTION, FUNCTIONPOINT, 11),++ /* Function that will be called to read the input (instead of fread). The+ * parameters will use fread() syntax, make sure to follow them. */+ CINIT(READFUNCTION, FUNCTIONPOINT, 12),++ /* Time-out the read operation after this amount of seconds */+ CINIT(TIMEOUT, LONG, 13),++ /* If the CURLOPT_INFILE is used, this can be used to inform libcurl about+ * how large the file being sent really is. That allows better error+ * checking and better verifies that the upload was successful. -1 means+ * unknown size.+ *+ * For large file support, there is also a _LARGE version of the key+ * which takes an off_t type, allowing platforms with larger off_t+ * sizes to handle larger files. See below for INFILESIZE_LARGE.+ */+ CINIT(INFILESIZE, LONG, 14),++ /* POST static input fields. */+ CINIT(POSTFIELDS, OBJECTPOINT, 15),++ /* Set the referrer page (needed by some CGIs) */+ CINIT(REFERER, OBJECTPOINT, 16),++ /* Set the FTP PORT string (interface name, named or numerical IP address)+ Use i.e '-' to use default address. */+ CINIT(FTPPORT, OBJECTPOINT, 17),++ /* Set the User-Agent string (examined by some CGIs) */+ CINIT(USERAGENT, OBJECTPOINT, 18),++ /* If the download receives less than "low speed limit" bytes/second+ * during "low speed time" seconds, the operations is aborted.+ * You could i.e if you have a pretty high speed connection, abort if+ * it is less than 2000 bytes/sec during 20 seconds.+ */++ /* Set the "low speed limit" */+ CINIT(LOW_SPEED_LIMIT, LONG, 19),++ /* Set the "low speed time" */+ CINIT(LOW_SPEED_TIME, LONG, 20),++ /* Set the continuation offset.+ *+ * Note there is also a _LARGE version of this key which uses+ * off_t types, allowing for large file offsets on platforms which+ * use larger-than-32-bit off_t's. Look below for RESUME_FROM_LARGE.+ */+ CINIT(RESUME_FROM, LONG, 21),++ /* Set cookie in request: */+ CINIT(COOKIE, OBJECTPOINT, 22),++ /* This points to a linked list of headers, struct curl_slist kind */+ CINIT(HTTPHEADER, OBJECTPOINT, 23),++ /* This points to a linked list of post entries, struct curl_httppost */+ CINIT(HTTPPOST, OBJECTPOINT, 24),++ /* name of the file keeping your private SSL-certificate */+ CINIT(SSLCERT, OBJECTPOINT, 25),++ /* password for the SSL or SSH private key */+ CINIT(KEYPASSWD, OBJECTPOINT, 26),++ /* send TYPE parameter? */+ CINIT(CRLF, LONG, 27),++ /* send linked-list of QUOTE commands */+ CINIT(QUOTE, OBJECTPOINT, 28),++ /* send FILE * or void * to store headers to, if you use a callback it+ is simply passed to the callback unmodified */+ CINIT(WRITEHEADER, OBJECTPOINT, 29),++ /* point to a file to read the initial cookies from, also enables+ "cookie awareness" */+ CINIT(COOKIEFILE, OBJECTPOINT, 31),++ /* What version to specifically try to use.+ See CURL_SSLVERSION defines below. */+ CINIT(SSLVERSION, LONG, 32),++ /* What kind of HTTP time condition to use, see defines */+ CINIT(TIMECONDITION, LONG, 33),++ /* Time to use with the above condition. Specified in number of seconds+ since 1 Jan 1970 */+ CINIT(TIMEVALUE, LONG, 34),++ /* 35 = OBSOLETE */++ /* Custom request, for customizing the get command like+ HTTP: DELETE, TRACE and others+ FTP: to use a different list command+ */+ CINIT(CUSTOMREQUEST, OBJECTPOINT, 36),++ /* HTTP request, for odd commands like DELETE, TRACE and others */+ CINIT(STDERR, OBJECTPOINT, 37),++ /* 38 is not used */++ /* send linked-list of post-transfer QUOTE commands */+ CINIT(POSTQUOTE, OBJECTPOINT, 39),++ CINIT(WRITEINFO, OBJECTPOINT, 40), /* DEPRECATED, do not use! */++ CINIT(VERBOSE, LONG, 41), /* talk a lot */+ CINIT(HEADER, LONG, 42), /* throw the header out too */+ CINIT(NOPROGRESS, LONG, 43), /* shut off the progress meter */+ CINIT(NOBODY, LONG, 44), /* use HEAD to get http document */+ CINIT(FAILONERROR, LONG, 45), /* no output on http error codes >= 300 */+ CINIT(UPLOAD, LONG, 46), /* this is an upload */+ CINIT(POST, LONG, 47), /* HTTP POST method */+ CINIT(DIRLISTONLY, LONG, 48), /* bare names when listing directories */++ CINIT(APPEND, LONG, 50), /* Append instead of overwrite on upload! */++ /* Specify whether to read the user+password from the .netrc or the URL.+ * This must be one of the CURL_NETRC_* enums below. */+ CINIT(NETRC, LONG, 51),++ CINIT(FOLLOWLOCATION, LONG, 52), /* use Location: Luke! */++ CINIT(TRANSFERTEXT, LONG, 53), /* transfer data in text/ASCII format */+ CINIT(PUT, LONG, 54), /* HTTP PUT */++ /* 55 = OBSOLETE */++ /* Function that will be called instead of the internal progress display+ * function. This function should be defined as the curl_progress_callback+ * prototype defines. */+ CINIT(PROGRESSFUNCTION, FUNCTIONPOINT, 56),++ /* Data passed to the progress callback */+ CINIT(PROGRESSDATA, OBJECTPOINT, 57),++ /* We want the referrer field set automatically when following locations */+ CINIT(AUTOREFERER, LONG, 58),++ /* Port of the proxy, can be set in the proxy string as well with:+ "[host]:[port]" */+ CINIT(PROXYPORT, LONG, 59),++ /* size of the POST input data, if strlen() is not good to use */+ CINIT(POSTFIELDSIZE, LONG, 60),++ /* tunnel non-http operations through a HTTP proxy */+ CINIT(HTTPPROXYTUNNEL, LONG, 61),++ /* Set the interface string to use as outgoing network interface */+ CINIT(INTERFACE, OBJECTPOINT, 62),++ /* Set the krb4/5 security level, this also enables krb4/5 awareness. This+ * is a string, 'clear', 'safe', 'confidential' or 'private'. If the string+ * is set but doesn't match one of these, 'private' will be used. */+ CINIT(KRBLEVEL, OBJECTPOINT, 63),++ /* Set if we should verify the peer in ssl handshake, set 1 to verify. */+ CINIT(SSL_VERIFYPEER, LONG, 64),++ /* The CApath or CAfile used to validate the peer certificate+ this option is used only if SSL_VERIFYPEER is true */+ CINIT(CAINFO, OBJECTPOINT, 65),++ /* 66 = OBSOLETE */+ /* 67 = OBSOLETE */++ /* Maximum number of http redirects to follow */+ CINIT(MAXREDIRS, LONG, 68),++ /* Pass a long set to 1 to get the date of the requested document (if+ possible)! Pass a zero to shut it off. */+ CINIT(FILETIME, LONG, 69),++ /* This points to a linked list of telnet options */+ CINIT(TELNETOPTIONS, OBJECTPOINT, 70),++ /* Max amount of cached alive connections */+ CINIT(MAXCONNECTS, LONG, 71),++ CINIT(CLOSEPOLICY, LONG, 72), /* DEPRECATED, do not use! */++ /* 73 = OBSOLETE */++ /* Set to explicitly use a new connection for the upcoming transfer.+ Do not use this unless you're absolutely sure of this, as it makes the+ operation slower and is less friendly for the network. */+ CINIT(FRESH_CONNECT, LONG, 74),++ /* Set to explicitly forbid the upcoming transfer's connection to be re-used+ when done. Do not use this unless you're absolutely sure of this, as it+ makes the operation slower and is less friendly for the network. */+ CINIT(FORBID_REUSE, LONG, 75),++ /* Set to a file name that contains random data for libcurl to use to+ seed the random engine when doing SSL connects. */+ CINIT(RANDOM_FILE, OBJECTPOINT, 76),++ /* Set to the Entropy Gathering Daemon socket pathname */+ CINIT(EGDSOCKET, OBJECTPOINT, 77),++ /* Time-out connect operations after this amount of seconds, if connects are+ OK within this time, then fine... This only aborts the connect phase. */+ CINIT(CONNECTTIMEOUT, LONG, 78),++ /* Function that will be called to store headers (instead of fwrite). The+ * parameters will use fwrite() syntax, make sure to follow them. */+ CINIT(HEADERFUNCTION, FUNCTIONPOINT, 79),++ /* Set this to force the HTTP request to get back to GET. Only really usable+ if POST, PUT or a custom request have been used first.+ */+ CINIT(HTTPGET, LONG, 80),++ /* Set if we should verify the Common name from the peer certificate in ssl+ * handshake, set 1 to check existence, 2 to ensure that it matches the+ * provided hostname. */+ CINIT(SSL_VERIFYHOST, LONG, 81),++ /* Specify which file name to write all known cookies in after completed+ operation. Set file name to "-" (dash) to make it go to stdout. */+ CINIT(COOKIEJAR, OBJECTPOINT, 82),++ /* Specify which SSL ciphers to use */+ CINIT(SSL_CIPHER_LIST, OBJECTPOINT, 83),++ /* Specify which HTTP version to use! This must be set to one of the+ CURL_HTTP_VERSION* enums set below. */+ CINIT(HTTP_VERSION, LONG, 84),++ /* Specifically switch on or off the FTP engine's use of the EPSV command. By+ default, that one will always be attempted before the more traditional+ PASV command. */+ CINIT(FTP_USE_EPSV, LONG, 85),++ /* type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") */+ CINIT(SSLCERTTYPE, OBJECTPOINT, 86),++ /* name of the file keeping your private SSL-key */+ CINIT(SSLKEY, OBJECTPOINT, 87),++ /* type of the file keeping your private SSL-key ("DER", "PEM", "ENG") */+ CINIT(SSLKEYTYPE, OBJECTPOINT, 88),++ /* crypto engine for the SSL-sub system */+ CINIT(SSLENGINE, OBJECTPOINT, 89),++ /* set the crypto engine for the SSL-sub system as default+ the param has no meaning...+ */+ CINIT(SSLENGINE_DEFAULT, LONG, 90),++ /* Non-zero value means to use the global dns cache */+ CINIT(DNS_USE_GLOBAL_CACHE, LONG, 91), /* DEPRECATED, do not use! */++ /* DNS cache timeout */+ CINIT(DNS_CACHE_TIMEOUT, LONG, 92),++ /* send linked-list of pre-transfer QUOTE commands */+ CINIT(PREQUOTE, OBJECTPOINT, 93),++ /* set the debug function */+ CINIT(DEBUGFUNCTION, FUNCTIONPOINT, 94),++ /* set the data for the debug function */+ CINIT(DEBUGDATA, OBJECTPOINT, 95),++ /* mark this as start of a cookie session */+ CINIT(COOKIESESSION, LONG, 96),++ /* The CApath directory used to validate the peer certificate+ this option is used only if SSL_VERIFYPEER is true */+ CINIT(CAPATH, OBJECTPOINT, 97),++ /* Instruct libcurl to use a smaller receive buffer */+ CINIT(BUFFERSIZE, LONG, 98),++ /* Instruct libcurl to not use any signal/alarm handlers, even when using+ timeouts. This option is useful for multi-threaded applications.+ See libcurl-the-guide for more background information. */+ CINIT(NOSIGNAL, LONG, 99),++ /* Provide a CURLShare for mutexing non-ts data */+ CINIT(SHARE, OBJECTPOINT, 100),++ /* indicates type of proxy. accepted values are CURLPROXY_HTTP (default),+ CURLPROXY_SOCKS4, CURLPROXY_SOCKS4A and CURLPROXY_SOCKS5. */+ CINIT(PROXYTYPE, LONG, 101),++ /* Set the Accept-Encoding string. Use this to tell a server you would like+ the response to be compressed. Before 7.21.6, this was known as+ CURLOPT_ENCODING */+ CINIT(ACCEPT_ENCODING, OBJECTPOINT, 102),++ /* Set pointer to private data */+ CINIT(PRIVATE, OBJECTPOINT, 103),++ /* Set aliases for HTTP 200 in the HTTP Response header */+ CINIT(HTTP200ALIASES, OBJECTPOINT, 104),++ /* Continue to send authentication (user+password) when following locations,+ even when hostname changed. This can potentially send off the name+ and password to whatever host the server decides. */+ CINIT(UNRESTRICTED_AUTH, LONG, 105),++ /* Specifically switch on or off the FTP engine's use of the EPRT command (+ it also disables the LPRT attempt). By default, those ones will always be+ attempted before the good old traditional PORT command. */+ CINIT(FTP_USE_EPRT, LONG, 106),++ /* Set this to a bitmask value to enable the particular authentications+ methods you like. Use this in combination with CURLOPT_USERPWD.+ Note that setting multiple bits may cause extra network round-trips. */+ CINIT(HTTPAUTH, LONG, 107),++ /* Set the ssl context callback function, currently only for OpenSSL ssl_ctx+ in second argument. The function must be matching the+ curl_ssl_ctx_callback proto. */+ CINIT(SSL_CTX_FUNCTION, FUNCTIONPOINT, 108),++ /* Set the userdata for the ssl context callback function's third+ argument */+ CINIT(SSL_CTX_DATA, OBJECTPOINT, 109),++ /* FTP Option that causes missing dirs to be created on the remote server.+ In 7.19.4 we introduced the convenience enums for this option using the+ CURLFTP_CREATE_DIR prefix.+ */+ CINIT(FTP_CREATE_MISSING_DIRS, LONG, 110),++ /* Set this to a bitmask value to enable the particular authentications+ methods you like. Use this in combination with CURLOPT_PROXYUSERPWD.+ Note that setting multiple bits may cause extra network round-trips. */+ CINIT(PROXYAUTH, LONG, 111),++ /* FTP option that changes the timeout, in seconds, associated with+ getting a response. This is different from transfer timeout time and+ essentially places a demand on the FTP server to acknowledge commands+ in a timely manner. */+ CINIT(FTP_RESPONSE_TIMEOUT, LONG, 112),+#define CURLOPT_SERVER_RESPONSE_TIMEOUT CURLOPT_FTP_RESPONSE_TIMEOUT++ /* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to+ tell libcurl to resolve names to those IP versions only. This only has+ affect on systems with support for more than one, i.e IPv4 _and_ IPv6. */+ CINIT(IPRESOLVE, LONG, 113),++ /* Set this option to limit the size of a file that will be downloaded from+ an HTTP or FTP server.++ Note there is also _LARGE version which adds large file support for+ platforms which have larger off_t sizes. See MAXFILESIZE_LARGE below. */+ CINIT(MAXFILESIZE, LONG, 114),++ /* See the comment for INFILESIZE above, but in short, specifies+ * the size of the file being uploaded. -1 means unknown.+ */+ CINIT(INFILESIZE_LARGE, OFF_T, 115),++ /* Sets the continuation offset. There is also a LONG version of this;+ * look above for RESUME_FROM.+ */+ CINIT(RESUME_FROM_LARGE, OFF_T, 116),++ /* Sets the maximum size of data that will be downloaded from+ * an HTTP or FTP server. See MAXFILESIZE above for the LONG version.+ */+ CINIT(MAXFILESIZE_LARGE, OFF_T, 117),++ /* Set this option to the file name of your .netrc file you want libcurl+ to parse (using the CURLOPT_NETRC option). If not set, libcurl will do+ a poor attempt to find the user's home directory and check for a .netrc+ file in there. */+ CINIT(NETRC_FILE, OBJECTPOINT, 118),++ /* Enable SSL/TLS for FTP, pick one of:+ CURLUSESSL_TRY - try using SSL, proceed anyway otherwise+ CURLUSESSL_CONTROL - SSL for the control connection or fail+ CURLUSESSL_ALL - SSL for all communication or fail+ */+ CINIT(USE_SSL, LONG, 119),++ /* The _LARGE version of the standard POSTFIELDSIZE option */+ CINIT(POSTFIELDSIZE_LARGE, OFF_T, 120),++ /* Enable/disable the TCP Nagle algorithm */+ CINIT(TCP_NODELAY, LONG, 121),++ /* 122 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */+ /* 123 OBSOLETE. Gone in 7.16.0 */+ /* 124 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */+ /* 125 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */+ /* 126 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */+ /* 127 OBSOLETE. Gone in 7.16.0 */+ /* 128 OBSOLETE. Gone in 7.16.0 */++ /* When FTP over SSL/TLS is selected (with CURLOPT_USE_SSL), this option+ can be used to change libcurl's default action which is to first try+ "AUTH SSL" and then "AUTH TLS" in this order, and proceed when a OK+ response has been received.++ Available parameters are:+ CURLFTPAUTH_DEFAULT - let libcurl decide+ CURLFTPAUTH_SSL - try "AUTH SSL" first, then TLS+ CURLFTPAUTH_TLS - try "AUTH TLS" first, then SSL+ */+ CINIT(FTPSSLAUTH, LONG, 129),++ CINIT(IOCTLFUNCTION, FUNCTIONPOINT, 130),+ CINIT(IOCTLDATA, OBJECTPOINT, 131),++ /* 132 OBSOLETE. Gone in 7.16.0 */+ /* 133 OBSOLETE. Gone in 7.16.0 */++ /* zero terminated string for pass on to the FTP server when asked for+ "account" info */+ CINIT(FTP_ACCOUNT, OBJECTPOINT, 134),++ /* feed cookies into cookie engine */+ CINIT(COOKIELIST, OBJECTPOINT, 135),++ /* ignore Content-Length */+ CINIT(IGNORE_CONTENT_LENGTH, LONG, 136),++ /* Set to non-zero to skip the IP address received in a 227 PASV FTP server+ response. Typically used for FTP-SSL purposes but is not restricted to+ that. libcurl will then instead use the same IP address it used for the+ control connection. */+ CINIT(FTP_SKIP_PASV_IP, LONG, 137),++ /* Select "file method" to use when doing FTP, see the curl_ftpmethod+ above. */+ CINIT(FTP_FILEMETHOD, LONG, 138),++ /* Local port number to bind the socket to */+ CINIT(LOCALPORT, LONG, 139),++ /* Number of ports to try, including the first one set with LOCALPORT.+ Thus, setting it to 1 will make no additional attempts but the first.+ */+ CINIT(LOCALPORTRANGE, LONG, 140),++ /* no transfer, set up connection and let application use the socket by+ extracting it with CURLINFO_LASTSOCKET */+ CINIT(CONNECT_ONLY, LONG, 141),++ /* Function that will be called to convert from the+ network encoding (instead of using the iconv calls in libcurl) */+ CINIT(CONV_FROM_NETWORK_FUNCTION, FUNCTIONPOINT, 142),++ /* Function that will be called to convert to the+ network encoding (instead of using the iconv calls in libcurl) */+ CINIT(CONV_TO_NETWORK_FUNCTION, FUNCTIONPOINT, 143),++ /* Function that will be called to convert from UTF8+ (instead of using the iconv calls in libcurl)+ Note that this is used only for SSL certificate processing */+ CINIT(CONV_FROM_UTF8_FUNCTION, FUNCTIONPOINT, 144),++ /* if the connection proceeds too quickly then need to slow it down */+ /* limit-rate: maximum number of bytes per second to send or receive */+ CINIT(MAX_SEND_SPEED_LARGE, OFF_T, 145),+ CINIT(MAX_RECV_SPEED_LARGE, OFF_T, 146),++ /* Pointer to command string to send if USER/PASS fails. */+ CINIT(FTP_ALTERNATIVE_TO_USER, OBJECTPOINT, 147),++ /* callback function for setting socket options */+ CINIT(SOCKOPTFUNCTION, FUNCTIONPOINT, 148),+ CINIT(SOCKOPTDATA, OBJECTPOINT, 149),++ /* set to 0 to disable session ID re-use for this transfer, default is+ enabled (== 1) */+ CINIT(SSL_SESSIONID_CACHE, LONG, 150),++ /* allowed SSH authentication methods */+ CINIT(SSH_AUTH_TYPES, LONG, 151),++ /* Used by scp/sftp to do public/private key authentication */+ CINIT(SSH_PUBLIC_KEYFILE, OBJECTPOINT, 152),+ CINIT(SSH_PRIVATE_KEYFILE, OBJECTPOINT, 153),++ /* Send CCC (Clear Command Channel) after authentication */+ CINIT(FTP_SSL_CCC, LONG, 154),++ /* Same as TIMEOUT and CONNECTTIMEOUT, but with ms resolution */+ CINIT(TIMEOUT_MS, LONG, 155),+ CINIT(CONNECTTIMEOUT_MS, LONG, 156),++ /* set to zero to disable the libcurl's decoding and thus pass the raw body+ data to the application even when it is encoded/compressed */+ CINIT(HTTP_TRANSFER_DECODING, LONG, 157),+ CINIT(HTTP_CONTENT_DECODING, LONG, 158),++ /* Permission used when creating new files and directories on the remote+ server for protocols that support it, SFTP/SCP/FILE */+ CINIT(NEW_FILE_PERMS, LONG, 159),+ CINIT(NEW_DIRECTORY_PERMS, LONG, 160),++ /* Set the behaviour of POST when redirecting. Values must be set to one+ of CURL_REDIR* defines below. This used to be called CURLOPT_POST301 */+ CINIT(POSTREDIR, LONG, 161),++ /* used by scp/sftp to verify the host's public key */+ CINIT(SSH_HOST_PUBLIC_KEY_MD5, OBJECTPOINT, 162),++ /* Callback function for opening socket (instead of socket(2)). Optionally,+ callback is able change the address or refuse to connect returning+ CURL_SOCKET_BAD. The callback should have type+ curl_opensocket_callback */+ CINIT(OPENSOCKETFUNCTION, FUNCTIONPOINT, 163),+ CINIT(OPENSOCKETDATA, OBJECTPOINT, 164),++ /* POST volatile input fields. */+ CINIT(COPYPOSTFIELDS, OBJECTPOINT, 165),++ /* set transfer mode (;type=<a|i>) when doing FTP via an HTTP proxy */+ CINIT(PROXY_TRANSFER_MODE, LONG, 166),++ /* Callback function for seeking in the input stream */+ CINIT(SEEKFUNCTION, FUNCTIONPOINT, 167),+ CINIT(SEEKDATA, OBJECTPOINT, 168),++ /* CRL file */+ CINIT(CRLFILE, OBJECTPOINT, 169),++ /* Issuer certificate */+ CINIT(ISSUERCERT, OBJECTPOINT, 170),++ /* (IPv6) Address scope */+ CINIT(ADDRESS_SCOPE, LONG, 171),++ /* Collect certificate chain info and allow it to get retrievable with+ CURLINFO_CERTINFO after the transfer is complete. (Unfortunately) only+ working with OpenSSL-powered builds. */+ CINIT(CERTINFO, LONG, 172),++ /* "name" and "pwd" to use when fetching. */+ CINIT(USERNAME, OBJECTPOINT, 173),+ CINIT(PASSWORD, OBJECTPOINT, 174),++ /* "name" and "pwd" to use with Proxy when fetching. */+ CINIT(PROXYUSERNAME, OBJECTPOINT, 175),+ CINIT(PROXYPASSWORD, OBJECTPOINT, 176),++ /* Comma separated list of hostnames defining no-proxy zones. These should+ match both hostnames directly, and hostnames within a domain. For+ example, local.com will match local.com and www.local.com, but NOT+ notlocal.com or www.notlocal.com. For compatibility with other+ implementations of this, .local.com will be considered to be the same as+ local.com. A single * is the only valid wildcard, and effectively+ disables the use of proxy. */+ CINIT(NOPROXY, OBJECTPOINT, 177),++ /* block size for TFTP transfers */+ CINIT(TFTP_BLKSIZE, LONG, 178),++ /* Socks Service */+ CINIT(SOCKS5_GSSAPI_SERVICE, OBJECTPOINT, 179),++ /* Socks Service */+ CINIT(SOCKS5_GSSAPI_NEC, LONG, 180),++ /* set the bitmask for the protocols that are allowed to be used for the+ transfer, which thus helps the app which takes URLs from users or other+ external inputs and want to restrict what protocol(s) to deal+ with. Defaults to CURLPROTO_ALL. */+ CINIT(PROTOCOLS, LONG, 181),++ /* set the bitmask for the protocols that libcurl is allowed to follow to,+ as a subset of the CURLOPT_PROTOCOLS ones. That means the protocol needs+ to be set in both bitmasks to be allowed to get redirected to. Defaults+ to all protocols except FILE and SCP. */+ CINIT(REDIR_PROTOCOLS, LONG, 182),++ /* set the SSH knownhost file name to use */+ CINIT(SSH_KNOWNHOSTS, OBJECTPOINT, 183),++ /* set the SSH host key callback, must point to a curl_sshkeycallback+ function */+ CINIT(SSH_KEYFUNCTION, FUNCTIONPOINT, 184),++ /* set the SSH host key callback custom pointer */+ CINIT(SSH_KEYDATA, OBJECTPOINT, 185),++ /* set the SMTP mail originator */+ CINIT(MAIL_FROM, OBJECTPOINT, 186),++ /* set the SMTP mail receiver(s) */+ CINIT(MAIL_RCPT, OBJECTPOINT, 187),++ /* FTP: send PRET before PASV */+ CINIT(FTP_USE_PRET, LONG, 188),++ /* RTSP request method (OPTIONS, SETUP, PLAY, etc...) */+ CINIT(RTSP_REQUEST, LONG, 189),++ /* The RTSP session identifier */+ CINIT(RTSP_SESSION_ID, OBJECTPOINT, 190),++ /* The RTSP stream URI */+ CINIT(RTSP_STREAM_URI, OBJECTPOINT, 191),++ /* The Transport: header to use in RTSP requests */+ CINIT(RTSP_TRANSPORT, OBJECTPOINT, 192),++ /* Manually initialize the client RTSP CSeq for this handle */+ CINIT(RTSP_CLIENT_CSEQ, LONG, 193),++ /* Manually initialize the server RTSP CSeq for this handle */+ CINIT(RTSP_SERVER_CSEQ, LONG, 194),++ /* The stream to pass to INTERLEAVEFUNCTION. */+ CINIT(INTERLEAVEDATA, OBJECTPOINT, 195),++ /* Let the application define a custom write method for RTP data */+ CINIT(INTERLEAVEFUNCTION, FUNCTIONPOINT, 196),++ /* Turn on wildcard matching */+ CINIT(WILDCARDMATCH, LONG, 197),++ /* Directory matching callback called before downloading of an+ individual file (chunk) started */+ CINIT(CHUNK_BGN_FUNCTION, FUNCTIONPOINT, 198),++ /* Directory matching callback called after the file (chunk)+ was downloaded, or skipped */+ CINIT(CHUNK_END_FUNCTION, FUNCTIONPOINT, 199),++ /* Change match (fnmatch-like) callback for wildcard matching */+ CINIT(FNMATCH_FUNCTION, FUNCTIONPOINT, 200),++ /* Let the application define custom chunk data pointer */+ CINIT(CHUNK_DATA, OBJECTPOINT, 201),++ /* FNMATCH_FUNCTION user pointer */+ CINIT(FNMATCH_DATA, OBJECTPOINT, 202),++ /* send linked-list of name:port:address sets */+ CINIT(RESOLVE, OBJECTPOINT, 203),++ /* Set a username for authenticated TLS */+ CINIT(TLSAUTH_USERNAME, OBJECTPOINT, 204),++ /* Set a password for authenticated TLS */+ CINIT(TLSAUTH_PASSWORD, OBJECTPOINT, 205),++ /* Set authentication type for authenticated TLS */+ CINIT(TLSAUTH_TYPE, OBJECTPOINT, 206),++ /* Set to 1 to enable the "TE:" header in HTTP requests to ask for+ compressed transfer-encoded responses. Set to 0 to disable the use of TE:+ in outgoing requests. The current default is 0, but it might change in a+ future libcurl release.++ libcurl will ask for the compressed methods it knows of, and if that+ isn't any, it will not ask for transfer-encoding at all even if this+ option is set to 1.++ */+ CINIT(TRANSFER_ENCODING, LONG, 207),++ /* Callback function for closing socket (instead of close(2)). The callback+ should have type curl_closesocket_callback */+ CINIT(CLOSESOCKETFUNCTION, FUNCTIONPOINT, 208),+ CINIT(CLOSESOCKETDATA, OBJECTPOINT, 209),++ /* allow GSSAPI credential delegation */+ CINIT(GSSAPI_DELEGATION, LONG, 210),++ /* Set the name servers to use for DNS resolution */+ CINIT(DNS_SERVERS, OBJECTPOINT, 211),++ /* Time-out accept operations (currently for FTP only) after this amount+ of miliseconds. */+ CINIT(ACCEPTTIMEOUT_MS, LONG, 212),++ /* Set TCP keepalive */+ CINIT(TCP_KEEPALIVE, LONG, 213),++ /* non-universal keepalive knobs (Linux, AIX, HP-UX, more) */+ CINIT(TCP_KEEPIDLE, LONG, 214),+ CINIT(TCP_KEEPINTVL, LONG, 215),++ /* Enable/disable specific SSL features with a bitmask, see CURLSSLOPT_* */+ CINIT(SSL_OPTIONS, LONG, 216),++ /* set the SMTP auth originator */+ CINIT(MAIL_AUTH, OBJECTPOINT, 217),++ CURLOPT_LASTENTRY /* the last unused */+} CURLoption;++#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all+ the obsolete stuff removed! */++/* Backwards compatibility with older names */+/* These are scheduled to disappear by 2011 */++/* This was added in version 7.19.1 */+#define CURLOPT_POST301 CURLOPT_POSTREDIR++/* These are scheduled to disappear by 2009 */++/* The following were added in 7.17.0 */+#define CURLOPT_SSLKEYPASSWD CURLOPT_KEYPASSWD+#define CURLOPT_FTPAPPEND CURLOPT_APPEND+#define CURLOPT_FTPLISTONLY CURLOPT_DIRLISTONLY+#define CURLOPT_FTP_SSL CURLOPT_USE_SSL++/* The following were added earlier */++#define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD+#define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL++#else+/* This is set if CURL_NO_OLDIES is defined at compile-time */+#undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */+#endif+++ /* Below here follows defines for the CURLOPT_IPRESOLVE option. If a host+ name resolves addresses using more than one IP protocol version, this+ option might be handy to force libcurl to use a specific IP version. */+#define CURL_IPRESOLVE_WHATEVER 0 /* default, resolves addresses to all IP+ versions that your system allows */+#define CURL_IPRESOLVE_V4 1 /* resolve to ipv4 addresses */+#define CURL_IPRESOLVE_V6 2 /* resolve to ipv6 addresses */++ /* three convenient "aliases" that follow the name scheme better */+#define CURLOPT_WRITEDATA CURLOPT_FILE+#define CURLOPT_READDATA CURLOPT_INFILE+#define CURLOPT_HEADERDATA CURLOPT_WRITEHEADER+#define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER++ /* These enums are for use with the CURLOPT_HTTP_VERSION option. */+enum {+ CURL_HTTP_VERSION_NONE, /* setting this means we don't care, and that we'd+ like the library to choose the best possible+ for us! */+ CURL_HTTP_VERSION_1_0, /* please use HTTP 1.0 in the request */+ CURL_HTTP_VERSION_1_1, /* please use HTTP 1.1 in the request */++ CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */+};++/*+ * Public API enums for RTSP requests+ */+enum {+ CURL_RTSPREQ_NONE, /* first in list */+ CURL_RTSPREQ_OPTIONS,+ CURL_RTSPREQ_DESCRIBE,+ CURL_RTSPREQ_ANNOUNCE,+ CURL_RTSPREQ_SETUP,+ CURL_RTSPREQ_PLAY,+ CURL_RTSPREQ_PAUSE,+ CURL_RTSPREQ_TEARDOWN,+ CURL_RTSPREQ_GET_PARAMETER,+ CURL_RTSPREQ_SET_PARAMETER,+ CURL_RTSPREQ_RECORD,+ CURL_RTSPREQ_RECEIVE,+ CURL_RTSPREQ_LAST /* last in list */+};++ /* These enums are for use with the CURLOPT_NETRC option. */+enum CURL_NETRC_OPTION {+ CURL_NETRC_IGNORED, /* The .netrc will never be read.+ * This is the default. */+ CURL_NETRC_OPTIONAL, /* A user:password in the URL will be preferred+ * to one in the .netrc. */+ CURL_NETRC_REQUIRED, /* A user:password in the URL will be ignored.+ * Unless one is set programmatically, the .netrc+ * will be queried. */+ CURL_NETRC_LAST+};++enum {+ CURL_SSLVERSION_DEFAULT,+ CURL_SSLVERSION_TLSv1,+ CURL_SSLVERSION_SSLv2,+ CURL_SSLVERSION_SSLv3,++ CURL_SSLVERSION_LAST /* never use, keep last */+};++enum CURL_TLSAUTH {+ CURL_TLSAUTH_NONE,+ CURL_TLSAUTH_SRP,+ CURL_TLSAUTH_LAST /* never use, keep last */+};++/* symbols to use with CURLOPT_POSTREDIR.+ CURL_REDIR_POST_301, CURL_REDIR_POST_302 and CURL_REDIR_POST_303+ can be bitwise ORed so that CURL_REDIR_POST_301 | CURL_REDIR_POST_302+ | CURL_REDIR_POST_303 == CURL_REDIR_POST_ALL */++#define CURL_REDIR_GET_ALL 0+#define CURL_REDIR_POST_301 1+#define CURL_REDIR_POST_302 2+#define CURL_REDIR_POST_303 4+#define CURL_REDIR_POST_ALL \+ (CURL_REDIR_POST_301|CURL_REDIR_POST_302|CURL_REDIR_POST_303)++typedef enum {+ CURL_TIMECOND_NONE,++ CURL_TIMECOND_IFMODSINCE,+ CURL_TIMECOND_IFUNMODSINCE,+ CURL_TIMECOND_LASTMOD,++ CURL_TIMECOND_LAST+} curl_TimeCond;+++/* curl_strequal() and curl_strnequal() are subject for removal in a future+ libcurl, see lib/README.curlx for details */+CURL_EXTERN int (curl_strequal)(const char *s1, const char *s2);+CURL_EXTERN int (curl_strnequal)(const char *s1, const char *s2, size_t n);++/* name is uppercase CURLFORM_<name> */+#ifdef CFINIT+#undef CFINIT+#endif++#ifdef CURL_ISOCPP+#define CFINIT(name) CURLFORM_ ## name+#else+/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */+#define CFINIT(name) CURLFORM_/**/name+#endif++typedef enum {+ CFINIT(NOTHING), /********* the first one is unused ************/++ /* */+ CFINIT(COPYNAME),+ CFINIT(PTRNAME),+ CFINIT(NAMELENGTH),+ CFINIT(COPYCONTENTS),+ CFINIT(PTRCONTENTS),+ CFINIT(CONTENTSLENGTH),+ CFINIT(FILECONTENT),+ CFINIT(ARRAY),+ CFINIT(OBSOLETE),+ CFINIT(FILE),++ CFINIT(BUFFER),+ CFINIT(BUFFERPTR),+ CFINIT(BUFFERLENGTH),++ CFINIT(CONTENTTYPE),+ CFINIT(CONTENTHEADER),+ CFINIT(FILENAME),+ CFINIT(END),+ CFINIT(OBSOLETE2),++ CFINIT(STREAM),++ CURLFORM_LASTENTRY /* the last unused */+} CURLformoption;++#undef CFINIT /* done */++/* structure to be used as parameter for CURLFORM_ARRAY */+struct curl_forms {+ CURLformoption option;+ const char *value;+};++/* use this for multipart formpost building */+/* Returns code for curl_formadd()+ *+ * Returns:+ * CURL_FORMADD_OK on success+ * CURL_FORMADD_MEMORY if the FormInfo allocation fails+ * CURL_FORMADD_OPTION_TWICE if one option is given twice for one Form+ * CURL_FORMADD_NULL if a null pointer was given for a char+ * CURL_FORMADD_MEMORY if the allocation of a FormInfo struct failed+ * CURL_FORMADD_UNKNOWN_OPTION if an unknown option was used+ * CURL_FORMADD_INCOMPLETE if the some FormInfo is not complete (or error)+ * CURL_FORMADD_MEMORY if a curl_httppost struct cannot be allocated+ * CURL_FORMADD_MEMORY if some allocation for string copying failed.+ * CURL_FORMADD_ILLEGAL_ARRAY if an illegal option is used in an array+ *+ ***************************************************************************/+typedef enum {+ CURL_FORMADD_OK, /* first, no error */++ CURL_FORMADD_MEMORY,+ CURL_FORMADD_OPTION_TWICE,+ CURL_FORMADD_NULL,+ CURL_FORMADD_UNKNOWN_OPTION,+ CURL_FORMADD_INCOMPLETE,+ CURL_FORMADD_ILLEGAL_ARRAY,+ CURL_FORMADD_DISABLED, /* libcurl was built with this disabled */++ CURL_FORMADD_LAST /* last */+} CURLFORMcode;++/*+ * NAME curl_formadd()+ *+ * DESCRIPTION+ *+ * Pretty advanced function for building multi-part formposts. Each invoke+ * adds one part that together construct a full post. Then use+ * CURLOPT_HTTPPOST to send it off to libcurl.+ */+CURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost,+ struct curl_httppost **last_post,+ ...);++/*+ * callback function for curl_formget()+ * The void *arg pointer will be the one passed as second argument to+ * curl_formget().+ * The character buffer passed to it must not be freed.+ * Should return the buffer length passed to it as the argument "len" on+ * success.+ */+typedef size_t (*curl_formget_callback)(void *arg, const char *buf,+ size_t len);++/*+ * NAME curl_formget()+ *+ * DESCRIPTION+ *+ * Serialize a curl_httppost struct built with curl_formadd().+ * Accepts a void pointer as second argument which will be passed to+ * the curl_formget_callback function.+ * Returns 0 on success.+ */+CURL_EXTERN int curl_formget(struct curl_httppost *form, void *arg,+ curl_formget_callback append);+/*+ * NAME curl_formfree()+ *+ * DESCRIPTION+ *+ * Free a multipart formpost previously built with curl_formadd().+ */+CURL_EXTERN void curl_formfree(struct curl_httppost *form);++/*+ * NAME curl_getenv()+ *+ * DESCRIPTION+ *+ * Returns a malloc()'ed string that MUST be curl_free()ed after usage is+ * complete. DEPRECATED - see lib/README.curlx+ */+CURL_EXTERN char *curl_getenv(const char *variable);++/*+ * NAME curl_version()+ *+ * DESCRIPTION+ *+ * Returns a static ascii string of the libcurl version.+ */+CURL_EXTERN char *curl_version(void);++/*+ * NAME curl_easy_escape()+ *+ * DESCRIPTION+ *+ * Escapes URL strings (converts all letters consider illegal in URLs to their+ * %XX versions). This function returns a new allocated string or NULL if an+ * error occurred.+ */+CURL_EXTERN char *curl_easy_escape(CURL *handle,+ const char *string,+ int length);++/* the previous version: */+CURL_EXTERN char *curl_escape(const char *string,+ int length);+++/*+ * NAME curl_easy_unescape()+ *+ * DESCRIPTION+ *+ * Unescapes URL encoding in strings (converts all %XX codes to their 8bit+ * versions). This function returns a new allocated string or NULL if an error+ * occurred.+ * Conversion Note: On non-ASCII platforms the ASCII %XX codes are+ * converted into the host encoding.+ */+CURL_EXTERN char *curl_easy_unescape(CURL *handle,+ const char *string,+ int length,+ int *outlength);++/* the previous version */+CURL_EXTERN char *curl_unescape(const char *string,+ int length);++/*+ * NAME curl_free()+ *+ * DESCRIPTION+ *+ * Provided for de-allocation in the same translation unit that did the+ * allocation. Added in libcurl 7.10+ */+CURL_EXTERN void curl_free(void *p);++/*+ * NAME curl_global_init()+ *+ * DESCRIPTION+ *+ * curl_global_init() should be invoked exactly once for each application that+ * uses libcurl and before any call of other libcurl functions.+ *+ * This function is not thread-safe!+ */+CURL_EXTERN CURLcode curl_global_init(long flags);++/*+ * NAME curl_global_init_mem()+ *+ * DESCRIPTION+ *+ * curl_global_init() or curl_global_init_mem() should be invoked exactly once+ * for each application that uses libcurl. This function can be used to+ * initialize libcurl and set user defined memory management callback+ * functions. Users can implement memory management routines to check for+ * memory leaks, check for mis-use of the curl library etc. User registered+ * callback routines with be invoked by this library instead of the system+ * memory management routines like malloc, free etc.+ */+CURL_EXTERN CURLcode curl_global_init_mem(long flags,+ curl_malloc_callback m,+ curl_free_callback f,+ curl_realloc_callback r,+ curl_strdup_callback s,+ curl_calloc_callback c);++/*+ * NAME curl_global_cleanup()+ *+ * DESCRIPTION+ *+ * curl_global_cleanup() should be invoked exactly once for each application+ * that uses libcurl+ */+CURL_EXTERN void curl_global_cleanup(void);++/* linked-list structure for the CURLOPT_QUOTE option (and other) */+struct curl_slist {+ char *data;+ struct curl_slist *next;+};++/*+ * NAME curl_slist_append()+ *+ * DESCRIPTION+ *+ * Appends a string to a linked list. If no list exists, it will be created+ * first. Returns the new list, after appending.+ */+CURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *,+ const char *);++/*+ * NAME curl_slist_free_all()+ *+ * DESCRIPTION+ *+ * free a previously built curl_slist.+ */+CURL_EXTERN void curl_slist_free_all(struct curl_slist *);++/*+ * NAME curl_getdate()+ *+ * DESCRIPTION+ *+ * Returns the time, in seconds since 1 Jan 1970 of the time string given in+ * the first argument. The time argument in the second parameter is unused+ * and should be set to NULL.+ */+CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused);++/* info about the certificate chain, only for OpenSSL builds. Asked+ for with CURLOPT_CERTINFO / CURLINFO_CERTINFO */+struct curl_certinfo {+ int num_of_certs; /* number of certificates with information */+ struct curl_slist **certinfo; /* for each index in this array, there's a+ linked list with textual information in the+ format "name: value" */+};++#define CURLINFO_STRING 0x100000+#define CURLINFO_LONG 0x200000+#define CURLINFO_DOUBLE 0x300000+#define CURLINFO_SLIST 0x400000+#define CURLINFO_MASK 0x0fffff+#define CURLINFO_TYPEMASK 0xf00000++typedef enum {+ CURLINFO_NONE, /* first, never use this */+ CURLINFO_EFFECTIVE_URL = CURLINFO_STRING + 1,+ CURLINFO_RESPONSE_CODE = CURLINFO_LONG + 2,+ CURLINFO_TOTAL_TIME = CURLINFO_DOUBLE + 3,+ CURLINFO_NAMELOOKUP_TIME = CURLINFO_DOUBLE + 4,+ CURLINFO_CONNECT_TIME = CURLINFO_DOUBLE + 5,+ CURLINFO_PRETRANSFER_TIME = CURLINFO_DOUBLE + 6,+ CURLINFO_SIZE_UPLOAD = CURLINFO_DOUBLE + 7,+ CURLINFO_SIZE_DOWNLOAD = CURLINFO_DOUBLE + 8,+ CURLINFO_SPEED_DOWNLOAD = CURLINFO_DOUBLE + 9,+ CURLINFO_SPEED_UPLOAD = CURLINFO_DOUBLE + 10,+ CURLINFO_HEADER_SIZE = CURLINFO_LONG + 11,+ CURLINFO_REQUEST_SIZE = CURLINFO_LONG + 12,+ CURLINFO_SSL_VERIFYRESULT = CURLINFO_LONG + 13,+ CURLINFO_FILETIME = CURLINFO_LONG + 14,+ CURLINFO_CONTENT_LENGTH_DOWNLOAD = CURLINFO_DOUBLE + 15,+ CURLINFO_CONTENT_LENGTH_UPLOAD = CURLINFO_DOUBLE + 16,+ CURLINFO_STARTTRANSFER_TIME = CURLINFO_DOUBLE + 17,+ CURLINFO_CONTENT_TYPE = CURLINFO_STRING + 18,+ CURLINFO_REDIRECT_TIME = CURLINFO_DOUBLE + 19,+ CURLINFO_REDIRECT_COUNT = CURLINFO_LONG + 20,+ CURLINFO_PRIVATE = CURLINFO_STRING + 21,+ CURLINFO_HTTP_CONNECTCODE = CURLINFO_LONG + 22,+ CURLINFO_HTTPAUTH_AVAIL = CURLINFO_LONG + 23,+ CURLINFO_PROXYAUTH_AVAIL = CURLINFO_LONG + 24,+ CURLINFO_OS_ERRNO = CURLINFO_LONG + 25,+ CURLINFO_NUM_CONNECTS = CURLINFO_LONG + 26,+ CURLINFO_SSL_ENGINES = CURLINFO_SLIST + 27,+ CURLINFO_COOKIELIST = CURLINFO_SLIST + 28,+ CURLINFO_LASTSOCKET = CURLINFO_LONG + 29,+ CURLINFO_FTP_ENTRY_PATH = CURLINFO_STRING + 30,+ CURLINFO_REDIRECT_URL = CURLINFO_STRING + 31,+ CURLINFO_PRIMARY_IP = CURLINFO_STRING + 32,+ CURLINFO_APPCONNECT_TIME = CURLINFO_DOUBLE + 33,+ CURLINFO_CERTINFO = CURLINFO_SLIST + 34,+ CURLINFO_CONDITION_UNMET = CURLINFO_LONG + 35,+ CURLINFO_RTSP_SESSION_ID = CURLINFO_STRING + 36,+ CURLINFO_RTSP_CLIENT_CSEQ = CURLINFO_LONG + 37,+ CURLINFO_RTSP_SERVER_CSEQ = CURLINFO_LONG + 38,+ CURLINFO_RTSP_CSEQ_RECV = CURLINFO_LONG + 39,+ CURLINFO_PRIMARY_PORT = CURLINFO_LONG + 40,+ CURLINFO_LOCAL_IP = CURLINFO_STRING + 41,+ CURLINFO_LOCAL_PORT = CURLINFO_LONG + 42,+ /* Fill in new entries below here! */++ CURLINFO_LASTONE = 42+} CURLINFO;++/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as+ CURLINFO_HTTP_CODE */+#define CURLINFO_HTTP_CODE CURLINFO_RESPONSE_CODE++typedef enum {+ CURLCLOSEPOLICY_NONE, /* first, never use this */++ CURLCLOSEPOLICY_OLDEST,+ CURLCLOSEPOLICY_LEAST_RECENTLY_USED,+ CURLCLOSEPOLICY_LEAST_TRAFFIC,+ CURLCLOSEPOLICY_SLOWEST,+ CURLCLOSEPOLICY_CALLBACK,++ CURLCLOSEPOLICY_LAST /* last, never use this */+} curl_closepolicy;++#define CURL_GLOBAL_SSL (1<<0)+#define CURL_GLOBAL_WIN32 (1<<1)+#define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32)+#define CURL_GLOBAL_NOTHING 0+#define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL+#define CURL_GLOBAL_ACK_EINTR (1<<2)+++/*****************************************************************************+ * Setup defines, protos etc for the sharing stuff.+ */++/* Different data locks for a single share */+typedef enum {+ CURL_LOCK_DATA_NONE = 0,+ /* CURL_LOCK_DATA_SHARE is used internally to say that+ * the locking is just made to change the internal state of the share+ * itself.+ */+ CURL_LOCK_DATA_SHARE,+ CURL_LOCK_DATA_COOKIE,+ CURL_LOCK_DATA_DNS,+ CURL_LOCK_DATA_SSL_SESSION,+ CURL_LOCK_DATA_CONNECT,+ CURL_LOCK_DATA_LAST+} curl_lock_data;++/* Different lock access types */+typedef enum {+ CURL_LOCK_ACCESS_NONE = 0, /* unspecified action */+ CURL_LOCK_ACCESS_SHARED = 1, /* for read perhaps */+ CURL_LOCK_ACCESS_SINGLE = 2, /* for write perhaps */+ CURL_LOCK_ACCESS_LAST /* never use */+} curl_lock_access;++typedef void (*curl_lock_function)(CURL *handle,+ curl_lock_data data,+ curl_lock_access locktype,+ void *userptr);+typedef void (*curl_unlock_function)(CURL *handle,+ curl_lock_data data,+ void *userptr);++typedef void CURLSH;++typedef enum {+ CURLSHE_OK, /* all is fine */+ CURLSHE_BAD_OPTION, /* 1 */+ CURLSHE_IN_USE, /* 2 */+ CURLSHE_INVALID, /* 3 */+ CURLSHE_NOMEM, /* 4 out of memory */+ CURLSHE_NOT_BUILT_IN, /* 5 feature not present in lib */+ CURLSHE_LAST /* never use */+} CURLSHcode;++typedef enum {+ CURLSHOPT_NONE, /* don't use */+ CURLSHOPT_SHARE, /* specify a data type to share */+ CURLSHOPT_UNSHARE, /* specify which data type to stop sharing */+ CURLSHOPT_LOCKFUNC, /* pass in a 'curl_lock_function' pointer */+ CURLSHOPT_UNLOCKFUNC, /* pass in a 'curl_unlock_function' pointer */+ CURLSHOPT_USERDATA, /* pass in a user data pointer used in the lock/unlock+ callback functions */+ CURLSHOPT_LAST /* never use */+} CURLSHoption;++CURL_EXTERN CURLSH *curl_share_init(void);+CURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, ...);+CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *);++/****************************************************************************+ * Structures for querying information about the curl library at runtime.+ */++typedef enum {+ CURLVERSION_FIRST,+ CURLVERSION_SECOND,+ CURLVERSION_THIRD,+ CURLVERSION_FOURTH,+ CURLVERSION_LAST /* never actually use this */+} CURLversion;++/* The 'CURLVERSION_NOW' is the symbolic name meant to be used by+ basically all programs ever that want to get version information. It is+ meant to be a built-in version number for what kind of struct the caller+ expects. If the struct ever changes, we redefine the NOW to another enum+ from above. */+#define CURLVERSION_NOW CURLVERSION_FOURTH++typedef struct {+ CURLversion age; /* age of the returned struct */+ const char *version; /* LIBCURL_VERSION */+ unsigned int version_num; /* LIBCURL_VERSION_NUM */+ const char *host; /* OS/host/cpu/machine when configured */+ int features; /* bitmask, see defines below */+ const char *ssl_version; /* human readable string */+ long ssl_version_num; /* not used anymore, always 0 */+ const char *libz_version; /* human readable string */+ /* protocols is terminated by an entry with a NULL protoname */+ const char * const *protocols;++ /* The fields below this were added in CURLVERSION_SECOND */+ const char *ares;+ int ares_num;++ /* This field was added in CURLVERSION_THIRD */+ const char *libidn;++ /* These field were added in CURLVERSION_FOURTH */++ /* Same as '_libiconv_version' if built with HAVE_ICONV */+ int iconv_ver_num;++ const char *libssh_version; /* human readable string */++} curl_version_info_data;++#define CURL_VERSION_IPV6 (1<<0) /* IPv6-enabled */+#define CURL_VERSION_KERBEROS4 (1<<1) /* kerberos auth is supported */+#define CURL_VERSION_SSL (1<<2) /* SSL options are present */+#define CURL_VERSION_LIBZ (1<<3) /* libz features are present */+#define CURL_VERSION_NTLM (1<<4) /* NTLM auth is supported */+#define CURL_VERSION_GSSNEGOTIATE (1<<5) /* Negotiate auth support */+#define CURL_VERSION_DEBUG (1<<6) /* built with debug capabilities */+#define CURL_VERSION_ASYNCHDNS (1<<7) /* asynchronous dns resolves */+#define CURL_VERSION_SPNEGO (1<<8) /* SPNEGO auth */+#define CURL_VERSION_LARGEFILE (1<<9) /* supports files bigger than 2GB */+#define CURL_VERSION_IDN (1<<10) /* International Domain Names support */+#define CURL_VERSION_SSPI (1<<11) /* SSPI is supported */+#define CURL_VERSION_CONV (1<<12) /* character conversions supported */+#define CURL_VERSION_CURLDEBUG (1<<13) /* debug memory tracking supported */+#define CURL_VERSION_TLSAUTH_SRP (1<<14) /* TLS-SRP auth is supported */+#define CURL_VERSION_NTLM_WB (1<<15) /* NTLM delegating to winbind helper */++ /*+ * NAME curl_version_info()+ *+ * DESCRIPTION+ *+ * This function returns a pointer to a static copy of the version info+ * struct. See above.+ */+CURL_EXTERN curl_version_info_data *curl_version_info(CURLversion);++/*+ * NAME curl_easy_strerror()+ *+ * DESCRIPTION+ *+ * The curl_easy_strerror function may be used to turn a CURLcode value+ * into the equivalent human readable error string. This is useful+ * for printing meaningful error messages.+ */+CURL_EXTERN const char *curl_easy_strerror(CURLcode);++/*+ * NAME curl_share_strerror()+ *+ * DESCRIPTION+ *+ * The curl_share_strerror function may be used to turn a CURLSHcode value+ * into the equivalent human readable error string. This is useful+ * for printing meaningful error messages.+ */+CURL_EXTERN const char *curl_share_strerror(CURLSHcode);++/*+ * NAME curl_easy_pause()+ *+ * DESCRIPTION+ *+ * The curl_easy_pause function pauses or unpauses transfers. Select the new+ * state by setting the bitmask, use the convenience defines below.+ *+ */+CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask);++#define CURLPAUSE_RECV (1<<0)+#define CURLPAUSE_RECV_CONT (0)++#define CURLPAUSE_SEND (1<<2)+#define CURLPAUSE_SEND_CONT (0)++#define CURLPAUSE_ALL (CURLPAUSE_RECV|CURLPAUSE_SEND)+#define CURLPAUSE_CONT (CURLPAUSE_RECV_CONT|CURLPAUSE_SEND_CONT)++#ifdef __cplusplus+}+#endif++/* unfortunately, the easy.h and multi.h include files need options and info+ stuff before they can be included! */+#include "easy.h" /* nothing in curl is fun without the easy stuff */+#include "multi.h"++/* the typechecker doesn't work in C++ (yet) */+#if defined(__GNUC__) && defined(__GNUC_MINOR__) && \+ ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && \+ !defined(__cplusplus) && !defined(CURL_DISABLE_TYPECHECK)+#include "typecheck-gcc.h"+#else+#if defined(__STDC__) && (__STDC__ >= 1)+/* This preprocessor magic that replaces a call with the exact same call is+ only done to make sure application authors pass exactly three arguments+ to these functions. */+#define curl_easy_setopt(handle,opt,param) curl_easy_setopt(handle,opt,param)+#define curl_easy_getinfo(handle,info,arg) curl_easy_getinfo(handle,info,arg)+#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param)+#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param)+#endif /* __STDC__ >= 1 */+#endif /* gcc >= 4.3 && !__cplusplus */++#endif /* __CURL_CURL_H */
+ Network/CURL000/curl-7.30.0/curlbuild.h view
@@ -0,0 +1,585 @@+#ifndef __CURL_CURLBUILD_H+#define __CURL_CURLBUILD_H+/***************************************************************************+ * _ _ ____ _+ * Project ___| | | | _ \| |+ * / __| | | | |_) | |+ * | (__| |_| | _ <| |___+ * \___|\___/|_| \_\_____|+ *+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.+ *+ * This software is licensed as described in the file COPYING, which+ * you should have received as part of this distribution. The terms+ * are also available at http://curl.haxx.se/docs/copyright.html.+ *+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell+ * copies of the Software, and permit persons to whom the Software is+ * furnished to do so, under the terms of the COPYING file.+ *+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY+ * KIND, either express or implied.+ *+ ***************************************************************************/++/* ================================================================ */+/* NOTES FOR CONFIGURE CAPABLE SYSTEMS */+/* ================================================================ */++/*+ * NOTE 1:+ * -------+ *+ * See file include/curl/curlbuild.h.in, run configure, and forget+ * that this file exists it is only used for non-configure systems.+ * But you can keep reading if you want ;-)+ *+ */++/* ================================================================ */+/* NOTES FOR NON-CONFIGURE SYSTEMS */+/* ================================================================ */++/*+ * NOTE 1:+ * -------+ *+ * Nothing in this file is intended to be modified or adjusted by the+ * curl library user nor by the curl library builder.+ *+ * If you think that something actually needs to be changed, adjusted+ * or fixed in this file, then, report it on the libcurl development+ * mailing list: http://cool.haxx.se/mailman/listinfo/curl-library/+ *+ * Try to keep one section per platform, compiler and architecture,+ * otherwise, if an existing section is reused for a different one and+ * later on the original is adjusted, probably the piggybacking one can+ * be adversely changed.+ *+ * In order to differentiate between platforms/compilers/architectures+ * use only compiler built in predefined preprocessor symbols.+ *+ * This header file shall only export symbols which are 'curl' or 'CURL'+ * prefixed, otherwise public name space would be polluted.+ *+ * NOTE 2:+ * -------+ *+ * For any given platform/compiler curl_off_t must be typedef'ed to a+ * 64-bit wide signed integral data type. The width of this data type+ * must remain constant and independent of any possible large file+ * support settings.+ *+ * As an exception to the above, curl_off_t shall be typedef'ed to a+ * 32-bit wide signed integral data type if there is no 64-bit type.+ *+ * As a general rule, curl_off_t shall not be mapped to off_t. This+ * rule shall only be violated if off_t is the only 64-bit data type+ * available and the size of off_t is independent of large file support+ * settings. Keep your build on the safe side avoiding an off_t gating.+ * If you have a 64-bit off_t then take for sure that another 64-bit+ * data type exists, dig deeper and you will find it.+ *+ * NOTE 3:+ * -------+ *+ * Right now you might be staring at file include/curl/curlbuild.h.dist or+ * at file include/curl/curlbuild.h, this is due to the following reason:+ * file include/curl/curlbuild.h.dist is renamed to include/curl/curlbuild.h+ * when the libcurl source code distribution archive file is created.+ *+ * File include/curl/curlbuild.h.dist is not included in the distribution+ * archive. File include/curl/curlbuild.h is not present in the git tree.+ *+ * The distributed include/curl/curlbuild.h file is only intended to be used+ * on systems which can not run the also distributed configure script.+ *+ * On systems capable of running the configure script, the configure process+ * will overwrite the distributed include/curl/curlbuild.h file with one that+ * is suitable and specific to the library being configured and built, which+ * is generated from the include/curl/curlbuild.h.in template file.+ *+ * If you check out from git on a non-configure platform, you must run the+ * appropriate buildconf* script to set up curlbuild.h and other local files.+ *+ */++/* ================================================================ */+/* DEFINITION OF THESE SYMBOLS SHALL NOT TAKE PLACE ANYWHERE ELSE */+/* ================================================================ */++#ifdef CURL_SIZEOF_LONG+# error "CURL_SIZEOF_LONG shall not be defined except in curlbuild.h"+ Error Compilation_aborted_CURL_SIZEOF_LONG_already_defined+#endif++#ifdef CURL_TYPEOF_CURL_SOCKLEN_T+# error "CURL_TYPEOF_CURL_SOCKLEN_T shall not be defined except in curlbuild.h"+ Error Compilation_aborted_CURL_TYPEOF_CURL_SOCKLEN_T_already_defined+#endif++#ifdef CURL_SIZEOF_CURL_SOCKLEN_T+# error "CURL_SIZEOF_CURL_SOCKLEN_T shall not be defined except in curlbuild.h"+ Error Compilation_aborted_CURL_SIZEOF_CURL_SOCKLEN_T_already_defined+#endif++#ifdef CURL_TYPEOF_CURL_OFF_T+# error "CURL_TYPEOF_CURL_OFF_T shall not be defined except in curlbuild.h"+ Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_already_defined+#endif++#ifdef CURL_FORMAT_CURL_OFF_T+# error "CURL_FORMAT_CURL_OFF_T shall not be defined except in curlbuild.h"+ Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_already_defined+#endif++#ifdef CURL_FORMAT_CURL_OFF_TU+# error "CURL_FORMAT_CURL_OFF_TU shall not be defined except in curlbuild.h"+ Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_already_defined+#endif++#ifdef CURL_FORMAT_OFF_T+# error "CURL_FORMAT_OFF_T shall not be defined except in curlbuild.h"+ Error Compilation_aborted_CURL_FORMAT_OFF_T_already_defined+#endif++#ifdef CURL_SIZEOF_CURL_OFF_T+# error "CURL_SIZEOF_CURL_OFF_T shall not be defined except in curlbuild.h"+ Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_already_defined+#endif++#ifdef CURL_SUFFIX_CURL_OFF_T+# error "CURL_SUFFIX_CURL_OFF_T shall not be defined except in curlbuild.h"+ Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_already_defined+#endif++#ifdef CURL_SUFFIX_CURL_OFF_TU+# error "CURL_SUFFIX_CURL_OFF_TU shall not be defined except in curlbuild.h"+ Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_already_defined+#endif++/* ================================================================ */+/* EXTERNAL INTERFACE SETTINGS FOR NON-CONFIGURE SYSTEMS ONLY */+/* ================================================================ */++#if defined(__DJGPP__) || defined(__GO32__)+# if defined(__DJGPP__) && (__DJGPP__ > 1)+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long long+# define CURL_FORMAT_CURL_OFF_T "lld"+# define CURL_FORMAT_CURL_OFF_TU "llu"+# define CURL_FORMAT_OFF_T "%lld"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T LL+# define CURL_SUFFIX_CURL_OFF_TU ULL+# else+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long+# define CURL_FORMAT_CURL_OFF_T "ld"+# define CURL_FORMAT_CURL_OFF_TU "lu"+# define CURL_FORMAT_OFF_T "%ld"+# define CURL_SIZEOF_CURL_OFF_T 4+# define CURL_SUFFIX_CURL_OFF_T L+# define CURL_SUFFIX_CURL_OFF_TU UL+# endif+# define CURL_TYPEOF_CURL_SOCKLEN_T int+# define CURL_SIZEOF_CURL_SOCKLEN_T 4++#elif defined(__SALFORDC__)+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long+# define CURL_FORMAT_CURL_OFF_T "ld"+# define CURL_FORMAT_CURL_OFF_TU "lu"+# define CURL_FORMAT_OFF_T "%ld"+# define CURL_SIZEOF_CURL_OFF_T 4+# define CURL_SUFFIX_CURL_OFF_T L+# define CURL_SUFFIX_CURL_OFF_TU UL+# define CURL_TYPEOF_CURL_SOCKLEN_T int+# define CURL_SIZEOF_CURL_SOCKLEN_T 4++#elif defined(__BORLANDC__)+# if (__BORLANDC__ < 0x520)+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long+# define CURL_FORMAT_CURL_OFF_T "ld"+# define CURL_FORMAT_CURL_OFF_TU "lu"+# define CURL_FORMAT_OFF_T "%ld"+# define CURL_SIZEOF_CURL_OFF_T 4+# define CURL_SUFFIX_CURL_OFF_T L+# define CURL_SUFFIX_CURL_OFF_TU UL+# else+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T __int64+# define CURL_FORMAT_CURL_OFF_T "I64d"+# define CURL_FORMAT_CURL_OFF_TU "I64u"+# define CURL_FORMAT_OFF_T "%I64d"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T i64+# define CURL_SUFFIX_CURL_OFF_TU ui64+# endif+# define CURL_TYPEOF_CURL_SOCKLEN_T int+# define CURL_SIZEOF_CURL_SOCKLEN_T 4++#elif defined(__TURBOC__)+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long+# define CURL_FORMAT_CURL_OFF_T "ld"+# define CURL_FORMAT_CURL_OFF_TU "lu"+# define CURL_FORMAT_OFF_T "%ld"+# define CURL_SIZEOF_CURL_OFF_T 4+# define CURL_SUFFIX_CURL_OFF_T L+# define CURL_SUFFIX_CURL_OFF_TU UL+# define CURL_TYPEOF_CURL_SOCKLEN_T int+# define CURL_SIZEOF_CURL_SOCKLEN_T 4++#elif defined(__WATCOMC__)+# if defined(__386__)+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T __int64+# define CURL_FORMAT_CURL_OFF_T "I64d"+# define CURL_FORMAT_CURL_OFF_TU "I64u"+# define CURL_FORMAT_OFF_T "%I64d"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T i64+# define CURL_SUFFIX_CURL_OFF_TU ui64+# else+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long+# define CURL_FORMAT_CURL_OFF_T "ld"+# define CURL_FORMAT_CURL_OFF_TU "lu"+# define CURL_FORMAT_OFF_T "%ld"+# define CURL_SIZEOF_CURL_OFF_T 4+# define CURL_SUFFIX_CURL_OFF_T L+# define CURL_SUFFIX_CURL_OFF_TU UL+# endif+# define CURL_TYPEOF_CURL_SOCKLEN_T int+# define CURL_SIZEOF_CURL_SOCKLEN_T 4++#elif defined(__POCC__)+# if (__POCC__ < 280)+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long+# define CURL_FORMAT_CURL_OFF_T "ld"+# define CURL_FORMAT_CURL_OFF_TU "lu"+# define CURL_FORMAT_OFF_T "%ld"+# define CURL_SIZEOF_CURL_OFF_T 4+# define CURL_SUFFIX_CURL_OFF_T L+# define CURL_SUFFIX_CURL_OFF_TU UL+# elif defined(_MSC_VER)+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T __int64+# define CURL_FORMAT_CURL_OFF_T "I64d"+# define CURL_FORMAT_CURL_OFF_TU "I64u"+# define CURL_FORMAT_OFF_T "%I64d"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T i64+# define CURL_SUFFIX_CURL_OFF_TU ui64+# else+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long long+# define CURL_FORMAT_CURL_OFF_T "lld"+# define CURL_FORMAT_CURL_OFF_TU "llu"+# define CURL_FORMAT_OFF_T "%lld"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T LL+# define CURL_SUFFIX_CURL_OFF_TU ULL+# endif+# define CURL_TYPEOF_CURL_SOCKLEN_T int+# define CURL_SIZEOF_CURL_SOCKLEN_T 4++#elif defined(__LCC__)+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long+# define CURL_FORMAT_CURL_OFF_T "ld"+# define CURL_FORMAT_CURL_OFF_TU "lu"+# define CURL_FORMAT_OFF_T "%ld"+# define CURL_SIZEOF_CURL_OFF_T 4+# define CURL_SUFFIX_CURL_OFF_T L+# define CURL_SUFFIX_CURL_OFF_TU UL+# define CURL_TYPEOF_CURL_SOCKLEN_T int+# define CURL_SIZEOF_CURL_SOCKLEN_T 4++#elif defined(__SYMBIAN32__)+# if defined(__EABI__) /* Treat all ARM compilers equally */+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long long+# define CURL_FORMAT_CURL_OFF_T "lld"+# define CURL_FORMAT_CURL_OFF_TU "llu"+# define CURL_FORMAT_OFF_T "%lld"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T LL+# define CURL_SUFFIX_CURL_OFF_TU ULL+# elif defined(__CW32__)+# pragma longlong on+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long long+# define CURL_FORMAT_CURL_OFF_T "lld"+# define CURL_FORMAT_CURL_OFF_TU "llu"+# define CURL_FORMAT_OFF_T "%lld"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T LL+# define CURL_SUFFIX_CURL_OFF_TU ULL+# elif defined(__VC32__)+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T __int64+# define CURL_FORMAT_CURL_OFF_T "lld"+# define CURL_FORMAT_CURL_OFF_TU "llu"+# define CURL_FORMAT_OFF_T "%lld"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T LL+# define CURL_SUFFIX_CURL_OFF_TU ULL+# endif+# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int+# define CURL_SIZEOF_CURL_SOCKLEN_T 4++#elif defined(__MWERKS__)+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long long+# define CURL_FORMAT_CURL_OFF_T "lld"+# define CURL_FORMAT_CURL_OFF_TU "llu"+# define CURL_FORMAT_OFF_T "%lld"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T LL+# define CURL_SUFFIX_CURL_OFF_TU ULL+# define CURL_TYPEOF_CURL_SOCKLEN_T int+# define CURL_SIZEOF_CURL_SOCKLEN_T 4++#elif defined(_WIN32_WCE)+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T __int64+# define CURL_FORMAT_CURL_OFF_T "I64d"+# define CURL_FORMAT_CURL_OFF_TU "I64u"+# define CURL_FORMAT_OFF_T "%I64d"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T i64+# define CURL_SUFFIX_CURL_OFF_TU ui64+# define CURL_TYPEOF_CURL_SOCKLEN_T int+# define CURL_SIZEOF_CURL_SOCKLEN_T 4++#elif defined(__MINGW32__)+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long long+# define CURL_FORMAT_CURL_OFF_T "I64d"+# define CURL_FORMAT_CURL_OFF_TU "I64u"+# define CURL_FORMAT_OFF_T "%I64d"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T LL+# define CURL_SUFFIX_CURL_OFF_TU ULL+# define CURL_TYPEOF_CURL_SOCKLEN_T int+# define CURL_SIZEOF_CURL_SOCKLEN_T 4++#elif defined(__VMS)+# if defined(__VAX)+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long+# define CURL_FORMAT_CURL_OFF_T "ld"+# define CURL_FORMAT_CURL_OFF_TU "lu"+# define CURL_FORMAT_OFF_T "%ld"+# define CURL_SIZEOF_CURL_OFF_T 4+# define CURL_SUFFIX_CURL_OFF_T L+# define CURL_SUFFIX_CURL_OFF_TU UL+# else+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long long+# define CURL_FORMAT_CURL_OFF_T "lld"+# define CURL_FORMAT_CURL_OFF_TU "llu"+# define CURL_FORMAT_OFF_T "%lld"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T LL+# define CURL_SUFFIX_CURL_OFF_TU ULL+# endif+# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int+# define CURL_SIZEOF_CURL_SOCKLEN_T 4++#elif defined(__OS400__)+# if defined(__ILEC400__)+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long long+# define CURL_FORMAT_CURL_OFF_T "lld"+# define CURL_FORMAT_CURL_OFF_TU "llu"+# define CURL_FORMAT_OFF_T "%lld"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T LL+# define CURL_SUFFIX_CURL_OFF_TU ULL+# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t+# define CURL_SIZEOF_CURL_SOCKLEN_T 4+# define CURL_PULL_SYS_TYPES_H 1+# define CURL_PULL_SYS_SOCKET_H 1+# endif++#elif defined(__MVS__)+# if defined(__IBMC__) || defined(__IBMCPP__)+# if defined(_ILP32)+# define CURL_SIZEOF_LONG 4+# elif defined(_LP64)+# define CURL_SIZEOF_LONG 8+# endif+# if defined(_LONG_LONG)+# define CURL_TYPEOF_CURL_OFF_T long long+# define CURL_FORMAT_CURL_OFF_T "lld"+# define CURL_FORMAT_CURL_OFF_TU "llu"+# define CURL_FORMAT_OFF_T "%lld"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T LL+# define CURL_SUFFIX_CURL_OFF_TU ULL+# elif defined(_LP64)+# define CURL_TYPEOF_CURL_OFF_T long+# define CURL_FORMAT_CURL_OFF_T "ld"+# define CURL_FORMAT_CURL_OFF_TU "lu"+# define CURL_FORMAT_OFF_T "%ld"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T L+# define CURL_SUFFIX_CURL_OFF_TU UL+# else+# define CURL_TYPEOF_CURL_OFF_T long+# define CURL_FORMAT_CURL_OFF_T "ld"+# define CURL_FORMAT_CURL_OFF_TU "lu"+# define CURL_FORMAT_OFF_T "%ld"+# define CURL_SIZEOF_CURL_OFF_T 4+# define CURL_SUFFIX_CURL_OFF_T L+# define CURL_SUFFIX_CURL_OFF_TU UL+# endif+# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t+# define CURL_SIZEOF_CURL_SOCKLEN_T 4+# define CURL_PULL_SYS_TYPES_H 1+# define CURL_PULL_SYS_SOCKET_H 1+# endif++#elif defined(__370__)+# if defined(__IBMC__) || defined(__IBMCPP__)+# if defined(_ILP32)+# define CURL_SIZEOF_LONG 4+# elif defined(_LP64)+# define CURL_SIZEOF_LONG 8+# endif+# if defined(_LONG_LONG)+# define CURL_TYPEOF_CURL_OFF_T long long+# define CURL_FORMAT_CURL_OFF_T "lld"+# define CURL_FORMAT_CURL_OFF_TU "llu"+# define CURL_FORMAT_OFF_T "%lld"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T LL+# define CURL_SUFFIX_CURL_OFF_TU ULL+# elif defined(_LP64)+# define CURL_TYPEOF_CURL_OFF_T long+# define CURL_FORMAT_CURL_OFF_T "ld"+# define CURL_FORMAT_CURL_OFF_TU "lu"+# define CURL_FORMAT_OFF_T "%ld"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T L+# define CURL_SUFFIX_CURL_OFF_TU UL+# else+# define CURL_TYPEOF_CURL_OFF_T long+# define CURL_FORMAT_CURL_OFF_T "ld"+# define CURL_FORMAT_CURL_OFF_TU "lu"+# define CURL_FORMAT_OFF_T "%ld"+# define CURL_SIZEOF_CURL_OFF_T 4+# define CURL_SUFFIX_CURL_OFF_T L+# define CURL_SUFFIX_CURL_OFF_TU UL+# endif+# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t+# define CURL_SIZEOF_CURL_SOCKLEN_T 4+# define CURL_PULL_SYS_TYPES_H 1+# define CURL_PULL_SYS_SOCKET_H 1+# endif++#elif defined(TPF)+# define CURL_SIZEOF_LONG 8+# define CURL_TYPEOF_CURL_OFF_T long+# define CURL_FORMAT_CURL_OFF_T "ld"+# define CURL_FORMAT_CURL_OFF_TU "lu"+# define CURL_FORMAT_OFF_T "%ld"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T L+# define CURL_SUFFIX_CURL_OFF_TU UL+# define CURL_TYPEOF_CURL_SOCKLEN_T int+# define CURL_SIZEOF_CURL_SOCKLEN_T 4++/* ===================================== */+/* KEEP MSVC THE PENULTIMATE ENTRY */+/* ===================================== */++#elif defined(_MSC_VER)+# if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T __int64+# define CURL_FORMAT_CURL_OFF_T "I64d"+# define CURL_FORMAT_CURL_OFF_TU "I64u"+# define CURL_FORMAT_OFF_T "%I64d"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T i64+# define CURL_SUFFIX_CURL_OFF_TU ui64+# else+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long+# define CURL_FORMAT_CURL_OFF_T "ld"+# define CURL_FORMAT_CURL_OFF_TU "lu"+# define CURL_FORMAT_OFF_T "%ld"+# define CURL_SIZEOF_CURL_OFF_T 4+# define CURL_SUFFIX_CURL_OFF_T L+# define CURL_SUFFIX_CURL_OFF_TU UL+# endif+# define CURL_TYPEOF_CURL_SOCKLEN_T int+# define CURL_SIZEOF_CURL_SOCKLEN_T 4++/* ===================================== */+/* KEEP GENERIC GCC THE LAST ENTRY */+/* ===================================== */++#elif defined(__GNUC__)+# if defined(__ILP32__) || \+ defined(__i386__) || defined(__ppc__) || defined(__arm__)+# define CURL_SIZEOF_LONG 4+# define CURL_TYPEOF_CURL_OFF_T long long+# define CURL_FORMAT_CURL_OFF_T "lld"+# define CURL_FORMAT_CURL_OFF_TU "llu"+# define CURL_FORMAT_OFF_T "%lld"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T LL+# define CURL_SUFFIX_CURL_OFF_TU ULL+# elif defined(__LP64__) || \+ defined(__x86_64__) || defined(__ppc64__)+# define CURL_SIZEOF_LONG 8+# define CURL_TYPEOF_CURL_OFF_T long+# define CURL_FORMAT_CURL_OFF_T "ld"+# define CURL_FORMAT_CURL_OFF_TU "lu"+# define CURL_FORMAT_OFF_T "%ld"+# define CURL_SIZEOF_CURL_OFF_T 8+# define CURL_SUFFIX_CURL_OFF_T L+# define CURL_SUFFIX_CURL_OFF_TU UL+# endif+# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t+# define CURL_SIZEOF_CURL_SOCKLEN_T 4+# define CURL_PULL_SYS_TYPES_H 1+# define CURL_PULL_SYS_SOCKET_H 1++#else+# error "Unknown non-configure build target!"+ Error Compilation_aborted_Unknown_non_configure_build_target+#endif++/* CURL_PULL_SYS_TYPES_H is defined above when inclusion of header file */+/* sys/types.h is required here to properly make type definitions below. */+#ifdef CURL_PULL_SYS_TYPES_H+# include <sys/types.h>+#endif++/* CURL_PULL_SYS_SOCKET_H is defined above when inclusion of header file */+/* sys/socket.h is required here to properly make type definitions below. */+#ifdef CURL_PULL_SYS_SOCKET_H+# include <sys/socket.h>+#endif++/* Data type definition of curl_socklen_t. */++#ifdef CURL_TYPEOF_CURL_SOCKLEN_T+ typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t;+#endif++/* Data type definition of curl_off_t. */++#ifdef CURL_TYPEOF_CURL_OFF_T+ typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;+#endif++#endif /* __CURL_CURLBUILD_H */
+ Network/CURL000/curl-7.30.0/curlrules.h view
@@ -0,0 +1,262 @@+#ifndef __CURL_CURLRULES_H+#define __CURL_CURLRULES_H+/***************************************************************************+ * _ _ ____ _+ * Project ___| | | | _ \| |+ * / __| | | | |_) | |+ * | (__| |_| | _ <| |___+ * \___|\___/|_| \_\_____|+ *+ * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.+ *+ * This software is licensed as described in the file COPYING, which+ * you should have received as part of this distribution. The terms+ * are also available at http://curl.haxx.se/docs/copyright.html.+ *+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell+ * copies of the Software, and permit persons to whom the Software is+ * furnished to do so, under the terms of the COPYING file.+ *+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY+ * KIND, either express or implied.+ *+ ***************************************************************************/++/* ================================================================ */+/* COMPILE TIME SANITY CHECKS */+/* ================================================================ */++/*+ * NOTE 1:+ * -------+ *+ * All checks done in this file are intentionally placed in a public+ * header file which is pulled by curl/curl.h when an application is+ * being built using an already built libcurl library. Additionally+ * this file is also included and used when building the library.+ *+ * If compilation fails on this file it is certainly sure that the+ * problem is elsewhere. It could be a problem in the curlbuild.h+ * header file, or simply that you are using different compilation+ * settings than those used to build the library.+ *+ * Nothing in this file is intended to be modified or adjusted by the+ * curl library user nor by the curl library builder.+ *+ * Do not deactivate any check, these are done to make sure that the+ * library is properly built and used.+ *+ * You can find further help on the libcurl development mailing list:+ * http://cool.haxx.se/mailman/listinfo/curl-library/+ *+ * NOTE 2+ * ------+ *+ * Some of the following compile time checks are based on the fact+ * that the dimension of a constant array can not be a negative one.+ * In this way if the compile time verification fails, the compilation+ * will fail issuing an error. The error description wording is compiler+ * dependent but it will be quite similar to one of the following:+ *+ * "negative subscript or subscript is too large"+ * "array must have at least one element"+ * "-1 is an illegal array size"+ * "size of array is negative"+ *+ * If you are building an application which tries to use an already+ * built libcurl library and you are getting this kind of errors on+ * this file, it is a clear indication that there is a mismatch between+ * how the library was built and how you are trying to use it for your+ * application. Your already compiled or binary library provider is the+ * only one who can give you the details you need to properly use it.+ */++/*+ * Verify that some macros are actually defined.+ */++#ifndef CURL_SIZEOF_LONG+# error "CURL_SIZEOF_LONG definition is missing!"+ Error Compilation_aborted_CURL_SIZEOF_LONG_is_missing+#endif++#ifndef CURL_TYPEOF_CURL_SOCKLEN_T+# error "CURL_TYPEOF_CURL_SOCKLEN_T definition is missing!"+ Error Compilation_aborted_CURL_TYPEOF_CURL_SOCKLEN_T_is_missing+#endif++#ifndef CURL_SIZEOF_CURL_SOCKLEN_T+# error "CURL_SIZEOF_CURL_SOCKLEN_T definition is missing!"+ Error Compilation_aborted_CURL_SIZEOF_CURL_SOCKLEN_T_is_missing+#endif++#ifndef CURL_TYPEOF_CURL_OFF_T+# error "CURL_TYPEOF_CURL_OFF_T definition is missing!"+ Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_is_missing+#endif++#ifndef CURL_FORMAT_CURL_OFF_T+# error "CURL_FORMAT_CURL_OFF_T definition is missing!"+ Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_is_missing+#endif++#ifndef CURL_FORMAT_CURL_OFF_TU+# error "CURL_FORMAT_CURL_OFF_TU definition is missing!"+ Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_is_missing+#endif++#ifndef CURL_FORMAT_OFF_T+# error "CURL_FORMAT_OFF_T definition is missing!"+ Error Compilation_aborted_CURL_FORMAT_OFF_T_is_missing+#endif++#ifndef CURL_SIZEOF_CURL_OFF_T+# error "CURL_SIZEOF_CURL_OFF_T definition is missing!"+ Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_is_missing+#endif++#ifndef CURL_SUFFIX_CURL_OFF_T+# error "CURL_SUFFIX_CURL_OFF_T definition is missing!"+ Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_is_missing+#endif++#ifndef CURL_SUFFIX_CURL_OFF_TU+# error "CURL_SUFFIX_CURL_OFF_TU definition is missing!"+ Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_is_missing+#endif++/*+ * Macros private to this header file.+ */++#define CurlchkszEQ(t, s) sizeof(t) == s ? 1 : -1++#define CurlchkszGE(t1, t2) sizeof(t1) >= sizeof(t2) ? 1 : -1++/*+ * Verify that the size previously defined and expected for long+ * is the same as the one reported by sizeof() at compile time.+ */++typedef char+ __curl_rule_01__+ [CurlchkszEQ(long, CURL_SIZEOF_LONG)];++/*+ * Verify that the size previously defined and expected for+ * curl_off_t is actually the the same as the one reported+ * by sizeof() at compile time.+ */++typedef char+ __curl_rule_02__+ [CurlchkszEQ(curl_off_t, CURL_SIZEOF_CURL_OFF_T)];++/*+ * Verify at compile time that the size of curl_off_t as reported+ * by sizeof() is greater or equal than the one reported for long+ * for the current compilation.+ */++typedef char+ __curl_rule_03__+ [CurlchkszGE(curl_off_t, long)];++/*+ * Verify that the size previously defined and expected for+ * curl_socklen_t is actually the the same as the one reported+ * by sizeof() at compile time.+ */++typedef char+ __curl_rule_04__+ [CurlchkszEQ(curl_socklen_t, CURL_SIZEOF_CURL_SOCKLEN_T)];++/*+ * Verify at compile time that the size of curl_socklen_t as reported+ * by sizeof() is greater or equal than the one reported for int for+ * the current compilation.+ */++typedef char+ __curl_rule_05__+ [CurlchkszGE(curl_socklen_t, int)];++/* ================================================================ */+/* EXTERNALLY AND INTERNALLY VISIBLE DEFINITIONS */+/* ================================================================ */++/*+ * CURL_ISOCPP and CURL_OFF_T_C definitions are done here in order to allow+ * these to be visible and exported by the external libcurl interface API,+ * while also making them visible to the library internals, simply including+ * curl_setup.h, without actually needing to include curl.h internally.+ * If some day this section would grow big enough, all this should be moved+ * to its own header file.+ */++/*+ * Figure out if we can use the ## preprocessor operator, which is supported+ * by ISO/ANSI C and C++. Some compilers support it without setting __STDC__+ * or __cplusplus so we need to carefully check for them too.+ */++#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \+ defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \+ defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__) || \+ defined(__ILEC400__)+ /* This compiler is believed to have an ISO compatible preprocessor */+#define CURL_ISOCPP+#else+ /* This compiler is believed NOT to have an ISO compatible preprocessor */+#undef CURL_ISOCPP+#endif++/*+ * Macros for minimum-width signed and unsigned curl_off_t integer constants.+ */++#if defined(__BORLANDC__) && (__BORLANDC__ == 0x0551)+# define __CURL_OFF_T_C_HLPR2(x) x+# define __CURL_OFF_T_C_HLPR1(x) __CURL_OFF_T_C_HLPR2(x)+# define CURL_OFF_T_C(Val) __CURL_OFF_T_C_HLPR1(Val) ## \+ __CURL_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_T)+# define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HLPR1(Val) ## \+ __CURL_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_TU)+#else+# ifdef CURL_ISOCPP+# define __CURL_OFF_T_C_HLPR2(Val,Suffix) Val ## Suffix+# else+# define __CURL_OFF_T_C_HLPR2(Val,Suffix) Val/**/Suffix+# endif+# define __CURL_OFF_T_C_HLPR1(Val,Suffix) __CURL_OFF_T_C_HLPR2(Val,Suffix)+# define CURL_OFF_T_C(Val) __CURL_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_T)+# define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_TU)+#endif++/*+ * Get rid of macros private to this header file.+ */++#undef CurlchkszEQ+#undef CurlchkszGE++/*+ * Get rid of macros not intended to exist beyond this point.+ */++#undef CURL_PULL_WS2TCPIP_H+#undef CURL_PULL_SYS_TYPES_H+#undef CURL_PULL_SYS_SOCKET_H+#undef CURL_PULL_SYS_POLL_H+#undef CURL_PULL_STDINT_H+#undef CURL_PULL_INTTYPES_H++#undef CURL_TYPEOF_CURL_SOCKLEN_T+#undef CURL_TYPEOF_CURL_OFF_T++#ifdef CURL_NO_OLDIES+#undef CURL_FORMAT_OFF_T /* not required since 7.19.0 - obsoleted in 7.20.0 */+#endif++#endif /* __CURL_CURLRULES_H */
+ Network/CURL000/curl-7.30.0/curlver.h view
@@ -0,0 +1,69 @@+#ifndef __CURL_CURLVER_H+#define __CURL_CURLVER_H+/***************************************************************************+ * _ _ ____ _+ * Project ___| | | | _ \| |+ * / __| | | | |_) | |+ * | (__| |_| | _ <| |___+ * \___|\___/|_| \_\_____|+ *+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.+ *+ * This software is licensed as described in the file COPYING, which+ * you should have received as part of this distribution. The terms+ * are also available at http://curl.haxx.se/docs/copyright.html.+ *+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell+ * copies of the Software, and permit persons to whom the Software is+ * furnished to do so, under the terms of the COPYING file.+ *+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY+ * KIND, either express or implied.+ *+ ***************************************************************************/++/* This header file contains nothing but libcurl version info, generated by+ a script at release-time. This was made its own header file in 7.11.2 */++/* This is the global package copyright */+#define LIBCURL_COPYRIGHT "1996 - 2013 Daniel Stenberg, <daniel@haxx.se>."++/* This is the version number of the libcurl package from which this header+ file origins: */+#define LIBCURL_VERSION "7.30.0"++/* The numeric version number is also available "in parts" by using these+ defines: */+#define LIBCURL_VERSION_MAJOR 7+#define LIBCURL_VERSION_MINOR 30+#define LIBCURL_VERSION_PATCH 0++/* This is the numeric version of the libcurl version number, meant for easier+ parsing and comparions by programs. The LIBCURL_VERSION_NUM define will+ always follow this syntax:++ 0xXXYYZZ++ Where XX, YY and ZZ are the main version, release and patch numbers in+ hexadecimal (using 8 bits each). All three numbers are always represented+ using two digits. 1.2 would appear as "0x010200" while version 9.11.7+ appears as "0x090b07".++ This 6-digit (24 bits) hexadecimal number does not show pre-release number,+ and it is always a greater number in a more recent release. It makes+ comparisons with greater than and less than work.+*/+#define LIBCURL_VERSION_NUM 0x071e00++/*+ * This is the date and time when the full source package was created. The+ * timestamp is not stored in git, as the timestamp is properly set in the+ * tarballs by the maketgz script.+ *+ * The format of the date should follow this template:+ *+ * "Mon Feb 12 11:35:33 UTC 2007"+ */+#define LIBCURL_TIMESTAMP "Fri Apr 12 07:12:20 UTC 2013"++#endif /* __CURL_CURLVER_H */
+ Network/CURL000/curl-7.30.0/easy.h view
@@ -0,0 +1,102 @@+#ifndef __CURL_EASY_H+#define __CURL_EASY_H+/***************************************************************************+ * _ _ ____ _+ * Project ___| | | | _ \| |+ * / __| | | | |_) | |+ * | (__| |_| | _ <| |___+ * \___|\___/|_| \_\_____|+ *+ * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.+ *+ * This software is licensed as described in the file COPYING, which+ * you should have received as part of this distribution. The terms+ * are also available at http://curl.haxx.se/docs/copyright.html.+ *+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell+ * copies of the Software, and permit persons to whom the Software is+ * furnished to do so, under the terms of the COPYING file.+ *+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY+ * KIND, either express or implied.+ *+ ***************************************************************************/+#ifdef __cplusplus+extern "C" {+#endif++CURL_EXTERN CURL *curl_easy_init(void);+CURL_EXTERN CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);+CURL_EXTERN CURLcode curl_easy_perform(CURL *curl);+CURL_EXTERN void curl_easy_cleanup(CURL *curl);++/*+ * NAME curl_easy_getinfo()+ *+ * DESCRIPTION+ *+ * Request internal information from the curl session with this function. The+ * third argument MUST be a pointer to a long, a pointer to a char * or a+ * pointer to a double (as the documentation describes elsewhere). The data+ * pointed to will be filled in accordingly and can be relied upon only if the+ * function returns CURLE_OK. This function is intended to get used *AFTER* a+ * performed transfer, all results from this function are undefined until the+ * transfer is completed.+ */+CURL_EXTERN CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...);+++/*+ * NAME curl_easy_duphandle()+ *+ * DESCRIPTION+ *+ * Creates a new curl session handle with the same options set for the handle+ * passed in. Duplicating a handle could only be a matter of cloning data and+ * options, internal state info and things like persistent connections cannot+ * be transferred. It is useful in multithreaded applications when you can run+ * curl_easy_duphandle() for each new thread to avoid a series of identical+ * curl_easy_setopt() invokes in every thread.+ */+CURL_EXTERN CURL* curl_easy_duphandle(CURL *curl);++/*+ * NAME curl_easy_reset()+ *+ * DESCRIPTION+ *+ * Re-initializes a CURL handle to the default values. This puts back the+ * handle to the same state as it was in when it was just created.+ *+ * It does keep: live connections, the Session ID cache, the DNS cache and the+ * cookies.+ */+CURL_EXTERN void curl_easy_reset(CURL *curl);++/*+ * NAME curl_easy_recv()+ *+ * DESCRIPTION+ *+ * Receives data from the connected socket. Use after successful+ * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.+ */+CURL_EXTERN CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen,+ size_t *n);++/*+ * NAME curl_easy_send()+ *+ * DESCRIPTION+ *+ * Sends data over the connected socket. Use after successful+ * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.+ */+CURL_EXTERN CURLcode curl_easy_send(CURL *curl, const void *buffer,+ size_t buflen, size_t *n);++#ifdef __cplusplus+}+#endif++#endif
+ Network/CURL000/curl-7.30.0/multi.h view
@@ -0,0 +1,397 @@+#ifndef __CURL_MULTI_H+#define __CURL_MULTI_H+/***************************************************************************+ * _ _ ____ _+ * Project ___| | | | _ \| |+ * / __| | | | |_) | |+ * | (__| |_| | _ <| |___+ * \___|\___/|_| \_\_____|+ *+ * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.+ *+ * This software is licensed as described in the file COPYING, which+ * you should have received as part of this distribution. The terms+ * are also available at http://curl.haxx.se/docs/copyright.html.+ *+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell+ * copies of the Software, and permit persons to whom the Software is+ * furnished to do so, under the terms of the COPYING file.+ *+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY+ * KIND, either express or implied.+ *+ ***************************************************************************/+/*+ This is an "external" header file. Don't give away any internals here!++ GOALS++ o Enable a "pull" interface. The application that uses libcurl decides where+ and when to ask libcurl to get/send data.++ o Enable multiple simultaneous transfers in the same thread without making it+ complicated for the application.++ o Enable the application to select() on its own file descriptors and curl's+ file descriptors simultaneous easily.++*/++/*+ * This header file should not really need to include "curl.h" since curl.h+ * itself includes this file and we expect user applications to do #include+ * <curl/curl.h> without the need for especially including multi.h.+ *+ * For some reason we added this include here at one point, and rather than to+ * break existing (wrongly written) libcurl applications, we leave it as-is+ * but with this warning attached.+ */+#include "curl.h"++#ifdef __cplusplus+extern "C" {+#endif++typedef void CURLM;++typedef enum {+ CURLM_CALL_MULTI_PERFORM = -1, /* please call curl_multi_perform() or+ curl_multi_socket*() soon */+ CURLM_OK,+ CURLM_BAD_HANDLE, /* the passed-in handle is not a valid CURLM handle */+ CURLM_BAD_EASY_HANDLE, /* an easy handle was not good/valid */+ CURLM_OUT_OF_MEMORY, /* if you ever get this, you're in deep sh*t */+ CURLM_INTERNAL_ERROR, /* this is a libcurl bug */+ CURLM_BAD_SOCKET, /* the passed in socket argument did not match */+ CURLM_UNKNOWN_OPTION, /* curl_multi_setopt() with unsupported option */+ CURLM_LAST+} CURLMcode;++/* just to make code nicer when using curl_multi_socket() you can now check+ for CURLM_CALL_MULTI_SOCKET too in the same style it works for+ curl_multi_perform() and CURLM_CALL_MULTI_PERFORM */+#define CURLM_CALL_MULTI_SOCKET CURLM_CALL_MULTI_PERFORM++typedef enum {+ CURLMSG_NONE, /* first, not used */+ CURLMSG_DONE, /* This easy handle has completed. 'result' contains+ the CURLcode of the transfer */+ CURLMSG_LAST /* last, not used */+} CURLMSG;++struct CURLMsg {+ CURLMSG msg; /* what this message means */+ CURL *easy_handle; /* the handle it concerns */+ union {+ void *whatever; /* message-specific data */+ CURLcode result; /* return code for transfer */+ } data;+};+typedef struct CURLMsg CURLMsg;++/* Based on poll(2) structure and values.+ * We don't use pollfd and POLL* constants explicitly+ * to cover platforms without poll(). */+#define CURL_WAIT_POLLIN 0x0001+#define CURL_WAIT_POLLPRI 0x0002+#define CURL_WAIT_POLLOUT 0x0004++struct curl_waitfd {+ curl_socket_t fd;+ short events;+ short revents; /* not supported yet */+};++/*+ * Name: curl_multi_init()+ *+ * Desc: inititalize multi-style curl usage+ *+ * Returns: a new CURLM handle to use in all 'curl_multi' functions.+ */+CURL_EXTERN CURLM *curl_multi_init(void);++/*+ * Name: curl_multi_add_handle()+ *+ * Desc: add a standard curl handle to the multi stack+ *+ * Returns: CURLMcode type, general multi error code.+ */+CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle,+ CURL *curl_handle);++ /*+ * Name: curl_multi_remove_handle()+ *+ * Desc: removes a curl handle from the multi stack again+ *+ * Returns: CURLMcode type, general multi error code.+ */+CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle,+ CURL *curl_handle);++ /*+ * Name: curl_multi_fdset()+ *+ * Desc: Ask curl for its fd_set sets. The app can use these to select() or+ * poll() on. We want curl_multi_perform() called as soon as one of+ * them are ready.+ *+ * Returns: CURLMcode type, general multi error code.+ */+CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,+ fd_set *read_fd_set,+ fd_set *write_fd_set,+ fd_set *exc_fd_set,+ int *max_fd);++/*+ * Name: curl_multi_wait()+ *+ * Desc: Poll on all fds within a CURLM set as well as any+ * additional fds passed to the function.+ *+ * Returns: CURLMcode type, general multi error code.+ */+CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,+ struct curl_waitfd extra_fds[],+ unsigned int extra_nfds,+ int timeout_ms,+ int *ret);++ /*+ * Name: curl_multi_perform()+ *+ * Desc: When the app thinks there's data available for curl it calls this+ * function to read/write whatever there is right now. This returns+ * as soon as the reads and writes are done. This function does not+ * require that there actually is data available for reading or that+ * data can be written, it can be called just in case. It returns+ * the number of handles that still transfer data in the second+ * argument's integer-pointer.+ *+ * Returns: CURLMcode type, general multi error code. *NOTE* that this only+ * returns errors etc regarding the whole multi stack. There might+ * still have occurred problems on invidual transfers even when this+ * returns OK.+ */+CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,+ int *running_handles);++ /*+ * Name: curl_multi_cleanup()+ *+ * Desc: Cleans up and removes a whole multi stack. It does not free or+ * touch any individual easy handles in any way. We need to define+ * in what state those handles will be if this function is called+ * in the middle of a transfer.+ *+ * Returns: CURLMcode type, general multi error code.+ */+CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle);++/*+ * Name: curl_multi_info_read()+ *+ * Desc: Ask the multi handle if there's any messages/informationals from+ * the individual transfers. Messages include informationals such as+ * error code from the transfer or just the fact that a transfer is+ * completed. More details on these should be written down as well.+ *+ * Repeated calls to this function will return a new struct each+ * time, until a special "end of msgs" struct is returned as a signal+ * that there is no more to get at this point.+ *+ * The data the returned pointer points to will not survive calling+ * curl_multi_cleanup().+ *+ * The 'CURLMsg' struct is meant to be very simple and only contain+ * very basic informations. If more involved information is wanted,+ * we will provide the particular "transfer handle" in that struct+ * and that should/could/would be used in subsequent+ * curl_easy_getinfo() calls (or similar). The point being that we+ * must never expose complex structs to applications, as then we'll+ * undoubtably get backwards compatibility problems in the future.+ *+ * Returns: A pointer to a filled-in struct, or NULL if it failed or ran out+ * of structs. It also writes the number of messages left in the+ * queue (after this read) in the integer the second argument points+ * to.+ */+CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle,+ int *msgs_in_queue);++/*+ * Name: curl_multi_strerror()+ *+ * Desc: The curl_multi_strerror function may be used to turn a CURLMcode+ * value into the equivalent human readable error string. This is+ * useful for printing meaningful error messages.+ *+ * Returns: A pointer to a zero-terminated error message.+ */+CURL_EXTERN const char *curl_multi_strerror(CURLMcode);++/*+ * Name: curl_multi_socket() and+ * curl_multi_socket_all()+ *+ * Desc: An alternative version of curl_multi_perform() that allows the+ * application to pass in one of the file descriptors that have been+ * detected to have "action" on them and let libcurl perform.+ * See man page for details.+ */+#define CURL_POLL_NONE 0+#define CURL_POLL_IN 1+#define CURL_POLL_OUT 2+#define CURL_POLL_INOUT 3+#define CURL_POLL_REMOVE 4++#define CURL_SOCKET_TIMEOUT CURL_SOCKET_BAD++#define CURL_CSELECT_IN 0x01+#define CURL_CSELECT_OUT 0x02+#define CURL_CSELECT_ERR 0x04++typedef int (*curl_socket_callback)(CURL *easy, /* easy handle */+ curl_socket_t s, /* socket */+ int what, /* see above */+ void *userp, /* private callback+ pointer */+ void *socketp); /* private socket+ pointer */+/*+ * Name: curl_multi_timer_callback+ *+ * Desc: Called by libcurl whenever the library detects a change in the+ * maximum number of milliseconds the app is allowed to wait before+ * curl_multi_socket() or curl_multi_perform() must be called+ * (to allow libcurl's timed events to take place).+ *+ * Returns: The callback should return zero.+ */+typedef int (*curl_multi_timer_callback)(CURLM *multi, /* multi handle */+ long timeout_ms, /* see above */+ void *userp); /* private callback+ pointer */++CURL_EXTERN CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s,+ int *running_handles);++CURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle,+ curl_socket_t s,+ int ev_bitmask,+ int *running_handles);++CURL_EXTERN CURLMcode curl_multi_socket_all(CURLM *multi_handle,+ int *running_handles);++#ifndef CURL_ALLOW_OLD_MULTI_SOCKET+/* This macro below was added in 7.16.3 to push users who recompile to use+ the new curl_multi_socket_action() instead of the old curl_multi_socket()+*/+#define curl_multi_socket(x,y,z) curl_multi_socket_action(x,y,0,z)+#endif++/*+ * Name: curl_multi_timeout()+ *+ * Desc: Returns the maximum number of milliseconds the app is allowed to+ * wait before curl_multi_socket() or curl_multi_perform() must be+ * called (to allow libcurl's timed events to take place).+ *+ * Returns: CURLM error code.+ */+CURL_EXTERN CURLMcode curl_multi_timeout(CURLM *multi_handle,+ long *milliseconds);++#undef CINIT /* re-using the same name as in curl.h */++#ifdef CURL_ISOCPP+#define CINIT(name,type,num) CURLMOPT_ ## name = CURLOPTTYPE_ ## type + num+#else+/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */+#define LONG CURLOPTTYPE_LONG+#define OBJECTPOINT CURLOPTTYPE_OBJECTPOINT+#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT+#define OFF_T CURLOPTTYPE_OFF_T+#define CINIT(name,type,number) CURLMOPT_/**/name = type + number+#endif++typedef enum {+ /* This is the socket callback function pointer */+ CINIT(SOCKETFUNCTION, FUNCTIONPOINT, 1),++ /* This is the argument passed to the socket callback */+ CINIT(SOCKETDATA, OBJECTPOINT, 2),++ /* set to 1 to enable pipelining for this multi handle */+ CINIT(PIPELINING, LONG, 3),++ /* This is the timer callback function pointer */+ CINIT(TIMERFUNCTION, FUNCTIONPOINT, 4),++ /* This is the argument passed to the timer callback */+ CINIT(TIMERDATA, OBJECTPOINT, 5),++ /* maximum number of entries in the connection cache */+ CINIT(MAXCONNECTS, LONG, 6),++ /* maximum number of (pipelining) connections to one host */+ CINIT(MAX_HOST_CONNECTIONS, LONG, 7),++ /* maximum number of requests in a pipeline */+ CINIT(MAX_PIPELINE_LENGTH, LONG, 8),++ /* a connection with a content-length longer than this+ will not be considered for pipelining */+ CINIT(CONTENT_LENGTH_PENALTY_SIZE, OFF_T, 9),++ /* a connection with a chunk length longer than this+ will not be considered for pipelining */+ CINIT(CHUNK_LENGTH_PENALTY_SIZE, OFF_T, 10),++ /* a list of site names(+port) that are blacklisted from+ pipelining */+ CINIT(PIPELINING_SITE_BL, OBJECTPOINT, 11),++ /* a list of server types that are blacklisted from+ pipelining */+ CINIT(PIPELINING_SERVER_BL, OBJECTPOINT, 12),++ /* maximum number of open connections in total */+ CINIT(MAX_TOTAL_CONNECTIONS, LONG, 13),++ CURLMOPT_LASTENTRY /* the last unused */+} CURLMoption;+++/*+ * Name: curl_multi_setopt()+ *+ * Desc: Sets options for the multi handle.+ *+ * Returns: CURLM error code.+ */+CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle,+ CURLMoption option, ...);+++/*+ * Name: curl_multi_assign()+ *+ * Desc: This function sets an association in the multi handle between the+ * given socket and a private pointer of the application. This is+ * (only) useful for curl_multi_socket uses.+ *+ * Returns: CURLM error code.+ */+CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle,+ curl_socket_t sockfd, void *sockp);++#ifdef __cplusplus+} /* end of extern "C" */+#endif++#endif
+ Network/CURL000/curl-7.30.0/stdcheaders.h view
@@ -0,0 +1,33 @@+#ifndef __STDC_HEADERS_H+#define __STDC_HEADERS_H+/***************************************************************************+ * _ _ ____ _+ * Project ___| | | | _ \| |+ * / __| | | | |_) | |+ * | (__| |_| | _ <| |___+ * \___|\___/|_| \_\_____|+ *+ * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.+ *+ * This software is licensed as described in the file COPYING, which+ * you should have received as part of this distribution. The terms+ * are also available at http://curl.haxx.se/docs/copyright.html.+ *+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell+ * copies of the Software, and permit persons to whom the Software is+ * furnished to do so, under the terms of the COPYING file.+ *+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY+ * KIND, either express or implied.+ *+ ***************************************************************************/++#include <sys/types.h>++size_t fread (void *, size_t, size_t, FILE *);+size_t fwrite (const void *, size_t, size_t, FILE *);++int strcasecmp(const char *, const char *);+int strncasecmp(const char *, const char *, size_t);++#endif /* __STDC_HEADERS_H */
+ Network/CURL000/curl-7.30.0/typecheck-gcc.h view
@@ -0,0 +1,604 @@+#ifndef __CURL_TYPECHECK_GCC_H+#define __CURL_TYPECHECK_GCC_H+/***************************************************************************+ * _ _ ____ _+ * Project ___| | | | _ \| |+ * / __| | | | |_) | |+ * | (__| |_| | _ <| |___+ * \___|\___/|_| \_\_____|+ *+ * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.+ *+ * This software is licensed as described in the file COPYING, which+ * you should have received as part of this distribution. The terms+ * are also available at http://curl.haxx.se/docs/copyright.html.+ *+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell+ * copies of the Software, and permit persons to whom the Software is+ * furnished to do so, under the terms of the COPYING file.+ *+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY+ * KIND, either express or implied.+ *+ ***************************************************************************/++/* wraps curl_easy_setopt() with typechecking */++/* To add a new kind of warning, add an+ * if(_curl_is_sometype_option(_curl_opt))+ * if(!_curl_is_sometype(value))+ * _curl_easy_setopt_err_sometype();+ * block and define _curl_is_sometype_option, _curl_is_sometype and+ * _curl_easy_setopt_err_sometype below+ *+ * NOTE: We use two nested 'if' statements here instead of the && operator, in+ * order to work around gcc bug #32061. It affects only gcc 4.3.x/4.4.x+ * when compiling with -Wlogical-op.+ *+ * To add an option that uses the same type as an existing option, you'll just+ * need to extend the appropriate _curl_*_option macro+ */+#define curl_easy_setopt(handle, option, value) \+__extension__ ({ \+ __typeof__ (option) _curl_opt = option; \+ if(__builtin_constant_p(_curl_opt)) { \+ if(_curl_is_long_option(_curl_opt)) \+ if(!_curl_is_long(value)) \+ _curl_easy_setopt_err_long(); \+ if(_curl_is_off_t_option(_curl_opt)) \+ if(!_curl_is_off_t(value)) \+ _curl_easy_setopt_err_curl_off_t(); \+ if(_curl_is_string_option(_curl_opt)) \+ if(!_curl_is_string(value)) \+ _curl_easy_setopt_err_string(); \+ if(_curl_is_write_cb_option(_curl_opt)) \+ if(!_curl_is_write_cb(value)) \+ _curl_easy_setopt_err_write_callback(); \+ if((_curl_opt) == CURLOPT_READFUNCTION) \+ if(!_curl_is_read_cb(value)) \+ _curl_easy_setopt_err_read_cb(); \+ if((_curl_opt) == CURLOPT_IOCTLFUNCTION) \+ if(!_curl_is_ioctl_cb(value)) \+ _curl_easy_setopt_err_ioctl_cb(); \+ if((_curl_opt) == CURLOPT_SOCKOPTFUNCTION) \+ if(!_curl_is_sockopt_cb(value)) \+ _curl_easy_setopt_err_sockopt_cb(); \+ if((_curl_opt) == CURLOPT_OPENSOCKETFUNCTION) \+ if(!_curl_is_opensocket_cb(value)) \+ _curl_easy_setopt_err_opensocket_cb(); \+ if((_curl_opt) == CURLOPT_PROGRESSFUNCTION) \+ if(!_curl_is_progress_cb(value)) \+ _curl_easy_setopt_err_progress_cb(); \+ if((_curl_opt) == CURLOPT_DEBUGFUNCTION) \+ if(!_curl_is_debug_cb(value)) \+ _curl_easy_setopt_err_debug_cb(); \+ if((_curl_opt) == CURLOPT_SSL_CTX_FUNCTION) \+ if(!_curl_is_ssl_ctx_cb(value)) \+ _curl_easy_setopt_err_ssl_ctx_cb(); \+ if(_curl_is_conv_cb_option(_curl_opt)) \+ if(!_curl_is_conv_cb(value)) \+ _curl_easy_setopt_err_conv_cb(); \+ if((_curl_opt) == CURLOPT_SEEKFUNCTION) \+ if(!_curl_is_seek_cb(value)) \+ _curl_easy_setopt_err_seek_cb(); \+ if(_curl_is_cb_data_option(_curl_opt)) \+ if(!_curl_is_cb_data(value)) \+ _curl_easy_setopt_err_cb_data(); \+ if((_curl_opt) == CURLOPT_ERRORBUFFER) \+ if(!_curl_is_error_buffer(value)) \+ _curl_easy_setopt_err_error_buffer(); \+ if((_curl_opt) == CURLOPT_STDERR) \+ if(!_curl_is_FILE(value)) \+ _curl_easy_setopt_err_FILE(); \+ if(_curl_is_postfields_option(_curl_opt)) \+ if(!_curl_is_postfields(value)) \+ _curl_easy_setopt_err_postfields(); \+ if((_curl_opt) == CURLOPT_HTTPPOST) \+ if(!_curl_is_arr((value), struct curl_httppost)) \+ _curl_easy_setopt_err_curl_httpost(); \+ if(_curl_is_slist_option(_curl_opt)) \+ if(!_curl_is_arr((value), struct curl_slist)) \+ _curl_easy_setopt_err_curl_slist(); \+ if((_curl_opt) == CURLOPT_SHARE) \+ if(!_curl_is_ptr((value), CURLSH)) \+ _curl_easy_setopt_err_CURLSH(); \+ } \+ curl_easy_setopt(handle, _curl_opt, value); \+})++/* wraps curl_easy_getinfo() with typechecking */+/* FIXME: don't allow const pointers */+#define curl_easy_getinfo(handle, info, arg) \+__extension__ ({ \+ __typeof__ (info) _curl_info = info; \+ if(__builtin_constant_p(_curl_info)) { \+ if(_curl_is_string_info(_curl_info)) \+ if(!_curl_is_arr((arg), char *)) \+ _curl_easy_getinfo_err_string(); \+ if(_curl_is_long_info(_curl_info)) \+ if(!_curl_is_arr((arg), long)) \+ _curl_easy_getinfo_err_long(); \+ if(_curl_is_double_info(_curl_info)) \+ if(!_curl_is_arr((arg), double)) \+ _curl_easy_getinfo_err_double(); \+ if(_curl_is_slist_info(_curl_info)) \+ if(!_curl_is_arr((arg), struct curl_slist *)) \+ _curl_easy_getinfo_err_curl_slist(); \+ } \+ curl_easy_getinfo(handle, _curl_info, arg); \+})++/* TODO: typechecking for curl_share_setopt() and curl_multi_setopt(),+ * for now just make sure that the functions are called with three+ * arguments+ */+#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param)+#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param)+++/* the actual warnings, triggered by calling the _curl_easy_setopt_err*+ * functions */++/* To define a new warning, use _CURL_WARNING(identifier, "message") */+#define _CURL_WARNING(id, message) \+ static void __attribute__((__warning__(message))) \+ __attribute__((__unused__)) __attribute__((__noinline__)) \+ id(void) { __asm__(""); }++_CURL_WARNING(_curl_easy_setopt_err_long,+ "curl_easy_setopt expects a long argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_curl_off_t,+ "curl_easy_setopt expects a curl_off_t argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_string,+ "curl_easy_setopt expects a "+ "string (char* or char[]) argument for this option"+ )+_CURL_WARNING(_curl_easy_setopt_err_write_callback,+ "curl_easy_setopt expects a curl_write_callback argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_read_cb,+ "curl_easy_setopt expects a curl_read_callback argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_ioctl_cb,+ "curl_easy_setopt expects a curl_ioctl_callback argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_sockopt_cb,+ "curl_easy_setopt expects a curl_sockopt_callback argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_opensocket_cb,+ "curl_easy_setopt expects a "+ "curl_opensocket_callback argument for this option"+ )+_CURL_WARNING(_curl_easy_setopt_err_progress_cb,+ "curl_easy_setopt expects a curl_progress_callback argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_debug_cb,+ "curl_easy_setopt expects a curl_debug_callback argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_ssl_ctx_cb,+ "curl_easy_setopt expects a curl_ssl_ctx_callback argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_conv_cb,+ "curl_easy_setopt expects a curl_conv_callback argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_seek_cb,+ "curl_easy_setopt expects a curl_seek_callback argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_cb_data,+ "curl_easy_setopt expects a "+ "private data pointer as argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_error_buffer,+ "curl_easy_setopt expects a "+ "char buffer of CURL_ERROR_SIZE as argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_FILE,+ "curl_easy_setopt expects a FILE* argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_postfields,+ "curl_easy_setopt expects a void* or char* argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_curl_httpost,+ "curl_easy_setopt expects a struct curl_httppost* argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_curl_slist,+ "curl_easy_setopt expects a struct curl_slist* argument for this option")+_CURL_WARNING(_curl_easy_setopt_err_CURLSH,+ "curl_easy_setopt expects a CURLSH* argument for this option")++_CURL_WARNING(_curl_easy_getinfo_err_string,+ "curl_easy_getinfo expects a pointer to char * for this info")+_CURL_WARNING(_curl_easy_getinfo_err_long,+ "curl_easy_getinfo expects a pointer to long for this info")+_CURL_WARNING(_curl_easy_getinfo_err_double,+ "curl_easy_getinfo expects a pointer to double for this info")+_CURL_WARNING(_curl_easy_getinfo_err_curl_slist,+ "curl_easy_getinfo expects a pointer to struct curl_slist * for this info")++/* groups of curl_easy_setops options that take the same type of argument */++/* To add a new option to one of the groups, just add+ * (option) == CURLOPT_SOMETHING+ * to the or-expression. If the option takes a long or curl_off_t, you don't+ * have to do anything+ */++/* evaluates to true if option takes a long argument */+#define _curl_is_long_option(option) \+ (0 < (option) && (option) < CURLOPTTYPE_OBJECTPOINT)++#define _curl_is_off_t_option(option) \+ ((option) > CURLOPTTYPE_OFF_T)++/* evaluates to true if option takes a char* argument */+#define _curl_is_string_option(option) \+ ((option) == CURLOPT_URL || \+ (option) == CURLOPT_PROXY || \+ (option) == CURLOPT_INTERFACE || \+ (option) == CURLOPT_NETRC_FILE || \+ (option) == CURLOPT_USERPWD || \+ (option) == CURLOPT_USERNAME || \+ (option) == CURLOPT_PASSWORD || \+ (option) == CURLOPT_PROXYUSERPWD || \+ (option) == CURLOPT_PROXYUSERNAME || \+ (option) == CURLOPT_PROXYPASSWORD || \+ (option) == CURLOPT_NOPROXY || \+ (option) == CURLOPT_ACCEPT_ENCODING || \+ (option) == CURLOPT_REFERER || \+ (option) == CURLOPT_USERAGENT || \+ (option) == CURLOPT_COOKIE || \+ (option) == CURLOPT_COOKIEFILE || \+ (option) == CURLOPT_COOKIEJAR || \+ (option) == CURLOPT_COOKIELIST || \+ (option) == CURLOPT_FTPPORT || \+ (option) == CURLOPT_FTP_ALTERNATIVE_TO_USER || \+ (option) == CURLOPT_FTP_ACCOUNT || \+ (option) == CURLOPT_RANGE || \+ (option) == CURLOPT_CUSTOMREQUEST || \+ (option) == CURLOPT_SSLCERT || \+ (option) == CURLOPT_SSLCERTTYPE || \+ (option) == CURLOPT_SSLKEY || \+ (option) == CURLOPT_SSLKEYTYPE || \+ (option) == CURLOPT_KEYPASSWD || \+ (option) == CURLOPT_SSLENGINE || \+ (option) == CURLOPT_CAINFO || \+ (option) == CURLOPT_CAPATH || \+ (option) == CURLOPT_RANDOM_FILE || \+ (option) == CURLOPT_EGDSOCKET || \+ (option) == CURLOPT_SSL_CIPHER_LIST || \+ (option) == CURLOPT_KRBLEVEL || \+ (option) == CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 || \+ (option) == CURLOPT_SSH_PUBLIC_KEYFILE || \+ (option) == CURLOPT_SSH_PRIVATE_KEYFILE || \+ (option) == CURLOPT_CRLFILE || \+ (option) == CURLOPT_ISSUERCERT || \+ (option) == CURLOPT_SOCKS5_GSSAPI_SERVICE || \+ (option) == CURLOPT_SSH_KNOWNHOSTS || \+ (option) == CURLOPT_MAIL_FROM || \+ (option) == CURLOPT_RTSP_SESSION_ID || \+ (option) == CURLOPT_RTSP_STREAM_URI || \+ (option) == CURLOPT_RTSP_TRANSPORT || \+ 0)++/* evaluates to true if option takes a curl_write_callback argument */+#define _curl_is_write_cb_option(option) \+ ((option) == CURLOPT_HEADERFUNCTION || \+ (option) == CURLOPT_WRITEFUNCTION)++/* evaluates to true if option takes a curl_conv_callback argument */+#define _curl_is_conv_cb_option(option) \+ ((option) == CURLOPT_CONV_TO_NETWORK_FUNCTION || \+ (option) == CURLOPT_CONV_FROM_NETWORK_FUNCTION || \+ (option) == CURLOPT_CONV_FROM_UTF8_FUNCTION)++/* evaluates to true if option takes a data argument to pass to a callback */+#define _curl_is_cb_data_option(option) \+ ((option) == CURLOPT_WRITEDATA || \+ (option) == CURLOPT_READDATA || \+ (option) == CURLOPT_IOCTLDATA || \+ (option) == CURLOPT_SOCKOPTDATA || \+ (option) == CURLOPT_OPENSOCKETDATA || \+ (option) == CURLOPT_PROGRESSDATA || \+ (option) == CURLOPT_WRITEHEADER || \+ (option) == CURLOPT_DEBUGDATA || \+ (option) == CURLOPT_SSL_CTX_DATA || \+ (option) == CURLOPT_SEEKDATA || \+ (option) == CURLOPT_PRIVATE || \+ (option) == CURLOPT_SSH_KEYDATA || \+ (option) == CURLOPT_INTERLEAVEDATA || \+ (option) == CURLOPT_CHUNK_DATA || \+ (option) == CURLOPT_FNMATCH_DATA || \+ 0)++/* evaluates to true if option takes a POST data argument (void* or char*) */+#define _curl_is_postfields_option(option) \+ ((option) == CURLOPT_POSTFIELDS || \+ (option) == CURLOPT_COPYPOSTFIELDS || \+ 0)++/* evaluates to true if option takes a struct curl_slist * argument */+#define _curl_is_slist_option(option) \+ ((option) == CURLOPT_HTTPHEADER || \+ (option) == CURLOPT_HTTP200ALIASES || \+ (option) == CURLOPT_QUOTE || \+ (option) == CURLOPT_POSTQUOTE || \+ (option) == CURLOPT_PREQUOTE || \+ (option) == CURLOPT_TELNETOPTIONS || \+ (option) == CURLOPT_MAIL_RCPT || \+ 0)++/* groups of curl_easy_getinfo infos that take the same type of argument */++/* evaluates to true if info expects a pointer to char * argument */+#define _curl_is_string_info(info) \+ (CURLINFO_STRING < (info) && (info) < CURLINFO_LONG)++/* evaluates to true if info expects a pointer to long argument */+#define _curl_is_long_info(info) \+ (CURLINFO_LONG < (info) && (info) < CURLINFO_DOUBLE)++/* evaluates to true if info expects a pointer to double argument */+#define _curl_is_double_info(info) \+ (CURLINFO_DOUBLE < (info) && (info) < CURLINFO_SLIST)++/* true if info expects a pointer to struct curl_slist * argument */+#define _curl_is_slist_info(info) \+ (CURLINFO_SLIST < (info))+++/* typecheck helpers -- check whether given expression has requested type*/++/* For pointers, you can use the _curl_is_ptr/_curl_is_arr macros,+ * otherwise define a new macro. Search for __builtin_types_compatible_p+ * in the GCC manual.+ * NOTE: these macros MUST NOT EVALUATE their arguments! The argument is+ * the actual expression passed to the curl_easy_setopt macro. This+ * means that you can only apply the sizeof and __typeof__ operators, no+ * == or whatsoever.+ */++/* XXX: should evaluate to true iff expr is a pointer */+#define _curl_is_any_ptr(expr) \+ (sizeof(expr) == sizeof(void*))++/* evaluates to true if expr is NULL */+/* XXX: must not evaluate expr, so this check is not accurate */+#define _curl_is_NULL(expr) \+ (__builtin_types_compatible_p(__typeof__(expr), __typeof__(NULL)))++/* evaluates to true if expr is type*, const type* or NULL */+#define _curl_is_ptr(expr, type) \+ (_curl_is_NULL(expr) || \+ __builtin_types_compatible_p(__typeof__(expr), type *) || \+ __builtin_types_compatible_p(__typeof__(expr), const type *))++/* evaluates to true if expr is one of type[], type*, NULL or const type* */+#define _curl_is_arr(expr, type) \+ (_curl_is_ptr((expr), type) || \+ __builtin_types_compatible_p(__typeof__(expr), type []))++/* evaluates to true if expr is a string */+#define _curl_is_string(expr) \+ (_curl_is_arr((expr), char) || \+ _curl_is_arr((expr), signed char) || \+ _curl_is_arr((expr), unsigned char))++/* evaluates to true if expr is a long (no matter the signedness)+ * XXX: for now, int is also accepted (and therefore short and char, which+ * are promoted to int when passed to a variadic function) */+#define _curl_is_long(expr) \+ (__builtin_types_compatible_p(__typeof__(expr), long) || \+ __builtin_types_compatible_p(__typeof__(expr), signed long) || \+ __builtin_types_compatible_p(__typeof__(expr), unsigned long) || \+ __builtin_types_compatible_p(__typeof__(expr), int) || \+ __builtin_types_compatible_p(__typeof__(expr), signed int) || \+ __builtin_types_compatible_p(__typeof__(expr), unsigned int) || \+ __builtin_types_compatible_p(__typeof__(expr), short) || \+ __builtin_types_compatible_p(__typeof__(expr), signed short) || \+ __builtin_types_compatible_p(__typeof__(expr), unsigned short) || \+ __builtin_types_compatible_p(__typeof__(expr), char) || \+ __builtin_types_compatible_p(__typeof__(expr), signed char) || \+ __builtin_types_compatible_p(__typeof__(expr), unsigned char))++/* evaluates to true if expr is of type curl_off_t */+#define _curl_is_off_t(expr) \+ (__builtin_types_compatible_p(__typeof__(expr), curl_off_t))++/* evaluates to true if expr is abuffer suitable for CURLOPT_ERRORBUFFER */+/* XXX: also check size of an char[] array? */+#define _curl_is_error_buffer(expr) \+ (_curl_is_NULL(expr) || \+ __builtin_types_compatible_p(__typeof__(expr), char *) || \+ __builtin_types_compatible_p(__typeof__(expr), char[]))++/* evaluates to true if expr is of type (const) void* or (const) FILE* */+#if 0+#define _curl_is_cb_data(expr) \+ (_curl_is_ptr((expr), void) || \+ _curl_is_ptr((expr), FILE))+#else /* be less strict */+#define _curl_is_cb_data(expr) \+ _curl_is_any_ptr(expr)+#endif++/* evaluates to true if expr is of type FILE* */+#define _curl_is_FILE(expr) \+ (__builtin_types_compatible_p(__typeof__(expr), FILE *))++/* evaluates to true if expr can be passed as POST data (void* or char*) */+#define _curl_is_postfields(expr) \+ (_curl_is_ptr((expr), void) || \+ _curl_is_arr((expr), char))++/* FIXME: the whole callback checking is messy...+ * The idea is to tolerate char vs. void and const vs. not const+ * pointers in arguments at least+ */+/* helper: __builtin_types_compatible_p distinguishes between functions and+ * function pointers, hide it */+#define _curl_callback_compatible(func, type) \+ (__builtin_types_compatible_p(__typeof__(func), type) || \+ __builtin_types_compatible_p(__typeof__(func), type*))++/* evaluates to true if expr is of type curl_read_callback or "similar" */+#define _curl_is_read_cb(expr) \+ (_curl_is_NULL(expr) || \+ __builtin_types_compatible_p(__typeof__(expr), __typeof__(fread)) || \+ __builtin_types_compatible_p(__typeof__(expr), curl_read_callback) || \+ _curl_callback_compatible((expr), _curl_read_callback1) || \+ _curl_callback_compatible((expr), _curl_read_callback2) || \+ _curl_callback_compatible((expr), _curl_read_callback3) || \+ _curl_callback_compatible((expr), _curl_read_callback4) || \+ _curl_callback_compatible((expr), _curl_read_callback5) || \+ _curl_callback_compatible((expr), _curl_read_callback6))+typedef size_t (_curl_read_callback1)(char *, size_t, size_t, void*);+typedef size_t (_curl_read_callback2)(char *, size_t, size_t, const void*);+typedef size_t (_curl_read_callback3)(char *, size_t, size_t, FILE*);+typedef size_t (_curl_read_callback4)(void *, size_t, size_t, void*);+typedef size_t (_curl_read_callback5)(void *, size_t, size_t, const void*);+typedef size_t (_curl_read_callback6)(void *, size_t, size_t, FILE*);++/* evaluates to true if expr is of type curl_write_callback or "similar" */+#define _curl_is_write_cb(expr) \+ (_curl_is_read_cb(expr) || \+ __builtin_types_compatible_p(__typeof__(expr), __typeof__(fwrite)) || \+ __builtin_types_compatible_p(__typeof__(expr), curl_write_callback) || \+ _curl_callback_compatible((expr), _curl_write_callback1) || \+ _curl_callback_compatible((expr), _curl_write_callback2) || \+ _curl_callback_compatible((expr), _curl_write_callback3) || \+ _curl_callback_compatible((expr), _curl_write_callback4) || \+ _curl_callback_compatible((expr), _curl_write_callback5) || \+ _curl_callback_compatible((expr), _curl_write_callback6))+typedef size_t (_curl_write_callback1)(const char *, size_t, size_t, void*);+typedef size_t (_curl_write_callback2)(const char *, size_t, size_t,+ const void*);+typedef size_t (_curl_write_callback3)(const char *, size_t, size_t, FILE*);+typedef size_t (_curl_write_callback4)(const void *, size_t, size_t, void*);+typedef size_t (_curl_write_callback5)(const void *, size_t, size_t,+ const void*);+typedef size_t (_curl_write_callback6)(const void *, size_t, size_t, FILE*);++/* evaluates to true if expr is of type curl_ioctl_callback or "similar" */+#define _curl_is_ioctl_cb(expr) \+ (_curl_is_NULL(expr) || \+ __builtin_types_compatible_p(__typeof__(expr), curl_ioctl_callback) || \+ _curl_callback_compatible((expr), _curl_ioctl_callback1) || \+ _curl_callback_compatible((expr), _curl_ioctl_callback2) || \+ _curl_callback_compatible((expr), _curl_ioctl_callback3) || \+ _curl_callback_compatible((expr), _curl_ioctl_callback4))+typedef curlioerr (_curl_ioctl_callback1)(CURL *, int, void*);+typedef curlioerr (_curl_ioctl_callback2)(CURL *, int, const void*);+typedef curlioerr (_curl_ioctl_callback3)(CURL *, curliocmd, void*);+typedef curlioerr (_curl_ioctl_callback4)(CURL *, curliocmd, const void*);++/* evaluates to true if expr is of type curl_sockopt_callback or "similar" */+#define _curl_is_sockopt_cb(expr) \+ (_curl_is_NULL(expr) || \+ __builtin_types_compatible_p(__typeof__(expr), curl_sockopt_callback) || \+ _curl_callback_compatible((expr), _curl_sockopt_callback1) || \+ _curl_callback_compatible((expr), _curl_sockopt_callback2))+typedef int (_curl_sockopt_callback1)(void *, curl_socket_t, curlsocktype);+typedef int (_curl_sockopt_callback2)(const void *, curl_socket_t,+ curlsocktype);++/* evaluates to true if expr is of type curl_opensocket_callback or+ "similar" */+#define _curl_is_opensocket_cb(expr) \+ (_curl_is_NULL(expr) || \+ __builtin_types_compatible_p(__typeof__(expr), curl_opensocket_callback) ||\+ _curl_callback_compatible((expr), _curl_opensocket_callback1) || \+ _curl_callback_compatible((expr), _curl_opensocket_callback2) || \+ _curl_callback_compatible((expr), _curl_opensocket_callback3) || \+ _curl_callback_compatible((expr), _curl_opensocket_callback4))+typedef curl_socket_t (_curl_opensocket_callback1)+ (void *, curlsocktype, struct curl_sockaddr *);+typedef curl_socket_t (_curl_opensocket_callback2)+ (void *, curlsocktype, const struct curl_sockaddr *);+typedef curl_socket_t (_curl_opensocket_callback3)+ (const void *, curlsocktype, struct curl_sockaddr *);+typedef curl_socket_t (_curl_opensocket_callback4)+ (const void *, curlsocktype, const struct curl_sockaddr *);++/* evaluates to true if expr is of type curl_progress_callback or "similar" */+#define _curl_is_progress_cb(expr) \+ (_curl_is_NULL(expr) || \+ __builtin_types_compatible_p(__typeof__(expr), curl_progress_callback) || \+ _curl_callback_compatible((expr), _curl_progress_callback1) || \+ _curl_callback_compatible((expr), _curl_progress_callback2))+typedef int (_curl_progress_callback1)(void *,+ double, double, double, double);+typedef int (_curl_progress_callback2)(const void *,+ double, double, double, double);++/* evaluates to true if expr is of type curl_debug_callback or "similar" */+#define _curl_is_debug_cb(expr) \+ (_curl_is_NULL(expr) || \+ __builtin_types_compatible_p(__typeof__(expr), curl_debug_callback) || \+ _curl_callback_compatible((expr), _curl_debug_callback1) || \+ _curl_callback_compatible((expr), _curl_debug_callback2) || \+ _curl_callback_compatible((expr), _curl_debug_callback3) || \+ _curl_callback_compatible((expr), _curl_debug_callback4) || \+ _curl_callback_compatible((expr), _curl_debug_callback5) || \+ _curl_callback_compatible((expr), _curl_debug_callback6) || \+ _curl_callback_compatible((expr), _curl_debug_callback7) || \+ _curl_callback_compatible((expr), _curl_debug_callback8))+typedef int (_curl_debug_callback1) (CURL *,+ curl_infotype, char *, size_t, void *);+typedef int (_curl_debug_callback2) (CURL *,+ curl_infotype, char *, size_t, const void *);+typedef int (_curl_debug_callback3) (CURL *,+ curl_infotype, const char *, size_t, void *);+typedef int (_curl_debug_callback4) (CURL *,+ curl_infotype, const char *, size_t, const void *);+typedef int (_curl_debug_callback5) (CURL *,+ curl_infotype, unsigned char *, size_t, void *);+typedef int (_curl_debug_callback6) (CURL *,+ curl_infotype, unsigned char *, size_t, const void *);+typedef int (_curl_debug_callback7) (CURL *,+ curl_infotype, const unsigned char *, size_t, void *);+typedef int (_curl_debug_callback8) (CURL *,+ curl_infotype, const unsigned char *, size_t, const void *);++/* evaluates to true if expr is of type curl_ssl_ctx_callback or "similar" */+/* this is getting even messier... */+#define _curl_is_ssl_ctx_cb(expr) \+ (_curl_is_NULL(expr) || \+ __builtin_types_compatible_p(__typeof__(expr), curl_ssl_ctx_callback) || \+ _curl_callback_compatible((expr), _curl_ssl_ctx_callback1) || \+ _curl_callback_compatible((expr), _curl_ssl_ctx_callback2) || \+ _curl_callback_compatible((expr), _curl_ssl_ctx_callback3) || \+ _curl_callback_compatible((expr), _curl_ssl_ctx_callback4) || \+ _curl_callback_compatible((expr), _curl_ssl_ctx_callback5) || \+ _curl_callback_compatible((expr), _curl_ssl_ctx_callback6) || \+ _curl_callback_compatible((expr), _curl_ssl_ctx_callback7) || \+ _curl_callback_compatible((expr), _curl_ssl_ctx_callback8))+typedef CURLcode (_curl_ssl_ctx_callback1)(CURL *, void *, void *);+typedef CURLcode (_curl_ssl_ctx_callback2)(CURL *, void *, const void *);+typedef CURLcode (_curl_ssl_ctx_callback3)(CURL *, const void *, void *);+typedef CURLcode (_curl_ssl_ctx_callback4)(CURL *, const void *, const void *);+#ifdef HEADER_SSL_H+/* hack: if we included OpenSSL's ssl.h, we know about SSL_CTX+ * this will of course break if we're included before OpenSSL headers...+ */+typedef CURLcode (_curl_ssl_ctx_callback5)(CURL *, SSL_CTX, void *);+typedef CURLcode (_curl_ssl_ctx_callback6)(CURL *, SSL_CTX, const void *);+typedef CURLcode (_curl_ssl_ctx_callback7)(CURL *, const SSL_CTX, void *);+typedef CURLcode (_curl_ssl_ctx_callback8)(CURL *, const SSL_CTX,+ const void *);+#else+typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback5;+typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback6;+typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback7;+typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback8;+#endif++/* evaluates to true if expr is of type curl_conv_callback or "similar" */+#define _curl_is_conv_cb(expr) \+ (_curl_is_NULL(expr) || \+ __builtin_types_compatible_p(__typeof__(expr), curl_conv_callback) || \+ _curl_callback_compatible((expr), _curl_conv_callback1) || \+ _curl_callback_compatible((expr), _curl_conv_callback2) || \+ _curl_callback_compatible((expr), _curl_conv_callback3) || \+ _curl_callback_compatible((expr), _curl_conv_callback4))+typedef CURLcode (*_curl_conv_callback1)(char *, size_t length);+typedef CURLcode (*_curl_conv_callback2)(const char *, size_t length);+typedef CURLcode (*_curl_conv_callback3)(void *, size_t length);+typedef CURLcode (*_curl_conv_callback4)(const void *, size_t length);++/* evaluates to true if expr is of type curl_seek_callback or "similar" */+#define _curl_is_seek_cb(expr) \+ (_curl_is_NULL(expr) || \+ __builtin_types_compatible_p(__typeof__(expr), curl_seek_callback) || \+ _curl_callback_compatible((expr), _curl_seek_callback1) || \+ _curl_callback_compatible((expr), _curl_seek_callback2))+typedef CURLcode (*_curl_seek_callback1)(void *, curl_off_t, int);+typedef CURLcode (*_curl_seek_callback2)(const void *, curl_off_t, int);+++#endif /* __CURL_TYPECHECK_GCC_H */
+ Network/CURL720.hs view
@@ -0,0 +1,525 @@+-------------------------------------------------------------------------------+-- |+-- Module : Network.CURL720+-- Copyright : Copyright © 2012-2014 Krzysztof Kardzis+-- License : ISC License (MIT/BSD-style, see LICENSE file for details)+-- +-- Maintainer : Krzysztof Kardzis <kkardzis@gmail.com>+-- Stability : experimental+-- Portability : non-portable+--+-- <<https://ga-beacon.appspot.com/UA-53767359-1/hackage/curlhs/CURL720>>+-------------------------------------------------------------------------------++module Network.CURL720+ ( module Network.CURLXXX++ -- |+ -- To use functions from this module it is required to explicitly link+ -- with @libcurl\/7.20@ (or newer) at runtime. So first things first:+ --+ -- > main = withlib CURL720 $ do+ -- > ...+ --+ -- Without such statement any use of the 'curl*' functions will fail.+ -- Runtime linker will first try to load @libcurl@ binary image into+ -- memory and after succesful loading, library version will be checked.+ -- Standard dynamic loader search path is used to locate required+ -- so\/dll\/dylib. Just install libcurl.so\/dll\/dylib into one of+ -- the searched places (could be current directory).++ +-------------------------------------------------------------------------------+-- * Global interface+-------------------------------------------------------------------------------+ + -- ** Version info+ , curl_version+ , curl_version_info+ , CURL_version_info (..)+ , CURLfeature+ ( CURL_VERSION_IPV6+ , CURL_VERSION_KERBEROS4+ , CURL_VERSION_SSL+ , CURL_VERSION_LIBZ+ , CURL_VERSION_NTLM+ , CURL_VERSION_GSSNEGOTIATE+ , CURL_VERSION_DEBUG+ , CURL_VERSION_CURLDEBUG+ , CURL_VERSION_ASYNCHDNS+ , CURL_VERSION_SPNEGO+ , CURL_VERSION_LARGEFILE+ , CURL_VERSION_IDN+ , CURL_VERSION_SSPI+ , CURL_VERSION_CONV+ )++-------------------------------------------------------------------------------+-- * Easy interface+-- | See <http://curl.haxx.se/libcurl/c/libcurl-easy.html>+-- for easy interface overview.+-------------------------------------------------------------------------------++ -- ** Init / Cleanup+ , curl_easy_init+ , curl_easy_cleanup+ , curl_easy_reset+ , CURL++ -- ** Transfer+ , curl_easy_perform+ , curl_easy_recv+ , curl_easy_send++ -- ** Get info+ , curl_easy_getinfo+ , CURLinfo+ ( CURLINFO_EFFECTIVE_URL+ , CURLINFO_RESPONSE_CODE+ , CURLINFO_HTTP_CONNECTCODE+ , CURLINFO_FILETIME+ , CURLINFO_TOTAL_TIME+ , CURLINFO_NAMELOOKUP_TIME+ , CURLINFO_CONNECT_TIME+ , CURLINFO_APPCONNECT_TIME+ , CURLINFO_PRETRANSFER_TIME+ , CURLINFO_STARTTRANSFER_TIME+ , CURLINFO_REDIRECT_TIME+ , CURLINFO_REDIRECT_COUNT+ , CURLINFO_REDIRECT_URL+ , CURLINFO_SIZE_UPLOAD+ , CURLINFO_SIZE_DOWNLOAD+ , CURLINFO_SPEED_DOWNLOAD+ , CURLINFO_SPEED_UPLOAD+ , CURLINFO_HEADER_SIZE+ , CURLINFO_REQUEST_SIZE+ , CURLINFO_SSL_VERIFYRESULT+ , CURLINFO_SSL_ENGINES+ , CURLINFO_CONTENT_LENGTH_DOWNLOAD+ , CURLINFO_CONTENT_LENGTH_UPLOAD+ , CURLINFO_CONTENT_TYPE+ , CURLINFO_HTTPAUTH_AVAIL+ , CURLINFO_PROXYAUTH_AVAIL+ , CURLINFO_OS_ERRNO+ , CURLINFO_NUM_CONNECTS+ , CURLINFO_PRIMARY_IP+ , CURLINFO_COOKIELIST+ , CURLINFO_LASTSOCKET+ , CURLINFO_FTP_ENTRY_PATH+ , CURLINFO_CERTINFO+ , CURLINFO_CONDITION_UNMET+ , CURLINFO_RTSP_SESSION_ID+ , CURLINFO_RTSP_CLIENT_CSEQ+ , CURLINFO_RTSP_SERVER_CSEQ+ , CURLINFO_RTSP_CSEQ_RECV+ )++ -- ** Set options+ , curl_easy_setopt+ , CURLoption+ ---- BEHAVIOR OPTIONS ---------------------------------------------------+ ( CURLOPT_VERBOSE+ , CURLOPT_HEADER+ , CURLOPT_NOPROGRESS+ , CURLOPT_NOSIGNAL++ ---- CALLBACK OPTIONS ---------------------------------------------------+ , CURLOPT_WRITEFUNCTION+ -- CURLOPT_WRITEDATA+ , CURLOPT_READFUNCTION+ -- CURLOPT_READDATA+ -- CURLOPT_IOCTLFUNCTION+ -- CURLOPT_IOCTLDATA+ -- CURLOPT_SEEKFUNCTION+ -- CURLOPT_SEEKDATA+ -- CURLOPT_SOCKOPTFUNCTION+ -- CURLOPT_SOCKOPTDATA+ -- CURLOPT_OPENSOCKETFUNCTION+ -- CURLOPT_OPENSOCKETDATA+ -- CURLOPT_PROGRESSFUNCTION+ -- CURLOPT_PROGRESSDATA+ -- CURLOPT_HEADERFUNCTION+ -- CURLOPT_HEADERDATA+ -- CURLOPT_DEBUGFUNCTION+ -- CURLOPT_DEBUGDATA+ -- CURLOPT_SSL_CTX_FUNCTION+ -- CURLOPT_SSL_CTX_DATA+ -- CURLOPT_CONV_TO_NETWORK_FUNCTION+ -- CURLOPT_CONV_FROM_NETWORK_FUNCTION+ -- CURLOPT_CONV_FROM_UTF8_FUNCTION+ -- CURLOPT_INTERLEAVEFUNCTION+ -- CURLOPT_INTERLEAVEDATA++ ---- ERROR OPTIONS ------------------------------------------------------+ -- CURLOPT_ERRORBUFFER+ -- CURLOPT_STDERR+ , CURLOPT_FAILONERROR++ ---- NETWORK OPTIONS ----------------------------------------------------+ , CURLOPT_URL+ , CURLOPT_PROTOCOLS+ , CURLOPT_REDIR_PROTOCOLS+ , CURLOPT_PROXY+ , CURLOPT_PROXYPORT+ , CURLOPT_PROXYTYPE+ , CURLOPT_NOPROXY+ , CURLOPT_HTTPPROXYTUNNEL+ , CURLOPT_SOCKS5_GSSAPI_SERVICE+ , CURLOPT_SOCKS5_GSSAPI_NEC+ , CURLOPT_INTERFACE+ , CURLOPT_LOCALPORT+ , CURLOPT_LOCALPORTRANGE+ , CURLOPT_DNS_CACHE_TIMEOUT+ -- CURLOPT_DNS_USE_GLOBAL_CACHE+ , CURLOPT_BUFFERSIZE+ , CURLOPT_PORT+ , CURLOPT_TCP_NODELAY+ , CURLOPT_ADDRESS_SCOPE++ ---- NAMES and PASSWORDS OPTIONS (Authentication) -----------------------+ , CURLOPT_NETRC+ , CURLOPT_NETRC_FILE+ , CURLOPT_USERPWD+ , CURLOPT_PROXYUSERPWD+ , CURLOPT_USERNAME+ , CURLOPT_PASSWORD+ , CURLOPT_PROXYUSERNAME+ , CURLOPT_PROXYPASSWORD+ , CURLOPT_HTTPAUTH+ , CURLOPT_PROXYAUTH++ ---- HTTP OPTIONS -------------------------------------------------------+ , CURLOPT_AUTOREFERER+ , CURLOPT_ACCEPT_ENCODING -- CURLOPT_ENCODING+ , CURLOPT_FOLLOWLOCATION+ , CURLOPT_UNRESTRICTED_AUTH+ , CURLOPT_MAXREDIRS+ , CURLOPT_POSTREDIR+ , CURLOPT_PUT+ , CURLOPT_POST+ -- CURLOPT_POSTFIELDS+ , CURLOPT_POSTFIELDSIZE+ , CURLOPT_POSTFIELDSIZE_LARGE+ , CURLOPT_COPYPOSTFIELDS+ -- CURLOPT_HTTPPOST+ , CURLOPT_REFERER+ , CURLOPT_USERAGENT+ , CURLOPT_HTTPHEADER+ , CURLOPT_HTTP200ALIASES+ , CURLOPT_COOKIE+ , CURLOPT_COOKIEFILE+ , CURLOPT_COOKIEJAR+ , CURLOPT_COOKIESESSION+ , CURLOPT_COOKIELIST+ , CURLOPT_HTTPGET+ , CURLOPT_HTTP_VERSION+ , CURLOPT_IGNORE_CONTENT_LENGTH+ , CURLOPT_HTTP_CONTENT_DECODING+ , CURLOPT_HTTP_TRANSFER_DECODING++ ---- SMTP OPTIONS -------------------------------------------------------+ , CURLOPT_MAIL_FROM+ , CURLOPT_MAIL_RCPT++ ---- TFTP OPTIONS -------------------------------------------------------+ , CURLOPT_TFTP_BLKSIZE++ ---- FTP OPTIONS --------------------------------------------------------+ , CURLOPT_FTPPORT+ , CURLOPT_QUOTE+ , CURLOPT_POSTQUOTE+ , CURLOPT_PREQUOTE+ , CURLOPT_DIRLISTONLY+ , CURLOPT_APPEND+ , CURLOPT_FTP_USE_EPRT+ , CURLOPT_FTP_USE_EPSV+ , CURLOPT_FTP_USE_PRET+ , CURLOPT_FTP_CREATE_MISSING_DIRS+ , CURLOPT_FTP_RESPONSE_TIMEOUT+ , CURLOPT_FTP_ALTERNATIVE_TO_USER+ , CURLOPT_FTP_SKIP_PASV_IP+ , CURLOPT_USE_SSL+ , CURLOPT_FTPSSLAUTH+ , CURLOPT_FTP_SSL_CCC+ , CURLOPT_FTP_ACCOUNT+ , CURLOPT_FTP_FILEMETHOD++ ---- RTSP OPTIONS -------------------------------------------------------+ , CURLOPT_RTSP_REQUEST+ , CURLOPT_RTSP_SESSION_ID+ , CURLOPT_RTSP_STREAM_URI+ , CURLOPT_RTSP_TRANSPORT+ , CURLOPT_RTSP_HEADER+ , CURLOPT_RTSP_CLIENT_CSEQ+ , CURLOPT_RTSP_SERVER_CSEQ++ ---- PROTOCOL OPTIONS ---------------------------------------------------+ , CURLOPT_TRANSFERTEXT+ , CURLOPT_PROXY_TRANSFER_MODE+ , CURLOPT_CRLF+ , CURLOPT_RANGE+ , CURLOPT_RESUME_FROM+ , CURLOPT_RESUME_FROM_LARGE+ , CURLOPT_CUSTOMREQUEST+ , CURLOPT_FILETIME+ , CURLOPT_NOBODY+ , CURLOPT_INFILESIZE+ , CURLOPT_INFILESIZE_LARGE+ , CURLOPT_UPLOAD+ , CURLOPT_MAXFILESIZE+ , CURLOPT_MAXFILESIZE_LARGE+ , CURLOPT_TIMECONDITION+ , CURLOPT_TIMEVALUE++ ---- CONNECTION OPTIONS -------------------------------------------------+ , CURLOPT_TIMEOUT+ , CURLOPT_TIMEOUT_MS+ , CURLOPT_LOW_SPEED_LIMIT+ , CURLOPT_LOW_SPEED_TIME+ , CURLOPT_MAX_SEND_SPEED_LARGE+ , CURLOPT_MAX_RECV_SPEED_LARGE+ , CURLOPT_MAXCONNECTS+ -- CURLOPT_CLOSEPOLICY+ , CURLOPT_FRESH_CONNECT+ , CURLOPT_FORBID_REUSE+ , CURLOPT_CONNECTTIMEOUT+ , CURLOPT_CONNECTTIMEOUT_MS+ , CURLOPT_IPRESOLVE+ , CURLOPT_CONNECT_ONLY++ ---- SSL and SECURITY OPTIONS -------------------------------------------+ , CURLOPT_SSLCERT+ , CURLOPT_SSLCERTTYPE+ , CURLOPT_SSLKEY+ , CURLOPT_SSLKEYTYPE+ , CURLOPT_KEYPASSWD+ , CURLOPT_SSLENGINE+ , CURLOPT_SSLENGINE_DEFAULT+ , CURLOPT_SSLVERSION+ , CURLOPT_SSL_VERIFYPEER+ , CURLOPT_CAINFO+ , CURLOPT_ISSUERCERT+ , CURLOPT_CAPATH+ , CURLOPT_CRLFILE+ , CURLOPT_CERTINFO+ , CURLOPT_RANDOM_FILE+ , CURLOPT_EGDSOCKET+ , CURLOPT_SSL_VERIFYHOST+ , CURLOPT_SSL_CIPHER_LIST+ , CURLOPT_SSL_SESSIONID_CACHE+ , CURLOPT_KRBLEVEL++ ---- SSH OPTIONS --------------------------------------------------------+ , CURLOPT_SSH_AUTH_TYPES+ , CURLOPT_SSH_HOST_PUBLIC_KEY_MD5+ , CURLOPT_SSH_PUBLIC_KEYFILE+ , CURLOPT_SSH_PRIVATE_KEYFILE+ , CURLOPT_SSH_KNOWNHOSTS+ -- CURLOPT_SSH_KEYFUNCTION+ -- CURLOPT_SSH_KEYDATA++ ---- OTHER OPTIONS ------------------------------------------------------+ -- CURLOPT_PRIVATE+ , CURLOPT_SHARE+ , CURLOPT_NEW_FILE_PERMS+ , CURLOPT_NEW_DIRECTORY_PERMS++ ---- TELNET OPTIONS -----------------------------------------------------+ , CURLOPT_TELNETOPTIONS+ )++ -- *** Callbacks+ , CURL_write_callback, CURL_write_response (..)+ , CURL_read_callback , CURL_read_response (..)++ -- *** Constants+ , CURLproto+ ( CURLPROTO_ALL+ , CURLPROTO_HTTP+ , CURLPROTO_HTTPS+ , CURLPROTO_FTP+ , CURLPROTO_FTPS+ , CURLPROTO_SCP+ , CURLPROTO_SFTP+ , CURLPROTO_TELNET+ , CURLPROTO_LDAP+ , CURLPROTO_LDAPS+ , CURLPROTO_DICT+ , CURLPROTO_FILE+ , CURLPROTO_TFTP+ , CURLPROTO_IMAP+ , CURLPROTO_IMAPS+ , CURLPROTO_POP3+ , CURLPROTO_POP3S+ , CURLPROTO_SMTP+ , CURLPROTO_SMTPS+ , CURLPROTO_RTSP+ )++ , CURLproxy+ ( CURLPROXY_HTTP+ , CURLPROXY_HTTP_1_0+ , CURLPROXY_SOCKS4+ , CURLPROXY_SOCKS5+ , CURLPROXY_SOCKS4A+ , CURLPROXY_SOCKS5_HOSTNAME+ )++ , CURLnetrc+ ( CURL_NETRC_IGNORED+ , CURL_NETRC_OPTIONAL+ , CURL_NETRC_REQUIRED+ )++ , CURLauth+ ( CURLAUTH_BASIC+ , CURLAUTH_DIGEST+ , CURLAUTH_DIGEST_IE+ , CURLAUTH_GSSNEGOTIATE+ , CURLAUTH_NTLM+ , CURLAUTH_ONLY+ , CURLAUTH_ANY+ , CURLAUTH_ANYSAFE+ )++ , CURLredir+ ( CURL_REDIR_GET_ALL+ , CURL_REDIR_POST_301+ , CURL_REDIR_POST_302+ , CURL_REDIR_POST_ALL+ )++ , CURLhttpver+ ( CURL_HTTP_VERSION_NONE+ , CURL_HTTP_VERSION_1_0+ , CURL_HTTP_VERSION_1_1+ )++ , CURLftpcreate+ ( CURLFTP_CREATE_DIR_NONE+ , CURLFTP_CREATE_DIR+ , CURLFTP_CREATE_DIR_RETRY+ )++ , CURLftpauth+ ( CURLFTPAUTH_DEFAULT+ , CURLFTPAUTH_SSL+ , CURLFTPAUTH_TLS+ )++ , CURLftpssl+ ( CURLFTPSSL_CCC_NONE+ , CURLFTPSSL_CCC_PASSIVE+ , CURLFTPSSL_CCC_ACTIVE+ )++ , CURLftpmethod+ ( CURLFTPMETHOD_DEFAULT+ , CURLFTPMETHOD_MULTICWD+ , CURLFTPMETHOD_NOCWD+ , CURLFTPMETHOD_SINGLECWD+ )++ , CURLrtspreq+ ( CURL_RTSPREQ_OPTIONS+ , CURL_RTSPREQ_DESCRIBE+ , CURL_RTSPREQ_ANNOUNCE+ , CURL_RTSPREQ_SETUP+ , CURL_RTSPREQ_PLAY+ , CURL_RTSPREQ_PAUSE+ , CURL_RTSPREQ_TEARDOWN+ , CURL_RTSPREQ_GET_PARAMETER+ , CURL_RTSPREQ_SET_PARAMETER+ , CURL_RTSPREQ_RECORD+ , CURL_RTSPREQ_RECEIVE+ )++ , CURLtimecond+ ( CURL_TIMECOND_NONE+ , CURL_TIMECOND_IFMODSINCE+ , CURL_TIMECOND_IFUNMODSINCE+ , CURL_TIMECOND_LASTMOD+ )++ , CURLipresolve+ ( CURL_IPRESOLVE_WHATEVER+ , CURL_IPRESOLVE_V4+ , CURL_IPRESOLVE_V6+ )++ , CURLusessl+ ( CURLUSESSL_NONE+ , CURLUSESSL_TRY+ , CURLUSESSL_CONTROL+ , CURLUSESSL_ALL+ )++ , CURLsslver+ ( CURL_SSLVERSION_DEFAULT+ , CURL_SSLVERSION_TLSv1+ , CURL_SSLVERSION_SSLv2+ , CURL_SSLVERSION_SSLv3+ )++ , CURLsshauth+ ( CURLSSH_AUTH_ANY+ , CURLSSH_AUTH_NONE+ , CURLSSH_AUTH_PUBLICKEY+ , CURLSSH_AUTH_PASSWORD+ , CURLSSH_AUTH_HOST+ , CURLSSH_AUTH_KEYBOARD+ , CURLSSH_AUTH_DEFAULT+ )++ -- ** Exceptions+ -- | More about error codes in libcurl on+ -- <http://curl.haxx.se/libcurl/c/libcurl-errors.html>+ , CURLE (..)+ , CURLC (..)+++-------------------------------------------------------------------------------+-- * Multi interface+-- | See <http://curl.haxx.se/libcurl/c/libcurl-multi.html>+-- for multi interface overview.+-------------------------------------------------------------------------------+-- | TODO+++-------------------------------------------------------------------------------+-- * Share interface+-- | See <http://curl.haxx.se/libcurl/c/libcurl-share.html>+-- for share interface overview.+-------------------------------------------------------------------------------++ -- ** Init / Cleanup+ , curl_share_init+ , curl_share_cleanup+ , CURLSH++ -- ** Set options+ , curl_share_setopt+ , CURLSHoption+ ( CURLSHOPT_SHARE+ , CURLSHOPT_UNSHARE+ )++ , CURLSHlockdata+ ( CURL_LOCK_DATA_COOKIE+ , CURL_LOCK_DATA_DNS+ , CURL_LOCK_DATA_SSL_SESSION+ )++ -- ** Exceptions+ -- | More about error codes in libcurl on+ -- <http://curl.haxx.se/libcurl/c/libcurl-errors.html>+ , CURLSHE (..)+ , CURLSHC (..)+++ ) where++import Network.CURL000.LibHS+import Network.CURL000.Types+import Network.CURLXXX+
+ Network/CURL730.hs view
@@ -0,0 +1,575 @@+-------------------------------------------------------------------------------+-- |+-- Module : Network.CURL730+-- Copyright : Copyright © 2012-2014 Krzysztof Kardzis+-- License : ISC License (MIT/BSD-style, see LICENSE file for details)+-- +-- Maintainer : Krzysztof Kardzis <kkardzis@gmail.com>+-- Stability : experimental+-- Portability : non-portable+--+-- <<https://ga-beacon.appspot.com/UA-53767359-1/hackage/curlhs/CURL730>>+-------------------------------------------------------------------------------++module Network.CURL730+ ( module Network.CURLXXX++ -- |+ -- To use functions from this module it is required to explicitly link+ -- with @libcurl\/7.30@ (or newer) at runtime. So first things first:+ --+ -- > main = withlib CURL730 $ do+ -- > ...+ --+ -- Without such statement any use of the 'curl*' functions will fail.+ -- Runtime linker will first try to load @libcurl@ binary image into+ -- memory and after succesful loading, library version will be checked.+ -- Standard dynamic loader search path is used to locate required+ -- so\/dll\/dylib. Just install libcurl.so\/dll\/dylib into one of+ -- the searched places (could be current directory).+++-------------------------------------------------------------------------------+-- * Global interface+-------------------------------------------------------------------------------+ + -- ** Version info+ , curl_version+ , curl_version_info+ , CURL_version_info (..)+ , CURLfeature+ ( CURL_VERSION_IPV6+ , CURL_VERSION_KERBEROS4+ , CURL_VERSION_SSL+ , CURL_VERSION_LIBZ+ , CURL_VERSION_NTLM+ , CURL_VERSION_GSSNEGOTIATE+ , CURL_VERSION_DEBUG+ , CURL_VERSION_CURLDEBUG+ , CURL_VERSION_ASYNCHDNS+ , CURL_VERSION_SPNEGO+ , CURL_VERSION_LARGEFILE+ , CURL_VERSION_IDN+ , CURL_VERSION_SSPI+ , CURL_VERSION_CONV+ , CURL_VERSION_TLSAUTH_SRP+ , CURL_VERSION_NTLM_WB+ )++-------------------------------------------------------------------------------+-- * Easy interface+-- | See <http://curl.haxx.se/libcurl/c/libcurl-easy.html>+-- for easy interface overview.+-------------------------------------------------------------------------------++ -- ** Init / Cleanup+ , curl_easy_init+ , curl_easy_cleanup+ , curl_easy_reset+ , CURL++ -- ** Transfer+ , curl_easy_perform+ , curl_easy_recv+ , curl_easy_send++ -- ** Get info+ , curl_easy_getinfo+ , CURLinfo+ ( CURLINFO_EFFECTIVE_URL+ , CURLINFO_RESPONSE_CODE+ , CURLINFO_HTTP_CONNECTCODE+ , CURLINFO_FILETIME+ , CURLINFO_TOTAL_TIME+ , CURLINFO_NAMELOOKUP_TIME+ , CURLINFO_CONNECT_TIME+ , CURLINFO_APPCONNECT_TIME+ , CURLINFO_PRETRANSFER_TIME+ , CURLINFO_STARTTRANSFER_TIME+ , CURLINFO_REDIRECT_TIME+ , CURLINFO_REDIRECT_COUNT+ , CURLINFO_REDIRECT_URL+ , CURLINFO_SIZE_UPLOAD+ , CURLINFO_SIZE_DOWNLOAD+ , CURLINFO_SPEED_DOWNLOAD+ , CURLINFO_SPEED_UPLOAD+ , CURLINFO_HEADER_SIZE+ , CURLINFO_REQUEST_SIZE+ , CURLINFO_SSL_VERIFYRESULT+ , CURLINFO_SSL_ENGINES+ , CURLINFO_CONTENT_LENGTH_DOWNLOAD+ , CURLINFO_CONTENT_LENGTH_UPLOAD+ , CURLINFO_CONTENT_TYPE+ , CURLINFO_HTTPAUTH_AVAIL+ , CURLINFO_PROXYAUTH_AVAIL+ , CURLINFO_OS_ERRNO+ , CURLINFO_NUM_CONNECTS+ , CURLINFO_PRIMARY_IP+ , CURLINFO_PRIMARY_PORT+ , CURLINFO_LOCAL_IP+ , CURLINFO_LOCAL_PORT+ , CURLINFO_COOKIELIST+ , CURLINFO_LASTSOCKET+ , CURLINFO_FTP_ENTRY_PATH+ , CURLINFO_CERTINFO+ , CURLINFO_CONDITION_UNMET+ , CURLINFO_RTSP_SESSION_ID+ , CURLINFO_RTSP_CLIENT_CSEQ+ , CURLINFO_RTSP_SERVER_CSEQ+ , CURLINFO_RTSP_CSEQ_RECV+ )++ -- ** Set options+ , curl_easy_setopt+ , CURLoption+ ---- BEHAVIOR OPTIONS ---------------------------------------------------+ ( CURLOPT_VERBOSE+ , CURLOPT_HEADER+ , CURLOPT_NOPROGRESS+ , CURLOPT_NOSIGNAL+ , CURLOPT_WILDCARDMATCH++ ---- CALLBACK OPTIONS ---------------------------------------------------+ , CURLOPT_WRITEFUNCTION+ -- CURLOPT_WRITEDATA+ , CURLOPT_READFUNCTION+ -- CURLOPT_READDATA+ -- CURLOPT_IOCTLFUNCTION+ -- CURLOPT_IOCTLDATA+ -- CURLOPT_SEEKFUNCTION+ -- CURLOPT_SEEKDATA+ -- CURLOPT_SOCKOPTFUNCTION+ -- CURLOPT_SOCKOPTDATA+ -- CURLOPT_OPENSOCKETFUNCTION+ -- CURLOPT_OPENSOCKETDATA+ -- CURLOPT_CLOSESOCKETFUNCTION+ -- CURLOPT_CLOSESOCKETDATA+ -- CURLOPT_PROGRESSFUNCTION+ -- CURLOPT_PROGRESSDATA+ -- CURLOPT_HEADERFUNCTION+ -- CURLOPT_HEADERDATA+ -- CURLOPT_DEBUGFUNCTION+ -- CURLOPT_DEBUGDATA+ -- CURLOPT_SSL_CTX_FUNCTION+ -- CURLOPT_SSL_CTX_DATA+ -- CURLOPT_CONV_TO_NETWORK_FUNCTION+ -- CURLOPT_CONV_FROM_NETWORK_FUNCTION+ -- CURLOPT_CONV_FROM_UTF8_FUNCTION+ -- CURLOPT_INTERLEAVEFUNCTION+ -- CURLOPT_INTERLEAVEDATA+ -- CURLOPT_CHUNK_BGN_FUNCTION+ -- CURLOPT_CHUNK_END_FUNCTION+ -- CURLOPT_CHUNK_DATA+ -- CURLOPT_FNMATCH_FUNCTION+ -- CURLOPT_FNMATCH_DATA++ ---- ERROR OPTIONS ------------------------------------------------------+ -- CURLOPT_ERRORBUFFER+ -- CURLOPT_STDERR+ , CURLOPT_FAILONERROR++ ---- NETWORK OPTIONS ----------------------------------------------------+ , CURLOPT_URL+ , CURLOPT_PROTOCOLS+ , CURLOPT_REDIR_PROTOCOLS+ , CURLOPT_PROXY+ , CURLOPT_PROXYPORT+ , CURLOPT_PROXYTYPE+ , CURLOPT_NOPROXY+ , CURLOPT_HTTPPROXYTUNNEL+ , CURLOPT_SOCKS5_GSSAPI_SERVICE+ , CURLOPT_SOCKS5_GSSAPI_NEC+ , CURLOPT_INTERFACE+ , CURLOPT_LOCALPORT+ , CURLOPT_LOCALPORTRANGE+ , CURLOPT_DNS_CACHE_TIMEOUT+ -- CURLOPT_DNS_USE_GLOBAL_CACHE+ , CURLOPT_BUFFERSIZE+ , CURLOPT_PORT+ , CURLOPT_TCP_NODELAY+ , CURLOPT_ADDRESS_SCOPE+ , CURLOPT_TCP_KEEPALIVE+ , CURLOPT_TCP_KEEPIDLE+ , CURLOPT_TCP_KEEPINTVL++ ---- NAMES and PASSWORDS OPTIONS (Authentication) -----------------------+ , CURLOPT_NETRC+ , CURLOPT_NETRC_FILE+ , CURLOPT_USERPWD+ , CURLOPT_PROXYUSERPWD+ , CURLOPT_USERNAME+ , CURLOPT_PASSWORD+ , CURLOPT_PROXYUSERNAME+ , CURLOPT_PROXYPASSWORD+ , CURLOPT_HTTPAUTH+ , CURLOPT_TLSAUTH_TYPE+ , CURLOPT_TLSAUTH_USERNAME+ , CURLOPT_TLSAUTH_PASSWORD+ , CURLOPT_PROXYAUTH++ ---- HTTP OPTIONS -------------------------------------------------------+ , CURLOPT_AUTOREFERER+ , CURLOPT_ACCEPT_ENCODING+ , CURLOPT_TRANSFER_ENCODING+ , CURLOPT_FOLLOWLOCATION+ , CURLOPT_UNRESTRICTED_AUTH+ , CURLOPT_MAXREDIRS+ , CURLOPT_POSTREDIR+ , CURLOPT_PUT+ , CURLOPT_POST+ -- CURLOPT_POSTFIELDS+ , CURLOPT_POSTFIELDSIZE+ , CURLOPT_POSTFIELDSIZE_LARGE+ , CURLOPT_COPYPOSTFIELDS+ -- CURLOPT_HTTPPOST+ , CURLOPT_REFERER+ , CURLOPT_USERAGENT+ , CURLOPT_HTTPHEADER+ , CURLOPT_HTTP200ALIASES+ , CURLOPT_COOKIE+ , CURLOPT_COOKIEFILE+ , CURLOPT_COOKIEJAR+ , CURLOPT_COOKIESESSION+ , CURLOPT_COOKIELIST+ , CURLOPT_HTTPGET+ , CURLOPT_HTTP_VERSION+ , CURLOPT_IGNORE_CONTENT_LENGTH+ , CURLOPT_HTTP_CONTENT_DECODING+ , CURLOPT_HTTP_TRANSFER_DECODING++ ---- SMTP OPTIONS -------------------------------------------------------+ , CURLOPT_MAIL_FROM+ , CURLOPT_MAIL_RCPT+ , CURLOPT_MAIL_AUTH++ ---- TFTP OPTIONS -------------------------------------------------------+ , CURLOPT_TFTP_BLKSIZE++ ---- FTP OPTIONS --------------------------------------------------------+ , CURLOPT_FTPPORT+ , CURLOPT_QUOTE+ , CURLOPT_POSTQUOTE+ , CURLOPT_PREQUOTE+ , CURLOPT_DIRLISTONLY+ , CURLOPT_APPEND+ , CURLOPT_FTP_USE_EPRT+ , CURLOPT_FTP_USE_EPSV+ , CURLOPT_FTP_USE_PRET+ , CURLOPT_FTP_CREATE_MISSING_DIRS+ , CURLOPT_FTP_RESPONSE_TIMEOUT+ , CURLOPT_FTP_ALTERNATIVE_TO_USER+ , CURLOPT_FTP_SKIP_PASV_IP+ , CURLOPT_FTPSSLAUTH+ , CURLOPT_FTP_SSL_CCC+ , CURLOPT_FTP_ACCOUNT+ , CURLOPT_FTP_FILEMETHOD++ ---- RTSP OPTIONS -------------------------------------------------------+ , CURLOPT_RTSP_REQUEST+ , CURLOPT_RTSP_SESSION_ID+ , CURLOPT_RTSP_STREAM_URI+ , CURLOPT_RTSP_TRANSPORT+ , CURLOPT_RTSP_HEADER+ , CURLOPT_RTSP_CLIENT_CSEQ+ , CURLOPT_RTSP_SERVER_CSEQ++ ---- PROTOCOL OPTIONS ---------------------------------------------------+ , CURLOPT_TRANSFERTEXT+ , CURLOPT_PROXY_TRANSFER_MODE+ , CURLOPT_CRLF+ , CURLOPT_RANGE+ , CURLOPT_RESUME_FROM+ , CURLOPT_RESUME_FROM_LARGE+ , CURLOPT_CUSTOMREQUEST+ , CURLOPT_FILETIME+ , CURLOPT_NOBODY+ , CURLOPT_INFILESIZE+ , CURLOPT_INFILESIZE_LARGE+ , CURLOPT_UPLOAD+ , CURLOPT_MAXFILESIZE+ , CURLOPT_MAXFILESIZE_LARGE+ , CURLOPT_TIMECONDITION+ , CURLOPT_TIMEVALUE++ ---- CONNECTION OPTIONS -------------------------------------------------+ , CURLOPT_TIMEOUT+ , CURLOPT_TIMEOUT_MS+ , CURLOPT_LOW_SPEED_LIMIT+ , CURLOPT_LOW_SPEED_TIME+ , CURLOPT_MAX_SEND_SPEED_LARGE+ , CURLOPT_MAX_RECV_SPEED_LARGE+ , CURLOPT_MAXCONNECTS+ -- CURLOPT_CLOSEPOLICY+ , CURLOPT_FRESH_CONNECT+ , CURLOPT_FORBID_REUSE+ , CURLOPT_CONNECTTIMEOUT+ , CURLOPT_CONNECTTIMEOUT_MS+ , CURLOPT_IPRESOLVE+ , CURLOPT_CONNECT_ONLY+ , CURLOPT_USE_SSL+ , CURLOPT_RESOLVE+ , CURLOPT_DNS_SERVERS+ , CURLOPT_ACCEPTTIMEOUT_MS++ ---- SSL and SECURITY OPTIONS -------------------------------------------+ , CURLOPT_SSLCERT+ , CURLOPT_SSLCERTTYPE+ , CURLOPT_SSLKEY+ , CURLOPT_SSLKEYTYPE+ , CURLOPT_KEYPASSWD+ , CURLOPT_SSLENGINE+ , CURLOPT_SSLENGINE_DEFAULT+ , CURLOPT_SSLVERSION+ , CURLOPT_SSL_VERIFYPEER+ , CURLOPT_CAINFO+ , CURLOPT_ISSUERCERT+ , CURLOPT_CAPATH+ , CURLOPT_CRLFILE+ , CURLOPT_SSL_VERIFYHOST+ , CURLOPT_CERTINFO+ , CURLOPT_RANDOM_FILE+ , CURLOPT_EGDSOCKET+ , CURLOPT_SSL_CIPHER_LIST+ , CURLOPT_SSL_SESSIONID_CACHE+ , CURLOPT_SSL_OPTIONS+ , CURLOPT_KRBLEVEL+ , CURLOPT_GSSAPI_DELEGATION++ ---- SSH OPTIONS --------------------------------------------------------+ , CURLOPT_SSH_AUTH_TYPES+ , CURLOPT_SSH_HOST_PUBLIC_KEY_MD5+ , CURLOPT_SSH_PUBLIC_KEYFILE+ , CURLOPT_SSH_PRIVATE_KEYFILE+ , CURLOPT_SSH_KNOWNHOSTS+ -- CURLOPT_SSH_KEYFUNCTION+ -- CURLOPT_SSH_KEYDATA++ ---- OTHER OPTIONS ------------------------------------------------------+ -- CURLOPT_PRIVATE+ , CURLOPT_SHARE+ , CURLOPT_NEW_FILE_PERMS+ , CURLOPT_NEW_DIRECTORY_PERMS++ ---- TELNET OPTIONS -----------------------------------------------------+ , CURLOPT_TELNETOPTIONS+ )++ -- *** Callbacks+ , CURL_write_callback, CURL_write_response (..)+ , CURL_read_callback , CURL_read_response (..)++ -- *** Constants+ , CURLproto+ ( CURLPROTO_ALL+ , CURLPROTO_HTTP+ , CURLPROTO_HTTPS+ , CURLPROTO_FTP+ , CURLPROTO_FTPS+ , CURLPROTO_SCP+ , CURLPROTO_SFTP+ , CURLPROTO_TELNET+ , CURLPROTO_LDAP+ , CURLPROTO_LDAPS+ , CURLPROTO_DICT+ , CURLPROTO_FILE+ , CURLPROTO_TFTP+ , CURLPROTO_IMAP+ , CURLPROTO_IMAPS+ , CURLPROTO_POP3+ , CURLPROTO_POP3S+ , CURLPROTO_SMTP+ , CURLPROTO_SMTPS+ , CURLPROTO_RTSP+ , CURLPROTO_RTMP+ , CURLPROTO_RTMPT+ , CURLPROTO_RTMPE+ , CURLPROTO_RTMPTE+ , CURLPROTO_RTMPS+ , CURLPROTO_RTMPTS+ , CURLPROTO_GOPHER+ )++ , CURLproxy+ ( CURLPROXY_HTTP+ , CURLPROXY_HTTP_1_0+ , CURLPROXY_SOCKS4+ , CURLPROXY_SOCKS5+ , CURLPROXY_SOCKS4A+ , CURLPROXY_SOCKS5_HOSTNAME+ )++ , CURLnetrc+ ( CURL_NETRC_IGNORED+ , CURL_NETRC_OPTIONAL+ , CURL_NETRC_REQUIRED+ )++ , CURLauth+ ( CURLAUTH_BASIC+ , CURLAUTH_DIGEST+ , CURLAUTH_DIGEST_IE+ , CURLAUTH_GSSNEGOTIATE+ , CURLAUTH_NTLM+ , CURLAUTH_NTLM_WB+ , CURLAUTH_ONLY+ , CURLAUTH_ANY+ , CURLAUTH_ANYSAFE+ )++ , CURLtlsauth+ ( CURL_TLSAUTH_SRP+ )++ , CURLredir+ ( CURL_REDIR_GET_ALL+ , CURL_REDIR_POST_301+ , CURL_REDIR_POST_302+ , CURL_REDIR_POST_303+ , CURL_REDIR_POST_ALL+ )++ , CURLhttpver+ ( CURL_HTTP_VERSION_NONE+ , CURL_HTTP_VERSION_1_0+ , CURL_HTTP_VERSION_1_1+ )++ , CURLftpcreate+ ( CURLFTP_CREATE_DIR_NONE+ , CURLFTP_CREATE_DIR+ , CURLFTP_CREATE_DIR_RETRY+ )++ , CURLftpauth+ ( CURLFTPAUTH_DEFAULT+ , CURLFTPAUTH_SSL+ , CURLFTPAUTH_TLS+ )++ , CURLftpssl+ ( CURLFTPSSL_CCC_NONE+ , CURLFTPSSL_CCC_PASSIVE+ , CURLFTPSSL_CCC_ACTIVE+ )++ , CURLftpmethod+ ( CURLFTPMETHOD_DEFAULT+ , CURLFTPMETHOD_MULTICWD+ , CURLFTPMETHOD_NOCWD+ , CURLFTPMETHOD_SINGLECWD+ )++ , CURLrtspreq+ ( CURL_RTSPREQ_OPTIONS+ , CURL_RTSPREQ_DESCRIBE+ , CURL_RTSPREQ_ANNOUNCE+ , CURL_RTSPREQ_SETUP+ , CURL_RTSPREQ_PLAY+ , CURL_RTSPREQ_PAUSE+ , CURL_RTSPREQ_TEARDOWN+ , CURL_RTSPREQ_GET_PARAMETER+ , CURL_RTSPREQ_SET_PARAMETER+ , CURL_RTSPREQ_RECORD+ , CURL_RTSPREQ_RECEIVE+ )++ , CURLtimecond+ ( CURL_TIMECOND_NONE+ , CURL_TIMECOND_IFMODSINCE+ , CURL_TIMECOND_IFUNMODSINCE+ , CURL_TIMECOND_LASTMOD+ )++ , CURLipresolve+ ( CURL_IPRESOLVE_WHATEVER+ , CURL_IPRESOLVE_V4+ , CURL_IPRESOLVE_V6+ )++ , CURLusessl+ ( CURLUSESSL_NONE+ , CURLUSESSL_TRY+ , CURLUSESSL_CONTROL+ , CURLUSESSL_ALL+ )++ , CURLsslver+ ( CURL_SSLVERSION_DEFAULT+ , CURL_SSLVERSION_TLSv1+ , CURL_SSLVERSION_SSLv2+ , CURL_SSLVERSION_SSLv3+ )++ , CURLsslopt+ ( CURLSSLOPT_ALLOW_BEAST+ )++ , CURLgssapi+ ( CURLGSSAPI_DELEGATION_NONE+ , CURLGSSAPI_DELEGATION_POLICY_FLAG+ , CURLGSSAPI_DELEGATION_FLAG+ )++ , CURLsshauth+ ( CURLSSH_AUTH_ANY+ , CURLSSH_AUTH_NONE+ , CURLSSH_AUTH_PUBLICKEY+ , CURLSSH_AUTH_PASSWORD+ , CURLSSH_AUTH_HOST+ , CURLSSH_AUTH_KEYBOARD+ , CURLSSH_AUTH_AGENT+ , CURLSSH_AUTH_DEFAULT+ )++ -- ** Exceptions+ -- | More about error codes in libcurl on+ -- <http://curl.haxx.se/libcurl/c/libcurl-errors.html>+ , CURLE (..)+ , CURLC (..)+++-------------------------------------------------------------------------------+-- * Multi interface+-- | See <http://curl.haxx.se/libcurl/c/libcurl-multi.html>+-- for multi interface overview.+-------------------------------------------------------------------------------+-- | TODO+++-------------------------------------------------------------------------------+-- * Share interface+-- | See <http://curl.haxx.se/libcurl/c/libcurl-share.html>+-- for share interface overview.+-------------------------------------------------------------------------------++ -- ** Init / Cleanup+ , curl_share_init+ , curl_share_cleanup+ , CURLSH++ -- ** Set options+ , curl_share_setopt+ , CURLSHoption+ ( CURLSHOPT_SHARE+ , CURLSHOPT_UNSHARE+ )++ , CURLSHlockdata+ ( CURL_LOCK_DATA_COOKIE+ , CURL_LOCK_DATA_DNS+ , CURL_LOCK_DATA_SSL_SESSION+ )++ -- ** Exceptions+ -- | More about error codes in libcurl on+ -- <http://curl.haxx.se/libcurl/c/libcurl-errors.html>+ , CURLSHE (..)+ , CURLSHC (..)+++ ) where++import Network.CURL000.LibHS+import Network.CURL000.Types+import Network.CURLXXX+
+ Network/CURLXXX.hs view
@@ -0,0 +1,23 @@+-------------------------------------------------------------------------------+-- |+-- Module : Network.CURLXXX+-- Copyright : Copyright © 2012-2014 Krzysztof Kardzis+-- License : ISC License (MIT/BSD-style, see LICENSE file for details)+-- +-- Maintainer : Krzysztof Kardzis <kkardzis@gmail.com>+-- Stability : experimental+-- Portability : non-portable+--+-- <<https://ga-beacon.appspot.com/UA-53767359-1/hackage/curlhs/CURLXXX>>+-------------------------------------------------------------------------------++module Network.CURLXXX (+ -----------------------------------------------------------------------------+ -- * Run-Time Linking+ -----------------------------------------------------------------------------+ module Network.CURL000.LibLD++ ) where++import Network.CURL000.LibLD+
− Network/Curlhs/Base.hsc
@@ -1,1814 +0,0 @@----------------------------------------------------------------------------------- |--- Module : Network.Curlhs.Base--- Copyright : Copyright © 2012 Krzysztof Kardzis--- License : ISC License (MIT/BSD-style, see LICENSE file for details)--- --- Maintainer : Krzysztof Kardzis <kkardzis@gmail.com>--- Stability : experimental--- Portability : non-portable--------- Module "Network.Curlhs.Base" provides a direct low-level bindings to--- @libcurl@. It is basically a 1:1 mapping of the @libcurl@'s C API,--- a direct translation of \"curl/curl.h\" header files to Haskell FFI.--- A higher level interface, without ubiquitous pointers and all of that--- C stuff, is provided through the module "Network.Curlhs.Core".------ Documentation about the library and/or particular functions may be found--- in the @libcurl@'s manual pages or on the @libcurl@'s project site--- (<http://curl.haxx.se/libcurl/>). Because API of this module mirrors API--- of the external library, particular symbols may exist or not,--- dependently of that, which version of @libcurl@ is used during compilation--- of the package. The module as closely as possible tries to follow--- the original @libcurl@ API. The main differences are in types of functions--- such as @curl_easy_setopt@ and @curl_easy_getinfo@. Besides that all--- symbol names are prefixed with \'c\' or \'C\'. ------ As the name of the module may suggest, this module is a basis for the--- rest of @curlhs@ package. For now exposed API is somewhat incomplete,--- still lacks some things (like the \"multi interface\"), but the aim is--- to provide here a complete API of @libcurl@, as defined in its C headers.-------------------------------------------------------------------------------------{-# LANGUAGE ForeignFunctionInterface #-}-{-# LANGUAGE EmptyDataDecls #-}--module Network.Curlhs.Base where--import Foreign.C.Types-import Foreign.Storable (Storable (..))-import Foreign.Ptr (Ptr, FunPtr, castPtr)--import Control.Applicative ((<$>), (<*>))-----------------------------------------------------------------------------------#{let alignof type = "(%ld)", (long) offsetof (struct {char x; type y;}, y)}--#define CURL_NO_OLDIES-#include "curl/curl.h"--#define hsc_symbol(name, type) \- printf("c" #name " :: C" #type "\n"); \- printf("c" #name " = C" #type " "); hsc_const(name);--#define hsc_cconst(name, type) \- printf("c" #name " :: " #type "\n"); \- printf("c" #name " = "); hsc_const(name);------------------------------------------------------------------------------------- * Definitions from \"curl/curlver.h\"---------------------------------------------------------------------------------libCURL_COPYRIGHT :: String-libCURL_COPYRIGHT = #{const_str LIBCURL_COPYRIGHT}--libCURL_TIMESTAMP :: String-libCURL_TIMESTAMP = #{const_str LIBCURL_TIMESTAMP}--libCURL_VERSION :: String-libCURL_VERSION = #{const_str LIBCURL_VERSION }--libCURL_VERSION_NUM :: Int-libCURL_VERSION_NUM = #{const LIBCURL_VERSION_NUM }--libCURL_VERSION_MAJOR :: Int-libCURL_VERSION_MAJOR = #{const LIBCURL_VERSION_MAJOR}--libCURL_VERSION_MINOR :: Int-libCURL_VERSION_MINOR = #{const LIBCURL_VERSION_MINOR}--libCURL_VERSION_PATCH :: Int-libCURL_VERSION_PATCH = #{const LIBCURL_VERSION_PATCH}------------------------------------------------------------------------------------- * Definitions from \"curl/curlbuild.h\"---------------------------------------------------------------------------------type CCURL_off_t = CLLong -- ??------------------------------------------------------------------------------------- * Definitions from \"curl/curlrules.h\"----------------------------------------------------------------------------------- todo------------------------------------------------------------------------------------- * Definitions from \"curl/curl.h\"---------------------------------------------------------------------------------data CCURL-----------------------------------------------------------------------------------#if defined(WIN32) && !defined(__LWIP_OPT_H__)-type CCURL_socket_t = CUIntPtr -- SOCKET??-#else-type CCURL_socket_t = CInt-#endif--#{cconst CURL_SOCKET_BAD, CCURL_socket_t}------------------------------------------------------------------------------------- ** CURL_httppost---------------------------------------------------------------------------------data CCURL_httppost = CCURL_httppost- { ccurl_httppost_next :: Ptr CCURL_httppost- , ccurl_httppost_name :: Ptr CChar- , ccurl_httppost_namelength :: CLong- , ccurl_httppost_contents :: Ptr CChar- , ccurl_httppost_contentslength :: CLong- , ccurl_httppost_buffer :: Ptr CChar- , ccurl_httppost_bufferlength :: CLong- , ccurl_httppost_contenttype :: Ptr CChar- , ccurl_httppost_contentheader :: Ptr CCURL_slist- , ccurl_httppost_more :: Ptr CCURL_httppost- , ccurl_httppost_flags :: CLong- , ccurl_httppost_showfilename :: Ptr CChar- , ccurl_httppost_userp :: Ptr ()- } deriving (Show)---- instance Storable CCURL_httppost where--- sizeOf _ = #{size struct curl_httppost}--- alignment _ = #{alignof struct curl_httppost}--- poke _ _ = undefined--- peek _ = undefined--#{cconst HTTPPOST_FILENAME , CLong}-#{cconst HTTPPOST_READFILE , CLong}-#{cconst HTTPPOST_PTRNAME , CLong}-#{cconst HTTPPOST_PTRCONTENTS, CLong}-#{cconst HTTPPOST_BUFFER , CLong}-#{cconst HTTPPOST_PTRBUFFER , CLong}-#{cconst HTTPPOST_CALLBACK , CLong}- ----------------------------------------------------------------------------------- ** Callbacks----------------------------------------------------------------------------------- *** CURL_progress_callback---------------------------------------------------------------------------------type CCURL_progress_callback- = Ptr () -> CDouble -> CDouble -> CDouble -> CDouble -> IO CInt--foreign import ccall "wrapper"- wrap_ccurl_progress_callback- :: CCURL_progress_callback- -> IO (FunPtr CCURL_progress_callback)------------------------------------------------------------------------------------- *** CURL_write_callback---------------------------------------------------------------------------------#{cconst CURL_MAX_WRITE_SIZE , CSize}-#{cconst CURL_MAX_HTTP_HEADER, CSize}-#{cconst CURL_WRITEFUNC_PAUSE, CSize}--type CCURL_write_callback- = Ptr CChar -> CSize -> CSize -> Ptr () -> IO CSize--foreign import ccall "wrapper"- wrap_ccurl_write_callback- :: CCURL_write_callback- -> IO (FunPtr CCURL_write_callback)------------------------------------------------------------------------------------- ** CURL_fileinfo---------------------------------------------------------------------------------newtype CCURLfiletype = CCURLfiletype CInt deriving (Eq, Show) |7210:----|--#{symbol CURLFILETYPE_FILE , CURLfiletype} |7210:----|-#{symbol CURLFILETYPE_DIRECTORY , CURLfiletype} |7210:----|-#{symbol CURLFILETYPE_SYMLINK , CURLfiletype} |7210:----|-#{symbol CURLFILETYPE_DEVICE_BLOCK, CURLfiletype} |7210:----|-#{symbol CURLFILETYPE_DEVICE_CHAR , CURLfiletype} |7210:----|-#{symbol CURLFILETYPE_NAMEDPIPE , CURLfiletype} |7210:----|-#{symbol CURLFILETYPE_SOCKET , CURLfiletype} |7210:----|-#{symbol CURLFILETYPE_DOOR , CURLfiletype} |7210:----|-#{symbol CURLFILETYPE_UNKNOWN , CURLfiletype} |7210:----|--#{cconst CURLFINFOFLAG_KNOWN_FILENAME , CUInt} |7210:----|-#{cconst CURLFINFOFLAG_KNOWN_FILETYPE , CUInt} |7210:----|-#{cconst CURLFINFOFLAG_KNOWN_TIME , CUInt} |7210:----|-#{cconst CURLFINFOFLAG_KNOWN_PERM , CUInt} |7210:----|-#{cconst CURLFINFOFLAG_KNOWN_UID , CUInt} |7210:----|-#{cconst CURLFINFOFLAG_KNOWN_GID , CUInt} |7210:----|-#{cconst CURLFINFOFLAG_KNOWN_SIZE , CUInt} |7210:----|-#{cconst CURLFINFOFLAG_KNOWN_HLINKCOUNT, CUInt} |7210:----|--data CCURL_fileinfo = CCURL_fileinfo |7210:----|- { ccurl_fileinfo_filename :: Ptr CChar |7210:----|- , ccurl_fileinfo_filetype :: CCURLfiletype |7210:----|- , ccurl_fileinfo_time :: CTime |7210:----|- , ccurl_fileinfo_perm :: CUInt |7210:----|- , ccurl_fileinfo_uid :: CInt |7210:----|- , ccurl_fileinfo_gid :: CInt |7210:----|- , ccurl_fileinfo_size :: CCURL_off_t |7210:----|- , ccurl_fileinfo_hardlinks :: CLong |7210:----|- , ccurl_fileinfo_strings_time :: Ptr CChar |7210:----|- , ccurl_fileinfo_strings_perm :: Ptr CChar |7210:----|- , ccurl_fileinfo_strings_user :: Ptr CChar |7210:----|- , ccurl_fileinfo_strings_group :: Ptr CChar |7210:----|- , ccurl_fileinfo_strings_target :: Ptr CChar |7210:----|- , ccurl_fileinfo_flags :: CUInt |7210:----|- , ccurl_fileinfo_b_data :: Ptr CChar |7210:----|- , ccurl_fileinfo_b_size :: CSize |7210:----|- , ccurl_fileinfo_b_used :: CSize |7210:----|- } deriving (Show) |7210:----|---- instance Storable CCURL_fileinfo where |7210:----|--- sizeOf _ = #{size struct curl_fileinfo} |7210:----|--- alignment _ = #{alignof struct curl_fileinfo} |7210:----|--- poke _ _ = undefined |7210:----|--- peek _ = undefined |7210:----|-- ----------------------------------------------------------------------------------- ** Callbacks----------------------------------------------------------------------------------- *** CURL_chunk_bgn_callback---------------------------------------------------------------------------------#{cconst CURL_CHUNK_BGN_FUNC_OK , CLong} |7210:----|-#{cconst CURL_CHUNK_BGN_FUNC_FAIL, CLong} |7210:----|-#{cconst CURL_CHUNK_BGN_FUNC_SKIP, CLong} |7210:----|--type CCURL_chunk_bgn_callback |7210:----|- = Ptr () -> Ptr () -> CInt -> IO CLong |7210:----|--foreign import ccall "wrapper" |7210:----|- wrap_ccurl_chunk_bgn_callback |7210:----|- :: CCURL_chunk_bgn_callback |7210:----|- -> IO (FunPtr CCURL_chunk_bgn_callback) |7210:----|------------------------------------------------------------------------------------- *** CURL_chunk_end_callback---------------------------------------------------------------------------------#{cconst CURL_CHUNK_END_FUNC_OK , CLong} |7210:----|-#{cconst CURL_CHUNK_END_FUNC_FAIL, CLong} |7210:----|--type CCURL_chunk_end_callback |7210:----|- = Ptr () -> IO CLong |7210:----|--foreign import ccall "wrapper" |7210:----|- wrap_ccurl_chunk_end_callback |7210:----|- :: CCURL_chunk_end_callback |7210:----|- -> IO (FunPtr CCURL_chunk_end_callback) |7210:----|-- ----------------------------------------------------------------------------------- *** CURL_fnmatch_callback---------------------------------------------------------------------------------#{cconst CURL_FNMATCHFUNC_MATCH , CInt} |7210:----|-#{cconst CURL_FNMATCHFUNC_NOMATCH, CInt} |7210:----|-#{cconst CURL_FNMATCHFUNC_FAIL , CInt} |7210:----|--type CCURL_fnmatch_callback |7210:----|- = Ptr () -> Ptr CChar -> Ptr CChar -> IO CInt |7210:----|--foreign import ccall "wrapper" |7210:----|- wrap_ccurl_fnmatch_callback |7210:----|- :: CCURL_fnmatch_callback |7210:----|- -> IO (FunPtr CCURL_fnmatch_callback) |7210:----|-- ----------------------------------------------------------------------------------- *** CURL_seek_callback---------------------------------------------------------------------------------#{cconst CURL_SEEKFUNC_OK , CInt}-#{cconst CURL_SEEKFUNC_FAIL , CInt}-#{cconst CURL_SEEKFUNC_CANTSEEK, CInt}--type CCURL_seek_callback- = Ptr () -> CCURL_off_t -> CInt -> IO CInt--foreign import ccall "wrapper"- wrap_ccurl_seek_callback- :: CCURL_seek_callback- -> IO (FunPtr CCURL_seek_callback)------------------------------------------------------------------------------------- *** CURL_read_callback---------------------------------------------------------------------------------#{cconst CURL_READFUNC_ABORT, CSize}-#{cconst CURL_READFUNC_PAUSE, CSize}--type CCURL_read_callback- = Ptr CChar -> CSize -> CSize -> Ptr () -> IO CSize--foreign import ccall "wrapper"- wrap_ccurl_read_callback- :: CCURL_read_callback- -> IO (FunPtr CCURL_read_callback)------------------------------------------------------------------------------------- *** CURL_sockopt_callback---------------------------------------------------------------------------------newtype CCURLsocktype = CCURLsocktype CInt deriving (Eq, Show)--#{symbol CURLSOCKTYPE_IPCXN, CURLsocktype}--#{cconst CURL_SOCKOPT_OK , CInt} |7215:----|-#{cconst CURL_SOCKOPT_ERROR , CInt} |7215:----|-#{cconst CURL_SOCKOPT_ALREADY_CONNECTED, CInt} |7215:----|--type CCURL_sockopt_callback- = Ptr () -> CCURL_socket_t -> CCURLsocktype -> IO CInt--foreign import ccall "wrapper"- wrap_ccurl_sockopt_callback- :: CCURL_sockopt_callback- -> IO (FunPtr CCURL_sockopt_callback)------------------------------------------------------------------------------------- *** CURL_opensocket_callback---------------------------------------------------------------------------------data CCURL_sockaddr = CCURL_sockaddr- { ccurl_sockaddr_family :: CInt- , ccurl_sockaddr_socktype :: CInt- , ccurl_sockaddr_protocol :: CInt- , ccurl_sockaddr_addrlen :: CUInt- , ccurl_sockaddr_addr :: Ptr () -- sockaddr?? TODO- } deriving (Show)---- instance Storable CCURL_sockaddr where--- sizeOf _ = #{size struct curl_sockaddr}--- alignment _ = #{alignof struct curl_sockaddr}--- poke _ _ = undefined--- peek _ = undefined--type CCURL_opensocket_callback- = Ptr () -> CCURLsocktype -> Ptr CCURL_sockaddr -> IO CCURL_socket_t--foreign import ccall "wrapper"- wrap_ccurl_opensocket_callback- :: CCURL_opensocket_callback- -> IO (FunPtr CCURL_opensocket_callback)------------------------------------------------------------------------------------- *** CURL_closesocket_callback---------------------------------------------------------------------------------type CCURL_closesocket_callback |7217:----|- = Ptr () -> CCURL_socket_t -> IO CInt |7217:----|--foreign import ccall "wrapper" |7217:----|- wrap_ccurl_closesocket_callback |7217:----|- :: CCURL_closesocket_callback |7217:----|- -> IO (FunPtr CCURL_closesocket_callback) |7217:----|-- ----------------------------------------------------------------------------------- *** CURL_ioctl_callback---------------------------------------------------------------------------------newtype CCURLioerr = CCURLioerr CInt deriving (Eq, Show)--#{symbol CURLIOE_OK , CURLioerr}-#{symbol CURLIOE_UNKNOWNCMD , CURLioerr}-#{symbol CURLIOE_FAILRESTART , CURLioerr}--newtype CCURLiocmd = CCURLiocmd CInt deriving (Eq, Show)--#{symbol CURLIOCMD_NOP , CURLiocmd}-#{symbol CURLIOCMD_RESTARTREAD, CURLiocmd}--type CCURL_ioctl_callback- = Ptr CCURL -> CCURLiocmd -> Ptr () -> IO CCURLioerr--foreign import ccall "wrapper"- wrap_ccurl_ioctl_callback- :: CCURL_ioctl_callback- -> IO (FunPtr CCURL_ioctl_callback)------------------------------------------------------------------------------------- *** CURL_malloc_callback---------------------------------------------------------------------------------type CCURL_malloc_callback- = CSize -> IO (Ptr ())--foreign import ccall "wrapper"- wrap_ccurl_malloc_callback- :: CCURL_malloc_callback- -> IO (FunPtr CCURL_malloc_callback)------------------------------------------------------------------------------------- *** CURL_free_callback---------------------------------------------------------------------------------type CCURL_free_callback- = Ptr () -> IO ()--foreign import ccall "wrapper"- wrap_ccurl_free_callback- :: CCURL_free_callback- -> IO (FunPtr CCURL_free_callback)------------------------------------------------------------------------------------- *** CURL_realloc_callback---------------------------------------------------------------------------------type CCURL_realloc_callback- = Ptr () -> CSize -> IO (Ptr ())--foreign import ccall "wrapper"- wrap_ccurl_realloc_callback- :: CCURL_realloc_callback- -> IO (FunPtr CCURL_realloc_callback)------------------------------------------------------------------------------------- *** CURL_strdup_callback---------------------------------------------------------------------------------type CCURL_strdup_callback- = Ptr CChar -> IO (Ptr CChar)--foreign import ccall "wrapper"- wrap_ccurl_strdup_callback- :: CCURL_strdup_callback- -> IO (FunPtr CCURL_strdup_callback)------------------------------------------------------------------------------------- *** CURL_calloc_callback---------------------------------------------------------------------------------type CCURL_calloc_callback- = CSize -> CSize -> IO (Ptr ())--foreign import ccall "wrapper"- wrap_ccurl_calloc_callback- :: CCURL_calloc_callback- -> IO (FunPtr CCURL_calloc_callback)-- ----------------------------------------------------------------------------------- *** CURL_debug_callback---------------------------------------------------------------------------------newtype CCURL_infotype = CCURL_infotype CInt deriving (Eq, Show)--#{symbol CURLINFO_TEXT , CURL_infotype}-#{symbol CURLINFO_HEADER_IN , CURL_infotype}-#{symbol CURLINFO_HEADER_OUT , CURL_infotype}-#{symbol CURLINFO_DATA_IN , CURL_infotype}-#{symbol CURLINFO_DATA_OUT , CURL_infotype}-#{symbol CURLINFO_SSL_DATA_IN , CURL_infotype}-#{symbol CURLINFO_SSL_DATA_OUT, CURL_infotype}-#{symbol CURLINFO_END , CURL_infotype}--type CCURL_debug_callback- = Ptr CCURL -> CCURL_infotype -> Ptr CChar -> CSize -> Ptr () -> IO CInt--foreign import ccall "wrapper"- wrap_ccurl_debug_callback- :: CCURL_debug_callback- -> IO (FunPtr CCURL_debug_callback)------------------------------------------------------------------------------------- ** Constants----------------------------------------------------------------------------------- *** CURLcode---------------------------------------------------------------------------------newtype CCURLcode = CCURLcode CInt deriving (Eq, Show)--#{symbol CURLE_OK , CURLcode}-#{symbol CURLE_UNSUPPORTED_PROTOCOL , CURLcode}-#{symbol CURLE_FAILED_INIT , CURLcode}-#{symbol CURLE_URL_MALFORMAT , CURLcode}-#{symbol CURLE_NOT_BUILT_IN , CURLcode} |7215:----|-#{symbol CURLE_COULDNT_RESOLVE_PROXY , CURLcode}-#{symbol CURLE_COULDNT_RESOLVE_HOST , CURLcode}-#{symbol CURLE_COULDNT_CONNECT , CURLcode}-#{symbol CURLE_FTP_WEIRD_SERVER_REPLY , CURLcode}-#{symbol CURLE_REMOTE_ACCESS_DENIED , CURLcode}-#{symbol CURLE_FTP_ACCEPT_FAILED , CURLcode} |7240:----|-#{symbol CURLE_FTP_WEIRD_PASS_REPLY , CURLcode}-#{symbol CURLE_FTP_ACCEPT_TIMEOUT , CURLcode} |7240:----|-#{symbol CURLE_FTP_WEIRD_PASV_REPLY , CURLcode}-#{symbol CURLE_FTP_WEIRD_227_FORMAT , CURLcode}-#{symbol CURLE_FTP_CANT_GET_HOST , CURLcode}-#{symbol CURLE_FTP_COULDNT_SET_TYPE , CURLcode}-#{symbol CURLE_PARTIAL_FILE , CURLcode}-#{symbol CURLE_FTP_COULDNT_RETR_FILE , CURLcode}-#{symbol CURLE_QUOTE_ERROR , CURLcode}-#{symbol CURLE_HTTP_RETURNED_ERROR , CURLcode}-#{symbol CURLE_WRITE_ERROR , CURLcode}-#{symbol CURLE_UPLOAD_FAILED , CURLcode}-#{symbol CURLE_READ_ERROR , CURLcode}-#{symbol CURLE_OUT_OF_MEMORY , CURLcode}-#{symbol CURLE_OPERATION_TIMEDOUT , CURLcode}-#{symbol CURLE_FTP_PORT_FAILED , CURLcode}-#{symbol CURLE_FTP_COULDNT_USE_REST , CURLcode}-#{symbol CURLE_RANGE_ERROR , CURLcode}-#{symbol CURLE_HTTP_POST_ERROR , CURLcode}-#{symbol CURLE_SSL_CONNECT_ERROR , CURLcode}-#{symbol CURLE_BAD_DOWNLOAD_RESUME , CURLcode}-#{symbol CURLE_FILE_COULDNT_READ_FILE , CURLcode}-#{symbol CURLE_LDAP_CANNOT_BIND , CURLcode}-#{symbol CURLE_LDAP_SEARCH_FAILED , CURLcode}-#{symbol CURLE_FUNCTION_NOT_FOUND , CURLcode}-#{symbol CURLE_ABORTED_BY_CALLBACK , CURLcode}-#{symbol CURLE_BAD_FUNCTION_ARGUMENT , CURLcode}-#{symbol CURLE_INTERFACE_FAILED , CURLcode}-#{symbol CURLE_TOO_MANY_REDIRECTS , CURLcode}-#{symbol CURLE_UNKNOWN_TELNET_OPTION , CURLcode} |----:7214|-#{symbol CURLE_UNKNOWN_OPTION , CURLcode} |7215:----|-#{symbol CURLE_TELNET_OPTION_SYNTAX , CURLcode}-#{symbol CURLE_PEER_FAILED_VERIFICATION, CURLcode}-#{symbol CURLE_GOT_NOTHING , CURLcode}-#{symbol CURLE_SSL_ENGINE_NOTFOUND , CURLcode}-#{symbol CURLE_SSL_ENGINE_SETFAILED , CURLcode}-#{symbol CURLE_SEND_ERROR , CURLcode}-#{symbol CURLE_RECV_ERROR , CURLcode}-#{symbol CURLE_SSL_CERTPROBLEM , CURLcode}-#{symbol CURLE_SSL_CIPHER , CURLcode}-#{symbol CURLE_SSL_CACERT , CURLcode}-#{symbol CURLE_BAD_CONTENT_ENCODING , CURLcode}-#{symbol CURLE_LDAP_INVALID_URL , CURLcode}-#{symbol CURLE_FILESIZE_EXCEEDED , CURLcode}-#{symbol CURLE_USE_SSL_FAILED , CURLcode}-#{symbol CURLE_SEND_FAIL_REWIND , CURLcode}-#{symbol CURLE_SSL_ENGINE_INITFAILED , CURLcode}-#{symbol CURLE_LOGIN_DENIED , CURLcode}-#{symbol CURLE_TFTP_NOTFOUND , CURLcode}-#{symbol CURLE_TFTP_PERM , CURLcode}-#{symbol CURLE_REMOTE_DISK_FULL , CURLcode}-#{symbol CURLE_TFTP_ILLEGAL , CURLcode}-#{symbol CURLE_TFTP_UNKNOWNID , CURLcode}-#{symbol CURLE_REMOTE_FILE_EXISTS , CURLcode}-#{symbol CURLE_TFTP_NOSUCHUSER , CURLcode}-#{symbol CURLE_CONV_FAILED , CURLcode}-#{symbol CURLE_CONV_REQD , CURLcode}-#{symbol CURLE_SSL_CACERT_BADFILE , CURLcode}-#{symbol CURLE_REMOTE_FILE_NOT_FOUND , CURLcode}-#{symbol CURLE_SSH , CURLcode}-#{symbol CURLE_SSL_SHUTDOWN_FAILED , CURLcode}-#{symbol CURLE_AGAIN , CURLcode}-#{symbol CURLE_SSL_CRL_BADFILE , CURLcode}-#{symbol CURLE_SSL_ISSUER_ERROR , CURLcode}-#{symbol CURLE_FTP_PRET_FAILED , CURLcode}-#{symbol CURLE_RTSP_CSEQ_ERROR , CURLcode}-#{symbol CURLE_RTSP_SESSION_ERROR , CURLcode}-#{symbol CURLE_FTP_BAD_FILE_LIST , CURLcode} |7210:----|-#{symbol CURLE_CHUNK_FAILED , CURLcode} |7210:----|------------------------------------------------------------------------------------- ** Callbacks----------------------------------------------------------------------------------- *** CURL_conv_callback---------------------------------------------------------------------------------type CCURL_conv_callback- = Ptr CChar -> CSize -> IO CCURLcode--foreign import ccall "wrapper"- wrap_ccurl_conv_callback- :: CCURL_conv_callback- -> IO (FunPtr CCURL_conv_callback)------------------------------------------------------------------------------------- *** CURL_ssl_ctx_callback---------------------------------------------------------------------------------type CCURL_ssl_ctx_callback- = Ptr CCURL -> Ptr () -> Ptr () -> IO CCURLcode--foreign import ccall "wrapper"- wrap_ccurl_ssl_ctx_callback- :: CCURL_ssl_ctx_callback- -> IO (FunPtr CCURL_ssl_ctx_callback)-- ----------------------------------------------------------------------------------- ** Constants----------------------------------------------------------------------------------- *** CURLproxy---------------------------------------------------------------------------------#{cconst CURLPROXY_HTTP , CLong}-#{cconst CURLPROXY_HTTP_1_0 , CLong}-#{cconst CURLPROXY_SOCKS4 , CLong}-#{cconst CURLPROXY_SOCKS5 , CLong}-#{cconst CURLPROXY_SOCKS4A , CLong}-#{cconst CURLPROXY_SOCKS5_HOSTNAME, CLong}------------------------------------------------------------------------------------- *** CURLauth---------------------------------------------------------------------------------#{cconst CURLAUTH_NONE , CLong}-#{cconst CURLAUTH_BASIC , CLong}-#{cconst CURLAUTH_DIGEST , CLong}-#{cconst CURLAUTH_GSSNEGOTIATE, CLong}-#{cconst CURLAUTH_NTLM , CLong}-#{cconst CURLAUTH_DIGEST_IE , CLong}-#{cconst CURLAUTH_NTLM_WB , CLong} |7220:----|-#{cconst CURLAUTH_ONLY , CLong} |7213:----|-#{cconst CURLAUTH_ANY , CLong}-#{cconst CURLAUTH_ANYSAFE , CLong}------------------------------------------------------------------------------------- *** CURLsshauth---------------------------------------------------------------------------------#{cconst CURLSSH_AUTH_ANY , CLong}-#{cconst CURLSSH_AUTH_NONE , CLong}-#{cconst CURLSSH_AUTH_PUBLICKEY, CLong}-#{cconst CURLSSH_AUTH_PASSWORD , CLong}-#{cconst CURLSSH_AUTH_HOST , CLong}-#{cconst CURLSSH_AUTH_KEYBOARD , CLong}-#{cconst CURLSSH_AUTH_DEFAULT , CLong}------------------------------------------------------------------------------------- *** CURLgssapi---------------------------------------------------------------------------------#{cconst CURLGSSAPI_DELEGATION_NONE , CLong} |7220:----|-#{cconst CURLGSSAPI_DELEGATION_POLICY_FLAG, CLong} |7220:----|-#{cconst CURLGSSAPI_DELEGATION_FLAG , CLong} |7220:----|------------------------------------------------------------------------------------- *** CURL_error_size---------------------------------------------------------------------------------#{cconst CURL_ERROR_SIZE, CLong}------------------------------------------------------------------------------------- ** Callbacks----------------------------------------------------------------------------------- *** CURL_sshkey_callback---------------------------------------------------------------------------------data CCURL_khkey = CCURL_khkey- { ccurl_khkey_key :: Ptr CChar- , ccurl_khkey_len :: CSize- , ccurl_khkey_keytype :: CCURL_khtype- } deriving (Show)---- instance Storable CCURL_khkey where--- sizeOf _ = #{size struct curl_khkey}--- alignment _ = #{alignof struct curl_khkey}--- poke _ _ = undefined--- peek _ = undefined--newtype CCURL_khtype = CCURL_khtype CInt deriving (Eq, Show)--#{symbol CURLKHTYPE_UNKNOWN, CURL_khtype}-#{symbol CURLKHTYPE_RSA1 , CURL_khtype}-#{symbol CURLKHTYPE_RSA , CURL_khtype}-#{symbol CURLKHTYPE_DSS , CURL_khtype}- -newtype CCURL_khstat = CCURL_khstat CInt deriving (Eq, Show)--#{symbol CURLKHSTAT_FINE_ADD_TO_FILE, CURL_khstat}-#{symbol CURLKHSTAT_FINE , CURL_khstat}-#{symbol CURLKHSTAT_REJECT , CURL_khstat}-#{symbol CURLKHSTAT_DEFER , CURL_khstat}--newtype CCURL_khmatch = CCURL_khmatch CInt deriving (Eq, Show)--#{symbol CURLKHMATCH_OK , CURL_khmatch}-#{symbol CURLKHMATCH_MISMATCH, CURL_khmatch}-#{symbol CURLKHMATCH_MISSING , CURL_khmatch}- -type CCURL_sshkey_callback- = Ptr CCURL -> Ptr CCURL_khkey -> Ptr CCURL_khkey- -> CCURL_khmatch -> Ptr () -> IO CCURL_khstat--foreign import ccall "wrapper"- wrap_ccurl_sshkey_callback- :: CCURL_sshkey_callback- -> IO (FunPtr CCURL_sshkey_callback)-- ----------------------------------------------------------------------------------- ** Constants----------------------------------------------------------------------------------- *** CURLusessl---------------------------------------------------------------------------------#{cconst CURLUSESSL_NONE , CLong}-#{cconst CURLUSESSL_TRY , CLong}-#{cconst CURLUSESSL_CONTROL, CLong}-#{cconst CURLUSESSL_ALL , CLong}------------------------------------------------------------------------------------- *** CURLsslopt---------------------------------------------------------------------------------#{cconst CURLSSLOPT_ALLOW_BEAST, CLong} |7250:----|------------------------------------------------------------------------------------- *** CURLftpssl---------------------------------------------------------------------------------#{cconst CURLFTPSSL_CCC_NONE , CLong}-#{cconst CURLFTPSSL_CCC_PASSIVE, CLong}-#{cconst CURLFTPSSL_CCC_ACTIVE , CLong}- ------------------------------------------------------------------------------------ *** CURLftpauth---------------------------------------------------------------------------------#{cconst CURLFTPAUTH_DEFAULT, CLong}-#{cconst CURLFTPAUTH_SSL , CLong}-#{cconst CURLFTPAUTH_TLS , CLong}------------------------------------------------------------------------------------- *** CURLftpcreate---------------------------------------------------------------------------------#{cconst CURLFTP_CREATE_DIR_NONE , CLong}-#{cconst CURLFTP_CREATE_DIR , CLong}-#{cconst CURLFTP_CREATE_DIR_RETRY, CLong}------------------------------------------------------------------------------------- *** CURLftpmethod---------------------------------------------------------------------------------#{cconst CURLFTPMETHOD_DEFAULT , CLong}-#{cconst CURLFTPMETHOD_MULTICWD , CLong}-#{cconst CURLFTPMETHOD_NOCWD , CLong}-#{cconst CURLFTPMETHOD_SINGLECWD, CLong}------------------------------------------------------------------------------------- *** CURLproto---------------------------------------------------------------------------------#{cconst CURLPROTO_HTTP , CLong}-#{cconst CURLPROTO_HTTPS , CLong}-#{cconst CURLPROTO_FTP , CLong}-#{cconst CURLPROTO_FTPS , CLong}-#{cconst CURLPROTO_SCP , CLong}-#{cconst CURLPROTO_SFTP , CLong}-#{cconst CURLPROTO_TELNET, CLong}-#{cconst CURLPROTO_LDAP , CLong}-#{cconst CURLPROTO_LDAPS , CLong}-#{cconst CURLPROTO_DICT , CLong}-#{cconst CURLPROTO_FILE , CLong}-#{cconst CURLPROTO_TFTP , CLong}-#{cconst CURLPROTO_IMAP , CLong}-#{cconst CURLPROTO_IMAPS , CLong}-#{cconst CURLPROTO_POP3 , CLong}-#{cconst CURLPROTO_POP3S , CLong}-#{cconst CURLPROTO_SMTP , CLong}-#{cconst CURLPROTO_SMTPS , CLong}-#{cconst CURLPROTO_RTSP , CLong}-#{cconst CURLPROTO_RTMP , CLong} |7210:----|-#{cconst CURLPROTO_RTMPT , CLong} |7210:----|-#{cconst CURLPROTO_RTMPE , CLong} |7210:----|-#{cconst CURLPROTO_RTMPTE, CLong} |7210:----|-#{cconst CURLPROTO_RTMPS , CLong} |7210:----|-#{cconst CURLPROTO_RTMPTS, CLong} |7210:----|-#{cconst CURLPROTO_GOPHER, CLong} |7212:----|-#{cconst CURLPROTO_ALL , CLong}------------------------------------------------------------------------------------- *** CURLoption---------------------------------------------------------------------------------newtype CCURLoption'CLong = CCURLoption'CLong CInt deriving (Eq, Show)-newtype CCURLoption'Int64 = CCURLoption'Int64 CInt deriving (Eq, Show)-newtype CCURLoption'CString = CCURLoption'CString CInt deriving (Eq, Show)-newtype CCURLoption'CFile = CCURLoption'CFile CInt deriving (Eq, Show)-newtype CCURLoption'SList = CCURLoption'SList CInt deriving (Eq, Show)-newtype CCURLoption'HTTPP = CCURLoption'HTTPP CInt deriving (Eq, Show)-newtype CCURLoption'CURLSH = CCURLoption'CURLSH CInt deriving (Eq, Show)-newtype CCURLoption'UsrPtr = CCURLoption'UsrPtr CInt deriving (Eq, Show)-newtype CCURLoption'FunPtr = CCURLoption'FunPtr CInt deriving (Eq, Show)--#define hsc_curlopt(name, type) \- printf("c" #name " :: CCURLoption'" #type "\n"); \- printf("c" #name " = CCURLoption'" #type " "); hsc_const(name);--#{curlopt CURLOPT_FILE , CFile }-#{curlopt CURLOPT_URL , CString }-#{curlopt CURLOPT_PORT , CLong }-#{curlopt CURLOPT_PROXY , CString }-#{curlopt CURLOPT_USERPWD , CString }-#{curlopt CURLOPT_PROXYUSERPWD , CString }-#{curlopt CURLOPT_RANGE , CString }-#{curlopt CURLOPT_INFILE , CFile }-#{curlopt CURLOPT_ERRORBUFFER , CString }-#{curlopt CURLOPT_WRITEFUNCTION , FunPtr }-#{curlopt CURLOPT_READFUNCTION , FunPtr }-#{curlopt CURLOPT_TIMEOUT , CLong }-#{curlopt CURLOPT_INFILESIZE , CLong }-#{curlopt CURLOPT_POSTFIELDS , CString } -- UsrPtr??-#{curlopt CURLOPT_REFERER , CString }-#{curlopt CURLOPT_FTPPORT , CString }-#{curlopt CURLOPT_USERAGENT , CString }-#{curlopt CURLOPT_LOW_SPEED_LIMIT , CLong }-#{curlopt CURLOPT_LOW_SPEED_TIME , CLong }-#{curlopt CURLOPT_RESUME_FROM , CLong }-#{curlopt CURLOPT_COOKIE , CString }-#{curlopt CURLOPT_HTTPHEADER , SList }-#{curlopt CURLOPT_HTTPPOST , HTTPP }-#{curlopt CURLOPT_SSLCERT , CString }-#{curlopt CURLOPT_KEYPASSWD , CString }-#{curlopt CURLOPT_CRLF , CLong }-#{curlopt CURLOPT_QUOTE , SList }-#{curlopt CURLOPT_WRITEHEADER , CFile } -- UsrPtr??-#{curlopt CURLOPT_COOKIEFILE , CString }-#{curlopt CURLOPT_SSLVERSION , CLong }-#{curlopt CURLOPT_TIMECONDITION , CLong }-#{curlopt CURLOPT_TIMEVALUE , CLong }-#{curlopt CURLOPT_CUSTOMREQUEST , CString }-#{curlopt CURLOPT_STDERR , CFile }-#{curlopt CURLOPT_POSTQUOTE , SList }-{-# DEPRECATED cCURLOPT_WRITEINFO "" #-} |7220:----|-#{curlopt CURLOPT_WRITEINFO , CString }-#{curlopt CURLOPT_VERBOSE , CLong }-#{curlopt CURLOPT_HEADER , CLong }-#{curlopt CURLOPT_NOPROGRESS , CLong }-#{curlopt CURLOPT_NOBODY , CLong }-#{curlopt CURLOPT_FAILONERROR , CLong }-#{curlopt CURLOPT_UPLOAD , CLong }-#{curlopt CURLOPT_POST , CLong }-#{curlopt CURLOPT_DIRLISTONLY , CLong }-#{curlopt CURLOPT_APPEND , CLong }-#{curlopt CURLOPT_NETRC , CLong }-#{curlopt CURLOPT_FOLLOWLOCATION , CLong }-#{curlopt CURLOPT_TRANSFERTEXT , CLong }-#{curlopt CURLOPT_PUT , CLong }-#{curlopt CURLOPT_PROGRESSFUNCTION , FunPtr }-#{curlopt CURLOPT_PROGRESSDATA , UsrPtr }-#{curlopt CURLOPT_AUTOREFERER , CLong }-#{curlopt CURLOPT_PROXYPORT , CLong }-#{curlopt CURLOPT_POSTFIELDSIZE , CLong }-#{curlopt CURLOPT_HTTPPROXYTUNNEL , CLong }-#{curlopt CURLOPT_INTERFACE , CString }-#{curlopt CURLOPT_KRBLEVEL , CString }-#{curlopt CURLOPT_SSL_VERIFYPEER , CLong }-#{curlopt CURLOPT_CAINFO , CString }-#{curlopt CURLOPT_MAXREDIRS , CLong }-#{curlopt CURLOPT_FILETIME , CLong }-#{curlopt CURLOPT_TELNETOPTIONS , SList }-#{curlopt CURLOPT_MAXCONNECTS , CLong }-{-# DEPRECATED cCURLOPT_CLOSEPOLICY "" #-} |7217:----|-#{curlopt CURLOPT_CLOSEPOLICY , CLong }-#{curlopt CURLOPT_FRESH_CONNECT , CLong }-#{curlopt CURLOPT_FORBID_REUSE , CLong }-#{curlopt CURLOPT_RANDOM_FILE , CString }-#{curlopt CURLOPT_EGDSOCKET , CString }-#{curlopt CURLOPT_CONNECTTIMEOUT , CLong }-#{curlopt CURLOPT_HEADERFUNCTION , FunPtr }-#{curlopt CURLOPT_HTTPGET , CLong }-#{curlopt CURLOPT_SSL_VERIFYHOST , CLong }-#{curlopt CURLOPT_COOKIEJAR , CString }-#{curlopt CURLOPT_SSL_CIPHER_LIST , CString }-#{curlopt CURLOPT_HTTP_VERSION , CLong }-#{curlopt CURLOPT_FTP_USE_EPSV , CLong }-#{curlopt CURLOPT_SSLCERTTYPE , CString }-#{curlopt CURLOPT_SSLKEY , CString }-#{curlopt CURLOPT_SSLKEYTYPE , CString }-#{curlopt CURLOPT_SSLENGINE , CString }-#{curlopt CURLOPT_SSLENGINE_DEFAULT , CLong }-{-# DEPRECATED cCURLOPT_DNS_USE_GLOBAL_CACHE "" #-} |7220:----|-#{curlopt CURLOPT_DNS_USE_GLOBAL_CACHE , CLong }-#{curlopt CURLOPT_DNS_CACHE_TIMEOUT , CLong }-#{curlopt CURLOPT_PREQUOTE , SList }-#{curlopt CURLOPT_DEBUGFUNCTION , FunPtr }-#{curlopt CURLOPT_DEBUGDATA , UsrPtr }-#{curlopt CURLOPT_COOKIESESSION , CLong }-#{curlopt CURLOPT_CAPATH , CString }-#{curlopt CURLOPT_BUFFERSIZE , CLong }-#{curlopt CURLOPT_NOSIGNAL , CLong }-#{curlopt CURLOPT_SHARE , CURLSH }-#{curlopt CURLOPT_PROXYTYPE , CLong }-#{curlopt CURLOPT_ENCODING , CString } |----:7215|-#{curlopt CURLOPT_ACCEPT_ENCODING , CString } |7216:----|-#{curlopt CURLOPT_PRIVATE , UsrPtr }-#{curlopt CURLOPT_HTTP200ALIASES , SList }-#{curlopt CURLOPT_UNRESTRICTED_AUTH , CLong }-#{curlopt CURLOPT_FTP_USE_EPRT , CLong }-#{curlopt CURLOPT_HTTPAUTH , CLong }-#{curlopt CURLOPT_SSL_CTX_FUNCTION , FunPtr }-#{curlopt CURLOPT_SSL_CTX_DATA , UsrPtr }-#{curlopt CURLOPT_FTP_CREATE_MISSING_DIRS , CLong }-#{curlopt CURLOPT_PROXYAUTH , CLong }-#{curlopt CURLOPT_FTP_RESPONSE_TIMEOUT , CLong }-#{curlopt CURLOPT_IPRESOLVE , CLong }-#{curlopt CURLOPT_MAXFILESIZE , CLong }-#{curlopt CURLOPT_INFILESIZE_LARGE , Int64 }-#{curlopt CURLOPT_RESUME_FROM_LARGE , Int64 }-#{curlopt CURLOPT_MAXFILESIZE_LARGE , Int64 }-#{curlopt CURLOPT_NETRC_FILE , CString }-#{curlopt CURLOPT_USE_SSL , CLong }-#{curlopt CURLOPT_POSTFIELDSIZE_LARGE , Int64 }-#{curlopt CURLOPT_TCP_NODELAY , CLong }-#{curlopt CURLOPT_FTPSSLAUTH , CLong }-#{curlopt CURLOPT_IOCTLFUNCTION , FunPtr }-#{curlopt CURLOPT_IOCTLDATA , UsrPtr }-#{curlopt CURLOPT_FTP_ACCOUNT , CString }-#{curlopt CURLOPT_COOKIELIST , CString }-#{curlopt CURLOPT_IGNORE_CONTENT_LENGTH , CLong }-#{curlopt CURLOPT_FTP_SKIP_PASV_IP , CLong }-#{curlopt CURLOPT_FTP_FILEMETHOD , CLong }-#{curlopt CURLOPT_LOCALPORT , CLong }-#{curlopt CURLOPT_LOCALPORTRANGE , CLong }-#{curlopt CURLOPT_CONNECT_ONLY , CLong }-#{curlopt CURLOPT_CONV_FROM_NETWORK_FUNCTION , FunPtr }-#{curlopt CURLOPT_CONV_TO_NETWORK_FUNCTION , FunPtr }-#{curlopt CURLOPT_CONV_FROM_UTF8_FUNCTION , FunPtr }-#{curlopt CURLOPT_MAX_SEND_SPEED_LARGE , Int64 }-#{curlopt CURLOPT_MAX_RECV_SPEED_LARGE , Int64 }-#{curlopt CURLOPT_FTP_ALTERNATIVE_TO_USER , CString }-#{curlopt CURLOPT_SOCKOPTFUNCTION , FunPtr }-#{curlopt CURLOPT_SOCKOPTDATA , UsrPtr }-#{curlopt CURLOPT_SSL_SESSIONID_CACHE , CLong }-#{curlopt CURLOPT_SSH_AUTH_TYPES , CLong }-#{curlopt CURLOPT_SSH_PUBLIC_KEYFILE , CString }-#{curlopt CURLOPT_SSH_PRIVATE_KEYFILE , CString }-#{curlopt CURLOPT_FTP_SSL_CCC , CLong }-#{curlopt CURLOPT_TIMEOUT_MS , CLong }-#{curlopt CURLOPT_CONNECTTIMEOUT_MS , CLong }-#{curlopt CURLOPT_HTTP_TRANSFER_DECODING , CLong }-#{curlopt CURLOPT_HTTP_CONTENT_DECODING , CLong }-#{curlopt CURLOPT_NEW_FILE_PERMS , CLong }-#{curlopt CURLOPT_NEW_DIRECTORY_PERMS , CLong }-#{curlopt CURLOPT_POSTREDIR , CLong }-#{curlopt CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 , CString }-#{curlopt CURLOPT_OPENSOCKETFUNCTION , FunPtr }-#{curlopt CURLOPT_OPENSOCKETDATA , UsrPtr }-#{curlopt CURLOPT_COPYPOSTFIELDS , CString }-#{curlopt CURLOPT_PROXY_TRANSFER_MODE , CLong }-#{curlopt CURLOPT_SEEKFUNCTION , FunPtr }-#{curlopt CURLOPT_SEEKDATA , UsrPtr }-#{curlopt CURLOPT_CRLFILE , CString }-#{curlopt CURLOPT_ISSUERCERT , CString }-#{curlopt CURLOPT_ADDRESS_SCOPE , CLong }-#{curlopt CURLOPT_CERTINFO , CLong }-#{curlopt CURLOPT_USERNAME , CString }-#{curlopt CURLOPT_PASSWORD , CString }-#{curlopt CURLOPT_PROXYUSERNAME , CString }-#{curlopt CURLOPT_PROXYPASSWORD , CString }-#{curlopt CURLOPT_NOPROXY , CString }-#{curlopt CURLOPT_TFTP_BLKSIZE , CLong }-#{curlopt CURLOPT_SOCKS5_GSSAPI_SERVICE , CString }-#{curlopt CURLOPT_SOCKS5_GSSAPI_NEC , CLong }-#{curlopt CURLOPT_PROTOCOLS , CLong }-#{curlopt CURLOPT_REDIR_PROTOCOLS , CLong }-#{curlopt CURLOPT_SSH_KNOWNHOSTS , CString }-#{curlopt CURLOPT_SSH_KEYFUNCTION , FunPtr }-#{curlopt CURLOPT_SSH_KEYDATA , UsrPtr }-#{curlopt CURLOPT_MAIL_FROM , CString }-#{curlopt CURLOPT_MAIL_RCPT , SList }-#{curlopt CURLOPT_FTP_USE_PRET , CLong }-#{curlopt CURLOPT_RTSP_REQUEST , CLong }-#{curlopt CURLOPT_RTSP_SESSION_ID , CString }-#{curlopt CURLOPT_RTSP_STREAM_URI , CString }-#{curlopt CURLOPT_RTSP_TRANSPORT , CString }-#{curlopt CURLOPT_RTSP_CLIENT_CSEQ , CLong }-#{curlopt CURLOPT_RTSP_SERVER_CSEQ , CLong }-#{curlopt CURLOPT_INTERLEAVEDATA , UsrPtr }-#{curlopt CURLOPT_INTERLEAVEFUNCTION , FunPtr }-#{curlopt CURLOPT_WILDCARDMATCH , CLong } |7210:----|-#{curlopt CURLOPT_CHUNK_BGN_FUNCTION , FunPtr } |7210:----|-#{curlopt CURLOPT_CHUNK_END_FUNCTION , FunPtr } |7210:----|-#{curlopt CURLOPT_FNMATCH_FUNCTION , FunPtr } |7210:----|-#{curlopt CURLOPT_CHUNK_DATA , UsrPtr } |7210:----|-#{curlopt CURLOPT_FNMATCH_DATA , UsrPtr } |7210:----|-#{curlopt CURLOPT_RESOLVE , SList } |7213:----|-#{curlopt CURLOPT_TLSAUTH_USERNAME , CString } |7214:----|-#{curlopt CURLOPT_TLSAUTH_PASSWORD , CString } |7214:----|-#{curlopt CURLOPT_TLSAUTH_TYPE , CString } |7214:----|-#{curlopt CURLOPT_TRANSFER_ENCODING , CLong } |7216:----|-#{curlopt CURLOPT_CLOSESOCKETFUNCTION , FunPtr } |7217:----|-#{curlopt CURLOPT_CLOSESOCKETDATA , UsrPtr } |7217:----|-#{curlopt CURLOPT_GSSAPI_DELEGATION , CLong } |7220:----|-#{curlopt CURLOPT_DNS_SERVERS , CString } |7240:----|-#{curlopt CURLOPT_ACCEPTTIMEOUT_MS , CLong } |7240:----|-#{curlopt CURLOPT_TCP_KEEPALIVE , CLong } |7250:----|-#{curlopt CURLOPT_TCP_KEEPIDLE , CLong } |7250:----|-#{curlopt CURLOPT_TCP_KEEPINTVL , CLong } |7250:----|-#{curlopt CURLOPT_SSL_OPTIONS , CLong } |7250:----|-#{curlopt CURLOPT_MAIL_AUTH , CString } |7250:----|--#{curlopt CURLOPT_WRITEDATA , UsrPtr }-#{curlopt CURLOPT_READDATA , UsrPtr }-#{curlopt CURLOPT_HEADERDATA , UsrPtr }-#{curlopt CURLOPT_RTSPHEADER , SList }------------------------------------------------------------------------------------- *** CURLipresolve---------------------------------------------------------------------------------#{cconst CURL_IPRESOLVE_WHATEVER, CLong}-#{cconst CURL_IPRESOLVE_V4 , CLong}-#{cconst CURL_IPRESOLVE_V6 , CLong}------------------------------------------------------------------------------------- *** CURLhttpver---------------------------------------------------------------------------------#{cconst CURL_HTTP_VERSION_NONE, CLong}-#{cconst CURL_HTTP_VERSION_1_0 , CLong}-#{cconst CURL_HTTP_VERSION_1_1 , CLong}------------------------------------------------------------------------------------- *** CURLrtspreq---------------------------------------------------------------------------------#{cconst CURL_RTSPREQ_NONE , CLong}-#{cconst CURL_RTSPREQ_OPTIONS , CLong}-#{cconst CURL_RTSPREQ_DESCRIBE , CLong}-#{cconst CURL_RTSPREQ_ANNOUNCE , CLong}-#{cconst CURL_RTSPREQ_SETUP , CLong}-#{cconst CURL_RTSPREQ_PLAY , CLong}-#{cconst CURL_RTSPREQ_PAUSE , CLong}-#{cconst CURL_RTSPREQ_TEARDOWN , CLong}-#{cconst CURL_RTSPREQ_GET_PARAMETER, CLong}-#{cconst CURL_RTSPREQ_SET_PARAMETER, CLong}-#{cconst CURL_RTSPREQ_RECORD , CLong}-#{cconst CURL_RTSPREQ_RECEIVE , CLong}------------------------------------------------------------------------------------- *** CURLnetrc---------------------------------------------------------------------------------#{cconst CURL_NETRC_IGNORED , CLong}-#{cconst CURL_NETRC_OPTIONAL, CLong}-#{cconst CURL_NETRC_REQUIRED, CLong}------------------------------------------------------------------------------------- *** CURLsslver---------------------------------------------------------------------------------#{cconst CURL_SSLVERSION_DEFAULT, CLong}-#{cconst CURL_SSLVERSION_TLSv1 , CLong}-#{cconst CURL_SSLVERSION_SSLv2 , CLong}-#{cconst CURL_SSLVERSION_SSLv3 , CLong}------------------------------------------------------------------------------------- *** CURLtlsauth---------------------------------------------------------------------------------#{cconst CURL_TLSAUTH_NONE, CLong} |7214:----|-#{cconst CURL_TLSAUTH_SRP , CLong} |7214:----|------------------------------------------------------------------------------------- *** CURLredir---------------------------------------------------------------------------------#{cconst CURL_REDIR_GET_ALL , CLong}-#{cconst CURL_REDIR_POST_301, CLong}-#{cconst CURL_REDIR_POST_302, CLong}-#{cconst CURL_REDIR_POST_ALL, CLong}------------------------------------------------------------------------------------- *** CURLtimecond---------------------------------------------------------------------------------#{cconst CURL_TIMECOND_NONE , CLong}-#{cconst CURL_TIMECOND_IFMODSINCE , CLong}-#{cconst CURL_TIMECOND_IFUNMODSINCE, CLong}-#{cconst CURL_TIMECOND_LASTMOD , CLong}------------------------------------------------------------------------------------- ** Functions---------------------------------------------------------------------------------{-# DEPRECATED ccurl_strequal "" #-}-foreign import ccall "curl_strequal"- ccurl_strequal- :: Ptr CChar- -> Ptr CChar- -> IO CInt-----------------------------------------------------------------------------------{-# DEPRECATED ccurl_strnequal "" #-}-foreign import ccall "curl_strnequal"- ccurl_strnequal- :: Ptr CChar- -> Ptr CChar- -> CSize- -> IO CInt------------------------------------------------------------------------------------- ** CURL_forms---------------------------------------------------------------------------------newtype CCURLformoption = CCURLformoption CInt deriving (Eq, Show)- --- #{symbol CURLFORM_COPYNAME , CURLformoption}--- #{symbol CURLFORM_PTRNAME , CURLformoption}--- #{symbol CURLFORM_NAMELENGTH , CURLformoption}--- #{symbol CURLFORM_COPYCONTENTS , CURLformoption}--- #{symbol CURLFORM_PTRCONTENTS , CURLformoption}--- #{symbol CURLFORM_CONTENTSLENGTH, CURLformoption}--- #{symbol CURLFORM_FILECONTENT , CURLformoption}--- #{symbol CURLFORM_ARRAY , CURLformoption}--- #{symbol CURLFORM_FILE , CURLformoption}--- #{symbol CURLFORM_BUFFER , CURLformoption}--- #{symbol CURLFORM_BUFFERPTR , CURLformoption}--- #{symbol CURLFORM_BUFFERLENGTH , CURLformoption}--- #{symbol CURLFORM_CONTENTTYPE , CURLformoption}--- #{symbol CURLFORM_CONTENTHEADER , CURLformoption}--- #{symbol CURLFORM_FILENAME , CURLformoption}--- #{symbol CURLFORM_END , CURLformoption}--- #{symbol CURLFORM_STREAM , CURLformoption}-----------------------------------------------------------------------------------data CCURL_forms = CCURL_forms- { ccurl_forms_option :: CCURLformoption- , ccurl_forms_value :: Ptr CChar- } deriving (Show)---- instance Storable CCURL_forms where--- sizeOf _ = #{size struct curl_forms}--- alignment _ = #{alignof struct curl_forms}--- poke _ _ = undefined--- peek _ = undefined-----------------------------------------------------------------------------------newtype CCURLformcode = CCURLformcode CInt deriving (Eq, Show)--#{symbol CURL_FORMADD_OK , CURLformcode}-#{symbol CURL_FORMADD_MEMORY , CURLformcode}-#{symbol CURL_FORMADD_OPTION_TWICE , CURLformcode}-#{symbol CURL_FORMADD_NULL , CURLformcode}-#{symbol CURL_FORMADD_UNKNOWN_OPTION, CURLformcode}-#{symbol CURL_FORMADD_INCOMPLETE , CURLformcode}-#{symbol CURL_FORMADD_ILLEGAL_ARRAY , CURLformcode}-#{symbol CURL_FORMADD_DISABLED , CURLformcode}----- ------------------------------------------------------------------------------- CURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost,--- struct curl_httppost **last_post,--- ...);-----------------------------------------------------------------------------------type CCURL_formget_callback- = Ptr () -> Ptr CChar -> CSize -> IO CSize--foreign import ccall "wrapper"- wrap_ccurl_formget_callback- :: CCURL_formget_callback- -> IO (FunPtr CCURL_formget_callback)-----------------------------------------------------------------------------------foreign import ccall "curl_formget"- ccurl_formget- :: Ptr CCURL_httppost- -> Ptr ()- -> FunPtr CCURL_formget_callback- -> IO CInt-----------------------------------------------------------------------------------foreign import ccall "curl_formfree"- ccurl_formfree- :: Ptr CCURL_httppost- -> IO ()------------------------------------------------------------------------------------- ** Functions---------------------------------------------------------------------------------{-# DEPRECATED ccurl_getenv "" #-}-foreign import ccall "curl_getenv"- ccurl_getenv- :: Ptr CChar- -> IO (Ptr CChar)-----------------------------------------------------------------------------------foreign import ccall "curl_version"- ccurl_version- :: IO (Ptr CChar)-----------------------------------------------------------------------------------foreign import ccall "curl_easy_escape"- ccurl_easy_escape- :: Ptr CCURL- -> Ptr CChar- -> CInt- -> IO (Ptr CChar)-----------------------------------------------------------------------------------foreign import ccall "curl_escape"- ccurl_escape- :: Ptr CChar- -> CInt- -> IO (Ptr CChar)-----------------------------------------------------------------------------------foreign import ccall "curl_easy_unescape"- ccurl_easy_unescape- :: Ptr CCURL- -> Ptr CChar- -> CInt- -> Ptr CInt- -> IO (Ptr CChar)-----------------------------------------------------------------------------------foreign import ccall "curl_unescape"- ccurl_unescape- :: Ptr CChar- -> CInt- -> IO (Ptr CChar)-----------------------------------------------------------------------------------foreign import ccall "curl_free"- ccurl_free- :: Ptr a- -> IO ()-----------------------------------------------------------------------------------foreign import ccall "curl_global_init"- ccurl_global_init- :: CLong- -> IO CCURLcode-----------------------------------------------------------------------------------foreign import ccall "curl_global_init_mem"- ccurl_global_init_mem- :: CLong- -> FunPtr CCURL_malloc_callback- -> FunPtr CCURL_free_callback- -> FunPtr CCURL_realloc_callback- -> FunPtr CCURL_strdup_callback- -> FunPtr CCURL_calloc_callback- -> IO CCURLcode-----------------------------------------------------------------------------------foreign import ccall "curl_global_cleanup"- ccurl_global_cleanup- :: IO ()------------------------------------------------------------------------------------- ** CURL_slist---------------------------------------------------------------------------------data CCURL_slist = CCURL_slist- { ccurl_slist_data :: Ptr CChar- , ccurl_slist_next :: Ptr CCURL_slist- } deriving (Show)--instance Storable CCURL_slist where- sizeOf _ = #{size struct curl_slist}- alignment _ = #{alignof struct curl_slist}- poke _ _ = undefined- peek ptr = CCURL_slist- <$> #{peek struct curl_slist, data} ptr- <*> #{peek struct curl_slist, next} ptr-- ----------------------------------------------------------------------------------- ** Functions---------------------------------------------------------------------------------foreign import ccall "curl_slist_append"- ccurl_slist_append- :: Ptr CCURL_slist- -> Ptr CChar- -> IO (Ptr CCURL_slist)-----------------------------------------------------------------------------------foreign import ccall "curl_slist_free_all"- ccurl_slist_free_all- :: Ptr CCURL_slist- -> IO ()-- ---------------------------------------------------------------------------------foreign import ccall "curl_getdate"- ccurl_getdate- :: Ptr CChar- -> Ptr CTime- -> IO CTime------------------------------------------------------------------------------------- ** CURL_certinfo---------------------------------------------------------------------------------data CCURL_certinfo = CCURL_certinfo- { ccurl_certinfo_num_of_certs :: CInt- , ccurl_certinfo_certinfo :: Ptr (Ptr CCURL_slist)- } deriving (Show)--instance Storable CCURL_certinfo where- sizeOf _ = #{size struct curl_certinfo}- alignment _ = #{alignof struct curl_certinfo}- poke _ _ = undefined- peek ptr = CCURL_certinfo- <$> #{peek struct curl_certinfo, num_of_certs} ptr- <*> #{peek struct curl_certinfo, certinfo } ptr------------------------------------------------------------------------------------- ** Constants----------------------------------------------------------------------------------- *** CURLinfo---------------------------------------------------------------------------------newtype CCURLinfo'CString = CCURLinfo'CString CInt deriving (Eq, Show)-newtype CCURLinfo'CDouble = CCURLinfo'CDouble CInt deriving (Eq, Show)-newtype CCURLinfo'CLong = CCURLinfo'CLong CInt deriving (Eq, Show)-newtype CCURLinfo'SList = CCURLinfo'SList CInt deriving (Eq, Show)-newtype CCURLinfo'CertI = CCURLinfo'CertI CInt deriving (Eq, Show)--#define hsc_curlinfo(name, type) \- printf("c" #name " :: CCURLinfo'" #type "\n"); \- printf("c" #name " = CCURLinfo'" #type " "); hsc_const(name);--#{curlinfo CURLINFO_EFFECTIVE_URL , CString}-#{curlinfo CURLINFO_RESPONSE_CODE , CLong }-#{curlinfo CURLINFO_TOTAL_TIME , CDouble}-#{curlinfo CURLINFO_NAMELOOKUP_TIME , CDouble}-#{curlinfo CURLINFO_CONNECT_TIME , CDouble}-#{curlinfo CURLINFO_PRETRANSFER_TIME , CDouble}-#{curlinfo CURLINFO_SIZE_UPLOAD , CDouble}-#{curlinfo CURLINFO_SIZE_DOWNLOAD , CDouble}-#{curlinfo CURLINFO_SPEED_DOWNLOAD , CDouble}-#{curlinfo CURLINFO_SPEED_UPLOAD , CDouble}-#{curlinfo CURLINFO_HEADER_SIZE , CLong }-#{curlinfo CURLINFO_REQUEST_SIZE , CLong }-#{curlinfo CURLINFO_SSL_VERIFYRESULT , CLong }-#{curlinfo CURLINFO_FILETIME , CLong }-#{curlinfo CURLINFO_CONTENT_LENGTH_DOWNLOAD, CDouble}-#{curlinfo CURLINFO_CONTENT_LENGTH_UPLOAD , CDouble}-#{curlinfo CURLINFO_STARTTRANSFER_TIME , CDouble}-#{curlinfo CURLINFO_CONTENT_TYPE , CString}-#{curlinfo CURLINFO_REDIRECT_TIME , CDouble}-#{curlinfo CURLINFO_REDIRECT_COUNT , CLong }-#{curlinfo CURLINFO_PRIVATE , CString}-#{curlinfo CURLINFO_HTTP_CONNECTCODE , CLong }-#{curlinfo CURLINFO_HTTPAUTH_AVAIL , CLong }-#{curlinfo CURLINFO_PROXYAUTH_AVAIL , CLong }-#{curlinfo CURLINFO_OS_ERRNO , CLong }-#{curlinfo CURLINFO_NUM_CONNECTS , CLong }-#{curlinfo CURLINFO_SSL_ENGINES , SList }-#{curlinfo CURLINFO_COOKIELIST , SList }-#{curlinfo CURLINFO_LASTSOCKET , CLong }-#{curlinfo CURLINFO_FTP_ENTRY_PATH , CString}-#{curlinfo CURLINFO_REDIRECT_URL , CString}-#{curlinfo CURLINFO_PRIMARY_IP , CString}-#{curlinfo CURLINFO_APPCONNECT_TIME , CDouble}-#{curlinfo CURLINFO_CERTINFO , CertI }-#{curlinfo CURLINFO_CONDITION_UNMET , CLong }-#{curlinfo CURLINFO_RTSP_SESSION_ID , CString}-#{curlinfo CURLINFO_RTSP_CLIENT_CSEQ , CLong }-#{curlinfo CURLINFO_RTSP_SERVER_CSEQ , CLong }-#{curlinfo CURLINFO_RTSP_CSEQ_RECV , CLong }-#{curlinfo CURLINFO_PRIMARY_PORT , CLong } |7210:----|-#{curlinfo CURLINFO_LOCAL_IP , CString} |7210:----|-#{curlinfo CURLINFO_LOCAL_PORT , CLong } |7210:----|------------------------------------------------------------------------------------- *** CURLclosepol---------------------------------------------------------------------------------#{cconst CURLCLOSEPOLICY_NONE , CLong}-#{cconst CURLCLOSEPOLICY_OLDEST , CLong}-#{cconst CURLCLOSEPOLICY_LEAST_RECENTLY_USED, CLong}-#{cconst CURLCLOSEPOLICY_LEAST_TRAFFIC , CLong}-#{cconst CURLCLOSEPOLICY_SLOWEST , CLong}-#{cconst CURLCLOSEPOLICY_CALLBACK , CLong}------------------------------------------------------------------------------------- *** CURLglobal---------------------------------------------------------------------------------#{cconst CURL_GLOBAL_SSL , CLong}-#{cconst CURL_GLOBAL_WIN32 , CLong}-#{cconst CURL_GLOBAL_ALL , CLong}-#{cconst CURL_GLOBAL_NOTHING, CLong}-#{cconst CURL_GLOBAL_DEFAULT, CLong}------------------------------------------------------------------------------------- ** Share interface---------------------------------------------------------------------------------newtype CCURL_lock_data = CCURL_lock_data CInt deriving (Eq, Show)--#{symbol CURL_LOCK_DATA_COOKIE , CURL_lock_data}-#{symbol CURL_LOCK_DATA_DNS , CURL_lock_data}-#{symbol CURL_LOCK_DATA_SSL_SESSION, CURL_lock_data}-#{symbol CURL_LOCK_DATA_CONNECT , CURL_lock_data}- ----------------------------------------------------------------------------------newtype CCURL_lock_access = CCURL_lock_access CInt deriving (Eq, Show)--#{symbol CURL_LOCK_ACCESS_NONE , CURL_lock_access}-#{symbol CURL_LOCK_ACCESS_SHARED, CURL_lock_access}-#{symbol CURL_LOCK_ACCESS_SINGLE, CURL_lock_access}-----------------------------------------------------------------------------------type CCURL_lock_function- = Ptr CCURL -> CCURL_lock_data -> CCURL_lock_access -> Ptr () -> IO ()--foreign import ccall "wrapper"- wrap_ccurl_lock_function- :: CCURL_lock_function- -> IO (FunPtr CCURL_lock_function)-----------------------------------------------------------------------------------type CCURL_unlock_function- = Ptr CCURL -> CCURL_lock_data -> Ptr () -> IO ()--foreign import ccall "wrapper"- wrap_ccurl_unlock_function- :: CCURL_unlock_function- -> IO (FunPtr CCURL_unlock_function)-----------------------------------------------------------------------------------data CCURLSH-- ---------------------------------------------------------------------------------newtype CCURLSHcode = CCURLSHcode CInt deriving (Eq, Show)--#{symbol CURLSHE_OK , CURLSHcode}-#{symbol CURLSHE_BAD_OPTION , CURLSHcode}-#{symbol CURLSHE_IN_USE , CURLSHcode}-#{symbol CURLSHE_INVALID , CURLSHcode}-#{symbol CURLSHE_NOMEM , CURLSHcode}-#{symbol CURLSHE_NOT_BUILT_IN, CURLSHcode} |7230:----|-----------------------------------------------------------------------------------newtype CCURLSHoption'Lock = CCURLSHoption'Lock CInt deriving (Eq, Show)-newtype CCURLSHoption'FLOCK = CCURLSHoption'FLOCK CInt deriving (Eq, Show)-newtype CCURLSHoption'FUNLOCK = CCURLSHoption'FUNLOCK CInt deriving (Eq, Show)-newtype CCURLSHoption'UsrPtr = CCURLSHoption'UsrPtr CInt deriving (Eq, Show)--#define hsc_curlshopt(name, type) \- printf("c" #name " :: CCURLSHoption'" #type "\n"); \- printf("c" #name " = CCURLSHoption'" #type " "); hsc_const(name);--#{curlshopt CURLSHOPT_SHARE , Lock }-#{curlshopt CURLSHOPT_UNSHARE , Lock }-#{curlshopt CURLSHOPT_LOCKFUNC , FLOCK }-#{curlshopt CURLSHOPT_UNLOCKFUNC, FUNLOCK}-#{curlshopt CURLSHOPT_USERDATA , UsrPtr }-----------------------------------------------------------------------------------foreign import ccall "curl_share_init"- ccurl_share_init- :: IO (Ptr CCURLSH)-----------------------------------------------------------------------------------foreign import ccall "curl_share_setopt"- ccurl_share_setopt'Lock - :: Ptr CCURLSH- -> CCURLSHoption'Lock - -> CCURL_lock_data- -> IO CCURLSHcode--foreign import ccall "curl_share_setopt"- ccurl_share_setopt'FLOCK- :: Ptr CCURLSH- -> CCURLSHoption'FLOCK- -> FunPtr CCURL_lock_function- -> IO CCURLSHcode--foreign import ccall "curl_share_setopt"- ccurl_share_setopt'FUNLOCK- :: Ptr CCURLSH- -> CCURLSHoption'FUNLOCK- -> FunPtr CCURL_unlock_function- -> IO CCURLSHcode--foreign import ccall "curl_share_setopt"- ccurl_share_setopt'UsrPtr - :: Ptr CCURLSH- -> CCURLSHoption'UsrPtr - -> Ptr ()- -> IO CCURLSHcode-----------------------------------------------------------------------------------foreign import ccall "curl_share_cleanup"- ccurl_share_cleanup- :: Ptr CCURLSH- -> IO CCURLSHcode------------------------------------------------------------------------------------- ** CURL_version_info---------------------------------------------------------------------------------newtype CCURLversion = CCURLversion CInt deriving (Eq, Show)--instance Storable CCURLversion where- sizeOf _ = #{size CURLversion}- alignment _ = #{alignof CURLversion}- poke _ _ = undefined- peek ptr = CCURLversion <$> peek (castPtr ptr)--#{symbol CURLVERSION_FIRST , CURLversion}-#{symbol CURLVERSION_SECOND, CURLversion}-#{symbol CURLVERSION_THIRD , CURLversion}-#{symbol CURLVERSION_FOURTH, CURLversion}-#{symbol CURLVERSION_NOW , CURLversion}-----------------------------------------------------------------------------------data CCURL_version_info_data = CCURL_version_info_data- { ccurl_version_info_data_age :: CCURLversion- , ccurl_version_info_data_version :: Ptr CChar- , ccurl_version_info_data_version_num :: CUInt- , ccurl_version_info_data_host :: Ptr CChar- , ccurl_version_info_data_features :: CInt- , ccurl_version_info_data_ssl_version :: Ptr CChar- , ccurl_version_info_data_ssl_version_num :: CLong- , ccurl_version_info_data_libz_version :: Ptr CChar- , ccurl_version_info_data_protocols :: Ptr (Ptr CChar)- , ccurl_version_info_data_ares :: Ptr CChar- , ccurl_version_info_data_ares_num :: CInt- , ccurl_version_info_data_libidn :: Ptr CChar- , ccurl_version_info_data_iconv_ver_num :: CInt- , ccurl_version_info_data_libssh_version :: Ptr CChar- } deriving (Show)--instance Storable CCURL_version_info_data where- sizeOf _ = #{size curl_version_info_data}- alignment _ = #{alignof curl_version_info_data}- poke _ _ = undefined- peek ptr = CCURL_version_info_data- <$> #{peek curl_version_info_data, age } ptr- <*> #{peek curl_version_info_data, version } ptr- <*> #{peek curl_version_info_data, version_num } ptr- <*> #{peek curl_version_info_data, host } ptr- <*> #{peek curl_version_info_data, features } ptr- <*> #{peek curl_version_info_data, ssl_version } ptr- <*> #{peek curl_version_info_data, ssl_version_num} ptr- <*> #{peek curl_version_info_data, libz_version } ptr- <*> #{peek curl_version_info_data, protocols } ptr- <*> #{peek curl_version_info_data, ares } ptr- <*> #{peek curl_version_info_data, ares_num } ptr- <*> #{peek curl_version_info_data, libidn } ptr- <*> #{peek curl_version_info_data, iconv_ver_num } ptr- <*> #{peek curl_version_info_data, libssh_version } ptr-----------------------------------------------------------------------------------#{cconst CURL_VERSION_IPV6 , CInt}-#{cconst CURL_VERSION_KERBEROS4 , CInt}-#{cconst CURL_VERSION_SSL , CInt}-#{cconst CURL_VERSION_LIBZ , CInt}-#{cconst CURL_VERSION_NTLM , CInt}-#{cconst CURL_VERSION_GSSNEGOTIATE, CInt}-#{cconst CURL_VERSION_DEBUG , CInt}-#{cconst CURL_VERSION_ASYNCHDNS , CInt}-#{cconst CURL_VERSION_SPNEGO , CInt}-#{cconst CURL_VERSION_LARGEFILE , CInt}-#{cconst CURL_VERSION_IDN , CInt}-#{cconst CURL_VERSION_SSPI , CInt}-#{cconst CURL_VERSION_CONV , CInt}-#{cconst CURL_VERSION_CURLDEBUG , CInt}-#{cconst CURL_VERSION_TLSAUTH_SRP , CInt} |7214:----|-#{cconst CURL_VERSION_NTLM_WB , CInt} |7220:----|-- ----------------------------------------------------------------------------------- ** Functions---------------------------------------------------------------------------------foreign import ccall "curl_version_info"- ccurl_version_info- :: CCURLversion- -> IO (Ptr CCURL_version_info_data)-----------------------------------------------------------------------------------foreign import ccall "curl_easy_strerror"- ccurl_easy_strerror- :: CCURLcode- -> IO (Ptr CChar)-----------------------------------------------------------------------------------foreign import ccall "curl_share_strerror"- ccurl_share_strerror- :: CCURLSHcode- -> IO (Ptr CChar)-----------------------------------------------------------------------------------foreign import ccall "curl_easy_pause"- ccurl_easy_pause- :: Ptr CCURL- -> CInt- -> IO CCURLcode- -#{cconst CURLPAUSE_RECV , CInt}-#{cconst CURLPAUSE_RECV_CONT, CInt}-#{cconst CURLPAUSE_SEND , CInt}-#{cconst CURLPAUSE_SEND_CONT, CInt}-#{cconst CURLPAUSE_ALL , CInt}-#{cconst CURLPAUSE_CONT , CInt}------------------------------------------------------------------------------------- * Definitions from \"curl/easy.h\"---------------------------------------------------------------------------------foreign import ccall "curl_easy_init"- ccurl_easy_init- :: IO (Ptr CCURL)-----------------------------------------------------------------------------------foreign import ccall "curl_easy_setopt"- ccurl_easy_setopt'CLong- :: Ptr CCURL- -> CCURLoption'CLong- -> CLong- -> IO CCURLcode--foreign import ccall "curl_easy_setopt"- ccurl_easy_setopt'Int64- :: Ptr CCURL- -> CCURLoption'Int64- -> CCURL_off_t- -> IO CCURLcode--foreign import ccall "curl_easy_setopt"- ccurl_easy_setopt'CString- :: Ptr CCURL- -> CCURLoption'CString- -> Ptr CChar- -> IO CCURLcode--foreign import ccall "curl_easy_setopt"- ccurl_easy_setopt'CFile- :: Ptr CCURL- -> CCURLoption'CFile- -> Ptr CFile- -> IO CCURLcode--foreign import ccall "curl_easy_setopt"- ccurl_easy_setopt'SList- :: Ptr CCURL- -> CCURLoption'SList- -> Ptr CCURL_slist- -> IO CCURLcode--foreign import ccall "curl_easy_setopt"- ccurl_easy_setopt'HTTPP- :: Ptr CCURL- -> CCURLoption'HTTPP- -> Ptr CCURL_httppost- -> IO CCURLcode--foreign import ccall "curl_easy_setopt"- ccurl_easy_setopt'CURLSH- :: Ptr CCURL- -> CCURLoption'CURLSH- -> Ptr CCURLSH- -> IO CCURLcode--foreign import ccall "curl_easy_setopt"- ccurl_easy_setopt'UsrPtr- :: Ptr CCURL- -> CCURLoption'UsrPtr- -> Ptr ()- -> IO CCURLcode--foreign import ccall "curl_easy_setopt"- ccurl_easy_setopt'FunPtr- :: Ptr CCURL- -> CCURLoption'FunPtr- -> FunPtr a- -> IO CCURLcode--#define hsc_setFunPtrAlias(fn, un, ln) \- printf("ccurl_easy_setopt'" #fn "\n"); \- printf(" :: Ptr CCURL -> FunPtr CCURL_" #ln "_callback -> IO CCURLcode\n");\- printf("ccurl_easy_setopt'" #fn " curl fptr\n"); \- printf(" = ccurl_easy_setopt'FunPtr curl cCURLOPT_" #un "FUNCTION fptr");--#{setFunPtrAlias FWRITE , WRITE , write }-#{setFunPtrAlias FREAD , READ , read }-#{setFunPtrAlias FPROGRESS , PROGRESS , progress }-#{setFunPtrAlias FHEADER , HEADER , write }-#{setFunPtrAlias FDEBUG , DEBUG , debug }-#{setFunPtrAlias FSSLCTX , SSL_CTX_ , ssl_ctx }-#{setFunPtrAlias FIOCTL , IOCTL , ioctl }-#{setFunPtrAlias FCONVFROM , CONV_FROM_NETWORK_, conv}-#{setFunPtrAlias FCONVTO , CONV_TO_NETWORK_ , conv}-#{setFunPtrAlias FCONVUTF8 , CONV_FROM_UTF8_ , conv}-#{setFunPtrAlias FSOCKOPT , SOCKOPT , sockopt }-#{setFunPtrAlias FOPENSOCKET , OPENSOCKET , opensocket }-#{setFunPtrAlias FSEEK , SEEK , seek }-#{setFunPtrAlias FSSHKEY , SSH_KEY , sshkey }-#{setFunPtrAlias FINTERLEAVE , INTERLEAVE , write }-#{setFunPtrAlias FCHUNKBGN , CHUNK_BGN_ , chunk_bgn } |7210:----|-#{setFunPtrAlias FCHUNKEND , CHUNK_END_ , chunk_end } |7210:----|-#{setFunPtrAlias FFNMATCH , FNMATCH_ , fnmatch } |7210:----|-#{setFunPtrAlias FCLOSESOCKET, CLOSESOCKET, closesocket} |7217:----|-----------------------------------------------------------------------------------foreign import ccall "curl_easy_perform"- ccurl_easy_perform- :: Ptr CCURL- -> IO CCURLcode-----------------------------------------------------------------------------------foreign import ccall "curl_easy_cleanup"- ccurl_easy_cleanup- :: Ptr CCURL- -> IO ()-----------------------------------------------------------------------------------foreign import ccall "curl_easy_getinfo"- ccurl_easy_getinfo'CString- :: Ptr CCURL- -> CCURLinfo'CString- -> Ptr (Ptr CChar)- -> IO CCURLcode--foreign import ccall "curl_easy_getinfo"- ccurl_easy_getinfo'CDouble- :: Ptr CCURL- -> CCURLinfo'CDouble- -> Ptr CDouble- -> IO CCURLcode--foreign import ccall "curl_easy_getinfo"- ccurl_easy_getinfo'CLong- :: Ptr CCURL- -> CCURLinfo'CLong- -> Ptr CLong- -> IO CCURLcode--foreign import ccall "curl_easy_getinfo"- ccurl_easy_getinfo'SList- :: Ptr CCURL- -> CCURLinfo'SList- -> Ptr (Ptr CCURL_slist)- -> IO CCURLcode--foreign import ccall "curl_easy_getinfo"- ccurl_easy_getinfo'CertI- :: Ptr CCURL- -> CCURLinfo'CertI- -> Ptr (Ptr CCURL_certinfo)- -> IO CCURLcode-----------------------------------------------------------------------------------foreign import ccall "curl_easy_duphandle"- ccurl_easy_duphandle- :: Ptr CCURL- -> IO (Ptr CCURL)-----------------------------------------------------------------------------------foreign import ccall "curl_easy_reset"- ccurl_easy_reset- :: Ptr CCURL- -> IO ()-----------------------------------------------------------------------------------foreign import ccall "curl_easy_recv"- ccurl_easy_recv- :: Ptr CCURL- -> Ptr a- -> CSize- -> Ptr CSize- -> IO CCURLcode-----------------------------------------------------------------------------------foreign import ccall "curl_easy_send"- ccurl_easy_send- :: Ptr CCURL- -> Ptr a- -> CSize- -> Ptr CSize- -> IO CCURLcode-- ----------------------------------------------------------------------------------- * Definitions from \"curl/multi.h\"----------------------------------------------------------------------------------- todo-
− Network/Curlhs/Core.hs
@@ -1,122 +0,0 @@----------------------------------------------------------------------------------- |--- Module : Network.Curlhs.Core--- Copyright : Copyright © 2012 Krzysztof Kardzis--- License : ISC License (MIT/BSD-style, see LICENSE file for details)--- --- Maintainer : Krzysztof Kardzis <kkardzis@gmail.com>--- Stability : experimental--- Portability : non-portable--------- Module "Network.Curlhs.Core" provides a mid-level interface to @libcurl@.--- For a direct low-level bindings go to "Network.Curlhs.Base".------ API of this module follows the API of @libcurl@ as defined in version--- 7.25.0 of the library. But it also depends on the version of @libcurl@--- that is used during compilation of the @curlhs@ package. It is possible--- to use @curlhs@ with older versions of @libcurl@, just keep in mind--- that some features may not be available then.------ There is not much documentation here, maybe the future will change that,--- but for now please use the original @libcurl@ documentation. API provided--- here follows the original API, so this shouldn't be a big problem.--- Documentation about @libcurl@ and/or its particular functions may be--- found in manual pages, which are available among others at the @libcurl@--- project site (please refer to <http://curl.haxx.se/libcurl/>).--- --- Exposed API is still somewhat incomplete, but is usable.--- Work on the rest are in progress.------ Simple example:------ > import qualified Data.ByteString.Char8 as BS--- > import Data.IORef (newIORef, readIORef, atomicModifyIORef)--- > import Control.Exception (bracket)--- > import Network.Curlhs.Core--- > --- > curlGET :: BS.ByteString -> IO BS.ByteString--- > curlGET url = do--- > buff <- newIORef BS.empty--- > bracket (curl_easy_init) (curl_easy_cleanup) $ \curl -> do--- > curl_easy_setopt curl--- > [ CURLOPT_URL url--- > , CURLOPT_VERBOSE True--- > , CURLOPT_WRITEFUNCTION $ Just (memwrite buff)--- > ]--- > curl_easy_perform curl--- > readIORef buff--- > --- > memwrite buff newbs = atomicModifyIORef buff $ \oldbuff ->--- > (BS.append oldbuff newbs, CURL_WRITEFUNC_OK)-------------------------------------------------------------------------------------module Network.Curlhs.Core (-- -- * Global interface-- -- ** Version info- curl_version- , curl_version_info- , CURL_version_info_data (..)- , CURL_version (..)-- -- ** Error codes- -- | More about error codes in libcurl on- -- <http://curl.haxx.se/libcurl/c/libcurl-errors.html>- , curl_easy_strerror- , CURLcode (..)-- -- * Easy interface- -- | See <http://curl.haxx.se/libcurl/c/libcurl-easy.html>- -- for easy interface overview.-- -- ** Init, reset, cleanup- , curl_easy_init- , curl_easy_reset- , curl_easy_cleanup- , CURL-- -- ** Transfer- , curl_easy_perform-- -- ** Get info- , curl_easy_getinfo- , CURLinfo (..)-- -- ** Set options- , curl_easy_setopt- , CURLoption (..)-- -- *** Callbacks- , CURL_write_callback, CURL_write_response (..)- , CURL_read_callback , CURL_read_response (..)-- -- *** Constants- , CURLproto (..)- , CURLproxy (..)- , CURLnetrc (..)- , CURLauth (..)- , CURLtlsauth (..) |7214:----|- , CURLredir (..)- , CURLhttpver (..)- , CURLftpcreate (..)- , CURLftpauth (..)- , CURLftpssl (..)- , CURLftpmethod (..)- , CURLrtspreq (..)- , CURLtimecond (..)- , CURLclosepol (..)- , CURLipresolve (..)- , CURLusessl (..)- , CURLsslver (..)- , CURLsslopt (..) |7250:----|- , CURLgssapi (..) |7220:----|- , CURLsshauth (..)-- ) where--import Network.Curlhs.Types-import Network.Curlhs.Easy-
− Network/Curlhs/Easy.hs
@@ -1,284 +0,0 @@----------------------------------------------------------------------------------- |--- Module : Network.Curlhs.Easy--- Copyright : Copyright © 2012 Krzysztof Kardzis--- License : ISC License (MIT/BSD-style, see LICENSE file for details)--- --- Maintainer : Krzysztof Kardzis <kkardzis@gmail.com>--- Stability : experimental--- Portability : non-portable-------------------------------------------------------------------------------------module Network.Curlhs.Easy- ( curl_version- , curl_version_info- , curl_easy_strerror- , curl_easy_init- , curl_easy_reset- , curl_easy_cleanup- , curl_easy_perform- , curl_easy_getinfo- , curl_easy_setopt- ) where--import Foreign.Marshal.Alloc (alloca)-import Foreign.Marshal.Utils (toBool)-import Foreign.Storable (peek, sizeOf)-import Foreign.C.String (peekCString)-import Foreign.C.Types (CChar, CInt)-import Foreign.Ptr (Ptr, nullPtr, plusPtr)--import Data.Time.Clock.POSIX (posixSecondsToUTCTime)-import Data.Time.Clock (UTCTime)-import Data.Maybe (mapMaybe)-import Data.Bits ((.&.))-import Data.IORef (newIORef)--import Control.Applicative ((<$>), (<*>))-import Control.Exception (throwIO)--import Network.Curlhs.Errors-import Network.Curlhs.Setopt-import Network.Curlhs.Types-import Network.Curlhs.Base------------------------------------------------------------------------------------- | Returns the libcurl version string--- (<http://curl.haxx.se/libcurl/c/curl_version.html>).---------------------------------------------------------------------------------curl_version :: IO String-curl_version = ccurl_version >>= peekCString------------------------------------------------------------------------------------- | Returns run-time libcurl version info--- (<http://curl.haxx.se/libcurl/c/curl_version_info.html>).---------------------------------------------------------------------------------curl_version_info :: IO CURL_version_info_data-curl_version_info = ccurl_version_info cCURLVERSION_NOW >>= peek >>=- \cval -> CURL_version_info_data- <$> (peekCString $ ccurl_version_info_data_version cval)- <*> (peekCIntegral $ ccurl_version_info_data_version_num cval)- <*> (peekCString $ ccurl_version_info_data_host cval)- <*> (peekCFeatures $ ccurl_version_info_data_features cval)- <*> (peekCStringMaybe $ ccurl_version_info_data_ssl_version cval)- <*> (peekCIntegral $ ccurl_version_info_data_ssl_version_num cval)- <*> (peekCStringMaybe $ ccurl_version_info_data_libz_version cval)- <*> (peekCStringList $ ccurl_version_info_data_protocols cval)- <*> (peekCStringMaybe $ ccurl_version_info_data_ares cval)- <*> (peekCIntegral $ ccurl_version_info_data_ares_num cval)- <*> (peekCStringMaybe $ ccurl_version_info_data_libidn cval)- <*> (peekCIntegral $ ccurl_version_info_data_iconv_ver_num cval)- <*> (peekCStringMaybe $ ccurl_version_info_data_libssh_version cval)--peekCStringList :: Ptr (Ptr CChar) -> IO [String]-peekCStringList ptr = peek ptr >>= \cstring ->- if (cstring == nullPtr) then return [] else do- let size = sizeOf (undefined :: Ptr CChar)- strings <- peekCStringList (plusPtr ptr size)- string <- peekCString cstring- return (string : strings)--peekCStringMaybe :: Ptr CChar -> IO (Maybe String)-peekCStringMaybe ptr = if (ptr /= nullPtr)- then Just <$> peekCString ptr- else return Nothing--peekCIntegral :: (Num h, Integral c) => c -> IO h-peekCIntegral = return . fromIntegral--peekCFeatures :: CInt -> IO [CURL_version]-peekCFeatures mask =- return $ mapMaybe (\(v, b) -> if (mask .&. b == 0) then Nothing else Just v)- [ (CURL_VERSION_IPV6 , cCURL_VERSION_IPV6 )- , (CURL_VERSION_KERBEROS4 , cCURL_VERSION_KERBEROS4 )- , (CURL_VERSION_SSL , cCURL_VERSION_SSL )- , (CURL_VERSION_LIBZ , cCURL_VERSION_LIBZ )- , (CURL_VERSION_NTLM , cCURL_VERSION_NTLM )- , (CURL_VERSION_GSSNEGOTIATE, cCURL_VERSION_GSSNEGOTIATE)- , (CURL_VERSION_DEBUG , cCURL_VERSION_DEBUG )- , (CURL_VERSION_ASYNCHDNS , cCURL_VERSION_ASYNCHDNS )- , (CURL_VERSION_SPNEGO , cCURL_VERSION_SPNEGO )- , (CURL_VERSION_LARGEFILE , cCURL_VERSION_LARGEFILE )- , (CURL_VERSION_IDN , cCURL_VERSION_IDN )- , (CURL_VERSION_SSPI , cCURL_VERSION_SSPI )- , (CURL_VERSION_CONV , cCURL_VERSION_CONV )- , (CURL_VERSION_CURLDEBUG , cCURL_VERSION_CURLDEBUG )- , (CURL_VERSION_TLSAUTH_SRP , cCURL_VERSION_TLSAUTH_SRP ) |7214:----|- , (CURL_VERSION_NTLM_WB , cCURL_VERSION_NTLM_WB ) |7220:----|- ]------------------------------------------------------------------------------------- | Start a libcurl easy session--- (<http://curl.haxx.se/libcurl/c/curl_easy_init.html>).---------------------------------------------------------------------------------curl_easy_init :: IO CURL-curl_easy_init = ccurl_easy_init >>= \ccurl -> if (ccurl == nullPtr)- then throwIO CURLE_FAILED_INIT- else CURL ccurl- <$> newIORef Nothing- <*> newIORef Nothing------------------------------------------------------------------------------------- | Reset all options of a libcurl session handle--- (<http://curl.haxx.se/libcurl/c/curl_easy_reset.html>).---------------------------------------------------------------------------------curl_easy_reset :: CURL -> IO ()-curl_easy_reset curl =- ccurl_easy_reset (ccurlptr curl) >> freeCallbacks curl------------------------------------------------------------------------------------- | End a libcurl easy session--- (<http://curl.haxx.se/libcurl/c/curl_easy_cleanup.html>).---------------------------------------------------------------------------------curl_easy_cleanup :: CURL -> IO ()-curl_easy_cleanup curl =- ccurl_easy_cleanup (ccurlptr curl) >> freeCallbacks curl------------------------------------------------------------------------------------- | Perform a file transfer--- (<http://curl.haxx.se/libcurl/c/curl_easy_perform.html>).---------------------------------------------------------------------------------curl_easy_perform :: CURL -> IO ()-curl_easy_perform curl = withCODE $ ccurl_easy_perform (ccurlptr curl)------------------------------------------------------------------------------------- | Extract information from a curl handle--- (<http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html>).---------------------------------------------------------------------------------curl_easy_getinfo :: CURL -> IO CURLinfo-curl_easy_getinfo curl = let ccurl = ccurlptr curl in CURLinfo- <$> getinfo'String ccurl cCURLINFO_EFFECTIVE_URL- <*> getinfo'RespCode ccurl cCURLINFO_RESPONSE_CODE- <*> getinfo'RespCode ccurl cCURLINFO_HTTP_CONNECTCODE- <*> getinfo'FileTime ccurl cCURLINFO_FILETIME- <*> getinfo'Double ccurl cCURLINFO_TOTAL_TIME- <*> getinfo'Double ccurl cCURLINFO_NAMELOOKUP_TIME- <*> getinfo'Double ccurl cCURLINFO_CONNECT_TIME- <*> getinfo'Double ccurl cCURLINFO_APPCONNECT_TIME- <*> getinfo'Double ccurl cCURLINFO_PRETRANSFER_TIME- <*> getinfo'Double ccurl cCURLINFO_STARTTRANSFER_TIME- <*> getinfo'Double ccurl cCURLINFO_REDIRECT_TIME- <*> getinfo'Int ccurl cCURLINFO_REDIRECT_COUNT- <*> getinfo'MString ccurl cCURLINFO_REDIRECT_URL- <*> getinfo'Double ccurl cCURLINFO_SIZE_UPLOAD- <*> getinfo'Double ccurl cCURLINFO_SIZE_DOWNLOAD- <*> getinfo'Double ccurl cCURLINFO_SPEED_DOWNLOAD- <*> getinfo'Double ccurl cCURLINFO_SPEED_UPLOAD- <*> getinfo'Int ccurl cCURLINFO_HEADER_SIZE- <*> getinfo'Int ccurl cCURLINFO_REQUEST_SIZE- <*> getinfo'Int ccurl cCURLINFO_SSL_VERIFYRESULT- <*> getinfo'SList ccurl cCURLINFO_SSL_ENGINES- <*> getinfo'ContentL ccurl cCURLINFO_CONTENT_LENGTH_DOWNLOAD- <*> getinfo'ContentL ccurl cCURLINFO_CONTENT_LENGTH_UPLOAD- <*> getinfo'MString ccurl cCURLINFO_CONTENT_TYPE--- <*> getinfo'String ccurl cCURLINFO_PRIVATE- <*> getinfo'CurlAuth ccurl cCURLINFO_HTTPAUTH_AVAIL- <*> getinfo'CurlAuth ccurl cCURLINFO_PROXYAUTH_AVAIL- <*> getinfo'Int ccurl cCURLINFO_OS_ERRNO- <*> getinfo'Int ccurl cCURLINFO_NUM_CONNECTS- <*> getinfo'String ccurl cCURLINFO_PRIMARY_IP- <*> getinfo'Int ccurl cCURLINFO_PRIMARY_PORT- <*> getinfo'String ccurl cCURLINFO_LOCAL_IP- <*> getinfo'Int ccurl cCURLINFO_LOCAL_PORT- <*> getinfo'SList ccurl cCURLINFO_COOKIELIST- <*> getinfo'Socket ccurl cCURLINFO_LASTSOCKET- <*> getinfo'MString ccurl cCURLINFO_FTP_ENTRY_PATH- <*> getinfo'CertInfo ccurl cCURLINFO_CERTINFO- <*> getinfo'TimeCond ccurl cCURLINFO_CONDITION_UNMET- <*> getinfo'MString ccurl cCURLINFO_RTSP_SESSION_ID- <*> getinfo'Int ccurl cCURLINFO_RTSP_CLIENT_CSEQ- <*> getinfo'Int ccurl cCURLINFO_RTSP_SERVER_CSEQ- <*> getinfo'Int ccurl cCURLINFO_RTSP_CSEQ_RECV--getinfo'String :: Ptr CCURL -> CCURLinfo'CString -> IO String-getinfo'String ccurl cinfo = alloca $ \ptr -> do- withCODE $ ccurl_easy_getinfo'CString ccurl cinfo ptr- peek ptr >>= peekCString--getinfo'MString :: Ptr CCURL -> CCURLinfo'CString -> IO (Maybe String)-getinfo'MString ccurl cinfo = alloca $ \ptr -> do- withCODE $ ccurl_easy_getinfo'CString ccurl cinfo ptr- peek ptr >>= \csptr -> if (csptr /= nullPtr)- then Just <$> peekCString csptr- else return Nothing--getinfo'Double :: Ptr CCURL -> CCURLinfo'CDouble -> IO Double-getinfo'Double ccurl cinfo = alloca $ \ptr -> do- withCODE $ ccurl_easy_getinfo'CDouble ccurl cinfo ptr- realToFrac <$> peek ptr--getinfo'ContentL :: Ptr CCURL -> CCURLinfo'CDouble -> IO (Maybe Double)-getinfo'ContentL ccurl cinfo = getinfo'Double ccurl cinfo >>= \v ->- return $ if (v == (-1)) then Nothing else Just v--getinfo'SList :: Ptr CCURL -> CCURLinfo'SList -> IO [String]-getinfo'SList ccurl cinfo = alloca $ \ptr -> do- withCODE $ ccurl_easy_getinfo'SList ccurl cinfo ptr- peek ptr >>= \slist -> do- strings <- peek'CCURL_slist slist- ccurl_slist_free_all slist- return strings--getinfo'CertInfo :: Ptr CCURL -> CCURLinfo'CertI -> IO [[String]]-getinfo'CertInfo ccurl cinfo = alloca $ \ptr -> do- withCODE $ ccurl_easy_getinfo'CertI ccurl cinfo ptr- peek ptr >>= peek'CCURL_certinfo--getinfo'Int :: Ptr CCURL -> CCURLinfo'CLong -> IO Int-getinfo'Int ccurl cinfo = alloca $ \ptr -> do- withCODE $ ccurl_easy_getinfo'CLong ccurl cinfo ptr- fromIntegral <$> peek ptr--getinfo'RespCode :: Ptr CCURL -> CCURLinfo'CLong -> IO (Maybe Int)-getinfo'RespCode ccurl cinfo = getinfo'Int ccurl cinfo >>= \v ->- return $ if (v == 0) then Nothing else Just v--getinfo'FileTime :: Ptr CCURL -> CCURLinfo'CLong -> IO (Maybe UTCTime)-getinfo'FileTime ccurl cinfo = getinfo'Int ccurl cinfo >>= \v ->- return $ if (v == (-1) || v == 0) then Nothing- else Just (posixSecondsToUTCTime $ realToFrac v)--getinfo'Socket :: Ptr CCURL -> CCURLinfo'CLong -> IO (Maybe Int)-getinfo'Socket ccurl cinfo = getinfo'Int ccurl cinfo >>= \v ->- return $ if (v == (-1)) then Nothing else Just v--getinfo'TimeCond :: Ptr CCURL -> CCURLinfo'CLong -> IO Bool-getinfo'TimeCond ccurl cinfo = toBool <$> getinfo'Int ccurl cinfo--getinfo'CurlAuth :: Ptr CCURL -> CCURLinfo'CLong -> IO [CURLauth]-getinfo'CurlAuth ccurl cinfo = do- mask <- fromIntegral <$> getinfo'Int ccurl cinfo- return $ mapMaybe (\(v, b) -> if (mask .&. b == 0) then Nothing else Just v)- [ (CURLAUTH_BASIC , cCURLAUTH_BASIC )- , (CURLAUTH_DIGEST , cCURLAUTH_DIGEST )- , (CURLAUTH_DIGEST_IE , cCURLAUTH_DIGEST_IE )- , (CURLAUTH_GSSNEGOTIATE, cCURLAUTH_GSSNEGOTIATE)- , (CURLAUTH_NTLM , cCURLAUTH_NTLM )- , (CURLAUTH_NTLM_WB , cCURLAUTH_NTLM_WB ) |7220:----|- ]---peek'CCURL_slist :: Ptr CCURL_slist -> IO [String]-peek'CCURL_slist ptr =- if (ptr == nullPtr) then return [] else peek ptr >>= \slist -> do- slist_head <- peekCString $ ccurl_slist_data slist- slist_tail <- peek'CCURL_slist $ ccurl_slist_next slist- return (slist_head : slist_tail)--peek'CCURL_certinfo :: Ptr CCURL_certinfo -> IO [[String]]-peek'CCURL_certinfo ptr =- if (ptr == nullPtr) then return [] else peek ptr >>= \certinfo -> do- let numOfCerts = fromIntegral $ ccurl_certinfo_num_of_certs certinfo- let size = sizeOf (undefined :: Ptr CCURL_slist)- let ptr0 = ccurl_certinfo_certinfo certinfo- let ptrs = map (\i -> plusPtr ptr0 (i * size)) [0 .. (numOfCerts - 1)]- mapM (\sptr -> peek sptr >>= peek'CCURL_slist) ptrs-
− Network/Curlhs/Errors.hsc
@@ -1,216 +0,0 @@----------------------------------------------------------------------------------- |--- Module : Network.Curlhs.Errors--- Copyright : Copyright © 2012 Krzysztof Kardzis--- License : ISC License (MIT/BSD-style, see LICENSE file for details)--- --- Maintainer : Krzysztof Kardzis <kkardzis@gmail.com>--- Stability : experimental--- Portability : non-portable-------------------------------------------------------------------------------------module Network.Curlhs.Errors- ( curl_easy_strerror- , withCODE- ) where--import Data.ByteString (ByteString, packCString)--import Control.Exception (throwIO)-import Control.Monad (when)--import Network.Curlhs.Types-import Network.Curlhs.Base-----------------------------------------------------------------------------------withCODE :: IO CCURLcode -> IO ()-withCODE action =- action >>= \code -> when (code /= cCURLE_OK) (throwIO (fromCCURLcode code))------------------------------------------------------------------------------------- | Returns a string describing error code--- (<http://curl.haxx.se/libcurl/c/curl_easy_strerror.html>).---------------------------------------------------------------------------------curl_easy_strerror :: CURLcode -> IO ByteString-curl_easy_strerror code =- ccurl_easy_strerror (fromCURLcode code) >>= packCString-----------------------------------------------------------------------------------#{let curlcode code = #code " -> c" #code}--fromCURLcode :: CURLcode -> CCURLcode-fromCURLcode x = case x of- #{curlcode CURLE_OK }- #{curlcode CURLE_UNSUPPORTED_PROTOCOL }- #{curlcode CURLE_FAILED_INIT }- #{curlcode CURLE_URL_MALFORMAT }- #{curlcode CURLE_NOT_BUILT_IN } |7215:----|- #{curlcode CURLE_COULDNT_RESOLVE_PROXY }- #{curlcode CURLE_COULDNT_RESOLVE_HOST }- #{curlcode CURLE_COULDNT_CONNECT }- #{curlcode CURLE_FTP_WEIRD_SERVER_REPLY }- #{curlcode CURLE_REMOTE_ACCESS_DENIED }- #{curlcode CURLE_FTP_ACCEPT_FAILED } |7240:----|- #{curlcode CURLE_FTP_WEIRD_PASS_REPLY }- #{curlcode CURLE_FTP_ACCEPT_TIMEOUT } |7240:----|- #{curlcode CURLE_FTP_WEIRD_PASV_REPLY }- #{curlcode CURLE_FTP_WEIRD_227_FORMAT }- #{curlcode CURLE_FTP_CANT_GET_HOST }- #{curlcode CURLE_FTP_COULDNT_SET_TYPE }- #{curlcode CURLE_PARTIAL_FILE }- #{curlcode CURLE_FTP_COULDNT_RETR_FILE }- #{curlcode CURLE_QUOTE_ERROR }- #{curlcode CURLE_HTTP_RETURNED_ERROR }- #{curlcode CURLE_WRITE_ERROR }- #{curlcode CURLE_UPLOAD_FAILED }- #{curlcode CURLE_READ_ERROR }- #{curlcode CURLE_OUT_OF_MEMORY }- #{curlcode CURLE_OPERATION_TIMEDOUT }- #{curlcode CURLE_FTP_PORT_FAILED }- #{curlcode CURLE_FTP_COULDNT_USE_REST }- #{curlcode CURLE_RANGE_ERROR }- #{curlcode CURLE_HTTP_POST_ERROR }- #{curlcode CURLE_SSL_CONNECT_ERROR }- #{curlcode CURLE_BAD_DOWNLOAD_RESUME }- #{curlcode CURLE_FILE_COULDNT_READ_FILE }- #{curlcode CURLE_LDAP_CANNOT_BIND }- #{curlcode CURLE_LDAP_SEARCH_FAILED }- #{curlcode CURLE_FUNCTION_NOT_FOUND }- #{curlcode CURLE_ABORTED_BY_CALLBACK }- #{curlcode CURLE_BAD_FUNCTION_ARGUMENT }- #{curlcode CURLE_INTERFACE_FAILED }- #{curlcode CURLE_TOO_MANY_REDIRECTS }- #{curlcode CURLE_UNKNOWN_TELNET_OPTION } |----:7214|- #{curlcode CURLE_UNKNOWN_OPTION } |7215:----|- #{curlcode CURLE_TELNET_OPTION_SYNTAX }- #{curlcode CURLE_PEER_FAILED_VERIFICATION}- #{curlcode CURLE_GOT_NOTHING }- #{curlcode CURLE_SSL_ENGINE_NOTFOUND }- #{curlcode CURLE_SSL_ENGINE_SETFAILED }- #{curlcode CURLE_SEND_ERROR }- #{curlcode CURLE_RECV_ERROR }- #{curlcode CURLE_SSL_CERTPROBLEM }- #{curlcode CURLE_SSL_CIPHER }- #{curlcode CURLE_SSL_CACERT }- #{curlcode CURLE_BAD_CONTENT_ENCODING }- #{curlcode CURLE_LDAP_INVALID_URL }- #{curlcode CURLE_FILESIZE_EXCEEDED }- #{curlcode CURLE_USE_SSL_FAILED }- #{curlcode CURLE_SEND_FAIL_REWIND }- #{curlcode CURLE_SSL_ENGINE_INITFAILED }- #{curlcode CURLE_LOGIN_DENIED }- #{curlcode CURLE_TFTP_NOTFOUND }- #{curlcode CURLE_TFTP_PERM }- #{curlcode CURLE_REMOTE_DISK_FULL }- #{curlcode CURLE_TFTP_ILLEGAL }- #{curlcode CURLE_TFTP_UNKNOWNID }- #{curlcode CURLE_REMOTE_FILE_EXISTS }- #{curlcode CURLE_TFTP_NOSUCHUSER }- #{curlcode CURLE_CONV_FAILED }- #{curlcode CURLE_CONV_REQD }- #{curlcode CURLE_SSL_CACERT_BADFILE }- #{curlcode CURLE_REMOTE_FILE_NOT_FOUND }- #{curlcode CURLE_SSH }- #{curlcode CURLE_SSL_SHUTDOWN_FAILED }- #{curlcode CURLE_AGAIN }- #{curlcode CURLE_SSL_CRL_BADFILE }- #{curlcode CURLE_SSL_ISSUER_ERROR }- #{curlcode CURLE_FTP_PRET_FAILED }- #{curlcode CURLE_RTSP_CSEQ_ERROR }- #{curlcode CURLE_RTSP_SESSION_ERROR }- #{curlcode CURLE_FTP_BAD_FILE_LIST } |7210:----|- #{curlcode CURLE_CHUNK_FAILED } |7210:----|-----------------------------------------------------------------------------------#{let ccurlcode code = "| x == c" #code " = " #code}--fromCCURLcode :: CCURLcode -> CURLcode-fromCCURLcode x- #{ccurlcode CURLE_OK }- #{ccurlcode CURLE_UNSUPPORTED_PROTOCOL }- #{ccurlcode CURLE_FAILED_INIT }- #{ccurlcode CURLE_URL_MALFORMAT }- #{ccurlcode CURLE_NOT_BUILT_IN } |7215:----|- #{ccurlcode CURLE_COULDNT_RESOLVE_PROXY }- #{ccurlcode CURLE_COULDNT_RESOLVE_HOST }- #{ccurlcode CURLE_COULDNT_CONNECT }- #{ccurlcode CURLE_FTP_WEIRD_SERVER_REPLY }- #{ccurlcode CURLE_REMOTE_ACCESS_DENIED }- #{ccurlcode CURLE_FTP_ACCEPT_FAILED } |7240:----|- #{ccurlcode CURLE_FTP_WEIRD_PASS_REPLY }- #{ccurlcode CURLE_FTP_ACCEPT_TIMEOUT } |7240:----|- #{ccurlcode CURLE_FTP_WEIRD_PASV_REPLY }- #{ccurlcode CURLE_FTP_WEIRD_227_FORMAT }- #{ccurlcode CURLE_FTP_CANT_GET_HOST }- #{ccurlcode CURLE_FTP_COULDNT_SET_TYPE }- #{ccurlcode CURLE_PARTIAL_FILE }- #{ccurlcode CURLE_FTP_COULDNT_RETR_FILE }- #{ccurlcode CURLE_QUOTE_ERROR }- #{ccurlcode CURLE_HTTP_RETURNED_ERROR }- #{ccurlcode CURLE_WRITE_ERROR }- #{ccurlcode CURLE_UPLOAD_FAILED }- #{ccurlcode CURLE_READ_ERROR }- #{ccurlcode CURLE_OUT_OF_MEMORY }- #{ccurlcode CURLE_OPERATION_TIMEDOUT }- #{ccurlcode CURLE_FTP_PORT_FAILED }- #{ccurlcode CURLE_FTP_COULDNT_USE_REST }- #{ccurlcode CURLE_RANGE_ERROR }- #{ccurlcode CURLE_HTTP_POST_ERROR }- #{ccurlcode CURLE_SSL_CONNECT_ERROR }- #{ccurlcode CURLE_BAD_DOWNLOAD_RESUME }- #{ccurlcode CURLE_FILE_COULDNT_READ_FILE }- #{ccurlcode CURLE_LDAP_CANNOT_BIND }- #{ccurlcode CURLE_LDAP_SEARCH_FAILED }- #{ccurlcode CURLE_FUNCTION_NOT_FOUND }- #{ccurlcode CURLE_ABORTED_BY_CALLBACK }- #{ccurlcode CURLE_BAD_FUNCTION_ARGUMENT }- #{ccurlcode CURLE_INTERFACE_FAILED }- #{ccurlcode CURLE_TOO_MANY_REDIRECTS }- #{ccurlcode CURLE_UNKNOWN_TELNET_OPTION } |----:7214|- #{ccurlcode CURLE_UNKNOWN_OPTION } |7215:----|- #{ccurlcode CURLE_TELNET_OPTION_SYNTAX }- #{ccurlcode CURLE_PEER_FAILED_VERIFICATION}- #{ccurlcode CURLE_GOT_NOTHING }- #{ccurlcode CURLE_SSL_ENGINE_NOTFOUND }- #{ccurlcode CURLE_SSL_ENGINE_SETFAILED }- #{ccurlcode CURLE_SEND_ERROR }- #{ccurlcode CURLE_RECV_ERROR }- #{ccurlcode CURLE_SSL_CERTPROBLEM }- #{ccurlcode CURLE_SSL_CIPHER }- #{ccurlcode CURLE_SSL_CACERT }- #{ccurlcode CURLE_BAD_CONTENT_ENCODING }- #{ccurlcode CURLE_LDAP_INVALID_URL }- #{ccurlcode CURLE_FILESIZE_EXCEEDED }- #{ccurlcode CURLE_USE_SSL_FAILED }- #{ccurlcode CURLE_SEND_FAIL_REWIND }- #{ccurlcode CURLE_SSL_ENGINE_INITFAILED }- #{ccurlcode CURLE_LOGIN_DENIED }- #{ccurlcode CURLE_TFTP_NOTFOUND }- #{ccurlcode CURLE_TFTP_PERM }- #{ccurlcode CURLE_REMOTE_DISK_FULL }- #{ccurlcode CURLE_TFTP_ILLEGAL }- #{ccurlcode CURLE_TFTP_UNKNOWNID }- #{ccurlcode CURLE_REMOTE_FILE_EXISTS }- #{ccurlcode CURLE_TFTP_NOSUCHUSER }- #{ccurlcode CURLE_CONV_FAILED }- #{ccurlcode CURLE_CONV_REQD }- #{ccurlcode CURLE_SSL_CACERT_BADFILE }- #{ccurlcode CURLE_REMOTE_FILE_NOT_FOUND }- #{ccurlcode CURLE_SSH }- #{ccurlcode CURLE_SSL_SHUTDOWN_FAILED }- #{ccurlcode CURLE_AGAIN }- #{ccurlcode CURLE_SSL_CRL_BADFILE }- #{ccurlcode CURLE_SSL_ISSUER_ERROR }- #{ccurlcode CURLE_FTP_PRET_FAILED }- #{ccurlcode CURLE_RTSP_CSEQ_ERROR }- #{ccurlcode CURLE_RTSP_SESSION_ERROR }- #{ccurlcode CURLE_FTP_BAD_FILE_LIST } |7210:----|- #{ccurlcode CURLE_CHUNK_FAILED } |7210:----|- | otherwise = error "unknown CURLcode"--
− Network/Curlhs/Setopt.hsc
@@ -1,513 +0,0 @@----------------------------------------------------------------------------------- |--- Module : Network.Curlhs.Setopt--- Copyright : Copyright © 2012 Krzysztof Kardzis--- License : ISC License (MIT/BSD-style, see LICENSE file for details)--- --- Maintainer : Krzysztof Kardzis <kkardzis@gmail.com>--- Stability : experimental--- Portability : non-portable-------------------------------------------------------------------------------------module Network.Curlhs.Setopt- ( curl_easy_setopt- , freeCallbacks- ) where--import Foreign.Marshal.Utils (copyBytes, fromBool)-import Foreign.C.Types (CLong)-import Foreign.Ptr (FunPtr, nullFunPtr, freeHaskellFunPtr)--import Data.Time.Clock.POSIX (utcTimeToPOSIXSeconds)-import Data.Time.Clock (UTCTime)-import Data.Bits ((.|.))-import Data.List (foldl')-import Data.IORef (IORef, atomicModifyIORef)--import qualified Data.ByteString as BS-import Data.ByteString.Unsafe (unsafeUseAsCStringLen)-import Data.ByteString (ByteString, useAsCString, packCStringLen)--import Network.Curlhs.Errors-import Network.Curlhs.Types-import Network.Curlhs.Base-----------------------------------------------------------------------------------freeCallbacks :: CURL -> IO ()-freeCallbacks curl = do- keepCallback (cb_write curl) Nothing- keepCallback (cb_read curl) Nothing--keepCallback :: IORef (Maybe (FunPtr a)) -> Maybe (FunPtr a) -> IO ()-keepCallback r mf =- atomicModifyIORef r (\v -> (mf, v)) >>= maybe (return ()) freeHaskellFunPtr--makeCallback :: Maybe cb -> IORef (Maybe (FunPtr a))- -> (FunPtr a -> IO CCURLcode) -> (cb -> IO (FunPtr a)) -> IO ()-makeCallback (Just cb) ref setcb wrapcb = withCODE $ do- fptr <- wrapcb cb- code <- setcb fptr- if (code == cCURLE_OK)- then keepCallback ref (Just fptr)- else freeHaskellFunPtr fptr- return code-makeCallback Nothing ref setcb _ = withCODE $ do- code <- setcb nullFunPtr- keepCallback ref Nothing- return code-----------------------------------------------------------------------------------#{let setopt opt, fun = #opt " x -> " #fun " c" #opt " x"}------------------------------------------------------------------------------------ | Set options for a curl easy handle--- (<http://curl.haxx.se/libcurl/c/curl_easy_setopt.html>).---------------------------------------------------------------------------------curl_easy_setopt :: CURL -> [CURLoption] -> IO ()-curl_easy_setopt curl opts = flip mapM_ opts $ \opt -> case opt of-- ---- CALLBACK OPTIONS -------------------------------------------------------- CURLOPT_WRITEFUNCTION f -> so'FWRITE curl f- CURLOPT_READFUNCTION f -> so'FREAD curl f-- ---- BEHAVIOR OPTIONS -------------------------------------------------------- #{setopt CURLOPT_VERBOSE , bool }- #{setopt CURLOPT_HEADER , bool }- #{setopt CURLOPT_NOPROGRESS , bool }- #{setopt CURLOPT_NOSIGNAL , bool }- #{setopt CURLOPT_WILDCARDMATCH , bool } |7210:----|-- ---- ERROR OPTIONS ----------------------------------------------------------- -- CURLOPT_ERRORBUFFER- -- CURLOPT_STDERR- #{setopt CURLOPT_FAILONERROR , bool }-- ---- NETWORK OPTIONS --------------------------------------------------------- #{setopt CURLOPT_URL , string }- #{setopt CURLOPT_PROTOCOLS , enum }- #{setopt CURLOPT_REDIR_PROTOCOLS , enum }- #{setopt CURLOPT_PROXY , string }- #{setopt CURLOPT_PROXYPORT , int }- #{setopt CURLOPT_PROXYTYPE , enum }- #{setopt CURLOPT_NOPROXY , string }- #{setopt CURLOPT_HTTPPROXYTUNNEL , bool }- #{setopt CURLOPT_SOCKS5_GSSAPI_SERVICE , string }- #{setopt CURLOPT_SOCKS5_GSSAPI_NEC , bool }- #{setopt CURLOPT_INTERFACE , string }- #{setopt CURLOPT_LOCALPORT , int }- #{setopt CURLOPT_LOCALPORTRANGE , int }- #{setopt CURLOPT_DNS_CACHE_TIMEOUT , int }- #{setopt CURLOPT_DNS_USE_GLOBAL_CACHE , bool }- #{setopt CURLOPT_BUFFERSIZE , int }- #{setopt CURLOPT_PORT , int }- #{setopt CURLOPT_TCP_NODELAY , bool }- #{setopt CURLOPT_ADDRESS_SCOPE , int }- #{setopt CURLOPT_TCP_KEEPALIVE , bool } |7250:----|- #{setopt CURLOPT_TCP_KEEPIDLE , int } |7250:----|- #{setopt CURLOPT_TCP_KEEPINTVL , int } |7250:----|-- ---- NAMES and PASSWORDS OPTIONS (Authentication) ---------------------------- #{setopt CURLOPT_NETRC , enum }- #{setopt CURLOPT_NETRC_FILE , string }- #{setopt CURLOPT_USERPWD , string }- #{setopt CURLOPT_PROXYUSERPWD , string }- #{setopt CURLOPT_USERNAME , string }- #{setopt CURLOPT_PASSWORD , string }- #{setopt CURLOPT_PROXYUSERNAME , string }- #{setopt CURLOPT_PROXYPASSWORD , string }- #{setopt CURLOPT_HTTPAUTH , enum }- #{setopt CURLOPT_TLSAUTH_TYPE , string } |7214:----|- #{setopt CURLOPT_TLSAUTH_USERNAME , string } |7214:----|- #{setopt CURLOPT_TLSAUTH_PASSWORD , string } |7214:----|- #{setopt CURLOPT_PROXYAUTH , enum }-- ---- HTTP OPTIONS ------------------------------------------------------------ #{setopt CURLOPT_AUTOREFERER , bool }- #{setopt CURLOPT_ENCODING , string } |----:7215|- #{setopt CURLOPT_ACCEPT_ENCODING , string } |7216:----|- #{setopt CURLOPT_TRANSFER_ENCODING , bool } |7216:----|- #{setopt CURLOPT_FOLLOWLOCATION , bool }- #{setopt CURLOPT_UNRESTRICTED_AUTH , bool }- #{setopt CURLOPT_MAXREDIRS , int }- #{setopt CURLOPT_POSTREDIR , enum }- #{setopt CURLOPT_PUT , bool }- #{setopt CURLOPT_POST , bool }- -- #{setopt CURLOPT_POSTFIELDS , buffer }- #{setopt CURLOPT_POSTFIELDSIZE , int }- #{setopt CURLOPT_POSTFIELDSIZE_LARGE , int64 }- #{setopt CURLOPT_COPYPOSTFIELDS , string }- -- CURLOPT_HTTPPOST- #{setopt CURLOPT_REFERER , string }- #{setopt CURLOPT_USERAGENT , string }- -- #{setopt CURLOPT_HTTPHEADER , slist }- -- #{setopt CURLOPT_HTTP200ALIASES , slist }- #{setopt CURLOPT_COOKIE , string }- #{setopt CURLOPT_COOKIEFILE , string }- #{setopt CURLOPT_COOKIEJAR , string }- #{setopt CURLOPT_COOKIESESSION , bool }- #{setopt CURLOPT_COOKIELIST , string }- #{setopt CURLOPT_HTTPGET , bool }- #{setopt CURLOPT_HTTP_VERSION , enum }- #{setopt CURLOPT_IGNORE_CONTENT_LENGTH , bool }- #{setopt CURLOPT_HTTP_CONTENT_DECODING , bool }- #{setopt CURLOPT_HTTP_TRANSFER_DECODING , bool }-- ---- SMTP OPTIONS ------------------------------------------------------------ #{setopt CURLOPT_MAIL_FROM , string }- -- #{setopt CURLOPT_MAIL_RCTP , slist }- #{setopt CURLOPT_MAIL_AUTH , string } |7250:----|-- ---- TFTP OPTIONS ------------------------------------------------------------ #{setopt CURLOPT_TFTP_BLKSIZE , int }-- ---- FTP OPTIONS ------------------------------------------------------------- #{setopt CURLOPT_FTPPORT , string }- -- #{setopt CURLOPT_QUOTE , slist }- -- #{setopt CURLOPT_POSTQUOTE , slist }- -- #{setopt CURLOPT_PREQUOTE , slist }- #{setopt CURLOPT_DIRLISTONLY , bool }- #{setopt CURLOPT_APPEND , bool }- #{setopt CURLOPT_FTP_USE_EPRT , bool }- #{setopt CURLOPT_FTP_USE_EPSV , bool }- #{setopt CURLOPT_FTP_USE_PRET , bool }- #{setopt CURLOPT_FTP_CREATE_MISSING_DIRS, enum }- #{setopt CURLOPT_FTP_RESPONSE_TIMEOUT , int }- #{setopt CURLOPT_FTP_ALTERNATIVE_TO_USER, string }- #{setopt CURLOPT_FTP_SKIP_PASV_IP , bool }- #{setopt CURLOPT_FTPSSLAUTH , enum }- #{setopt CURLOPT_FTP_SSL_CCC , enum }- #{setopt CURLOPT_FTP_ACCOUNT , string }- #{setopt CURLOPT_FTP_FILEMETHOD , enum }-- ---- RTSP OPTIONS ------------------------------------------------------------ #{setopt CURLOPT_RTSP_REQUEST , enum }- #{setopt CURLOPT_RTSP_SESSION_ID , string }- #{setopt CURLOPT_RTSP_STREAM_URI , string }- #{setopt CURLOPT_RTSP_TRANSPORT , string }- -- #{setopt CURLOPT_RTSP_HEADER , slist }- #{setopt CURLOPT_RTSP_CLIENT_CSEQ , int }- #{setopt CURLOPT_RTSP_SERVER_CSEQ , int }-- ---- PROTOCOL OPTIONS -------------------------------------------------------- #{setopt CURLOPT_TRANSFERTEXT , bool }- #{setopt CURLOPT_PROXY_TRANSFER_MODE , bool }- #{setopt CURLOPT_CRLF , bool }- #{setopt CURLOPT_RANGE , string }- #{setopt CURLOPT_RESUME_FROM , int }- #{setopt CURLOPT_RESUME_FROM_LARGE , int64 }- #{setopt CURLOPT_CUSTOMREQUEST , string }- #{setopt CURLOPT_FILETIME , bool }- #{setopt CURLOPT_NOBODY , bool }- #{setopt CURLOPT_INFILESIZE , int }- #{setopt CURLOPT_INFILESIZE_LARGE , int64 }- #{setopt CURLOPT_UPLOAD , bool }- #{setopt CURLOPT_MAXFILESIZE , int }- #{setopt CURLOPT_MAXFILESIZE_LARGE , int64 }- #{setopt CURLOPT_TIMECONDITION , enum }- #{setopt CURLOPT_TIMEVALUE , time }-- ---- CONNECTION OPTIONS ------------------------------------------------------ #{setopt CURLOPT_TIMEOUT , int }- #{setopt CURLOPT_TIMEOUT_MS , int }- #{setopt CURLOPT_LOW_SPEED_LIMIT , int }- #{setopt CURLOPT_LOW_SPEED_TIME , int }- #{setopt CURLOPT_MAX_SEND_SPEED_LARGE , int64 }- #{setopt CURLOPT_MAX_RECV_SPEED_LARGE , int64 }- #{setopt CURLOPT_MAXCONNECTS , int }- #{setopt CURLOPT_CLOSEPOLICY , enum }- #{setopt CURLOPT_FRESH_CONNECT , bool }- #{setopt CURLOPT_FORBID_REUSE , bool }- #{setopt CURLOPT_CONNECTTIMEOUT , int }- #{setopt CURLOPT_CONNECTTIMEOUT_MS , int }- #{setopt CURLOPT_IPRESOLVE , enum }- #{setopt CURLOPT_CONNECT_ONLY , bool }- #{setopt CURLOPT_USE_SSL , enum }- -- #{setopt CURLOPT_RESOLVE , slist } |7213:----|- #{setopt CURLOPT_DNS_SERVERS , string } |7240:----|- #{setopt CURLOPT_ACCEPTTIMEOUT_MS , int } |7240:----|-- ---- SSL and SECURITY OPTIONS ------------------------------------------------ #{setopt CURLOPT_SSLCERT , string }- #{setopt CURLOPT_SSLCERTTYPE , string }- #{setopt CURLOPT_SSLKEY , string }- #{setopt CURLOPT_SSLKEYTYPE , string }- #{setopt CURLOPT_KEYPASSWD , string }- #{setopt CURLOPT_SSLENGINE , string }- #{setopt CURLOPT_SSLENGINE_DEFAULT , bool }- #{setopt CURLOPT_SSLVERSION , enum }- #{setopt CURLOPT_SSL_VERIFYPEER , bool }- #{setopt CURLOPT_CAINFO , string }- #{setopt CURLOPT_ISSUERCERT , string }- #{setopt CURLOPT_CAPATH , string }- #{setopt CURLOPT_CRLFILE , string }- #{setopt CURLOPT_SSL_VERIFYHOST , int }- #{setopt CURLOPT_CERTINFO , bool }- #{setopt CURLOPT_RANDOM_FILE , string }- #{setopt CURLOPT_EGDSOCKET , string }- #{setopt CURLOPT_SSL_CIPHER_LIST , string }- #{setopt CURLOPT_SSL_SESSIONID_CACHE , bool }- #{setopt CURLOPT_SSL_OPTIONS , enum } |7250:----|- #{setopt CURLOPT_KRBLEVEL , string }- #{setopt CURLOPT_GSSAPI_DELEGATION , enum } |7220:----|-- ---- SSH OPTIONS ------------------------------------------------------------- #{setopt CURLOPT_SSH_AUTH_TYPES , enum }- #{setopt CURLOPT_SSH_HOST_PUBLIC_KEY_MD5, string }- #{setopt CURLOPT_SSH_PUBLIC_KEYFILE , string }- #{setopt CURLOPT_SSH_PRIVATE_KEYFILE , string }- #{setopt CURLOPT_SSH_KNOWNHOSTS , string }- -- CURLOPT_SSH_KEYFUNCTION- -- CURLOPT_SSH_KEYDATA-- ---- OTHER OPTIONS ----------------------------------------------------------- -- CURLOPT_PRIVATE- -- CURLOPT_SHARE- #{setopt CURLOPT_NEW_FILE_PERMS , int }- #{setopt CURLOPT_NEW_DIRECTORY_PERMS , int }-- ---- TELNET OPTIONS ---------------------------------------------------------- -- #{setopt CURLOPT_TELNETOPTIONS , slist }-- ------------------------------------------------------------------------------ where- string copt s = setopt'CString curl copt s- int64 copt x = setopt'Int64 curl copt (fromIntegral x)- int copt x = setopt'CLong curl copt (fromIntegral x)- bool copt x = setopt'CLong curl copt (fromBool x)- time copt x = setopt'CLong curl copt (fromUTCTime x)- enum copt x = setopt'CLong curl copt (fromCURLenum x)------------------------------------------------------------------------------------setopt'CString :: CURL -> CCURLoption'CString -> ByteString -> IO ()-setopt'CString curl copt val = useAsCString val $ \ptr ->- withCODE $ ccurl_easy_setopt'CString (ccurlptr curl) copt ptr--setopt'Int64 :: CURL -> CCURLoption'Int64 -> CCURL_off_t -> IO ()-setopt'Int64 curl copt cval =- withCODE $ ccurl_easy_setopt'Int64 (ccurlptr curl) copt cval--setopt'CLong :: CURL -> CCURLoption'CLong -> CLong -> IO ()-setopt'CLong curl copt cval =- withCODE $ ccurl_easy_setopt'CLong (ccurlptr curl) copt cval-----------------------------------------------------------------------------------so'FWRITE :: CURL -> Maybe CURL_write_callback -> IO ()-so'FWRITE curl mcb = makeCallback mcb (cb_write curl)- (ccurl_easy_setopt'FWRITE (ccurlptr curl))- (\cb -> wrap_ccurl_write_callback (write_callback cb))--write_callback :: CURL_write_callback -> CCURL_write_callback-write_callback fwrite ptr size nmemb _ = do- stat <- packCStringLen (ptr, fromIntegral (size * nmemb)) >>= fwrite- return $ case stat of- CURL_WRITEFUNC_OK -> (size * nmemb)- CURL_WRITEFUNC_FAIL -> 0- CURL_WRITEFUNC_PAUSE -> cCURL_WRITEFUNC_PAUSE-----------------------------------------------------------------------------------so'FREAD :: CURL -> Maybe CURL_read_callback -> IO ()-so'FREAD curl mcb = makeCallback mcb (cb_read curl)- (ccurl_easy_setopt'FREAD (ccurlptr curl))- (\cb -> wrap_ccurl_read_callback (read_callback cb))--read_callback :: CURL_read_callback -> CCURL_read_callback-read_callback fread buff size nmemb _ = do- let buffLen = fromIntegral (size * nmemb)- stat <- fread buffLen- case stat of- CURL_READFUNC_PAUSE -> return cCURL_READFUNC_PAUSE- CURL_READFUNC_ABORT -> return cCURL_READFUNC_ABORT- CURL_READFUNC_OK bs -> unsafeUseAsCStringLen (BS.take buffLen bs)- (\(cs, cl) -> copyBytes buff cs cl >> return (fromIntegral cl))-----------------------------------------------------------------------------------fromUTCTime :: UTCTime -> CLong-fromUTCTime = truncate . utcTimeToPOSIXSeconds-----------------------------------------------------------------------------------#{let option opt = #opt " -> c" #opt}--class CURLenum a where- fromCURLenum :: a -> CLong--instance CURLenum a => CURLenum [a] where- fromCURLenum xs = foldl' (.|.) 0 $ map fromCURLenum xs--instance CURLenum CURLproto where- fromCURLenum x = case x of- #{option CURLPROTO_ALL }- #{option CURLPROTO_HTTP }- #{option CURLPROTO_HTTPS }- #{option CURLPROTO_FTP }- #{option CURLPROTO_FTPS }- #{option CURLPROTO_SCP }- #{option CURLPROTO_SFTP }- #{option CURLPROTO_TELNET}- #{option CURLPROTO_LDAP }- #{option CURLPROTO_LDAPS }- #{option CURLPROTO_DICT }- #{option CURLPROTO_FILE }- #{option CURLPROTO_TFTP }- #{option CURLPROTO_IMAP }- #{option CURLPROTO_IMAPS }- #{option CURLPROTO_POP3 }- #{option CURLPROTO_POP3S }- #{option CURLPROTO_SMTP }- #{option CURLPROTO_SMTPS }- #{option CURLPROTO_RTSP }- #{option CURLPROTO_RTMP } |7210:----|- #{option CURLPROTO_RTMPT } |7210:----|- #{option CURLPROTO_RTMPE } |7210:----|- #{option CURLPROTO_RTMPTE} |7210:----|- #{option CURLPROTO_RTMPS } |7210:----|- #{option CURLPROTO_RTMPTS} |7210:----|- #{option CURLPROTO_GOPHER} |7212:----|--instance CURLenum CURLproxy where- fromCURLenum x = case x of- #{option CURLPROXY_HTTP }- #{option CURLPROXY_HTTP_1_0 }- #{option CURLPROXY_SOCKS4 }- #{option CURLPROXY_SOCKS5 }- #{option CURLPROXY_SOCKS4A }- #{option CURLPROXY_SOCKS5_HOSTNAME}--instance CURLenum CURLnetrc where- fromCURLenum x = case x of- #{option CURL_NETRC_IGNORED }- #{option CURL_NETRC_OPTIONAL}- #{option CURL_NETRC_REQUIRED}--instance CURLenum CURLauth where- fromCURLenum x = case x of- #{option CURLAUTH_BASIC }- #{option CURLAUTH_DIGEST }- #{option CURLAUTH_DIGEST_IE }- #{option CURLAUTH_GSSNEGOTIATE}- #{option CURLAUTH_NTLM }- #{option CURLAUTH_NTLM_WB } |7220:----|- #{option CURLAUTH_ONLY } |7213:----|- #{option CURLAUTH_ANY }- #{option CURLAUTH_ANYSAFE }--instance CURLenum CURLtlsauth where |7214:----|- fromCURLenum x = case x of |7214:----|- #{option CURL_TLSAUTH_SRP} |7214:----|--instance CURLenum CURLredir where- fromCURLenum x = case x of- #{option CURL_REDIR_GET_ALL }- #{option CURL_REDIR_POST_301}- #{option CURL_REDIR_POST_302}- #{option CURL_REDIR_POST_ALL}--instance CURLenum CURLhttpver where- fromCURLenum x = case x of- #{option CURL_HTTP_VERSION_NONE}- #{option CURL_HTTP_VERSION_1_0 }- #{option CURL_HTTP_VERSION_1_1 }--instance CURLenum CURLftpcreate where- fromCURLenum x = case x of- #{option CURLFTP_CREATE_DIR_NONE }- #{option CURLFTP_CREATE_DIR }- #{option CURLFTP_CREATE_DIR_RETRY}--instance CURLenum CURLftpauth where- fromCURLenum x = case x of- #{option CURLFTPAUTH_DEFAULT}- #{option CURLFTPAUTH_SSL }- #{option CURLFTPAUTH_TLS }--instance CURLenum CURLftpssl where- fromCURLenum x = case x of- #{option CURLFTPSSL_CCC_NONE }- #{option CURLFTPSSL_CCC_PASSIVE}- #{option CURLFTPSSL_CCC_ACTIVE }--instance CURLenum CURLftpmethod where- fromCURLenum x = case x of- #{option CURLFTPMETHOD_DEFAULT }- #{option CURLFTPMETHOD_MULTICWD }- #{option CURLFTPMETHOD_NOCWD }- #{option CURLFTPMETHOD_SINGLECWD}--instance CURLenum CURLrtspreq where- fromCURLenum x = case x of- #{option CURL_RTSPREQ_OPTIONS }- #{option CURL_RTSPREQ_DESCRIBE }- #{option CURL_RTSPREQ_ANNOUNCE }- #{option CURL_RTSPREQ_SETUP }- #{option CURL_RTSPREQ_PLAY }- #{option CURL_RTSPREQ_PAUSE }- #{option CURL_RTSPREQ_TEARDOWN }- #{option CURL_RTSPREQ_GET_PARAMETER}- #{option CURL_RTSPREQ_SET_PARAMETER}- #{option CURL_RTSPREQ_RECORD }- #{option CURL_RTSPREQ_RECEIVE }--instance CURLenum CURLtimecond where- fromCURLenum x = case x of- #{option CURL_TIMECOND_NONE }- #{option CURL_TIMECOND_IFMODSINCE }- #{option CURL_TIMECOND_IFUNMODSINCE}- #{option CURL_TIMECOND_LASTMOD }--instance CURLenum CURLclosepol where- fromCURLenum x = case x of- #{option CURLCLOSEPOLICY_NONE }- #{option CURLCLOSEPOLICY_OLDEST }- #{option CURLCLOSEPOLICY_LEAST_RECENTLY_USED}- #{option CURLCLOSEPOLICY_LEAST_TRAFFIC }- #{option CURLCLOSEPOLICY_SLOWEST }- #{option CURLCLOSEPOLICY_CALLBACK }--instance CURLenum CURLipresolve where- fromCURLenum x = case x of- #{option CURL_IPRESOLVE_WHATEVER}- #{option CURL_IPRESOLVE_V4 }- #{option CURL_IPRESOLVE_V6 }--instance CURLenum CURLusessl where- fromCURLenum x = case x of- #{option CURLUSESSL_NONE }- #{option CURLUSESSL_TRY }- #{option CURLUSESSL_CONTROL}- #{option CURLUSESSL_ALL }--instance CURLenum CURLsslver where- fromCURLenum x = case x of- #{option CURL_SSLVERSION_DEFAULT}- #{option CURL_SSLVERSION_TLSv1 }- #{option CURL_SSLVERSION_SSLv2 }- #{option CURL_SSLVERSION_SSLv3 }--instance CURLenum CURLsslopt where |7250:----|- fromCURLenum x = case x of |7250:----|- #{option CURLSSLOPT_ALLOW_BEAST} |7250:----|--instance CURLenum CURLgssapi where |7220:----|- fromCURLenum x = case x of |7220:----|- #{option CURLGSSAPI_DELEGATION_NONE } |7220:----|- #{option CURLGSSAPI_DELEGATION_POLICY_FLAG} |7220:----|- #{option CURLGSSAPI_DELEGATION_FLAG } |7220:----|--instance CURLenum CURLsshauth where- fromCURLenum x = case x of- #{option CURLSSH_AUTH_ANY }- #{option CURLSSH_AUTH_NONE }- #{option CURLSSH_AUTH_PUBLICKEY}- #{option CURLSSH_AUTH_PASSWORD }- #{option CURLSSH_AUTH_HOST }- #{option CURLSSH_AUTH_KEYBOARD }- #{option CURLSSH_AUTH_DEFAULT }-
− Network/Curlhs/Types.hs
@@ -1,675 +0,0 @@----------------------------------------------------------------------------------- |--- Module : Network.Curlhs.Types--- Copyright : Copyright © 2012 Krzysztof Kardzis--- License : ISC License (MIT/BSD-style, see LICENSE file for details)--- --- Maintainer : Krzysztof Kardzis <kkardzis@gmail.com>--- Stability : experimental--- Portability : non-portable-------------------------------------------------------------------------------------{-# LANGUAGE DeriveDataTypeable #-}--module Network.Curlhs.Types where--import Foreign.Ptr (Ptr, FunPtr)--import Data.ByteString (ByteString)-import Data.Typeable (Typeable)-import Data.IORef (IORef)-import Data.Time (UTCTime)-import Data.Int (Int64)--import Control.Exception (Exception)--import Network.Curlhs.Base-----------------------------------------------------------------------------------data CURL = CURL- { ccurlptr :: Ptr CCURL- , cb_write :: IORef (Maybe (FunPtr CCURL_write_callback))- , cb_read :: IORef (Maybe (FunPtr CCURL_read_callback ))- }-----------------------------------------------------------------------------------data CURLcode- = CURLE_OK- | CURLE_UNSUPPORTED_PROTOCOL- | CURLE_FAILED_INIT- | CURLE_URL_MALFORMAT- | CURLE_NOT_BUILT_IN |7215:----|- | CURLE_COULDNT_RESOLVE_PROXY- | CURLE_COULDNT_RESOLVE_HOST- | CURLE_COULDNT_CONNECT- | CURLE_FTP_WEIRD_SERVER_REPLY- | CURLE_REMOTE_ACCESS_DENIED- | CURLE_FTP_ACCEPT_FAILED |7240:----|- | CURLE_FTP_WEIRD_PASS_REPLY- | CURLE_FTP_ACCEPT_TIMEOUT |7240:----|- | CURLE_FTP_WEIRD_PASV_REPLY- | CURLE_FTP_WEIRD_227_FORMAT- | CURLE_FTP_CANT_GET_HOST- | CURLE_FTP_COULDNT_SET_TYPE- | CURLE_PARTIAL_FILE- | CURLE_FTP_COULDNT_RETR_FILE- | CURLE_QUOTE_ERROR- | CURLE_HTTP_RETURNED_ERROR- | CURLE_WRITE_ERROR- | CURLE_UPLOAD_FAILED- | CURLE_READ_ERROR- | CURLE_OUT_OF_MEMORY- | CURLE_OPERATION_TIMEDOUT- | CURLE_FTP_PORT_FAILED- | CURLE_FTP_COULDNT_USE_REST- | CURLE_RANGE_ERROR- | CURLE_HTTP_POST_ERROR- | CURLE_SSL_CONNECT_ERROR- | CURLE_BAD_DOWNLOAD_RESUME- | CURLE_FILE_COULDNT_READ_FILE- | CURLE_LDAP_CANNOT_BIND- | CURLE_LDAP_SEARCH_FAILED- | CURLE_FUNCTION_NOT_FOUND- | CURLE_ABORTED_BY_CALLBACK- | CURLE_BAD_FUNCTION_ARGUMENT- | CURLE_INTERFACE_FAILED- | CURLE_TOO_MANY_REDIRECTS- | CURLE_UNKNOWN_TELNET_OPTION |----:7214|- | CURLE_UNKNOWN_OPTION |7215:----|- | CURLE_TELNET_OPTION_SYNTAX- | CURLE_PEER_FAILED_VERIFICATION- | CURLE_GOT_NOTHING- | CURLE_SSL_ENGINE_NOTFOUND- | CURLE_SSL_ENGINE_SETFAILED- | CURLE_SEND_ERROR- | CURLE_RECV_ERROR- | CURLE_SSL_CERTPROBLEM- | CURLE_SSL_CIPHER- | CURLE_SSL_CACERT- | CURLE_BAD_CONTENT_ENCODING- | CURLE_LDAP_INVALID_URL- | CURLE_FILESIZE_EXCEEDED- | CURLE_USE_SSL_FAILED- | CURLE_SEND_FAIL_REWIND- | CURLE_SSL_ENGINE_INITFAILED- | CURLE_LOGIN_DENIED- | CURLE_TFTP_NOTFOUND- | CURLE_TFTP_PERM- | CURLE_REMOTE_DISK_FULL- | CURLE_TFTP_ILLEGAL- | CURLE_TFTP_UNKNOWNID- | CURLE_REMOTE_FILE_EXISTS- | CURLE_TFTP_NOSUCHUSER- | CURLE_CONV_FAILED- | CURLE_CONV_REQD- | CURLE_SSL_CACERT_BADFILE- | CURLE_REMOTE_FILE_NOT_FOUND- | CURLE_SSH- | CURLE_SSL_SHUTDOWN_FAILED- | CURLE_AGAIN- | CURLE_SSL_CRL_BADFILE- | CURLE_SSL_ISSUER_ERROR- | CURLE_FTP_PRET_FAILED- | CURLE_RTSP_CSEQ_ERROR- | CURLE_RTSP_SESSION_ERROR- | CURLE_FTP_BAD_FILE_LIST |7210:----|- | CURLE_CHUNK_FAILED |7210:----|- deriving (Eq, Show, Typeable)--instance Exception CURLcode-----------------------------------------------------------------------------------data CURL_version_info_data = CURL_version_info_data- { curl_version_info_data_version :: String- , curl_version_info_data_version_num :: Int- , curl_version_info_data_host :: String- , curl_version_info_data_features :: [CURL_version]- , curl_version_info_data_ssl_version :: Maybe String- , curl_version_info_data_ssl_version_num :: Int- , curl_version_info_data_libz_version :: Maybe String- , curl_version_info_data_protocols :: [String]- , curl_version_info_data_ares :: Maybe String- , curl_version_info_data_ares_num :: Int- , curl_version_info_data_libidn :: Maybe String- , curl_version_info_data_iconv_ver_num :: Int- , curl_version_info_data_libssh_version :: Maybe String- } deriving (Show)-----------------------------------------------------------------------------------data CURL_version- = CURL_VERSION_IPV6- | CURL_VERSION_KERBEROS4- | CURL_VERSION_SSL- | CURL_VERSION_LIBZ- | CURL_VERSION_NTLM- | CURL_VERSION_GSSNEGOTIATE- | CURL_VERSION_DEBUG- | CURL_VERSION_ASYNCHDNS- | CURL_VERSION_SPNEGO- | CURL_VERSION_LARGEFILE- | CURL_VERSION_IDN- | CURL_VERSION_SSPI- | CURL_VERSION_CONV- | CURL_VERSION_CURLDEBUG- | CURL_VERSION_TLSAUTH_SRP- | CURL_VERSION_NTLM_WB- deriving (Eq, Show)-----------------------------------------------------------------------------------data CURLinfo = CURLinfo- { curlinfo_effective_url :: String- , curlinfo_response_code :: Maybe Int- , curlinfo_http_connectcode :: Maybe Int- , curlinfo_filetime :: Maybe UTCTime- , curlinfo_total_time :: Double- , curlinfo_namelookup_time :: Double- , curlinfo_connect_time :: Double- , curlinfo_appconnect_time :: Double- , curlinfo_pretransfer_time :: Double- , curlinfo_starttransfer_time :: Double- , curlinfo_redirect_time :: Double- , curlinfo_redirect_count :: Int- , curlinfo_redirect_url :: Maybe String- , curlinfo_size_upload :: Double- , curlinfo_size_download :: Double- , curlinfo_speed_download :: Double- , curlinfo_speed_upload :: Double- , curlinfo_header_size :: Int- , curlinfo_request_size :: Int- , curlinfo_ssl_verifyresult :: Int -- Bool??- , curlinfo_ssl_engines :: [String]- , curlinfo_content_length_download :: Maybe Double- , curlinfo_content_length_upload :: Maybe Double- , curlinfo_content_type :: Maybe String--- , curlinfo_private :: String -- void??- , curlinfo_httpauth_avail :: [CURLauth]- , curlinfo_proxyauth_avail :: [CURLauth]- , curlinfo_os_errno :: Int- , curlinfo_num_connects :: Int- , curlinfo_primary_ip :: String- , curlinfo_primary_port :: Int- , curlinfo_local_ip :: String- , curlinfo_local_port :: Int- , curlinfo_cookielist :: [String]- , curlinfo_lastsocket :: Maybe Int- , curlinfo_ftp_entry_path :: Maybe String- , curlinfo_certinfo :: [[String]]- , curlinfo_condition_unmet :: Bool- , curlinfo_rtsp_session_id :: Maybe String- , curlinfo_rtsp_client_cseq :: Int- , curlinfo_rtsp_server_cseq :: Int- , curlinfo_rtsp_cseq_recv :: Int- } deriving (Show)------------------------------------------------------------------------------------data CURLoption- ---- BEHAVIOR OPTIONS -------------------------------------------------------- = CURLOPT_VERBOSE Bool- | CURLOPT_HEADER Bool- | CURLOPT_NOPROGRESS Bool- | CURLOPT_NOSIGNAL Bool- | CURLOPT_WILDCARDMATCH Bool |7210:----|-- ---- CALLBACK OPTIONS -------------------------------------------------------- | CURLOPT_WRITEFUNCTION (Maybe CURL_write_callback)- -- CURLOPT_WRITEDATA- | CURLOPT_READFUNCTION (Maybe CURL_read_callback)- -- CURLOPT_READDATA- -- CURLOPT_IOCTLFUNCTION- -- CURLOPT_IOCTLDATA- -- CURLOPT_SEEKFUNCTION- -- CURLOPT_SEEKDATA- -- CURLOPT_SOCKOPTFUNCTION- -- CURLOPT_SOCKOPTDATA- -- CURLOPT_OPENSOCKETFUNCTION- -- CURLOPT_OPENSOCKETDATA- -- CURLOPT_CLOSESOCKETFUNCTION |7217:----|- -- CURLOPT_CLOSESOCKETDATA |7217:----|- -- CURLOPT_PROGRESSFUNCTION- -- CURLOPT_PROGRESSDATA- -- CURLOPT_HEADERFUNCTION- -- CURLOPT_HEADERDATA- -- CURLOPT_DEBUGFUNCTION- -- CURLOPT_DEBUGDATA- -- CURLOPT_SSL_CTX_FUNCTION- -- CURLOPT_SSL_CTX_DATA- -- CURLOPT_CONV_TO_NETWORK_FUNCTION- -- CURLOPT_CONV_FROM_NETWORK_FUNCTION- -- CURLOPT_CONV_FROM_UTF8_FUNCTION- -- CURLOPT_INTERLEAVEFUNCTION- -- CURLOPT_INTERLEAVEDATA- -- CURLOPT_CHUNK_BGN_FUNCTION |7210:----|- -- CURLOPT_CHUNK_END_FUNCTION |7210:----|- -- CURLOPT_CHUNK_DATA |7210:----|- -- CURLOPT_FNMATCH_FUNCTION |7210:----|- -- CURLOPT_FNMATCH_DATA |7210:----|-- ---- ERROR OPTIONS ----------------------------------------------------------- -- CURLOPT_ERRORBUFFER (IORef (Maybe ByteString))- -- CURLOPT_STDERR Handle- | CURLOPT_FAILONERROR Bool-- ---- NETWORK OPTIONS --------------------------------------------------------- | CURLOPT_URL ByteString- | CURLOPT_PROTOCOLS [CURLproto]- | CURLOPT_REDIR_PROTOCOLS [CURLproto]- | CURLOPT_PROXY ByteString- | CURLOPT_PROXYPORT Int- | CURLOPT_PROXYTYPE CURLproxy- | CURLOPT_NOPROXY ByteString- | CURLOPT_HTTPPROXYTUNNEL Bool- | CURLOPT_SOCKS5_GSSAPI_SERVICE ByteString- | CURLOPT_SOCKS5_GSSAPI_NEC Bool- | CURLOPT_INTERFACE ByteString- | CURLOPT_LOCALPORT Int- | CURLOPT_LOCALPORTRANGE Int- | CURLOPT_DNS_CACHE_TIMEOUT Int- | CURLOPT_DNS_USE_GLOBAL_CACHE Bool- | CURLOPT_BUFFERSIZE Int- | CURLOPT_PORT Int- | CURLOPT_TCP_NODELAY Bool- | CURLOPT_ADDRESS_SCOPE Int- | CURLOPT_TCP_KEEPALIVE Bool |7250:----|- | CURLOPT_TCP_KEEPIDLE Int |7250:----|- | CURLOPT_TCP_KEEPINTVL Int |7250:----|-- ---- NAMES and PASSWORDS OPTIONS (Authentication) ---------------------------- | CURLOPT_NETRC CURLnetrc- | CURLOPT_NETRC_FILE ByteString- | CURLOPT_USERPWD ByteString- | CURLOPT_PROXYUSERPWD ByteString- | CURLOPT_USERNAME ByteString- | CURLOPT_PASSWORD ByteString- | CURLOPT_PROXYUSERNAME ByteString- | CURLOPT_PROXYPASSWORD ByteString- | CURLOPT_HTTPAUTH [CURLauth]- -- CURLOPT_TLSAUTH_TYPE [CURLtlsauth] |7214:----|- | CURLOPT_TLSAUTH_TYPE ByteString |7214:----|- | CURLOPT_TLSAUTH_USERNAME ByteString |7214:----|- | CURLOPT_TLSAUTH_PASSWORD ByteString |7214:----|- | CURLOPT_PROXYAUTH [CURLauth]-- ---- HTTP OPTIONS ------------------------------------------------------------ | CURLOPT_AUTOREFERER Bool- | CURLOPT_ENCODING ByteString |----:7215|- | CURLOPT_ACCEPT_ENCODING ByteString |7216:----|- | CURLOPT_TRANSFER_ENCODING Bool |7216:----|- | CURLOPT_FOLLOWLOCATION Bool- | CURLOPT_UNRESTRICTED_AUTH Bool- | CURLOPT_MAXREDIRS Int- | CURLOPT_POSTREDIR [CURLredir]- | CURLOPT_PUT Bool- | CURLOPT_POST Bool- -- CURLOPT_POSTFIELDS ByteString -- not copied- | CURLOPT_POSTFIELDSIZE Int- | CURLOPT_POSTFIELDSIZE_LARGE Int64- | CURLOPT_COPYPOSTFIELDS ByteString- -- CURLOPT_HTTPPOST [CURL_httppost]- | CURLOPT_REFERER ByteString- | CURLOPT_USERAGENT ByteString- -- CURLOPT_HTTPHEADER [ByteString]- -- CURLOPT_HTTP200ALIASES [ByteString]- | CURLOPT_COOKIE ByteString- | CURLOPT_COOKIEFILE ByteString- | CURLOPT_COOKIEJAR ByteString- | CURLOPT_COOKIESESSION Bool- | CURLOPT_COOKIELIST ByteString- | CURLOPT_HTTPGET Bool- | CURLOPT_HTTP_VERSION CURLhttpver- | CURLOPT_IGNORE_CONTENT_LENGTH Bool- | CURLOPT_HTTP_CONTENT_DECODING Bool- | CURLOPT_HTTP_TRANSFER_DECODING Bool-- ---- SMTP OPTIONS ------------------------------------------------------------ | CURLOPT_MAIL_FROM ByteString- -- CURLOPT_MAIL_RCTP [ByteString]- | CURLOPT_MAIL_AUTH ByteString |7250:----|-- ---- TFTP OPTIONS ------------------------------------------------------------ | CURLOPT_TFTP_BLKSIZE Int-- ---- FTP OPTIONS ------------------------------------------------------------- | CURLOPT_FTPPORT ByteString- -- CURLOPT_QUOTE [ByteString]- -- CURLOPT_POSTQUOTE [ByteString]- -- CURLOPT_PREQUOTE [ByteString]- | CURLOPT_DIRLISTONLY Bool- | CURLOPT_APPEND Bool- | CURLOPT_FTP_USE_EPRT Bool- | CURLOPT_FTP_USE_EPSV Bool- | CURLOPT_FTP_USE_PRET Bool- | CURLOPT_FTP_CREATE_MISSING_DIRS CURLftpcreate- | CURLOPT_FTP_RESPONSE_TIMEOUT Int- | CURLOPT_FTP_ALTERNATIVE_TO_USER ByteString- | CURLOPT_FTP_SKIP_PASV_IP Bool- | CURLOPT_FTPSSLAUTH CURLftpauth- | CURLOPT_FTP_SSL_CCC CURLftpssl- | CURLOPT_FTP_ACCOUNT ByteString- | CURLOPT_FTP_FILEMETHOD CURLftpmethod-- ---- RTSP OPTIONS ------------------------------------------------------------ | CURLOPT_RTSP_REQUEST CURLrtspreq- | CURLOPT_RTSP_SESSION_ID ByteString- | CURLOPT_RTSP_STREAM_URI ByteString- | CURLOPT_RTSP_TRANSPORT ByteString- -- CURLOPT_RTSP_HEADER [ByteString]- | CURLOPT_RTSP_CLIENT_CSEQ Int- | CURLOPT_RTSP_SERVER_CSEQ Int-- ---- PROTOCOL OPTIONS -------------------------------------------------------- | CURLOPT_TRANSFERTEXT Bool- | CURLOPT_PROXY_TRANSFER_MODE Bool- | CURLOPT_CRLF Bool- | CURLOPT_RANGE ByteString- | CURLOPT_RESUME_FROM Int- | CURLOPT_RESUME_FROM_LARGE Int64- | CURLOPT_CUSTOMREQUEST ByteString- | CURLOPT_FILETIME Bool- | CURLOPT_NOBODY Bool- | CURLOPT_INFILESIZE Int- | CURLOPT_INFILESIZE_LARGE Int64- | CURLOPT_UPLOAD Bool- | CURLOPT_MAXFILESIZE Int- | CURLOPT_MAXFILESIZE_LARGE Int64- | CURLOPT_TIMECONDITION CURLtimecond- | CURLOPT_TIMEVALUE UTCTime-- ---- CONNECTION OPTIONS ------------------------------------------------------ | CURLOPT_TIMEOUT Int- | CURLOPT_TIMEOUT_MS Int- | CURLOPT_LOW_SPEED_LIMIT Int- | CURLOPT_LOW_SPEED_TIME Int- | CURLOPT_MAX_SEND_SPEED_LARGE Int64- | CURLOPT_MAX_RECV_SPEED_LARGE Int64- | CURLOPT_MAXCONNECTS Int- | CURLOPT_CLOSEPOLICY CURLclosepol- | CURLOPT_FRESH_CONNECT Bool- | CURLOPT_FORBID_REUSE Bool- | CURLOPT_CONNECTTIMEOUT Int- | CURLOPT_CONNECTTIMEOUT_MS Int- | CURLOPT_IPRESOLVE CURLipresolve- | CURLOPT_CONNECT_ONLY Bool- | CURLOPT_USE_SSL CURLusessl- -- CURLOPT_RESOLVE [ByteString] |7213:----|- | CURLOPT_DNS_SERVERS ByteString |7240:----|- | CURLOPT_ACCEPTTIMEOUT_MS Int |7240:----|-- ---- SSL and SECURITY OPTIONS ------------------------------------------------ | CURLOPT_SSLCERT ByteString- | CURLOPT_SSLCERTTYPE ByteString- | CURLOPT_SSLKEY ByteString- | CURLOPT_SSLKEYTYPE ByteString- | CURLOPT_KEYPASSWD ByteString- | CURLOPT_SSLENGINE ByteString- | CURLOPT_SSLENGINE_DEFAULT Bool- | CURLOPT_SSLVERSION CURLsslver- | CURLOPT_SSL_VERIFYPEER Bool- | CURLOPT_CAINFO ByteString- | CURLOPT_ISSUERCERT ByteString- | CURLOPT_CAPATH ByteString- | CURLOPT_CRLFILE ByteString- | CURLOPT_SSL_VERIFYHOST Int- | CURLOPT_CERTINFO Bool- | CURLOPT_RANDOM_FILE ByteString- | CURLOPT_EGDSOCKET ByteString- | CURLOPT_SSL_CIPHER_LIST ByteString- | CURLOPT_SSL_SESSIONID_CACHE Bool- | CURLOPT_SSL_OPTIONS CURLsslopt |7250:----|- | CURLOPT_KRBLEVEL ByteString- | CURLOPT_GSSAPI_DELEGATION CURLgssapi |7220:----|-- ---- SSH OPTIONS ------------------------------------------------------------- | CURLOPT_SSH_AUTH_TYPES [CURLsshauth]- | CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 ByteString- | CURLOPT_SSH_PUBLIC_KEYFILE ByteString- | CURLOPT_SSH_PRIVATE_KEYFILE ByteString- | CURLOPT_SSH_KNOWNHOSTS ByteString- -- CURLOPT_SSH_KEYFUNCTION (Maybe CURL_sshkey_callback)- -- CURLOPT_SSH_KEYDATA -- ?-- ---- OTHER OPTIONS ----------------------------------------------------------- -- CURLOPT_PRIVATE -- ?- -- CURLOPT_SHARE CURLSH- | CURLOPT_NEW_FILE_PERMS Int- | CURLOPT_NEW_DIRECTORY_PERMS Int-- ---- TELNET OPTIONS ---------------------------------------------------------- -- CURLOPT_TELNETOPTIONS [ByteString]-----------------------------------------------------------------------------------data CURLproto- = CURLPROTO_ALL- | CURLPROTO_HTTP- | CURLPROTO_HTTPS- | CURLPROTO_FTP- | CURLPROTO_FTPS- | CURLPROTO_SCP- | CURLPROTO_SFTP- | CURLPROTO_TELNET- | CURLPROTO_LDAP- | CURLPROTO_LDAPS- | CURLPROTO_DICT- | CURLPROTO_FILE- | CURLPROTO_TFTP- | CURLPROTO_IMAP- | CURLPROTO_IMAPS- | CURLPROTO_POP3- | CURLPROTO_POP3S- | CURLPROTO_SMTP- | CURLPROTO_SMTPS- | CURLPROTO_RTSP- | CURLPROTO_RTMP |7210:----|- | CURLPROTO_RTMPT |7210:----|- | CURLPROTO_RTMPE |7210:----|- | CURLPROTO_RTMPTE |7210:----|- | CURLPROTO_RTMPS |7210:----|- | CURLPROTO_RTMPTS |7210:----|- | CURLPROTO_GOPHER |7212:----|- deriving (Eq, Show)-----------------------------------------------------------------------------------data CURLproxy- = CURLPROXY_HTTP- | CURLPROXY_HTTP_1_0- | CURLPROXY_SOCKS4- | CURLPROXY_SOCKS5- | CURLPROXY_SOCKS4A- | CURLPROXY_SOCKS5_HOSTNAME- deriving (Eq, Show)-----------------------------------------------------------------------------------data CURLnetrc- = CURL_NETRC_IGNORED- | CURL_NETRC_OPTIONAL- | CURL_NETRC_REQUIRED- deriving (Eq, Show)-----------------------------------------------------------------------------------data CURLauth- = CURLAUTH_BASIC- | CURLAUTH_DIGEST- | CURLAUTH_DIGEST_IE- | CURLAUTH_GSSNEGOTIATE- | CURLAUTH_NTLM- | CURLAUTH_NTLM_WB |7220:----|- | CURLAUTH_ONLY |7213:----|- | CURLAUTH_ANY- | CURLAUTH_ANYSAFE- deriving (Eq, Show)-----------------------------------------------------------------------------------data CURLtlsauth |7214:----|- = CURL_TLSAUTH_SRP |7214:----|- deriving (Eq, Show) |7214:----|-----------------------------------------------------------------------------------data CURLredir- = CURL_REDIR_GET_ALL- | CURL_REDIR_POST_301- | CURL_REDIR_POST_302- | CURL_REDIR_POST_ALL- deriving (Eq, Show)-----------------------------------------------------------------------------------data CURLhttpver- = CURL_HTTP_VERSION_NONE- | CURL_HTTP_VERSION_1_0- | CURL_HTTP_VERSION_1_1- deriving (Eq, Show)-----------------------------------------------------------------------------------data CURLftpcreate- = CURLFTP_CREATE_DIR_NONE- | CURLFTP_CREATE_DIR- | CURLFTP_CREATE_DIR_RETRY- deriving (Eq, Show)-----------------------------------------------------------------------------------data CURLftpauth- = CURLFTPAUTH_DEFAULT- | CURLFTPAUTH_SSL- | CURLFTPAUTH_TLS- deriving (Eq, Show)-----------------------------------------------------------------------------------data CURLftpssl- = CURLFTPSSL_CCC_NONE- | CURLFTPSSL_CCC_PASSIVE- | CURLFTPSSL_CCC_ACTIVE- deriving (Eq, Show)- ----------------------------------------------------------------------------------data CURLftpmethod- = CURLFTPMETHOD_DEFAULT- | CURLFTPMETHOD_MULTICWD- | CURLFTPMETHOD_NOCWD- | CURLFTPMETHOD_SINGLECWD- deriving (Eq, Show)-----------------------------------------------------------------------------------data CURLrtspreq- = CURL_RTSPREQ_OPTIONS- | CURL_RTSPREQ_DESCRIBE- | CURL_RTSPREQ_ANNOUNCE- | CURL_RTSPREQ_SETUP- | CURL_RTSPREQ_PLAY- | CURL_RTSPREQ_PAUSE- | CURL_RTSPREQ_TEARDOWN- | CURL_RTSPREQ_GET_PARAMETER- | CURL_RTSPREQ_SET_PARAMETER- | CURL_RTSPREQ_RECORD- | CURL_RTSPREQ_RECEIVE- deriving (Eq, Show)-----------------------------------------------------------------------------------data CURLtimecond- = CURL_TIMECOND_NONE- | CURL_TIMECOND_IFMODSINCE- | CURL_TIMECOND_IFUNMODSINCE- | CURL_TIMECOND_LASTMOD- deriving (Eq, Show)-----------------------------------------------------------------------------------data CURLclosepol- = CURLCLOSEPOLICY_NONE- | CURLCLOSEPOLICY_OLDEST- | CURLCLOSEPOLICY_LEAST_RECENTLY_USED- | CURLCLOSEPOLICY_LEAST_TRAFFIC- | CURLCLOSEPOLICY_SLOWEST- | CURLCLOSEPOLICY_CALLBACK- deriving (Eq, Show)-----------------------------------------------------------------------------------data CURLipresolve- = CURL_IPRESOLVE_WHATEVER- | CURL_IPRESOLVE_V4- | CURL_IPRESOLVE_V6- deriving (Eq, Show)-----------------------------------------------------------------------------------data CURLusessl- = CURLUSESSL_NONE- | CURLUSESSL_TRY- | CURLUSESSL_CONTROL- | CURLUSESSL_ALL- deriving (Eq, Show)-----------------------------------------------------------------------------------data CURLsslver- = CURL_SSLVERSION_DEFAULT- | CURL_SSLVERSION_TLSv1- | CURL_SSLVERSION_SSLv2- | CURL_SSLVERSION_SSLv3- deriving (Eq, Show)-----------------------------------------------------------------------------------data CURLsslopt |7250:----|- = CURLSSLOPT_ALLOW_BEAST |7250:----|- deriving (Eq, Show) |7250:----|-----------------------------------------------------------------------------------data CURLgssapi |7220:----|- = CURLGSSAPI_DELEGATION_NONE |7220:----|- | CURLGSSAPI_DELEGATION_POLICY_FLAG |7220:----|- | CURLGSSAPI_DELEGATION_FLAG |7220:----|- deriving (Eq, Show) |7220:----|-----------------------------------------------------------------------------------data CURLsshauth- = CURLSSH_AUTH_ANY- | CURLSSH_AUTH_NONE- | CURLSSH_AUTH_PUBLICKEY- | CURLSSH_AUTH_PASSWORD- | CURLSSH_AUTH_HOST- | CURLSSH_AUTH_KEYBOARD- | CURLSSH_AUTH_DEFAULT- deriving (Eq, Show)-----------------------------------------------------------------------------------type CURL_write_callback = ByteString -> IO CURL_write_response--data CURL_write_response- = CURL_WRITEFUNC_OK- | CURL_WRITEFUNC_FAIL- | CURL_WRITEFUNC_PAUSE- deriving (Eq)---type CURL_read_callback = Int -> IO CURL_read_response--data CURL_read_response- = CURL_READFUNC_OK ByteString- | CURL_READFUNC_ABORT- | CURL_READFUNC_PAUSE- deriving (Eq)--
− README
@@ -1,6 +0,0 @@-This package provides a Haskell bindings to libcurl, the multiprotocol file-transfer library which powers the popular tool curl (see http://curl.haxx.se-and http://curl.haxx.se/libcurl/ for more info).--The project is in early stage so please be patient.-
+ README.md view
@@ -0,0 +1,15 @@+# Network.CURL [![Build Status][travis.img]][travis.htm]++Package *curlhs* provides Haskell bindings to *libcurl*, the multiprotocol+file transfer library which powers the popular tool *curl*+(see http://curl.haxx.se/libcurl for more info).+++[![Analytics][ga.img]][ga.htm]++[ga.img]: https://ga-beacon.appspot.com/UA-53767359-1/github/curlhs+[ga.htm]: https://github.com/igrigorik/ga-beacon++[travis.img]: https://travis-ci.org/kkardzis/curlhs.svg+[travis.htm]: https://travis-ci.org/kkardzis/curlhs+
Setup.hs view
@@ -1,109 +1,2 @@-module Main where- import Distribution.Simple-import Distribution.Simple.Utils-import Distribution.Simple.PreProcess-import Distribution.Simple.LocalBuildInfo (LocalBuildInfo, buildDir)-import Distribution.PackageDescription (BuildInfo)-import Distribution.Verbosity (Verbosity)-import System.FilePath ((</>), replaceExtension)-import Text.ParserCombinators.ReadP-import Text.Read.Lex (readDecP)-import Data.IORef (IORef, newIORef, readIORef, writeIORef)-import Data.List (find, isPrefixOf)-----------------------------------------------------------------------------------main = newIORef Nothing >>= \cvr -> defaultMainWithHooks simpleUserHooks- { hookedPreProcessors = ("hs", ppHsX cvr) : ("hsc", ppHscX cvr)- : knownSuffixHandlers }-----------------------------------------------------------------------------------ppHsX :: IORef (Maybe Int) -> BuildInfo -> LocalBuildInfo -> PreProcessor-ppHsX cvr bi lbi = PreProcessor- { platformIndependent = False- , runPreProcessor = mkSimplePreProcessor $ \inFile outFile verbosity -> do- cv <- findCURLVER cvr bi lbi verbosity- withUTF8FileContents inFile (writeUTF8File outFile . processFile cv)- }----------------------------------------------------------------------------------ppHscX :: IORef (Maybe Int) -> BuildInfo -> LocalBuildInfo -> PreProcessor-ppHscX cvr bi lbi = PreProcessor- { platformIndependent = False- , runPreProcessor = mkSimplePreProcessor $ \inFile outFile verbosity -> do- cv <- findCURLVER cvr bi lbi verbosity- let hscFile = replaceExtension outFile "hsc"- withUTF8FileContents inFile (writeUTF8File hscFile . processFile cv)- runSimplePreProcessor (ppHsc2hs bi lbi) hscFile outFile verbosity- }----------------------------------------------------------------------------------findCURLVER :: IORef (Maybe Int)- -> BuildInfo -> LocalBuildInfo -> Verbosity -> IO Int-findCURLVER cvr bi lbi verbosity = readIORef cvr >>= \mcv -> case mcv of- Just cv -> return cv- Nothing -> do- info verbosity "Looking for LIBCURL_VERSION_NUM in \"curl/curl.h\""- let cvFile = buildDir lbi </> "CURLVER"- writeUTF8File cvFile curlverFileContent- runSimplePreProcessor (ppHsc2hs bi lbi) cvFile cvFile verbosity- mcv <- fmap parseCV $ readUTF8File cvFile- case mcv of- Nothing -> die "Can't find libcurl version info"- Just cv -> writeIORef cvr mcv >> return cv--curlverFileContent :: String-curlverFileContent = unlines- [ "#include \"curl/curl.h\""- , "CURLVER = #{const LIBCURL_VERSION_NUM}" ]--parseCV :: String -> Maybe Int-parseCV cvf = do- cvl <- find (isPrefixOf "CURLVER") $ lines cvf- case (readP_to_S readDecP $ last $ words cvl) of- [(cv,[])] -> Just cv- _ -> Nothing----------------------------------------------------------------------------------processFile :: Int -> String -> String-processFile cv file = unlines $ map (processLine cv) $ lines file--processLine :: Int -> String -> String-processLine cv line =- case (readP_to_S parseLine $ reverse line) of- [((vmin, vmax, text),[])]- -> if (vmin <= cv && cv <= vmax) then text else concat ["-- ", line]- _ -> line--parseLine :: ReadP (Int, Int, String)-parseLine =- char '|' >> parseVTAG >>= \vmax ->- char ':' >> parseVTAG >>= \vmin ->- char '|' >> parseTEXT >>= \text ->- return (maybe 0x000000 id vmin, maybe 0xFFFFFF id vmax, text)--parseTEXT :: ReadP String-parseTEXT = skipSpaces >> manyTill get eof >>= return . reverse--parseVTAG :: ReadP (Maybe Int)-parseVTAG = count 4 get >>= \vtag -> if (vtag == "----") then return Nothing- else maybe pfail (return . Just) $ lookup (reverse vtag)- [ ("7200", 0x071400)- , ("7201", 0x071401)- , ("7210", 0x071500)- , ("7211", 0x071501)- , ("7212", 0x071502)- , ("7213", 0x071503)- , ("7214", 0x071504)- , ("7215", 0x071505)- , ("7216", 0x071506)- , ("7217", 0x071507)- , ("7220", 0x071600)- , ("7230", 0x071700)- , ("7231", 0x071701)- , ("7240", 0x071800)- , ("7250", 0x071900)- ]-+main = defaultMain
curlhs.cabal view
@@ -1,18 +1,17 @@ name: curlhs-version: 0.0.2+version: 0.1.1 synopsis: bindings to libcurl, the multiprotocol file transfer library author: Krzysztof Kardzis <kkardzis@gmail.com> maintainer: Krzysztof Kardzis <kkardzis@gmail.com>-copyright: Copyright © 2012 Krzysztof Kardzis+copyright: Copyright © 2012-2014 Krzysztof Kardzis -- license: ISC License (MIT/BSD-style, see LICENSE file for details) license: OtherLicense license-file: LICENSE-category: Network, Web, FFI+category: Network stability: Experimental-build-type: Custom+build-type: Simple cabal-version: >=1.6-tested-with: GHC ==7.0.3-homepage: https://github.com/kkardzis/curlhs+homepage: https://kkardzis.github.com/curlhs description: Package @curlhs@ provides a mid-level interface to @libcurl@, the@@ -37,52 +36,48 @@ /supported, fast, thoroughly documented and is already used by many / /known, big and successful companies and numerous applications. / .- Package @curlhs@ depends on @libcurl@ as an external library. To compile- and later use @curlhs@, it is required to first install @libcurl@ somewhere- on the system, best in place that is easy to locate by the compiler.- Information about how to compile and install @libcurl@ may be found on- its project site. A simple way may be to use one of the available- precompiled packages.- .- Current version of @curlhs@ follows @libcurl@ in version 7.25.0. It is- also possible to use @curlhs@ with older versions of @libcurl@, but some- features may not be available then (@curlhs@ should easily compile- with @libcurl@ from version 7.20.0 upward).- . Package is distributed under ISC License (MIT/BSD-style, see LICENSE file for details). It is marked as @OtherLicense@ due to limitations of Cabal.+ .+ <<https://ga-beacon.appspot.com/UA-53767359-1/hackage/curlhs>> extra-source-files:- README+ Network/CURL000/curl-7.30.0/COPYING+ Network/CURL000/curl-7.30.0/curl.h+ Network/CURL000/curl-7.30.0/curlbuild.h+ Network/CURL000/curl-7.30.0/curlrules.h+ Network/CURL000/curl-7.30.0/curlver.h+ Network/CURL000/curl-7.30.0/easy.h+ Network/CURL000/curl-7.30.0/multi.h+ Network/CURL000/curl-7.30.0/stdcheaders.h+ Network/CURL000/curl-7.30.0/typecheck-gcc.h+ README.md library- extra-libraries: curl- build-tools: hsc2hs- ghc-options: -Wall -fwarn-tabs+ ghc-options: -Wall -fwarn-tabs+ build-tools: hsc2hs build-depends:- bytestring == 0.9.*,- base == 4.*,- time == 1.*+ base ==4.*, rtld, bytestring, time exposed-modules:- Network.Curlhs.Base- Network.Curlhs.Core+ Network.CURL720+ Network.CURL730+ Network.CURLXXX other-modules:- Network.Curlhs.Easy- -- Network.Curlhs.Multi- -- Network.Curlhs.Share- Network.Curlhs.Setopt- Network.Curlhs.Errors- Network.Curlhs.Types+ Network.CURL000.LibCC+ Network.CURL000.LibHS+ Network.CURL000.LibLD+ Network.CURL000.Types - -- maybe not elegant, but convenient during tests- -- if os(windows)- -- include-dirs: .\curl-7.25.0-devel-mingw32\include- -- extra-lib-dirs: .\curl-7.25.0-devel-mingw32\bin+ c-sources:+ Network/CURL000/LibC0.c + include-dirs:+ Network/CURL000+ source-repository head- type: git location: https://github.com/kkardzis/curlhs+ type: git