
BUGS
====

TODO
====

* getting the plain post data. I use mod_dtcl as an xml server and I
  need to collect the broken xml (due to query string proccessing). if
  the user enters in the xml "=" I am lost. (From yahalom emet).

* session handling. this feature can not be added by a tcl package so
  it is missing from the interface.  (From yahalom emet).

* Write commands like 'open' and such in the request namespace that
  keep track of open file pointers and close them in the cleanup.

* Complete the NWS package.

* Swipe include_* from NWS and rework it like: include ?-virtual?
  ?-noparse? file

* Re-write load_file.  This basically loads an entire .tcl file into
  the current document instead of sourcing it.  This will allow us to
  cache even pages which only source a huge .tcl file.  load_virtual
  should do the same but relative to the document root.

* Create escape_string and unescape_string using Apache conventions.

* Free Rivet commands of apache dependencies, which are moved into the
  TclWebapache.c file.  Compatible file, for CGI only operating,
  TclWebcgi.c needs to be created.

* Create replacements, in Tcl where possible, for Rivet commands in
  order to enable the aforementioned 'CGI' mode of operation.

* Need to add a local.tcl for local procs and setup.

* Script timeouts - limit time scripts can run before bailing out.

* Safe mode.

* Add documentation for commands implemented in Tcl.

* Make some tests for commands implemented in Tcl.

* Integrate package documentation with main documentation.

* Document the 'form' package.

* Integrate ncgi package, to help migration for people using it.

* I think we need some kind of unified interface to launching tcl
  'services'.  These are separate Tcl processes that most likely exist
  to allow the Apache children to share data.

* Find a way of integrating the Tcl event loop?

* Document and add tests for parserivetdata command.

MAYBE
=====

* Maybe move ::request commands into a file called request.tcl.


DONE
====

* Nice logo.

* Documentation in XML.

* var_get and var_post commands.

* Apache 2 interface.
