--- /dev/null
+******************************************************************************
+README - Netstring, string processing functions for the net
+******************************************************************************
+
+
+==============================================================================
+Abstract
+==============================================================================
+
+Netstring is a collection of string processing functions that are useful in
+conjunction with Internet messages and protocols. In particular, it contains
+functions for the following purposes:
+
+- Parsing MIME messages
+
+- Several encoding/decoding functions (Base 64, Quoted Printable, Q,
+ URL-encoding)
+
+- A new implementation of the CGI interface that allows users to upload files
+
+- A simple HTML parser
+
+- URL parsing, printing and processing
+
+- Conversion between character sets
+
+==============================================================================
+Download
+==============================================================================
+
+You can download Netstring as gzip'ed tarball [1].
+
+==============================================================================
+Documentation
+==============================================================================
+
+Sorry, there is no manual. The mli files describe each function in detail.
+Furthermore, the following additional information may be useful.
+
+------------------------------------------------------------------------------
+New CGI implementation
+------------------------------------------------------------------------------
+
+For a long time, the CGI implementation by Jean-Christophe Filliatre has been
+the only freely available module that implemented the CGI interface (it also
+based on code by Daniel de Rauglaudre). It worked well, but it did not support
+file uploads because this requires a parser for MIME messages.
+
+The main goal of Netstring is to realize such uploads, and because of this it
+contains an almost complete parser for MIME messages.
+
+The new CGI implementation provides the same functions than the old one, and
+some extensions. If you call Cgi.parse_args(), you get the CGI parameters as
+before, but as already explained this works also if the parameters are
+encaspulated as MIME message. In the HTML code, you can select the MIME format
+by using
+
+<form action="..." method="post" enctype="multipart/form-data">
+...
+</form>
+
+
+- this "enctype" attribute forces the browser to send the form parameters as
+multipart MIME message (Note: You can neither send the parameters of a
+conventional hyperlink as MIME message nor the form parameters if the "method"
+is "get"). In many browsers only this particular encoding enables the file
+upload elements, you cannot perform file uploads with other encodings.
+
+As MIME messages can transport MIME types, filename, and other additional
+properties, it is also possible to get these using the enhanced interface.
+After calling
+
+Cgi.parse_arguments config
+
+you can get all available information about a certain parameter by invoking
+
+let param = Cgi.argument "name"
+
+- where "param" has the type "argument". There are several accessor functions
+to extract the various aspects of arguments (name, filename, value by string,
+value by temporary file, MIME type, MIME header) from "argument" values.
+
+------------------------------------------------------------------------------
+Base64, and other encodings
+------------------------------------------------------------------------------
+
+Netstring is also the successor of the Base64 package. It provides a Base64
+compatible interface, and an enhanced API. The latter is contained in the
+Netencoding module which also offers implementations of the "quoted printable",
+"Q", and "URL" encodings. Please see netencoding.mli for details.
+
+------------------------------------------------------------------------------
+The MIME scanner functions
+------------------------------------------------------------------------------
+
+In the Mimestring module you can find several functions scanning parts of MIME
+messages. These functions already cover most aspects of MIME messages: Scanning
+of headers, analysis of structured header entries, and scanning of multipart
+bodies. Of course, a full-featured MIME scanner would require some more
+functions, especially concrete parsers for frequent structures (mail addresses
+or date strings).
+
+Please see the file mimestring.mli for details.
+
+------------------------------------------------------------------------------
+The HTML parser
+------------------------------------------------------------------------------
+
+The HTML parser should be able to read every HTML file; whether it is correct
+or not. The parser tries to recover from parsing errors as much as possible.
+
+The parser returns the HTML term as conventional recursive value (i.e. no
+object-oriented design).
+
+The parser depends a bit on knowledge about the HTML version; mainly because it
+needs to know the tags that are always empty. It may be necessary that you must
+adjust this configuration before the parser works well enough for your purpose.
+
+Please see the Nethtml module for details.
+
+------------------------------------------------------------------------------
+The abstract data type URL
+------------------------------------------------------------------------------
+
+The module Neturl contains support for URL parsing and processing. The
+implementation follows strictly the standards RFC 1738 and RFC 1808. URLs can
+be parsed, and several accessor functions allow the user to get components of
+parsed URLs, or to change components. Modifying URLs is safe; it is impossible
+to create a URL that does not have a valid string representation.
+
+Both absolute and relative URLs are supported. It is possible to apply a
+relative URL to a base URL in order to get the corresponding absolute URL.
+
+------------------------------------------------------------------------------
+Conversion between character sets and encodings
+------------------------------------------------------------------------------
+
+The module Netconversion converts strings from one characters set to another.
+It is Unicode-based, and there are conversion tables for more than 50
+encodings.
+
+==============================================================================
+Author, Copying
+==============================================================================
+
+Netstring has been written by Gerd Stolpmann [2]. You may copy it as you like,
+you may use it even for commercial purposes as long as the license conditions
+are respected, see the file LICENSE coming with the distribution. It allows
+almost everything.
+
+==============================================================================
+History
+==============================================================================
+
+- Changed in 0.9.3: Fixed a bug in the "install" rule of the Makefile.
+
+- Changed in 0.9.2: New format for the conversion tables which are now much
+ smaller.
+
+- Changed in 0.9.1: Updated the Makefile such that (native-code) compilation
+ of netmappings.ml becomes possible.
+
+- Changed in 0.9: Extended Mimestring module: It can now process RFC-2047
+ messages.
+ New Netconversion module which converts strings between character encodings.
+
+- Changed in 0.8.1: Added the component url_accepts_8bits to
+ Neturl.url_syntax. This helps processing URLs which intentionally contain
+ bytes >= 0x80.
+ Fixed a bug: Every URL containing a 'j' was malformed!
+
+- Changed in 0.8: Added the module Neturl which provides the abstract data
+ types of URLs.
+ The whole package is now thread-safe.
+ Added printers for the various opaque data types.
+ Added labels to function arguments where appropriate. The following
+ functions changed their signatures significantly: Cgi.mk_memory_arg,
+ Cgi.mk_file_arg.
+
+- Changed in 0.7: Added workarounds for frequent browser bugs. Some functions
+ take now an additional argument specifying which workarounds are enabled.
+
+- Changed in 0.6.1: Updated URLs in documentation.
+
+- Changed in 0.6: The file upload has been re-implemented to support large
+ files; the file is now read block by block and the blocks can be collected
+ either in memory or in a temporary file.
+ Furthermore, the CGI API has been revised. There is now an opaque data type
+ "argument" that hides all implementation details and that is extensible (if
+ necessary, it is possible to add features without breaking the interface
+ again).
+ The CGI argument parser can be configured; currently it is possible to limit
+ the size of uploaded data, to control by which method arguments are
+ processed, and to set up where temporary files are created.
+ The other parts of the package that have nothing to do with CGI remain
+ unchanged.
+
+- Changed in 0.5.1: A mistake in the documentation has been corrected.
+
+- Initial version 0.5: The Netstring package wants to be the successor of the
+ Base64-0.2 and the Cgi-0.3 packages. The sum of both numbers is 0.5, and
+ because of this, the first version number is 0.5.
+
+
+--------------------------
+
+[1] see http://www.ocaml-programming.de/packages/netstring-0.9.2.tar.gz
+
+[2] see mailto:gerd@gerd-stolpmann.de
+
+
+