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

README

  Curl is a command line tool for transfering data specified with URL
  syntax. Find out how to use Curl by reading the curl.1 man page or the
  README.curl document. Find out how to install Curl by reading the INSTALL
  document.

  libcurl is a library that Curl is using to do its job. It is readily
  available to be used by your software. Read the README.libcurl document to
  find out how!

  You find answers to the most frequent questions we get in the FAQ document.

  Always try the Curl web site for the latest news:

        http://curl.haxx.se

  The official download mirror sites are:

        Sweden --  ftp://ftp.sunet.se/pub/www/utilities/curl/
        Germany -- ftp://ftp.fu-berlin.de/pub/unix/network/curl/

  To download the very latest source off the CVS server do this:

        cvs -d :pserver:anonymous@cvs.curl.sourceforge.net:/cvsroot/curl login

        (just press enter when asked for password)

        cvs -d :pserver:anonymous@cvs.curl.sourceforge.net:/cvsroot/curl co .

        (now, you'll get all the latest sources downloaded into your current
        directory. Note that this does not create a directory named curl or
        anything)

        cvs -d :pserver:anonymous@cvs.curl.sourceforge.net:/cvsroot/curl logout
        
        (you're off the hook!)
