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


                     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 be 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 performance is made, you cleanup the easy-session's handle and
 libcurl is entire off the hook!

 See the separate man pages for the libcurl functions for details:

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

