]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/pxp/netstring/doc/README
Initial revision
[helm.git] / helm / DEVEL / pxp / netstring / doc / README
diff --git a/helm/DEVEL/pxp/netstring/doc/README b/helm/DEVEL/pxp/netstring/doc/README
new file mode 100644 (file)
index 0000000..b590416
--- /dev/null
@@ -0,0 +1,212 @@
+******************************************************************************
+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
+
+
+