mirror of
https://github.com/curl/curl.git
synced 2025-01-30 14:22:33 +08:00
more text added
This commit is contained in:
parent
12cdfd282d
commit
5deab7ad27
@ -24,14 +24,16 @@ About this Document
|
||||
Building
|
||||
|
||||
There are many different ways to build C programs. This chapter will assume
|
||||
a unix-style build process
|
||||
a unix-style build process. If you use a different build system, you can
|
||||
still read this to get general information that may apply to your
|
||||
environment as well.
|
||||
|
||||
Compiling the Program
|
||||
|
||||
Your compiler needs to know where the libcurl headers are
|
||||
located. Therefore you must set your compiler's include path to point to
|
||||
the directory where you installed them. The 'curl-config' tool can be used
|
||||
to get this information:
|
||||
the directory where you installed them. The 'curl-config'[3] tool can be
|
||||
used to get this information:
|
||||
|
||||
$ curl-config --cflags
|
||||
|
||||
@ -62,6 +64,17 @@ Building
|
||||
different libcurls.
|
||||
|
||||
|
||||
Portable Code in a Portable World
|
||||
|
||||
The people behind libcurl have put a considerable effort to make libcurl work
|
||||
on a large amount of different operating systems and environments.
|
||||
|
||||
You program libcurl the same way on all platforms that libcurl runs on. There
|
||||
are only very few minor considerations that differs. If you just make sure to
|
||||
write your code portable enough, you may very well create yourself a very
|
||||
portable program. libcurl shouldn't stop you from that.
|
||||
|
||||
|
||||
Global Preparation
|
||||
|
||||
The program must initialize some of the libcurl functionality globally. That
|
||||
@ -150,6 +163,19 @@ Handle the easy libcurl
|
||||
and the function that gets invoked by libcurl. libcurl itself won't touch the
|
||||
data you pass with CURLOPT_FILE.
|
||||
|
||||
libcurl offers its own default internal callback that'll take care of the
|
||||
data if you don't set the callback with CURLOPT_WRITEFUNCTION. It will then
|
||||
simply output the received data to stdout. You can have the default callback
|
||||
write the data to a different file handle by passing a 'FILE *' to a file
|
||||
opened for writing with the CURLOPT_FILE option.
|
||||
|
||||
Now, we need to take a step back and have a deep breath. Here's one of those
|
||||
rare platform-dependent nitpicks. Did you spot it? On some platforms[2],
|
||||
libcurl won't be able to operate on files opened by the program. Thus, if you
|
||||
use the default callback and pass in a an open file with CURLOPT_FILE, it
|
||||
will crash. You should therefore avoid this to make your program run fine
|
||||
virtually everywhere.
|
||||
|
||||
There are of course many more options you can set, and we'll get back to a
|
||||
few of them later. Let's instead continue to the actual transfer:
|
||||
|
||||
@ -173,6 +199,7 @@ Handle the easy libcurl
|
||||
you intend to make another transfer. libcurl will then attempt to re-use the
|
||||
previous
|
||||
|
||||
|
||||
When It Doesn't Work
|
||||
|
||||
There will always be times when the transfer fails for some reason. You might
|
||||
@ -188,6 +215,14 @@ When It Doesn't Work
|
||||
wht the server behaves the way it does. Include headers in the normal body
|
||||
output with CURLOPT_HEADER set TRUE.
|
||||
|
||||
Of course there are bugs left. We need to get to know about them to be able
|
||||
to fix them, so we're quite dependent on your bug reports! When you do report
|
||||
suspected bugs in libcurl, please include as much details you possibly can: a
|
||||
protocol dump that CURLOPT_VERBOSE produces, library version, as much as
|
||||
possible of your code that uses libcurl, operating system name and version,
|
||||
compiler name and version etc.
|
||||
|
||||
|
||||
Upload Data to a Remote Site
|
||||
|
||||
libcurl tries to keep a protocol independent approach to most transfers, thus
|
||||
@ -231,6 +266,19 @@ Upload Data to a Remote Site
|
||||
fast as possible. The callback should return the number of bytes it wrote in
|
||||
the buffer. Returning 0 will signal the end of the upload.
|
||||
|
||||
|
||||
Passwords
|
||||
|
||||
Many protocols use or even require that user name and password are provided
|
||||
to be able to download or upload the data of your choice. libcurl offers
|
||||
several ways to specify them.
|
||||
|
||||
[ URL, options, callback ]
|
||||
|
||||
|
||||
Showing Progress
|
||||
|
||||
|
||||
libcurl with C++
|
||||
|
||||
There's basicly only one thing to keep in mind when using C++ instead of C
|
||||
@ -253,6 +301,16 @@ libcurl with C++
|
||||
any "this" pointer available etc.
|
||||
|
||||
|
||||
Security Considerations
|
||||
|
||||
|
||||
Certificates and Other SSL Tricks
|
||||
|
||||
|
||||
Future
|
||||
|
||||
|
||||
|
||||
-----
|
||||
Footnotes:
|
||||
|
||||
@ -260,3 +318,11 @@ Footnotes:
|
||||
but libcurl does not support the chunked transfers on uploading that is
|
||||
necessary for this feature to work. We'd gratefully appreciate patches
|
||||
that bring this functionality...
|
||||
|
||||
[2] = This happens on Windows machines when libcurl is built and used as a
|
||||
DLL. However, you can still do this on Windows if you link with a static
|
||||
library.
|
||||
|
||||
[3] = The curl-config tool is generated at build-time (on unix-like systems)
|
||||
and should be installed with the 'make install' or similar instruction
|
||||
that installs the library, header files, man pages etc.
|
||||
|
Loading…
Reference in New Issue
Block a user