+++ /dev/null
-(* $Id$
- * ----------------------------------------------------------------------
- *
- *)
-
-(**********************************************************************)
-(* Several encodings important for the net *)
-(**********************************************************************)
-
-
-(**********************************************************************)
-(* Base 64 encoding *)
-(**********************************************************************)
-
-(* See RFC 2045 for a description of Base 64 encoding. *)
-
-(* THREAD-SAFETY:
- * All Base64 functions are reentrant and thus thread-safe.
- *)
-
-module Base64 : sig
-
- val encode : ?pos:int -> ?len:int -> ?linelength:int -> ?crlf:bool ->
- string -> string
- (* Compute the "base 64" encoding of the given string argument.
- * Note that the result is a string that only contains the characters
- * a-z, A-Z, 0-9, +, /, =, and optionally spaces, CR and LF characters.
- *
- * If pos and/or len are passed, only the substring starting at
- * pos (default: 0) with length len (default: rest of the string)
- * is encoded.
- *
- * The result is divided up into lines not longer than 'linelength'
- * (without counting the line separator); default: do not divide lines.
- * If 'linelength' is smaller than 4, no line division is performed.
- * If 'linelength' is not divisible by 4, the produced lines are a
- * bit shorter than 'linelength'.
- *
- * If 'crlf' (default: false) the lines are ended by CRLF; otherwise
- * they are only ended by LF.
- * (You need the crlf option to produce correct MIME messages.)
- *
- *)
-
- val url_encode : ?pos:int -> ?len:int -> ?linelength:int -> ?crlf:bool ->
- string -> string
- (* Same as 'encode' but use slightly different characters that can be
- * part of URLs without additional encodings.
- * The encoded string consists only of the characters a-z, A-Z, 0-9,
- * -, /, .
- * 'url_encode' does NOT implement the Base 64 encoding as described
- * in the standard!
- *)
-
- val encode_substring : string -> pos:int -> len:int -> linelength:int ->
- crlf:bool -> string
- (* *** DEPRECATED FUNCTION *** Use 'encode' instead! ***
- *
- * encode_substring s pos len linelen crlf:
- * Encodes the substring at position 'pos' in 's' with length 'len'.
- * The result is divided up into lines not longer than 'linelen' (without
- * counting the line separator).
- * If 'linelen' is smaller than 4, no line division is performed.
- * If 'linelen' is not divisible by 4, the produced lines are a
- * bit shorter than 'linelen'.
- * If 'crlf' the lines are ended by CRLF; otherwise they are only
- * ended by LF.
- * (You need the crlf option to produce correct MIME messages.)
- *)
-
- val decode : ?pos:int -> ?len:int -> ?url_variant:bool ->
- ?accept_spaces:bool -> string -> string
- (* Decodes the given string argument.
- *
- * If pos and/or len are passed, only the substring starting at
- * pos (default: 0) with length len (default: rest of the string)
- * is decoded.
- *
- * If url_variant (default: true) is set, the functions also
- * accepts the characters '-' and '.' as produced by 'url_encode'.
- *
- * If accept_spaces (default: false) is set, the function ignores
- * white space contained in the string to decode (otherwise the
- * function fails if it finds white space).
- *)
-
- val decode_ignore_spaces : string -> string
- (* *** DEPRECATED FUNCTION *** Use 'decode' instead! ***
- *
- * Decodes the string, too, but it is allowed that the string contains
- * whitespace characters.
- * This function is slower than 'decode'.
- *)
-
- val decode_substring : string -> pos:int -> len:int -> url_variant:bool ->
- accept_spaces:bool -> string
- (* *** DEPRECATED FUNCTION *** Use 'decode' instead! ***
- *
- * decode_substring s pos len url spaces:
- * Decodes the substring of 's' beginning at 'pos' with length 'len'.
- * If 'url', strings created by 'url_encode' are accepted, too.
- * If 'spaces', whitespace characters are allowed in the string.
- *)
-end
-
-(**********************************************************************)
-(* Quoted printable encoding *)
-(**********************************************************************)
-
-(* See RFC 2045.
- * This implementation assumes that the encoded string has a text MIME
- * type. Because of this, the characters CR and LF are never protected
- * by hex tokens; they are copied literally to the output string.
- *)
-
-(* THREAD-SAFETY:
- * All QuotedPrintable functions are reentrant and thus thread-safe.
- *)
-
-module QuotedPrintable :
- sig
- val encode : ?pos:int -> ?len:int -> string -> string
- (* Encodes the string and returns it.
- * Note line breaks:
- * No additional soft line breaks are added. The characters CR
- * and LF are not represented as =0D resp. =0A. (But other control
- * characters ARE encoded.)
- * Note unsafe characters:
- * As recommended by RFC 2045, the characters !\"#$@[]^`{|}~
- * are additionally represented as hex tokens. -- "
- *
- * If pos and/or len are passed, only the substring starting at
- * pos (default: 0) with length len (default: rest of the string)
- * is encoded.
- *)
-
- val encode_substring : string -> pos:int -> len:int -> string
- (* *** DEPRECATED FUNCTION *** Use 'encode' instead! ***
- * encode_substring s pos len:
- * Encodes the substring of 's' beginning at 'pos' with length 'len'.
- *)
-
- val decode : ?pos:int -> ?len:int -> string -> string
- (* Decodes the string and returns it.
- * Most format errors cause an Invalid_argument exception.
- * Note that soft line breaks can be properly decoded although
- * 'encode' will never produce them.
- *
- * If pos and/or len are passed, only the substring starting at
- * pos (default: 0) with length len (default: rest of the string)
- * is decoded.
- *)
-
- val decode_substring : string -> pos:int -> len:int -> string
- (* *** DEPRECATED FUNCTION *** Use 'decode' instead! ***
- * decode_substring s pos len:
- * Decodes the substring of 's' beginning at 'pos' with length 'len'.
- *)
-
- end
-
-(**********************************************************************)
-(* Q encoding *)
-(**********************************************************************)
-
-(* See RFC 2047.
- * The functions behave similar to those of QuotedPrintable.
- *)
-
-(* THREAD-SAFETY:
- * All Q functions are reentrant and thus thread-safe.
- *)
-
-module Q :
- sig
- val encode : ?pos:int -> ?len:int -> string -> string
- (* Note:
- * All characters except alphanumeric characters are protected by
- * hex tokens.
- * In particular, spaces are represented as "=20", not as "_".
- *)
-
- val decode : ?pos:int -> ?len:int -> string -> string
-
- val encode_substring : string -> pos:int -> len:int -> string
- (* *** DEPRECATED FUNCTION *** Use 'encode' instead! *** *)
-
- val decode_substring : string -> pos:int -> len:int -> string
- (* *** DEPRECATED FUNCTION *** Use 'decode' instead! *** *)
- end
-
-(**********************************************************************)
-(* B encoding *)
-(**********************************************************************)
-
-(* The B encoding of RFC 2047 is the same as Base64. *)
-
-
-(**********************************************************************)
-(* URL-encoding *)
-(**********************************************************************)
-
-(* Encoding/Decoding within URLs:
- *
- * The following two functions perform the '%'-substitution for
- * characters that may otherwise be interpreted as metacharacters.
- *
- * According to: RFC 1738, RFC 1630
- *)
-
-(* THREAD-SAFETY:
- * The Url functions are thread-safe.
- *)
-
-module Url :
- sig
- val decode : string -> string
- val encode : string -> string
- end
-
-
-(**********************************************************************)
-(* HTMLization *)
-(**********************************************************************)
-
-(* Encodes characters that need protection by converting them to
- * entity references. E.g. "<" is converted to "<".
- * As the entities may be named, there is a dependency on the character
- * set. Currently, there are only functions for the Latin 1 alphabet.
- *)
-
-(* THREAD-SAFETY:
- * The Html functions are thread-safe.
- *)
-
-module Html :
- sig
- val encode_from_latin1 : string -> string
- (* Encodes the characters 0-8, 11-12, 14-31, '<', '>', '"', '&',
- * 127-255. If the characters have a name, a named entity is
- * preferred over a numeric entity.
- *)
- val decode_to_latin1 : string -> string
- (* Decodes the string. Unknown named entities are left as they
- * are (i.e. decode_to_latin1 "&nonsense;" = "&nonsense;").
- * The same applies to numeric entities greater than 255.
- *)
- end
-
-
-(* ======================================================================
- * History:
- *
- * $Log$
- * Revision 1.1 2000/11/17 09:57:27 lpadovan
- * Initial revision
- *
- * Revision 1.4 2000/06/25 22:34:43 gerd
- * Added labels to arguments.
- *
- * Revision 1.3 2000/06/25 21:15:48 gerd
- * Checked thread-safety.
- *
- * Revision 1.2 2000/03/03 01:08:29 gerd
- * Added Netencoding.Html functions.
- *
- * Revision 1.1 2000/03/02 01:14:48 gerd
- * Initial revision.
- *
- *
- *)