| /* |
| * TclWeb.c -- |
| * Common API layer. |
| * |
| * These are the standalone (CGI) variants of the functions found in |
| * TclWeb.h. Low-level implementations are provided in this file. |
| */ |
| |
| /* Copyright 2002-2004 The Apache Software Foundation |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| */ |
| |
| /* $Id$ */ |
| |
| /* Rivet config */ |
| #ifdef HAVE_CONFIG_H |
| #include <config.h> |
| #endif |
| |
| #include <tcl.h> |
| #include "TclWeb.h" |
| |
| typedef struct _TclWebRequest { |
| Tcl_Interp *interp; |
| int header_sent; |
| Tcl_HashTable *headers; |
| int status; |
| } TclWebRequest; |
| |
| int |
| TclWeb_InitRequest(TclWebRequest *req, void *arg) |
| { |
| req = Tcl_Alloc(sizeof(TclWebRequest)); |
| req->headers = Tcl_Alloc(sizeof(Tcl_HashTable)); |
| Tcl_InitHashTable(req->headers, TCL_STRING_KEYS); |
| return TCL_OK; |
| } |
| |
| /* All these are still TODO. */ |
| |
| int |
| TclWeb_SendHeaders(TclWebRequest *req) |
| { |
| return TCL_OK; |
| } |
| |
| int |
| TclWeb_HeaderSet(char *header, char *val, TclWebRequest *req); |
| |
| int |
| TclWeb_SetStatus(int status, TclWebRequest *req); |
| |
| int |
| TclWeb_GetCGIVars(Tcl_Obj *list, TclWebRequest *req); |
| |
| int |
| TclWeb_GetEnvVars(Tcl_Obj *list, TclWebRequest *req); |
| |
| int |
| TclWeb_Base64Encode(char *out, char *in, int len, TclWebRequest *req); |
| |
| int |
| TclWeb_Base64Decode(char *out, char *in, int len, TclWebRequest *req); |
| |
| int |
| TclWeb_EscapeShellCommand(char *out, char *in, TclWebRequest *req); |
| |
| /* output/write/flush? */ |
| |
| /* error (log) ? send to stderr with some information. */ |