diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/download.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/download.c b/src/download.c index 6be567e..a64b349 100644 --- a/src/download.c +++ b/src/download.c @@ -2,6 +2,7 @@ // Created by jhunk on 10/5/23. // +#include <string.h> #include "download.h" size_t download_writer(void *fp, size_t size, size_t nmemb, void *stream) { @@ -9,9 +10,11 @@ size_t download_writer(void *fp, size_t size, size_t nmemb, void *stream) { return bytes; } -int download(char *url, const char *filename) { +long download(char *url, const char *filename, char **errmsg) { extern char *VERSION; CURL *c; + CURLcode curl_code; + long http_code; FILE *fp; char user_agent[20]; sprintf(user_agent, "omc/%s", VERSION); @@ -29,10 +32,18 @@ int download(char *url, const char *filename) { curl_easy_setopt(c, CURLOPT_USERAGENT, user_agent); curl_easy_setopt(c, CURLOPT_NOPROGRESS, 0L); curl_easy_setopt(c, CURLOPT_WRITEDATA, fp); - curl_easy_perform(c); + curl_code = curl_easy_perform(c); + if (curl_code != CURLE_OK) { + if (errmsg) { + strcpy(*errmsg, curl_easy_strerror(curl_code)); + } else { + fprintf(stderr, "CURL ERROR: %s\n", curl_easy_strerror(curl_code)); + } + } + curl_easy_getinfo(c, CURLINFO_RESPONSE_CODE, &http_code); fclose(fp); curl_easy_cleanup(c); curl_global_cleanup(); - return 0; + return http_code; }
\ No newline at end of file |