The widely available libcurl
is a library for downloading files
over protocols like HTTP. We will use libcurl
with
CFFI to download a web page.
Please note that there are many other ways to download files from the
web, not least the cl-curl project to provide bindings to
libcurl
via a similar FFI.1
libcurl-tutorial(3)
is a tutorial for libcurl
programming in C. We will follow
that to develop a binding to download a file. We will also use
curl.h, easy.h, and the man pages for the
libcurl
function, all available in the ‘curl-dev’ package
or equivalent for your system, or in the cURL source code
package. If you have the development package, the headers should be
installed in /usr/include/curl/, and the man pages
may be accessed through your favorite man facility.
[1] Specifically,
UFFI, an older FFI that takes a somewhat different
approach compared to CFFI. I believe that these days (December
2005) CFFI is more portable and actively developed, though not as
mature yet. Consensus in the free unix Common Lisp community
seems to be that CFFI is preferred for new development, though
UFFI will likely go on for quite some time as many projects
already use it. CFFI includes the UFFI-COMPAT
package for
complete compatibility with UFFI.