summaryrefslogtreecommitdiff
path: root/src/net.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/net.c')
-rw-r--r--src/net.c113
1 files changed, 60 insertions, 53 deletions
diff --git a/src/net.c b/src/net.c
index 6f14089..6d566f2 100644
--- a/src/net.c
+++ b/src/net.c
@@ -6,83 +6,90 @@
#include <curl/curl.h>
#include <stdlib.h>
-size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata)
+size_t write_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
{
- assert(ptr != NULL);
- assert(userdata != NULL);
+ assert(ptr != NULL);
+ assert(userdata != NULL);
- struct memory *chunk = (struct memory*)userdata;
- size_t nsize = chunk->size + nmemb;
+ struct net_write_data *chunk = (struct net_write_data*)userdata;
+ size_t nsize = chunk->size + nmemb;
- chunk->buffer = realloc(chunk->buffer, nsize);
+ chunk->buffer = realloc(chunk->buffer, nsize);
- if (nsize > chunk->size)
- memcpy(&chunk->buffer[chunk->size], ptr, nmemb);
+ if (nsize > chunk->size)
+ memcpy(&chunk->buffer[chunk->size], ptr, nmemb);
- chunk->size = nsize;
+ chunk->size = nsize;
- return nmemb;
+ return nmemb;
}
size_t write_file_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
{
- assert(ptr != NULL);
- assert(ptr != NULL);
+ assert(ptr != NULL);
+ assert(ptr != NULL);
+
+ struct net_file_write_data * user =
+ (struct net_file_write_data*)userdata;
+
+ if (user->file == NULL) {
+ fprintf(stderr, "net: Write failed, "
+ "file stream could not be found!\n");
+ return 0;
+ }
- struct net_fwrite_userdata *user = (struct net_fwrite_userdata*)userdata;
-
- if (user->file == NULL) {
- fprintf(stderr, "net: Write failed, file stream could not be found!\n");
- return 0;
- }
-
- return fwrite(ptr, nmemb, 1, user->file);
+ return fwrite(ptr, size, nmemb, user->file);
}
int net_init()
{
- CURLcode result = curl_global_init(CURL_GLOBAL_ALL);
- if (result != CURLE_OK)
- return -NETINITERR;
- return 0;
+ CURLcode result = curl_global_init(CURL_GLOBAL_ALL);
+ if (result != CURLE_OK)
+ return -NETINITERR;
+ return SUCCESS;
}
void net_shutdown()
{
- curl_global_cleanup();
+ curl_global_cleanup();
}
-int net_send_request(char *url, struct memory *mem, int write_opts)
+int net_send_request(char *url, int write_opts, void* userdata)
{
- assert(mem != NULL);
- CURL *curl;
- curl = curl_easy_init();
- if (!curl)
- return -CONINITERR;
-
- curl_easy_setopt(curl, CURLOPT_URL, url);
+ assert(url != NULL);
+ assert(userdata != NULL);
+ CURL *curl;
+ curl = curl_easy_init();
+
+ if (!curl)
+ return -CONINITERR;
- if (write_opts == WRITE_OPT_MEMORY)
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
- else if (write_opts == WRITE_OPT_FILE)
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_file_cb);
- else {
- fprintf(stderr, "net: a valid write_opts must be specified! current: %d", write_opts);
- }
-
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)mem);
- curl_easy_setopt(curl, CURLOPT_CA_CACHE_TIMEOUT, 604800L);
-
- CURLcode result;
- result = curl_easy_perform(curl);
+ curl_easy_setopt(curl, CURLOPT_URL, url);
+
+ if (write_opts == WRITE_OPT_MEMORY) {
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_cb);
+ } else if (write_opts == WRITE_OPT_FILE) {
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_file_cb);
+ } else {
+ fprintf(stderr, "net: a valid write_opts must be specified! "
+ "current: %d",
+ write_opts);
+ return -CONINITERR;
+ }
+
+ curl_easy_setopt(curl, CURLOPT_WRITEDATA, userdata);
+ curl_easy_setopt(curl, CURLOPT_CA_CACHE_TIMEOUT, 604800L);
+
+ CURLcode result;
+ result = curl_easy_perform(curl);
- if (result != CURLE_OK) {
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(result));
- return -(CONREQERR + result);
- }
+ if (result != CURLE_OK) {
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",
+ curl_easy_strerror(result));
+ return -(CONREQERR + result);
+ }
- curl_easy_cleanup(curl);
+ curl_easy_cleanup(curl);
- return 0;
+ return SUCCESS;
}