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 will create 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 will 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 will get the program written to stdout
instead of a file.
As an example, we run a command to just 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 <curl/curl.h>​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 generatedas source easily. You may select to either not use them or implementthem yourself.​CURLOPT_WRITEDATA set to a objectpointerCURLOPT_WRITEFUNCTION set to a functionpointerCURLOPT_READDATA set to a objectpointerCURLOPT_READFUNCTION set to a functionpointerCURLOPT_SEEKDATA set to a objectpointerCURLOPT_SEEKFUNCTION set to a functionpointerCURLOPT_ERRORBUFFER set to a objectpointerCURLOPT_STDERR set to a objectpointerCURLOPT_HEADERFUNCTION set to a functionpointerCURLOPT_HEADERDATA set to a objectpointer​*/​ret = curl_easy_perform(hnd);​curl_easy_cleanup(hnd);hnd = NULL;​return (int)ret;}/**** End of sample code ****/