1 /* 2 * Copyright (c) 2018 Virtuozzo International GmbH 3 * 4 * This work is licensed under the terms of the GNU GPL, version 2 or later. 5 * 6 */ 7 8 #include "qemu/osdep.h" 9 #include <curl/curl.h> 10 #include "download.h" 11 12 int download_url(const char *name, const char *url) 13 { 14 int err = 0; 15 FILE *file; 16 CURL *curl = curl_easy_init(); 17 18 if (!curl) { 19 return 1; 20 } 21 22 file = fopen(name, "wb"); 23 if (!file) { 24 err = 1; 25 goto out_curl; 26 } 27 28 curl_easy_setopt(curl, CURLOPT_URL, url); 29 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL); 30 curl_easy_setopt(curl, CURLOPT_WRITEDATA, file); 31 curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); 32 curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0); 33 34 if (curl_easy_perform(curl) != CURLE_OK) { 35 err = 1; 36 fclose(file); 37 unlink(name); 38 goto out_curl; 39 } 40 41 err = fclose(file); 42 43 out_curl: 44 curl_easy_cleanup(curl); 45 46 return err; 47 } 48