qemu/contrib/elf2dmp/download.c
<<
>>
Prefs
   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
  12int 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    if (curl_easy_setopt(curl, CURLOPT_URL, url) != CURLE_OK
  29            || curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL) != CURLE_OK
  30            || curl_easy_setopt(curl, CURLOPT_WRITEDATA, file) != CURLE_OK
  31            || curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1) != CURLE_OK
  32            || curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0) != CURLE_OK
  33            || curl_easy_perform(curl) != CURLE_OK) {
  34        unlink(name);
  35        fclose(file);
  36        err = 1;
  37    } else {
  38        err = fclose(file);
  39    }
  40
  41out_curl:
  42    curl_easy_cleanup(curl);
  43
  44    return err;
  45}
  46