#define CURLE_HTTP_RETURNED_ERROR CURLE_HTTP_NOT_FOUND
#endif
+#if LIBCURL_VERSION_NUM < 0x070c03
+#define NO_CURL_IOCTL
+#endif
+
struct slot_results
{
CURLcode curl_result;
extern size_t fread_buffer(void *ptr, size_t eltsize, size_t nmemb, void *strbuf);
extern size_t fwrite_buffer(const void *ptr, size_t eltsize, size_t nmemb, void *strbuf);
extern size_t fwrite_null(const void *ptr, size_t eltsize, size_t nmemb, void *strbuf);
+#ifndef NO_CURL_IOCTL
+extern curlioerr ioctl_buffer(CURL *handle, int cmd, void *clientp);
+#endif
/* Slot lifecycle functions */
extern struct active_request_slot *get_active_slot(void);
extern void step_active_slots(void);
#endif
+extern struct curl_slist *no_pragma_header;
+
+#define RANGE_HEADER_SIZE 30
+
extern void http_init(struct remote *remote);
extern void http_cleanup(void);
extern int data_received;
extern int active_requests;
+extern int http_is_verbose;
extern char curl_errorstr[CURL_ERROR_SIZE];
#define missing_target(a) missing__target((a)->http_code, (a)->curl_result)
+/* Options for http_request_*() */
+#define HTTP_NO_CACHE 1
+
+/* Return values for http_request_*() */
+#define HTTP_OK 0
+#define HTTP_MISSING_TARGET 1
+#define HTTP_ERROR 2
+#define HTTP_START_FAILED 3
+
+/*
+ * Requests an url and stores the result in a strbuf.
+ *
+ * If the result pointer is NULL, a HTTP HEAD request is made instead of GET.
+ */
+int http_get_strbuf(const char *url, struct strbuf *result, int options);
+
+/*
+ * Downloads an url and stores the result in the given file.
+ *
+ * If a previous interrupted download is detected (i.e. a previous temporary
+ * file is still around) the download is resumed.
+ */
+int http_get_file(const char *url, const char *filename, int options);
+
+/*
+ * Prints an error message using error() containing url and curl_errorstr,
+ * and returns ret.
+ */
+int http_error(const char *url, int ret);
+
extern int http_fetch_ref(const char *base, struct ref *ref);
#endif /* HTTP_H */