OpenMoHAA 0.82.0
Loading...
Searching...
No Matches
cl_curl.h
1/*
2===========================================================================
3Copyright (C) 2006 Tony J. White (tjw@tjw.org)
4
5This file is part of Quake III Arena source code.
6
7Quake III Arena source code is free software; you can redistribute it
8and/or modify it under the terms of the GNU General Public License as
9published by the Free Software Foundation; either version 2 of the License,
10or (at your option) any later version.
11
12Quake III Arena source code is distributed in the hope that it will be
13useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with Quake III Arena source code; if not, write to the Free Software
19Foundation, 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.54.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
47extern cvar_t *cl_cURLLib;
48
49extern char* (*qcurl_version)(void);
50
51extern CURL* (*qcurl_easy_init)(void);
52extern CURLcode (*qcurl_easy_setopt)(CURL *curl, CURLoption option, ...);
53extern CURLcode (*qcurl_easy_perform)(CURL *curl);
54extern void (*qcurl_easy_cleanup)(CURL *curl);
55extern CURLcode (*qcurl_easy_getinfo)(CURL *curl, CURLINFO info, ...);
56extern void (*qcurl_easy_reset)(CURL *curl);
57extern const char *(*qcurl_easy_strerror)(CURLcode);
58
59extern CURLM* (*qcurl_multi_init)(void);
60extern CURLMcode (*qcurl_multi_add_handle)(CURLM *multi_handle,
61 CURL *curl_handle);
62extern CURLMcode (*qcurl_multi_remove_handle)(CURLM *multi_handle,
63 CURL *curl_handle);
64extern 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);
69extern CURLMcode (*qcurl_multi_perform)(CURLM *multi_handle,
70 int *running_handles);
71extern CURLMcode (*qcurl_multi_cleanup)(CURLM *multi_handle);
72extern CURLMsg *(*qcurl_multi_info_read)(CURLM *multi_handle,
73 int *msgs_in_queue);
74extern 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
97qboolean CL_cURL_Init( void );
98void CL_cURL_Shutdown( void );
99void CL_cURL_BeginDownload( const char *localName, const char *remoteURL );
100void CL_cURL_PerformDownload( void );
101void CL_cURL_Cleanup( void );
102#endif // __QCURL_H__