diff options
| -rw-r--r-- | include/download.h | 2 | ||||
| -rw-r--r-- | src/download.c | 17 | 
2 files changed, 15 insertions, 4 deletions
| diff --git a/include/download.h b/include/download.h index 41eba98..440c749 100644 --- a/include/download.h +++ b/include/download.h @@ -8,6 +8,6 @@  #include <curl/curl.h>  size_t download_writer(void *fp, size_t size, size_t nmemb, void *stream); -int download(char *url, const char *filename); +long download(char *url, const char *filename, char **errmsg);  #endif //OMC_DOWNLOAD_H 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 | 
