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 | |