Man Linux: Main Page and Category List


       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), cgi_cookie_authority