From 26bfde40a4bda6a93082a629eab53ab1d6fa3920 Mon Sep 17 00:00:00 2001 From: emre Date: Sun, 31 May 2026 21:56:06 +0300 Subject: [PATCH] =?UTF-8?q?libcurl=20=C3=B6rnek?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- curl/build.sh | 3 +++ curl/main.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100755 curl/build.sh create mode 100644 curl/main.c diff --git a/curl/build.sh b/curl/build.sh new file mode 100755 index 0000000..9d720ba --- /dev/null +++ b/curl/build.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +gcc -Wall main.c -lcurl diff --git a/curl/main.c b/curl/main.c new file mode 100644 index 0000000..085f252 --- /dev/null +++ b/curl/main.c @@ -0,0 +1,54 @@ +#include +#include +#include + +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; +}