]>
Commit | Line | Data |
---|---|---|
3fa2d384 VP |
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 | } |