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    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
  43out_curl:
  44    curl_easy_cleanup(curl);
  45
  46    return err;
  47}
  48