$Id$
                                  _   _ ____  _     
                              ___| | | |  _ \| |    
                             / __| | | | |_) | |    
                            | (__| |_| |  _ <| |___ 
                             \___|\___/|_| \_\_____|

                     Source Code Functions Apps Might Use
                     ====================================

The libcurl source code offers a few functions by source only. They are not
part of the official libcurl API, but the source files might be useful for
others so apps can optionally compile/build with these sources to gain
additional functions.

We provide them through a single header file for easy access for apps:
"curlx.h"

 curlx_strtoofft()

   A macro that converts a string containing a number to a curl_off_t number.
   This might use the curlx_strtoll() function which is provided as source
   code in strtoofft.c. Note that the function is only provided if no
   strtoll() (or equivalent) function exist on your platform. If curl_off_t
   is only a 32 bit number on your platform, this macro uses strtol().

 curlx_tvnow()

   returns a struct timeval for the current time.

 curlx_tvdiff()

   returns the difference between two timeval structs, in number of
   milliseconds.

 curlx_tvdiff_secs()

   returns the same as curlx_tvdiff but with full usec resolution (as a
   double)

FUTURE
======

 Several functions will be removed from the public curl_ name space in a
 future libcurl release. They will then only become available as curlx_
 functions instead. To make the transition easier, we already today provide
 these functions with the curlx_ prefix to allow sources to get built properly
 with the new function names. The functions this concerns are:

      curlx_getenv
      curlx_strequal
      curlx_strnequal
      curlx_mvsnprintf
      curlx_msnprintf
      curlx_maprintf
      curlx_mvaprintf
      curlx_msprintf
      curlx_mprintf
      curlx_mfprintf
      curlx_mvsprintf
      curlx_mvprintf
      curlx_mvfprintf
