Files
simyager/curl/main.c
T
2026-05-31 21:56:06 +03:00

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