                         _ _ _                     _ 
                        | (_) |__   ___ _   _ _ __| |
                        | | | '_ \ / __| | | | '__| |
                        | | | |_) | (__| |_| | |  | |
                        |_|_|_.__/ \___|\__,_|_|  |_|


                     How To Use Libcurl In Your Program

Interfaces

 libcurl currently offers two different interfaces to the URL transfer
 engine. They can be seen as one low-level and one high-level, in the sense
 that the low-level one will allow you to deal with a lot more details but on
 the other hand not offer as many fancy features (such as Location:
 following). The high-level interface is supposed to be a built-in
 implementation of the low-level interface. You will not be able to mix
 function calls from the different layers.

 As we currently ONLY support the high-level interface, the so called easy
 interface, I will not attempt to describe any low-level functions at this
 point.

Function descriptions

 The interface is meant to be very simple for very simple
 implementations. Thus, we have minimized the number of entries.

The Easy Interface

 When using the easy interface, you init your easy-session and get a handle,
 which you use as input to the following interface functions you use.

 You continue by setting all the options you want in the upcoming transfer,
 most important among them is the URL itself. You might want to set some
 callbacks as well that will be called from the library when data is available
 etc.

 When all is setup, you tell libcurl to perform the transfer. It will then do
 the entire operation and won't return until it is done or failed.

 After the transfer has been made, you cleanup the easy-session's handle and
 libcurl is entirely off the hook!

        curl_easy_init() 
        curl_easy_setopt() 
        curl_easy_perform() 
        curl_easy_cleanup() 

 While the above four functions are the main functions to use in the easy
 interface, there is a series of helpful functions to use. They are:

        curl_version()        - displays the libcurl version
        curl_getdate()        - converts a date string to time_t
        curl_getenv()         - portable environment variable reader
        curl_formparse()      - helps building a HTTP form POST
        curl_slist_append()   - builds a linked list
        curl_slist_free_all() - frees a whole curl_slist

 Read the separate man pages for these functions for details!

