Provided by: clearsilver-dev_0.10.5-4build1_amd64 bug


       cgi_register_parse_cb  - Register a parse callback


       #include <cgi/cgi.h>

       NEOERR *cgi_register_parse_cb(CGI *cgi, const char *method, const char *ctype,
                                     void *rock, CGI_PARSE_CB parse_cb);


       cgi - a CGI struct
       method - the HTTP method you want to handle, or * for all
       ctype - the HTTP Content-Type you want to handle, or * for all
       rock - opaque data that we'll pass to your call back


       The ClearSilver CGI Kit has built-in functionality to handle the following methods: GET ->
       doesn't have any data except query string, which is processed  for  all  methods  POST  w/
       application/x-www-form-urlencoded  POST  w/  multipart/form-data processed as RFC2388 data
       into files and HDF (see cgi_filehandle()) PUT (any type) The entire data chunk  is  stored
       as  a  file,  with  meta  data  in  HDF (similar to single files in RFC2388).  The data is
       accessible via cgi_filehandle with NULL for name.  To handle other methods/content  types,
       you  have  to  register  your  own  parse  function.   This  isn't necessary if you aren't
       expecting any data, and technically HTTP  only  allows  data  on  PUT/POST  requests  (and
       presumably  user  defined  methods).   In  particular, if you want to implement XML-RPC or
       SOAP, you'll have to register a callback here to grab the XML data chunk.  Usually  you'll
       want  to register POST w/ application/xml or POST w/ text/xml (you either need to register
       both  or  register   POST   w/   *   and   check   the   ctype   yourself,   remember   to
       nerr_raise(CGIParseNotHandled)  if  you  aren't  handling  the  POST).   In  general, your
       callback should: Find out how  much  data  is  available:  l  =  hdf_get_value  (cgi->hdf,
       "CGI.ContentLength",  NULL);  len  =  atoi(l);  And  read/handle  all  of  the  data using
       cgiwrap_read.  See the builtin handlers for how this is done.  Note that  cgiwrap_read  is
       not  guarunteed  to return all of the data you request (just like fread(3)) since it might
       be reading of a socket.  Sorry.  You should be careful when reading the data to watch  for
       short reads (ie, end of file) and cases where the client sends you data ad infinitum.




       cgi_debug_init(3),         cgi_parse(3),         cgi_destroy(3),         cgi_js_escape(3),
       cgi_html_escape_strfunc(3),  cgi_register_strfuncs(3),  cgi_output(3),   parse_rfc2388(3),
       cgi_url_validate(3),      open_upload(3),      cgi_cs_init(3),     cgi_url_escape_more(3),
       cgi_html_strip_strfunc(3),    cgi_neo_error(3),    cgi_redirect(3),     cgi_filehandle(3),
       cgi_register_parse_cb(3),     cgi_url_escape(3),     cgi_init(3),     cgi_redirect_uri(3),
       cgi_cookie_clear(3),      cgi_url_unescape(3),      cgi_vredirect(3),      cgi_display(3),
       cgi_html_ws_strip(3),     cgi_error(3),    cgi_cookie_set(3),    cgi_text_html_strfunc(3),