aboutsummaryrefslogtreecommitdiff
path: root/include/url.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/url.h')
-rw-r--r--include/url.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/include/url.h b/include/url.h
new file mode 100644
index 0000000..99a8b96
--- /dev/null
+++ b/include/url.h
@@ -0,0 +1,44 @@
+#ifndef SPM_SPM_URL_H
+#define SPM_SPM_URL_H
+
+#include <stdio.h>
+#include <string.h>
+#ifndef WIN32
+# include <sys/time.h>
+#endif
+#include <stdlib.h>
+#include <errno.h>
+
+#include <curl/curl.h>
+
+enum fcurl_type_e {
+ CFTYPE_NONE = 0,
+ CFTYPE_FILE = 1,
+ CFTYPE_CURL = 2
+};
+
+struct fcurl_data
+{
+ enum fcurl_type_e type; /* type of handle */
+ union {
+ CURL *curl;
+ FILE *file;
+ } handle; /* handle */
+
+ char *buffer; /* buffer to store cached data*/
+ size_t buffer_len; /* currently allocated buffers length */
+ size_t buffer_pos; /* end of data in buffer*/
+ int still_running; /* Is background url fetch still in progress */
+};
+
+typedef struct fcurl_data URL_FILE;
+
+/* exported functions */
+URL_FILE *url_fopen(const char *url, const char *operation);
+int url_fclose(URL_FILE *file);
+int url_feof(URL_FILE *file);
+size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file);
+char *url_fgets(char *ptr, size_t size, URL_FILE *file);
+void url_rewind(URL_FILE *file);
+
+#endif // SPM_SPM_URL_H