Loading docs/INTERNALS +37 −10 Original line number Diff line number Diff line Loading @@ -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 =============== Loading Loading @@ -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 Loading @@ -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 Loading Loading @@ -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. Loading @@ -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 Loading @@ -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. Loading
docs/INTERNALS +37 −10 Original line number Diff line number Diff line Loading @@ -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 =============== Loading Loading @@ -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 Loading @@ -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 Loading Loading @@ -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. Loading @@ -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 Loading @@ -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.