55 lines
1.3 KiB
C
55 lines
1.3 KiB
C
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <curl/curl.h>
|
|
|
|
static size_t write_callback(char *ptr, size_t size, size_t nmemb, void *stream)
|
|
{
|
|
size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
|
|
return written;
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
int ret = EXIT_FAILURE;
|
|
if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
|
|
fputs("error: curl_global_init failed.\n", stderr);
|
|
return ret;
|
|
}
|
|
|
|
CURL *curl = curl_easy_init();
|
|
if (!curl) {
|
|
fputs("error: curl_easy_init failed.\n", stderr);
|
|
goto GLOB_CLEAN;
|
|
}
|
|
|
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
|
|
|
/* curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); */
|
|
|
|
char const* file_name = "example.html";
|
|
FILE *stream = fopen(file_name, "w");
|
|
if (!stream) {
|
|
fprintf(stderr, "failed to open %s\n", file_name);
|
|
goto EASY_CLEAN;
|
|
}
|
|
|
|
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
|
|
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)stream);
|
|
|
|
CURLcode result = curl_easy_perform(curl);
|
|
fclose(stream);
|
|
|
|
if (result != CURLE_OK) {
|
|
fprintf(stderr, "error: %s\n", curl_easy_strerror(result));
|
|
goto EASY_CLEAN;
|
|
}
|
|
|
|
ret = EXIT_SUCCESS;
|
|
|
|
EASY_CLEAN:
|
|
curl_easy_cleanup(curl);
|
|
GLOB_CLEAN:
|
|
curl_global_cleanup();
|
|
return ret;
|
|
}
|