Skip to content
Snippets Groups Projects
Commit 7eb7f7c3 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

libcurl.3: fix formatting

refer to functions with the man page section properly
parent b486d1ce
No related branches found
No related tags found
No related merge requests found
...@@ -148,18 +148,16 @@ the library code. For example, when libcurl is built for SSL ...@@ -148,18 +148,16 @@ the library code. For example, when libcurl is built for SSL
capability via the GNU TLS library, there is an elaborate tree inside capability via the GNU TLS library, there is an elaborate tree inside
that library that describes the SSL protocol. that library that describes the SSL protocol.
\fIcurl_global_init()\fP is the function that you must call. This may \fIcurl_global_init(3)\fP is the function that you must call. This may
allocate resources (e.g. the memory for the GNU TLS tree mentioned allocate resources (e.g. the memory for the GNU TLS tree mentioned above), so
above), so the companion function \fIcurl_global_cleanup()\fP releases the companion function \fIcurl_global_cleanup(3)\fP releases them.
them.
The basic rule for constructing a program that uses libcurl is this: Call
The basic rule for constructing a program that uses libcurl is this: \fIcurl_global_init(3)\fP, with a \fICURL_GLOBAL_ALL\fP argument, immediately
Call \fIcurl_global_init()\fP, with a \fICURL_GLOBAL_ALL\fP argument, after the program starts, while it is still only one thread and before it uses
immediately after the program starts, while it is still only one libcurl at all. Call \fIcurl_global_cleanup(3)\fP immediately before the
thread and before it uses libcurl at all. Call program exits, when the program is again only one thread and after its last
\fIcurl_global_cleanup()\fP immediately before the program exits, when use of libcurl.
the program is again only one thread and after its last use of
libcurl.
You can call both of these multiple times, as long as all calls meet You can call both of these multiple times, as long as all calls meet
these requirements and the number of calls to each is the same. these requirements and the number of calls to each is the same.
...@@ -184,48 +182,42 @@ your code doesn't know about other parts of the program -- it doesn't ...@@ -184,48 +182,42 @@ your code doesn't know about other parts of the program -- it doesn't
know whether they use libcurl or not. And its code doesn't necessarily know whether they use libcurl or not. And its code doesn't necessarily
run at the start and end of the whole program. run at the start and end of the whole program.
A module like this must have global constant functions of its own, A module like this must have global constant functions of its own, just like
just like \fIcurl_global_init()\fP and \fIcurl_global_cleanup()\fP. \fIcurl_global_init(3)\fP and \fIcurl_global_cleanup(3)\fP. The module thus
The module thus has control at the beginning and end of the program has control at the beginning and end of the program and has a place to call
and has a place to call the libcurl functions. Note that if multiple the libcurl functions. Note that if multiple modules in the program use
modules in the program use libcurl, they all will separately call the libcurl, they all will separately call the libcurl functions, and that's OK
libcurl functions, and that's OK because only the first because only the first \fIcurl_global_init(3)\fP and the last
\fIcurl_global_init()\fP and the last \fIcurl_global_cleanup()\fP in a \fIcurl_global_cleanup(3)\fP in a program change anything. (libcurl uses a
program change anything. (libcurl uses a reference count in static reference count in static memory).
memory).
In a C++ module, it is common to deal with the global constant situation by
In a C++ module, it is common to deal with the global constant defining a special class that represents the global constant environment of
situation by defining a special class that represents the global the module. A program always has exactly one object of the class, in static
constant environment of the module. A program always has exactly one storage. That way, the program automatically calls the constructor of the
object of the class, in static storage. That way, the program object as the program starts up and the destructor as it terminates. As the
automatically calls the constructor of the object as the program author of this libcurl-using module, you can make the constructor call
starts up and the destructor as it terminates. As the author of this \fIcurl_global_init(3)\fP and the destructor call \fIcurl_global_cleanup(3)\fP
libcurl-using module, you can make the constructor call and satisfy libcurl's requirements without your user having to think about it.
\fIcurl_global_init()\fP and the destructor call
\fIcurl_global_cleanup()\fP and satisfy libcurl's requirements without \fIcurl_global_init(3)\fP has an argument that tells what particular parts of
your user having to think about it. the global constant environment to set up. In order to successfully use any
value except \fICURL_GLOBAL_ALL\fP (which says to set up the whole thing), you
\fIcurl_global_init()\fP has an argument that tells what particular must have specific knowledge of internal workings of libcurl and all other
parts of the global constant environment to set up. In order to parts of the program of which it is part.
successfully use any value except \fICURL_GLOBAL_ALL\fP (which says to
set up the whole thing), you must have specific knowledge of internal A special part of the global constant environment is the identity of the
workings of libcurl and all other parts of the program of which it is memory allocator. \fIcurl_global_init(3)\fP selects the system default memory
part. allocator, but you can use \fIcurl_global_init_mem(3)\fP to supply one of your
own. However, there is no way to use \fIcurl_global_init_mem(3)\fP in a
A special part of the global constant environment is the identity of modular program -- all modules in the program that might use libcurl would
the memory allocator. \fIcurl_global_init()\fP selects the system have to agree on one allocator.
default memory allocator, but you can use \fIcurl_global_init_mem()\fP
to supply one of your own. However, there is no way to use There is a failsafe in libcurl that makes it usable in simple situations
\fIcurl_global_init_mem()\fP in a modular program -- all modules in without you having to worry about the global constant environment at all:
the program that might use libcurl would have to agree on one \fIcurl_easy_init(3)\fP sets up the environment itself if it hasn't been done
allocator. yet. The resources it acquires to do so get released by the operating system
automatically when the program exits.
There is a failsafe in libcurl that makes it usable in simple
situations without you having to worry about the global constant
environment at all: \fIcurl_easy_init()\fP sets up the environment
itself if it hasn't been done yet. The resources it acquires to do so
get released by the operating system automatically when the program
exits.
This failsafe feature exists mainly for backward compatibility because This failsafe feature exists mainly for backward compatibility because
there was a time when the global functions didn't exist. Because it there was a time when the global functions didn't exist. Because it
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment