diff options
| author | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-02-06 06:07:09 -0500 | 
|---|---|---|
| committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-02-06 06:07:40 -0500 | 
| commit | bf3bb228f028cc3d990f1dd54d8d03af038fe91d (patch) | |
| tree | 4d5e63398a19398817b1fbe89b935a39b8a7b40b /src | |
| parent | b6225dc7cadb63161150283e99b902ea8a89dceb (diff) | |
| download | stasis-bf3bb228f028cc3d990f1dd54d8d03af038fe91d.tar.gz | |
Improve download()
* Returns HTTP status code
* Emits curl error message to stderr (or to a buffer if the third argument is not NULL)
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 | 
