https://everything.curl.dev/libcurl/libcurl [https] [https] Search ^K Introduction How to read The cURL project Network and protocols Install curl and libcurl Source code Build curl and libcurl Command line concepts Command line transfers Command line HTTP Command line FTP libcurl Header files Global initialization API compatibility --libcurl multi-threading CURLcode return codes Verbose operations Caches Performance for C++ programmers libcurl transfers libcurl HTTP libcurl helpers libcurl examples libcurl bindings libcurl internals Index Powered By GitBook --libcurl We actively encourage users to first try out the transfer they want to do with the curl command-line tool, and once it works roughly the way you want it to, you append the --libcurl [filename] option to the command line and run it again. The --libcurl command-line option creates a C program in the provided file name. That C program is an application that uses libcurl to run the transfer you just had the curl command-line tool do. There are some exceptions and it is not always a 100% match, but you might find that it can serve as an excellent inspiration source for what libcurl options you want or can use and what additional arguments to provide to them. If you specify the filename as a single dash, as in --libcurl - you get the program written to stdout instead of a file. As an example, we run a command to get http://example.com: curl http://example.com --libcurl example.c This creates example.c in the current directory, looking similar to this: /********* Sample code generated by the curl command-line tool ********** * All curl_easy_setopt() options are documented at: * https://curl.se/libcurl/c/curl_easy_setopt.html ************************************************************************ / #include int main(int argc, char *argv[]) { CURLcode ret; CURL *hnd; hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_URL, "http://example.com"); curl_easy_setopt(hnd, CURLOPT_NOPROGRESS, 1L); curl_easy_setopt(hnd, CURLOPT_USERAGENT, "curl/7.45.0"); curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L); curl_easy_setopt(hnd, CURLOPT_SSH_KNOWNHOSTS, "/home/daniel/.ssh/known_hosts"); curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L); /* Here is a list of options the curl code used that cannot get generated as source easily. You may select to either not use them or implement them yourself. CURLOPT_WRITEDATA set to a objectpointer CURLOPT_WRITEFUNCTION set to a functionpointer CURLOPT_READDATA set to a objectpointer CURLOPT_READFUNCTION set to a functionpointer CURLOPT_SEEKDATA set to a objectpointer CURLOPT_SEEKFUNCTION set to a functionpointer CURLOPT_ERRORBUFFER set to a objectpointer CURLOPT_STDERR set to a objectpointer CURLOPT_HEADERFUNCTION set to a functionpointer CURLOPT_HEADERDATA set to a objectpointer */ ret = curl_easy_perform(hnd); curl_easy_cleanup(hnd); hnd = NULL; return (int)ret; } /**** End of sample code ****/ Previous API compatibility Next multi-threading Last modified 15d ago