(*
OCaml HTTP - do it yourself (fully OCaml) HTTP daemon
- Copyright (C) <2002> Stefano Zacchiroli <zack@cs.unibo.it>
+ Copyright (C) <2002-2004> Stefano Zacchiroli <zack@cs.unibo.it>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
*)
(** Helpers and other not better classified functions which should not be
-visible to the final user *)
+exposed in the final API *)
(** @return the current date compliant to RFC 1123, which updates RFC 822
zone info are retrieved from UTC *)
(** explode a string in a char list *)
val string_explode: string -> char list
+
(** implode a char list in a string *)
val string_implode: char list -> string
(** build a Unix.sockaddr inet address from a string representation of an IP
address and a port number *)
val build_sockaddr: string * int -> Unix.sockaddr
+
(** explode an _inet_ Unix.sockaddr address in a string representation of an
IP address and a port number *)
val explode_sockaddr: Unix.sockaddr -> string * int
(** given an out_channel build on top of a socket, return peername related to
that socket *)
val peername_of_out_channel: out_channel -> Unix.sockaddr
+
(** as above but works on in_channels *)
val peername_of_in_channel: in_channel -> Unix.sockaddr
+ (** given an out_channel build on top of a socket, return sockname related to
+ that socket *)
+val sockname_of_out_channel: out_channel -> Unix.sockaddr
+
+ (** as above but works on in_channels *)
+val sockname_of_in_channel: in_channel -> Unix.sockaddr
+
+ (* TODO replace with Buffer.add_channel which does almost the same :-((( *)
+ (** reads from an input channel till it End_of_file and returns what has been
+ read; if limit is given returned buffer will contains at most first 'limit'
+ bytes read from input channel *)
+val buf_of_inchan: ?limit: int -> in_channel -> Buffer.t
+
+ (** like List.assoc but return all bindings of a given key instead of the
+ leftmost one only *)
+val list_assoc_all: 'a -> ('a * 'b) list -> 'b list
+