Add more debugging prints in Draw_CachePic, most of these are for edge cases.
[xonotic/darkplaces.git] / libcurl.h
index a6cf982..15bf019 100644 (file)
--- a/libcurl.h
+++ b/libcurl.h
@@ -1,17 +1,33 @@
-void Curl_Run();
-qboolean Curl_Running();
-void Curl_Begin(const char *URL, const char *name, qboolean ispak, qboolean forthismap);
-void Curl_Init();
-void Curl_Init_Commands();
-void Curl_Shutdown();
-void Curl_CancelAll();
-void Curl_Clear_forthismap();
-qboolean Curl_Have_forthismap();
-void Curl_Register_predownload();
+enum
+{
+       CURLCBSTATUS_OK = 0,
+       CURLCBSTATUS_FAILED = -1, // failed for generic reason (e.g. buffer too small)
+       CURLCBSTATUS_ABORTED = -2, // aborted by curl --cancel
+       CURLCBSTATUS_SERVERERROR = -3, // only used if no HTTP status code is available
+       CURLCBSTATUS_UNKNOWN = -4 // should never happen
+};
+typedef void (*curl_callback_t) (int status, size_t length_received, unsigned char *buffer, void *cbdata);
+// code is one of the CURLCBSTATUS constants, or the HTTP error code (when > 0).
+
+void Curl_Run(void);
+qboolean Curl_Running(void);
+qboolean Curl_Begin_ToFile(const char *URL, double maxspeed, const char *name, int loadtype, qboolean forthismap);
+
+qboolean Curl_Begin_ToMemory(const char *URL, double maxspeed, unsigned char *buf, size_t bufsize, curl_callback_t callback, void *cbdata);
+qboolean Curl_Begin_ToMemory_POST(const char *URL, const char *extraheaders, double maxspeed, const char *post_content_type, const unsigned char *postbuf, size_t postbufsize, unsigned char *buf, size_t bufsize, curl_callback_t callback, void *cbdata);
+void Curl_Cancel_ToMemory(curl_callback_t callback, void* cbdata);
+
+void Curl_Init(void);
+void Curl_Init_Commands(void);
+void Curl_Shutdown(void);
+void Curl_CancelAll(void);
+void Curl_Clear_forthismap(void);
+qboolean Curl_Have_forthismap(void);
+void Curl_Register_predownload(void);
 
-void Curl_ClearRequirements();
+void Curl_ClearRequirements(void);
 void Curl_RequireFile(const char *filename);
-void Curl_SendRequirements();
+void Curl_SendRequirements(void);
 
 typedef struct Curl_downloadinfo_s
 {
@@ -21,7 +37,7 @@ typedef struct Curl_downloadinfo_s
        qboolean queued;
 }
 Curl_downloadinfo_t;
-Curl_downloadinfo_t *Curl_GetDownloadInfo(int *nDownloads, const char **additional_info);
+Curl_downloadinfo_t *Curl_GetDownloadInfo(int *nDownloads, const char **additional_info, char *addinfo, size_t addinfolength);
        // this may and should be Z_Free()ed
        // the result is actually an array
        // an additional info string may be returned in additional_info as a