1 /* 2 =========================================================================== 3 Copyright (C) 2006 Tony J. White (tjw@tjw.org) 4 5 This file is part of Quake III Arena source code. 6 7 Quake III Arena source code is free software; you can redistribute it 8 and/or modify it under the terms of the GNU General Public License as 9 published by the Free Software Foundation; either version 2 of the License, 10 or (at your option) any later version. 11 12 Quake III Arena source code is distributed in the hope that it will be 13 useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with Quake III Arena source code; if not, write to the Free Software 19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 =========================================================================== 21 */ 22 23 24 #ifndef __QCURL_H__ 25 #define __QCURL_H__ 26 27 #include "../qcommon/q_shared.h" 28 #include "../qcommon/qcommon.h" 29 30 #ifdef USE_LOCAL_HEADERS 31 #include "../curl-7.60.0/include/curl/curl.h" 32 #else 33 #include <curl/curl.h> 34 #endif 35 36 #ifdef USE_CURL_DLOPEN 37 #ifdef WIN32 38 #define DEFAULT_CURL_LIB "libcurl-4.dll" 39 #define ALTERNATE_CURL_LIB "libcurl-3.dll" 40 #elif defined(__APPLE__) 41 #define DEFAULT_CURL_LIB "libcurl.dylib" 42 #else 43 #define DEFAULT_CURL_LIB "libcurl.so.4" 44 #define ALTERNATE_CURL_LIB "libcurl.so.3" 45 #endif 46 47 extern cvar_t *cl_cURLLib; 48 49 extern char* (*qcurl_version)(void); 50 51 extern CURL* (*qcurl_easy_init)(void); 52 extern CURLcode (*qcurl_easy_setopt)(CURL *curl, CURLoption option, ...); 53 extern CURLcode (*qcurl_easy_perform)(CURL *curl); 54 extern void (*qcurl_easy_cleanup)(CURL *curl); 55 extern CURLcode (*qcurl_easy_getinfo)(CURL *curl, CURLINFO info, ...); 56 extern void (*qcurl_easy_reset)(CURL *curl); 57 extern const char *(*qcurl_easy_strerror)(CURLcode); 58 59 extern CURLM* (*qcurl_multi_init)(void); 60 extern CURLMcode (*qcurl_multi_add_handle)(CURLM *multi_handle, 61 CURL *curl_handle); 62 extern CURLMcode (*qcurl_multi_remove_handle)(CURLM *multi_handle, 63 CURL *curl_handle); 64 extern CURLMcode (*qcurl_multi_fdset)(CURLM *multi_handle, 65 fd_set *read_fd_set, 66 fd_set *write_fd_set, 67 fd_set *exc_fd_set, 68 int *max_fd); 69 extern CURLMcode (*qcurl_multi_perform)(CURLM *multi_handle, 70 int *running_handles); 71 extern CURLMcode (*qcurl_multi_cleanup)(CURLM *multi_handle); 72 extern CURLMsg *(*qcurl_multi_info_read)(CURLM *multi_handle, 73 int *msgs_in_queue); 74 extern const char *(*qcurl_multi_strerror)(CURLMcode); 75 #else 76 #define qcurl_version curl_version 77 78 #define qcurl_easy_init curl_easy_init 79 #define qcurl_easy_setopt curl_easy_setopt 80 #define qcurl_easy_perform curl_easy_perform 81 #define qcurl_easy_cleanup curl_easy_cleanup 82 #define qcurl_easy_getinfo curl_easy_getinfo 83 #define qcurl_easy_duphandle curl_easy_duphandle 84 #define qcurl_easy_reset curl_easy_reset 85 #define qcurl_easy_strerror curl_easy_strerror 86 87 #define qcurl_multi_init curl_multi_init 88 #define qcurl_multi_add_handle curl_multi_add_handle 89 #define qcurl_multi_remove_handle curl_multi_remove_handle 90 #define qcurl_multi_fdset curl_multi_fdset 91 #define qcurl_multi_perform curl_multi_perform 92 #define qcurl_multi_cleanup curl_multi_cleanup 93 #define qcurl_multi_info_read curl_multi_info_read 94 #define qcurl_multi_strerror curl_multi_strerror 95 #endif 96 97 qboolean CL_cURL_Init( void ); 98 void CL_cURL_Shutdown( void ); 99 void CL_cURL_BeginDownload( const char *localName, const char *remoteURL ); 100 void CL_cURL_PerformDownload( void ); 101 void CL_cURL_Cleanup( void ); 102 #endif // __QCURL_H__ 103