aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/INTERNALS47
1 files changed, 37 insertions, 10 deletions
diff --git a/docs/INTERNALS b/docs/INTERNALS
index ed79d3853..5fe8b29c9 100644
--- a/docs/INTERNALS
+++ b/docs/INTERNALS
@@ -12,6 +12,17 @@ INTERNALS
Thus, the largest amount of code and complexity is in the library part.
+CVS
+===
+
+ All changes to the sources are committed to the CVS repository as soon as
+ they're somewhat verified to work. Changes shall be commited as independently
+ as possible so that individual changes can be easier spotted and tracked
+ afterwards.
+
+ Tagging shall be used extensively, and by the time we release new archives we
+ should tag the sources with a name similar to the released version number.
+
Windows vs Unix
===============
@@ -47,9 +58,9 @@ Library
=======
As described elsewhere, libcurl is meant to get two different "layers" of
- interface. At the present point only the high-level, the "easy", interface
- has been fully implemented and thus documented. We assume the easy-interface
- in this description, the low-level interface will be documented when fully
+ interfaces. At the present point only the high-level, the "easy", interface
+ has been fully implemented and documented. We assume the easy-interface in
+ this description, the low-level interface will be documented when fully
implemented.
There are plenty of entry points to the library, namely each publicly defined
@@ -57,11 +68,14 @@ Library
rather small and easy-to-follow. All the ones prefixed with 'curl_easy' are
put in the lib/easy.c file.
+ curl_easy_init() allocates an internal struct and makes some initializations.
+ The returned handle does not revail internals.
+
curl_easy_setopt() takes a three arguments, where the option stuff must be
passed in pairs, the parameter-ID and the parameter-value. The list of
options is documented in the man page.
- curl_easy_perform() does a whole lot of things.
+ curl_easy_perform() does a whole lot of things:
The function analyzes the URL, get the different components and connects to
the remote host. This may involve using a proxy and/or using SSL. The
@@ -131,11 +145,12 @@ Library
lib/getenv.c offers curl_getenv() which is for reading environment variables
in a neat platform independent way. That's used in the client, but also in
- lib/url.c when checking the PROXY variables.
+ lib/url.c when checking the proxy environment variables.
- lib/netrc.c keeps the .netrc parser
+ lib/netrc.c holds the .netrc parser
lib/timeval.c features replacement functions for systems that don't have
+ gettimeofday().
A function named curl_version() that returns the full curl version string is
found in lib/version.c.
@@ -143,10 +158,10 @@ Library
Client
======
- main() resides in src/main.c together with most of the client
- code. src/hugehelp.c is automatically generated by the mkhelp.pl perl script
- to display the complete "manual" and the src/urlglob.c file holds the
- functions used for the multiple-URL support.
+ main() resides in src/main.c together with most of the client code.
+ src/hugehelp.c is automatically generated by the mkhelp.pl perl script to
+ display the complete "manual" and the src/urlglob.c file holds the functions
+ used for the multiple-URL support.
The client mostly mess around to setup its config struct properly, then it
calls the curl_easy_*() functions of the library and when it gets back
@@ -158,4 +173,16 @@ Client
curl_easy_getinfo() function to extract useful information from the curl
session.
+Test Suite
+==========
+
+ During November 2000, a test suite has evolved. It is placed in its own
+ subdirectory directly off the root in the curl archive tree, and it contains
+ a bunch of scripts and a lot of test case data.
+
+ The main test script is runtests.pl that will invoke the two servers
+ httpserver.pl and ftpserver.pl before all the test cases are performed. The
+ test suite currently only runs on unix-like platforms.
+ You'll find a complete description of the test case data files in the README
+ file in the test directory.