From cc935245624c9c8892fd122826dda210d4dab656 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Mon, 15 Apr 2024 00:45:03 -0400 Subject: Fix return code from download() * Will return -1 on error * Still returns HTTP code if error is server-side --- src/download.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/download.c b/src/download.c index a64b349..cbb617f 100644 --- a/src/download.c +++ b/src/download.c @@ -14,7 +14,7 @@ long download(char *url, const char *filename, char **errmsg) { extern char *VERSION; CURL *c; CURLcode curl_code; - long http_code; + long http_code = -1; FILE *fp; char user_agent[20]; sprintf(user_agent, "omc/%s", VERSION); @@ -25,7 +25,7 @@ long download(char *url, const char *filename, char **errmsg) { curl_easy_setopt(c, CURLOPT_WRITEFUNCTION, download_writer); fp = fopen(filename, "wb"); if (!fp) { - return 1; + return -1; } curl_easy_setopt(c, CURLOPT_VERBOSE, 0L); curl_easy_setopt(c, CURLOPT_FOLLOWLOCATION, 1L); @@ -37,12 +37,14 @@ long download(char *url, const char *filename, char **errmsg) { if (errmsg) { strcpy(*errmsg, curl_easy_strerror(curl_code)); } else { - fprintf(stderr, "CURL ERROR: %s\n", curl_easy_strerror(curl_code)); + fprintf(stderr, "\nCURL ERROR: %s\n", curl_easy_strerror(curl_code)); } + goto failed; } curl_easy_getinfo(c, CURLINFO_RESPONSE_CODE, &http_code); - fclose(fp); + failed: + fclose(fp); curl_easy_cleanup(c); curl_global_cleanup(); return http_code; -- cgit