You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rivet-dev@tcl.apache.org by mx...@apache.org on 2011/02/08 01:37:23 UTC
svn commit: r1068238 [2/2] - in /tcl/rivet/branches/rivet-namespace: ./ doc/
doc/xml/ rivet/ rivet/rivet-tcl/ src/ src/apache-2/
Modified: tcl/rivet/branches/rivet-namespace/src/apache-2/rivetCore.c
URL: http://svn.apache.org/viewvc/tcl/rivet/branches/rivet-namespace/src/apache-2/rivetCore.c?rev=1068238&r1=1068237&r2=1068238&view=diff
==============================================================================
--- tcl/rivet/branches/rivet-namespace/src/apache-2/rivetCore.c (original)
+++ tcl/rivet/branches/rivet-namespace/src/apache-2/rivetCore.c Tue Feb 8 00:37:22 2011
@@ -8,7 +8,7 @@
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
+ 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,
@@ -34,10 +34,8 @@
#include "http_log.h"
#include "http_main.h"
#include "util_script.h"
-//#include "http_conf_globals.h"
#include "http_config.h"
-
#include <tcl.h>
#include <string.h>
#include <stdio.h>
@@ -48,9 +46,9 @@
#include "rivet.h"
#include "TclWeb.h"
-#define ENV_ARRAY_NAME "env"
-#define HEADERS_ARRAY_NAME "headers"
-#define COOKIES_ARRAY_NAME "cookies"
+#define ENV_ARRAY_NAME "env"
+#define HEADERS_ARRAY_NAME "headers"
+#define COOKIES_ARRAY_NAME "cookies"
extern module rivet_module;
extern char* TclWeb_GetRawPost (TclWebRequest *req);
@@ -62,13 +60,13 @@ extern char* TclWeb_GetRawPost (TclWebRe
*
* Rivet_MakeURL --
*
- * Make a self-referencing URL.
+ * Make a self-referencing URL.
*
* Results:
- * Standard Tcl result.
+ * Standard Tcl result.
*
* Side Effects:
- * None.
+ * None.
*
*-----------------------------------------------------------------------------
*/
@@ -80,8 +78,8 @@ TCL_CMD_HEADER( Rivet_MakeURL )
if (objc != 2)
{
- Tcl_WrongNumArgs(interp, 1, objv, "filename");
- return TCL_ERROR;
+ Tcl_WrongNumArgs(interp, 1, objv, "filename");
+ return TCL_ERROR;
}
result = Tcl_NewObj();
TclWeb_MakeURL(result, Tcl_GetString(objv[1]), globals->req);
@@ -94,22 +92,22 @@ TCL_CMD_HEADER( Rivet_MakeURL )
*
* Rivet_Parse --
*
- * Include and parse a Rivet file.
+ * Include and parse a Rivet file.
*
* Results:
- * Standard Tcl result.
+ * Standard Tcl result.
*
* Side Effects:
- * Whatever occurs in the Rivet page parsed.
+ * Whatever occurs in the Rivet page parsed.
*
*-----------------------------------------------------------------------------
*/
TCL_CMD_HEADER( Rivet_Parse )
{
- char *filename;
+ char *filename;
apr_status_t stat_s;
- apr_finfo_t finfo_b;
+ apr_finfo_t finfo_b;
rivet_interp_globals *globals = Tcl_GetAssocData(interp, "rivet", NULL);
@@ -138,7 +136,7 @@ TCL_CMD_HEADER( Rivet_Parse )
stat_s = apr_stat(&finfo_b,filename,APR_FINFO_NORM,globals->r->pool);
if (stat_s != APR_SUCCESS)
{
- char apr_error_message[256];
+ char apr_error_message[256];
Tcl_AddErrorInfo(interp,apr_strerror(stat_s,apr_error_message,256));
return TCL_ERROR;
@@ -156,14 +154,14 @@ TCL_CMD_HEADER( Rivet_Parse )
*
* Rivet_Include --
*
- * Includes a file literally in the output stream. Useful for
- * images, plain HTML and the like.
+ * Includes a file literally in the output stream. Useful for
+ * images, plain HTML and the like.
*
* Results:
- * A standard Tcl result.
+ * A standard Tcl result.
*
* Side Effects:
- * Adds to the output stream.
+ * Adds to the output stream.
*
*-----------------------------------------------------------------------------
*/
@@ -182,19 +180,19 @@ TCL_CMD_HEADER( Rivet_Include )
if( objc < 2 || objc > 3 )
{
- Tcl_WrongNumArgs(interp, 1, objv, "?-virtual? filename");
- return TCL_ERROR;
+ Tcl_WrongNumArgs(interp, 1, objv, "?-virtual? filename");
+ return TCL_ERROR;
}
if( objc == 2 ) {
- filename = Tcl_GetStringFromObj( objv[1], (int *)NULL );
+ filename = Tcl_GetStringFromObj( objv[1], (int *)NULL );
} else {
- if( !STREQU( Tcl_GetStringFromObj(objv[1], (int *)NULL), "-virtual") ) {
- Tcl_WrongNumArgs( interp, 1, objv, "?-virtual? filename" );
- return TCL_ERROR;
- }
- filename = TclWeb_GetVirtualFile( globals->req,
- Tcl_GetStringFromObj(objv[2], (int *)NULL) );
+ if( !STREQU( Tcl_GetStringFromObj(objv[1], (int *)NULL), "-virtual") ) {
+ Tcl_WrongNumArgs( interp, 1, objv, "?-virtual? filename" );
+ return TCL_ERROR;
+ }
+ filename = TclWeb_GetVirtualFile( globals->req,
+ Tcl_GetStringFromObj(objv[2], (int *)NULL) );
}
fd = Tcl_OpenFileChannel(interp, filename, "r", 0664);
@@ -210,9 +208,9 @@ TCL_CMD_HEADER( Rivet_Include )
sz = Tcl_ReadChars(fd, outobj, -1, 0);
if (sz == -1)
{
- Tcl_AddErrorInfo(interp, Tcl_PosixError(interp));
- Tcl_DecrRefCount(outobj);
- return TCL_ERROR;
+ Tcl_AddErrorInfo(interp, Tcl_PosixError(interp));
+ Tcl_DecrRefCount(outobj);
+ return TCL_ERROR;
}
/* What we are doing is saving the translation and encoding
@@ -238,13 +236,13 @@ TCL_CMD_HEADER( Rivet_Include )
*
* Rivet_Headers --
*
- * Command to manipulate HTTP headers from Tcl.
+ * Command to manipulate HTTP headers from Tcl.
*
* Results:
- * A standard Tcl result.
+ * A standard Tcl result.
*
* Side Effects:
- * None.
+ * None.
*
*-----------------------------------------------------------------------------
*/
@@ -256,71 +254,71 @@ TCL_CMD_HEADER( Rivet_Headers )
if (objc < 2)
{
- Tcl_WrongNumArgs(interp, 1, objv, "option arg ?arg ...?");
- return TCL_ERROR;
+ Tcl_WrongNumArgs(interp, 1, objv, "option arg ?arg ...?");
+ return TCL_ERROR;
}
if (globals->req->headers_printed != 0)
{
- Tcl_AddObjErrorInfo(interp,
- "Cannot manipulate headers - already sent", -1);
- return TCL_ERROR;
+ Tcl_AddObjErrorInfo(interp,
+ "Cannot manipulate headers - already sent", -1);
+ return TCL_ERROR;
}
opt = Tcl_GetStringFromObj(objv[1], NULL);
if (!strcmp("redirect", opt)) /* ### redirect ### */
{
- if (objc != 3)
- {
- Tcl_WrongNumArgs(interp, 2, objv, "new-url");
- return TCL_ERROR;
- }
- apr_table_set(globals->r->headers_out, "Location",
- Tcl_GetStringFromObj (objv[2], (int *)NULL));
- TclWeb_SetStatus(301, globals->req);
- return TCL_RETURN;
+ if (objc != 3)
+ {
+ Tcl_WrongNumArgs(interp, 2, objv, "new-url");
+ return TCL_ERROR;
+ }
+ apr_table_set(globals->r->headers_out, "Location",
+ Tcl_GetStringFromObj (objv[2], (int *)NULL));
+ TclWeb_SetStatus(301, globals->req);
+ return TCL_RETURN;
}
else if (!strcmp("set", opt)) /* ### set ### */
{
- if (objc != 4)
- {
- Tcl_WrongNumArgs(interp, 2, objv, "headername value");
- return TCL_ERROR;
- }
- TclWeb_HeaderSet(Tcl_GetString(objv[2]), Tcl_GetString(objv[3]), globals->req);
+ if (objc != 4)
+ {
+ Tcl_WrongNumArgs(interp, 2, objv, "headername value");
+ return TCL_ERROR;
+ }
+ TclWeb_HeaderSet(Tcl_GetString(objv[2]), Tcl_GetString(objv[3]), globals->req);
}
else if (!strcmp("add", opt)) /* ### set ### */
{
- if (objc != 4)
- {
- Tcl_WrongNumArgs(interp, 2, objv, "headername value");
- return TCL_ERROR;
- }
- TclWeb_HeaderAdd(Tcl_GetString(objv[2]), Tcl_GetString(objv[3]), globals->req);
+ if (objc != 4)
+ {
+ Tcl_WrongNumArgs(interp, 2, objv, "headername value");
+ return TCL_ERROR;
+ }
+ TclWeb_HeaderAdd(Tcl_GetString(objv[2]), Tcl_GetString(objv[3]), globals->req);
}
else if (!strcmp("type", opt)) /* ### set ### */
{
- if (objc != 3)
- {
- Tcl_WrongNumArgs(interp, 2, objv, "mime/type");
- return TCL_ERROR;
- }
- TclWeb_SetHeaderType(Tcl_GetString(objv[2]), globals->req);
+ if (objc != 3)
+ {
+ Tcl_WrongNumArgs(interp, 2, objv, "mime/type");
+ return TCL_ERROR;
+ }
+ TclWeb_SetHeaderType(Tcl_GetString(objv[2]), globals->req);
} else if (!strcmp("numeric", opt)) /* ### numeric ### */
{
- int st = 200;
+ int st = 200;
- if (objc != 3)
- {
- Tcl_WrongNumArgs(interp, 2, objv, "response_code_number");
- return TCL_ERROR;
- }
- if (Tcl_GetIntFromObj(interp, objv[2], &st) != TCL_ERROR) {
- TclWeb_SetStatus(st, globals->req);
- } else {
- return TCL_ERROR;
- }
+ if (objc != 3)
+ {
+ Tcl_WrongNumArgs(interp, 2, objv, "response_code_number");
+ return TCL_ERROR;
+ }
+ if (Tcl_GetIntFromObj(interp, objv[2], &st) != TCL_ERROR) {
+ TclWeb_SetStatus(st, globals->req);
+ } else {
+ return TCL_ERROR;
+ }
} else {
- return TCL_ERROR;
+ return TCL_ERROR;
}
return TCL_OK;
}
@@ -330,16 +328,16 @@ TCL_CMD_HEADER( Rivet_Headers )
*
* Rivet_LoadEnv --
*
- * Load the "environmental variables" - those variables that are
- * set in the environment in a standard CGI program. If no array
- * name is supplied, they are loaded into an array whose name is
- * the value of the ENV_ARRAY_NAME #define.
+ * Load the "environmental variables" - those variables that are
+ * set in the environment in a standard CGI program. If no array
+ * name is supplied, they are loaded into an array whose name is
+ * the value of the ENV_ARRAY_NAME #define.
*
* Results:
- * A standard Tcl result.
+ * A standard Tcl result.
*
* Side Effects:
- * None.
+ * None.
*
*-----------------------------------------------------------------------------
*/
@@ -350,14 +348,14 @@ TCL_CMD_HEADER( Rivet_LoadEnv )
rivet_interp_globals *globals = Tcl_GetAssocData(interp, "rivet", NULL);
if( objc > 2 ) {
- Tcl_WrongNumArgs( interp, 1, objv, "?arrayName?" );
- return TCL_ERROR;
+ Tcl_WrongNumArgs( interp, 1, objv, "?arrayName?" );
+ return TCL_ERROR;
}
if( objc == 2 ) {
- ArrayObj = objv[1];
+ ArrayObj = objv[1];
} else {
- ArrayObj = Tcl_NewStringObj( ENV_ARRAY_NAME, -1 );
+ ArrayObj = Tcl_NewStringObj( ENV_ARRAY_NAME, -1 );
}
return TclWeb_GetEnvVars(ArrayObj, globals->req);
@@ -368,15 +366,15 @@ TCL_CMD_HEADER( Rivet_LoadEnv )
*
* Rivet_LoadHeaders --
*
- * Load the HTTP headers supplied by the client into a Tcl array,
- * whose name defaults to the value of the HEADERS_ARRAY_NAME
- * #define.
+ * Load the HTTP headers supplied by the client into a Tcl array,
+ * whose name defaults to the value of the HEADERS_ARRAY_NAME
+ * #define.
*
* Results:
- * A standard Tcl result.
+ * A standard Tcl result.
*
* Side Effects:
- * Creates an array variable if none exists.
+ * Creates an array variable if none exists.
*
*-----------------------------------------------------------------------------
*/
@@ -387,14 +385,14 @@ TCL_CMD_HEADER ( Rivet_LoadHeaders )
rivet_interp_globals *globals = Tcl_GetAssocData(interp, "rivet", NULL);
if( objc > 2 ) {
- Tcl_WrongNumArgs( interp, 1, objv, "?arrayName?" );
- return TCL_ERROR;
+ Tcl_WrongNumArgs( interp, 1, objv, "?arrayName?" );
+ return TCL_ERROR;
}
if( objc == 2 ) {
- ArrayObj = objv[1];
+ ArrayObj = objv[1];
} else {
- ArrayObj = Tcl_NewStringObj( HEADERS_ARRAY_NAME, -1 );
+ ArrayObj = Tcl_NewStringObj( HEADERS_ARRAY_NAME, -1 );
}
return TclWeb_GetHeaderVars(ArrayObj, globals->req);
@@ -410,19 +408,19 @@ TCL_CMD_HEADER ( Rivet_LoadHeaders )
*
* Rivet_Var --
*
- * Returns information about GET or POST variables:
+ * Returns information about GET or POST variables:
*
- * var get foo ?default?
- * var list foo
- * var names
- * var number
- * var all
+ * var get foo ?default?
+ * var list foo
+ * var names
+ * var number
+ * var all
*
* Results:
- * A standard Tcl result.
+ * A standard Tcl result.
*
* Side Effects:
- * None.
+ * None.
*
*-----------------------------------------------------------------------------
*/
@@ -437,10 +435,10 @@ TCL_CMD_HEADER ( Rivet_Var )
if (objc < 2 || objc > 4)
{
- Tcl_WrongNumArgs(interp, 1, objv,
- "(get varname ?default?|list varname|exists varname|names"
- "|number|all)");
- return TCL_ERROR;
+ Tcl_WrongNumArgs(interp, 1, objv,
+ "(get varname ?default?|list varname|exists varname|names"
+ "|number|all)");
+ return TCL_ERROR;
}
cmd = Tcl_GetString(objv[0]);
command = Tcl_GetString(objv[1]);
@@ -453,84 +451,84 @@ TCL_CMD_HEADER ( Rivet_Var )
if (!strcmp(command, "get"))
{
- char *key = NULL;
- char *deflt = NULL;
- if (objc != 3 && objc != 4)
- {
- Tcl_WrongNumArgs(interp, 2, objv, "variablename ?defaultval?");
- return TCL_ERROR;
- }
- key = Tcl_GetStringFromObj(objv[2], NULL);
- if (objc == 4)
- {
- deflt = Tcl_GetString(objv[3]);
- }
-
- if (TclWeb_GetVar(result, key, source, globals->req) != TCL_OK)
- {
- if (deflt == NULL) {
- Tcl_SetStringObj(result, "", -1);
- } else {
- Tcl_SetStringObj(result, deflt, -1);
- }
- }
+ char *key = NULL;
+ char *deflt = NULL;
+ if (objc != 3 && objc != 4)
+ {
+ Tcl_WrongNumArgs(interp, 2, objv, "variablename ?defaultval?");
+ return TCL_ERROR;
+ }
+ key = Tcl_GetStringFromObj(objv[2], NULL);
+ if (objc == 4)
+ {
+ deflt = Tcl_GetString(objv[3]);
+ }
+
+ if (TclWeb_GetVar(result, key, source, globals->req) != TCL_OK)
+ {
+ if (deflt == NULL) {
+ Tcl_SetStringObj(result, "", -1);
+ } else {
+ Tcl_SetStringObj(result, deflt, -1);
+ }
+ }
} else if(!strcmp(command, "exists")) {
- char *key;
- if (objc != 3)
- {
- Tcl_WrongNumArgs(interp, 2, objv, "variablename");
- return TCL_ERROR;
- }
- key = Tcl_GetString(objv[2]);
+ char *key;
+ if (objc != 3)
+ {
+ Tcl_WrongNumArgs(interp, 2, objv, "variablename");
+ return TCL_ERROR;
+ }
+ key = Tcl_GetString(objv[2]);
- TclWeb_VarExists(result, key, source, globals->req);
+ TclWeb_VarExists(result, key, source, globals->req);
} else if(!strcmp(command, "list")) {
- char *key;
- if (objc != 3)
- {
- Tcl_WrongNumArgs(interp, 2, objv, "variablename");
- return TCL_ERROR;
- }
- key = Tcl_GetStringFromObj(objv[2], NULL);
-
- if (TclWeb_GetVarAsList(result, key, source, globals->req) != TCL_OK)
- {
- result = Tcl_NewStringObj("", -1);
- }
+ char *key;
+ if (objc != 3)
+ {
+ Tcl_WrongNumArgs(interp, 2, objv, "variablename");
+ return TCL_ERROR;
+ }
+ key = Tcl_GetStringFromObj(objv[2], NULL);
+
+ if (TclWeb_GetVarAsList(result, key, source, globals->req) != TCL_OK)
+ {
+ result = Tcl_NewStringObj("", -1);
+ }
} else if(!strcmp(command, "names")) {
- if (objc != 2)
- {
- Tcl_WrongNumArgs(interp, 2, objv, NULL);
- return TCL_ERROR;
- }
-
- if (TclWeb_GetVarNames(result, source, globals->req) != TCL_OK)
- {
- result = Tcl_NewStringObj("", -1);
- }
+ if (objc != 2)
+ {
+ Tcl_WrongNumArgs(interp, 2, objv, NULL);
+ return TCL_ERROR;
+ }
+
+ if (TclWeb_GetVarNames(result, source, globals->req) != TCL_OK)
+ {
+ result = Tcl_NewStringObj("", -1);
+ }
} else if(!strcmp(command, "number")) {
- if (objc != 2)
- {
- Tcl_WrongNumArgs(interp, 2, objv, NULL);
- return TCL_ERROR;
- }
+ if (objc != 2)
+ {
+ Tcl_WrongNumArgs(interp, 2, objv, NULL);
+ return TCL_ERROR;
+ }
- TclWeb_VarNumber(result, source, globals->req);
+ TclWeb_VarNumber(result, source, globals->req);
} else if(!strcmp(command, "all")) {
- if (objc != 2)
- {
- Tcl_WrongNumArgs(interp, 2, objv, NULL);
- return TCL_ERROR;
- }
- if (TclWeb_GetAllVars(result, source, globals->req) != TCL_OK)
- {
- result = Tcl_NewStringObj("", -1);
- }
+ if (objc != 2)
+ {
+ Tcl_WrongNumArgs(interp, 2, objv, NULL);
+ return TCL_ERROR;
+ }
+ if (TclWeb_GetAllVars(result, source, globals->req) != TCL_OK)
+ {
+ result = Tcl_NewStringObj("", -1);
+ }
} else {
- /* bad command */
- Tcl_AppendResult(interp, "bad option: must be one of ",
- "'get, list, names, number, all'", NULL);
- return TCL_ERROR;
+ /* bad command */
+ Tcl_AppendResult(interp, "bad option: must be one of ",
+ "'get, list, names, number, all'", NULL);
+ return TCL_ERROR;
}
Tcl_SetObjResult(interp, result);
@@ -563,9 +561,9 @@ append_key_value_callback (void *data, c
*
* Rivet_ApacheTable --
*
- * Deals with Rivet key-value tables in the request structure
+ * Deals with Rivet key-value tables in the request structure
*
- * apache_table get tablename key
+ * apache_table get tablename key
* apache_table set tablename key value
* apache_table set tablename list
* apache_table exists tablename key
@@ -578,7 +576,7 @@ append_key_value_callback (void *data, c
* "err_headers_out", and "subprocess_env".
*
* Results:
- * A standard Tcl result.
+ * A standard Tcl result.
*
* Side Effects:
*
@@ -591,200 +589,200 @@ TCL_CMD_HEADER( Rivet_ApacheTable )
int subcommandindex;
static CONST84 char *SubCommand[] = {
- "get",
- "set",
- "exists",
- "unset",
- "names",
- "array_get",
- "clear",
- NULL
+ "get",
+ "set",
+ "exists",
+ "unset",
+ "names",
+ "array_get",
+ "clear",
+ NULL
};
enum subcommand {
- SUB_GET,
- SUB_SET,
- SUB_EXISTS,
- SUB_UNSET,
- SUB_NAMES,
- SUB_ARRAY_GET,
- SUB_CLEAR
+ SUB_GET,
+ SUB_SET,
+ SUB_EXISTS,
+ SUB_UNSET,
+ SUB_NAMES,
+ SUB_ARRAY_GET,
+ SUB_CLEAR
};
static CONST84 char *tableNames[] = {
- "notes",
- "headers_in",
- "headers_out",
- "err_headers_out",
- "subprocess_env",
- NULL
+ "notes",
+ "headers_in",
+ "headers_out",
+ "err_headers_out",
+ "subprocess_env",
+ NULL
};
int tableindex;
enum tablename {
- TABLE_NOTES,
- TABLE_HEADERS_IN,
- TABLE_HEADERS_OUT,
- TABLE_ERR_HEADERS_OUT,
- TABLE_SUBPROCESS_ENV
+ TABLE_NOTES,
+ TABLE_HEADERS_IN,
+ TABLE_HEADERS_OUT,
+ TABLE_ERR_HEADERS_OUT,
+ TABLE_SUBPROCESS_ENV
};
rivet_interp_globals *globals = Tcl_GetAssocData(interp, "rivet", NULL);
if ((objc < 3) || (objc > 5)) {
- Tcl_WrongNumArgs(interp, 1, objv, "option tablename ?args?");
- return TCL_ERROR;
+ Tcl_WrongNumArgs(interp, 1, objv, "option tablename ?args?");
+ return TCL_ERROR;
}
if (Tcl_GetIndexFromObj(interp, objv[1], SubCommand,
- "get|set|unset|list",
- 0, &subcommandindex) == TCL_ERROR) {
- return TCL_ERROR;
+ "get|set|unset|list",
+ 0, &subcommandindex) == TCL_ERROR) {
+ return TCL_ERROR;
}
if (Tcl_GetIndexFromObj (interp, objv[2], tableNames,
- "notes|headers_in|headers_out|err_header_out|subprocess_env",
- 0, &tableindex) == TCL_ERROR) {
- return TCL_ERROR;
+ "notes|headers_in|headers_out|err_header_out|subprocess_env",
+ 0, &tableindex) == TCL_ERROR) {
+ return TCL_ERROR;
}
switch ((enum tablename)tableindex)
{
- case TABLE_NOTES: {
- table = globals->r->notes;
- break;
- }
-
- case TABLE_HEADERS_IN: {
- table = globals->r->headers_in;
- break;
- }
-
- case TABLE_HEADERS_OUT: {
- table = globals->r->headers_out;
- break;
- }
-
- case TABLE_ERR_HEADERS_OUT: {
- table = globals->r->err_headers_out;
- break;
- }
-
- case TABLE_SUBPROCESS_ENV: {
- table = globals->r->subprocess_env;
- break;
- }
+ case TABLE_NOTES: {
+ table = globals->r->notes;
+ break;
+ }
+
+ case TABLE_HEADERS_IN: {
+ table = globals->r->headers_in;
+ break;
+ }
+
+ case TABLE_HEADERS_OUT: {
+ table = globals->r->headers_out;
+ break;
+ }
+
+ case TABLE_ERR_HEADERS_OUT: {
+ table = globals->r->err_headers_out;
+ break;
+ }
+
+ case TABLE_SUBPROCESS_ENV: {
+ table = globals->r->subprocess_env;
+ break;
+ }
}
switch ((enum subcommand)subcommandindex)
{
- case SUB_GET: {
- const char *key;
- const char *value;
-
- if (objc != 4) {
- Tcl_WrongNumArgs(interp, 2, objv, "tablename key");
- return TCL_ERROR;
- }
-
- key = Tcl_GetString (objv[3]);
- value = apr_table_get (table, key);
-
- if (value != NULL) {
- Tcl_SetObjResult (interp, Tcl_NewStringObj (value, -1));
- }
- break;
- }
-
- case SUB_EXISTS: {
- const char *key;
- const char *value;
-
- if (objc != 4) {
- Tcl_WrongNumArgs(interp, 2, objv, "tablename key");
- return TCL_ERROR;
- }
-
- key = Tcl_GetString (objv[3]);
- value = apr_table_get (table, key);
-
- Tcl_SetObjResult (interp, Tcl_NewBooleanObj (value != NULL));
- break;
- }
-
-
- case SUB_SET: {
- int i;
- char *key;
- char *value;
-
- if (objc == 4) {
- int listObjc;
- Tcl_Obj **listObjv;
-
- if (Tcl_ListObjGetElements (interp, objv[3], &listObjc, &listObjv) == TCL_ERROR) {
- return TCL_ERROR;
- }
-
- if (listObjc % 2 == 1) {
- Tcl_SetObjResult (interp, Tcl_NewStringObj ("list must have even number of elements", -1));
- return TCL_ERROR;
- }
-
- for (i = 0; i < listObjc; i += 2) {
- apr_table_set (table, Tcl_GetString (listObjv[i]), Tcl_GetString (listObjv[i+1]));
- }
-
- break;
- }
-
- if (objc != 5) {
- Tcl_WrongNumArgs(interp, 2, objv, "tablename key value");
- return TCL_ERROR;
- }
-
- key = Tcl_GetString (objv[3]);
- value = Tcl_GetString (objv[4]);
-
- apr_table_set (table, key, value);
- break;
- }
-
- case SUB_UNSET: {
- char *key;
-
- if (objc != 4) {
- Tcl_WrongNumArgs(interp, 2, objv, "tablename key");
- return TCL_ERROR;
- }
-
- key = Tcl_GetString (objv[3]);
- apr_table_unset (table, key);
- break;
- }
+ case SUB_GET: {
+ const char *key;
+ const char *value;
+
+ if (objc != 4) {
+ Tcl_WrongNumArgs(interp, 2, objv, "tablename key");
+ return TCL_ERROR;
+ }
+
+ key = Tcl_GetString (objv[3]);
+ value = apr_table_get (table, key);
+
+ if (value != NULL) {
+ Tcl_SetObjResult (interp, Tcl_NewStringObj (value, -1));
+ }
+ break;
+ }
+
+ case SUB_EXISTS: {
+ const char *key;
+ const char *value;
+
+ if (objc != 4) {
+ Tcl_WrongNumArgs(interp, 2, objv, "tablename key");
+ return TCL_ERROR;
+ }
+
+ key = Tcl_GetString (objv[3]);
+ value = apr_table_get (table, key);
+
+ Tcl_SetObjResult (interp, Tcl_NewBooleanObj (value != NULL));
+ break;
+ }
- case SUB_NAMES: {
+
+ case SUB_SET: {
+ int i;
+ char *key;
+ char *value;
+
+ if (objc == 4) {
+ int listObjc;
+ Tcl_Obj **listObjv;
+
+ if (Tcl_ListObjGetElements (interp, objv[3], &listObjc, &listObjv) == TCL_ERROR) {
+ return TCL_ERROR;
+ }
+
+ if (listObjc % 2 == 1) {
+ Tcl_SetObjResult (interp, Tcl_NewStringObj ("list must have even number of elements", -1));
+ return TCL_ERROR;
+ }
+
+ for (i = 0; i < listObjc; i += 2) {
+ apr_table_set (table, Tcl_GetString (listObjv[i]), Tcl_GetString (listObjv[i+1]));
+ }
+
+ break;
+ }
+
+ if (objc != 5) {
+ Tcl_WrongNumArgs(interp, 2, objv, "tablename key value");
+ return TCL_ERROR;
+ }
+
+ key = Tcl_GetString (objv[3]);
+ value = Tcl_GetString (objv[4]);
+
+ apr_table_set (table, key, value);
+ break;
+ }
+
+ case SUB_UNSET: {
+ char *key;
+
+ if (objc != 4) {
+ Tcl_WrongNumArgs(interp, 2, objv, "tablename key");
+ return TCL_ERROR;
+ }
+
+ key = Tcl_GetString (objv[3]);
+ apr_table_unset (table, key);
+ break;
+ }
+
+ case SUB_NAMES: {
Tcl_Obj *list = Tcl_NewObj ();
- apr_table_do(append_key_callback, (void*)list, table, NULL);
+ apr_table_do(append_key_callback, (void*)list, table, NULL);
- Tcl_SetObjResult (interp, list);
- break;
- }
+ Tcl_SetObjResult (interp, list);
+ break;
+ }
- case SUB_ARRAY_GET: {
+ case SUB_ARRAY_GET: {
Tcl_Obj *list = Tcl_NewObj ();
- apr_table_do(append_key_value_callback, (void*)list, table, NULL);
+ apr_table_do(append_key_value_callback, (void*)list, table, NULL);
+
+ Tcl_SetObjResult (interp, list);
+ break;
+ }
- Tcl_SetObjResult (interp, list);
- break;
- }
-
- case SUB_CLEAR: {
- apr_table_clear (table);
- }
+ case SUB_CLEAR: {
+ apr_table_clear (table);
+ }
}
return TCL_OK;
@@ -796,23 +794,23 @@ TCL_CMD_HEADER( Rivet_ApacheTable )
*
* Rivet_Upload --
*
- * Deals with file uploads (multipart/form-data) like so:
+ * Deals with file uploads (multipart/form-data) like so:
*
- * upload channel uploadname
- * upload save name uploadname
- * upload data uploadname
- * upload exists uploadname
- * upload size uploadname
- * upload type uploadname
- * upload filename uploadname
- * upload names
+ * upload channel uploadname
+ * upload save name uploadname
+ * upload data uploadname
+ * upload exists uploadname
+ * upload size uploadname
+ * upload type uploadname
+ * upload filename uploadname
+ * upload names
*
* Results:
- * A standard Tcl result.
+ * A standard Tcl result.
*
* Side Effects:
- * Has the potential to create files on the file system, or work
- * with large amounts of data.
+ * Has the potential to create files on the file system, or work
+ * with large amounts of data.
*
*-----------------------------------------------------------------------------
*/
@@ -827,69 +825,69 @@ TCL_CMD_HEADER( Rivet_Upload )
Tcl_Obj *result = NULL;
static CONST84 char *SubCommand[] = {
- "channel",
- "save",
- "data",
- "exists",
- "size",
- "type",
- "filename",
- "tempname",
- "names",
- NULL
+ "channel",
+ "save",
+ "data",
+ "exists",
+ "size",
+ "type",
+ "filename",
+ "tempname",
+ "names",
+ NULL
};
enum subcommand {
- CHANNEL,
- SAVE,
- DATA,
- EXISTS,
- SIZE,
- TYPE,
- FILENAME,
- TEMPNAME,
- NAMES
+ CHANNEL,
+ SAVE,
+ DATA,
+ EXISTS,
+ SIZE,
+ TYPE,
+ FILENAME,
+ TEMPNAME,
+ NAMES
};
rivet_interp_globals *globals = Tcl_GetAssocData(interp, "rivet", NULL);
command = Tcl_GetString(objv[1]);
if (Tcl_GetIndexFromObj(interp, objv[1], SubCommand,
- "channel|save|data|exists|size|type|filename|names|tempname"
- "|tempname|names",
- 0, &subcommandindex) == TCL_ERROR) {
- return TCL_ERROR;
+ "channel|save|data|exists|size|type|filename|names|tempname"
+ "|tempname|names",
+ 0, &subcommandindex) == TCL_ERROR) {
+ return TCL_ERROR;
}
/* If it's any of these, we need to find a specific name. */
/* Excluded case is NAMES. */
- if ((enum subcommand)subcommandindex == CHANNEL ||
- (enum subcommand)subcommandindex == SAVE ||
- (enum subcommand)subcommandindex == DATA ||
- (enum subcommand)subcommandindex == EXISTS ||
- (enum subcommand)subcommandindex == SIZE ||
- (enum subcommand)subcommandindex == TYPE ||
- (enum subcommand)subcommandindex == FILENAME ||
- (enum subcommand)subcommandindex == TEMPNAME)
- {
- varname = Tcl_GetString(objv[2]);
- if ((enum subcommand)subcommandindex != EXISTS)
- {
- if (TclWeb_PrepareUpload(varname, globals->req) != TCL_OK)
- {
- Tcl_AddErrorInfo(interp, "Unable to find variable");
- return TCL_ERROR;
- }
- }
-
- /* If it's not the 'save' command, then it has to have an objc
- of 3. */
- if ((enum subcommand)subcommandindex != SAVE && objc != 3)
- {
- Tcl_WrongNumArgs(interp, 2, objv, "varname");
- return TCL_ERROR;
- }
+ if ((enum subcommand)subcommandindex == CHANNEL ||
+ (enum subcommand)subcommandindex == SAVE ||
+ (enum subcommand)subcommandindex == DATA ||
+ (enum subcommand)subcommandindex == EXISTS ||
+ (enum subcommand)subcommandindex == SIZE ||
+ (enum subcommand)subcommandindex == TYPE ||
+ (enum subcommand)subcommandindex == FILENAME ||
+ (enum subcommand)subcommandindex == TEMPNAME)
+ {
+ varname = Tcl_GetString(objv[2]);
+ if ((enum subcommand)subcommandindex != EXISTS)
+ {
+ if (TclWeb_PrepareUpload(varname, globals->req) != TCL_OK)
+ {
+ Tcl_AddErrorInfo(interp, "Unable to find variable");
+ return TCL_ERROR;
+ }
+ }
+
+ /* If it's not the 'save' command, then it has to have an objc
+ of 3. */
+ if ((enum subcommand)subcommandindex != SAVE && objc != 3)
+ {
+ Tcl_WrongNumArgs(interp, 2, objv, "varname");
+ return TCL_ERROR;
+ }
}
result = Tcl_NewObj();
@@ -897,64 +895,64 @@ TCL_CMD_HEADER( Rivet_Upload )
switch ((enum subcommand)subcommandindex)
{
case CHANNEL: {
- Tcl_Channel chan;
- char *channelname = NULL;
+ Tcl_Channel chan;
+ char *channelname = NULL;
- if (TclWeb_UploadChannel(varname, &chan, globals->req) != TCL_OK) {
- return TCL_ERROR;
- }
- channelname = (char *)Tcl_GetChannelName(chan);
- Tcl_SetStringObj(result, channelname, -1);
- break;
+ if (TclWeb_UploadChannel(varname, &chan, globals->req) != TCL_OK) {
+ return TCL_ERROR;
+ }
+ channelname = (char *)Tcl_GetChannelName(chan);
+ Tcl_SetStringObj(result, channelname, -1);
+ break;
}
case SAVE:
- /* save data to a specified filename */
- if (objc != 4) {
- Tcl_WrongNumArgs(interp, 2, objv, "uploadname filename");
- return TCL_ERROR;
- }
-
- if (TclWeb_UploadSave(varname, objv[3], globals->req) != TCL_OK)
- {
- return TCL_ERROR;
- }
- break;
+ /* save data to a specified filename */
+ if (objc != 4) {
+ Tcl_WrongNumArgs(interp, 2, objv, "uploadname filename");
+ return TCL_ERROR;
+ }
+
+ if (TclWeb_UploadSave(varname, objv[3], globals->req) != TCL_OK)
+ {
+ return TCL_ERROR;
+ }
+ break;
case DATA:
- if (TclWeb_UploadData(varname, result, globals->req) != TCL_OK) {
- return TCL_ERROR;
- }
- break;
+ if (TclWeb_UploadData(varname, result, globals->req) != TCL_OK) {
+ return TCL_ERROR;
+ }
+ break;
case EXISTS:
- if (TclWeb_PrepareUpload(varname, globals->req) != TCL_OK)
- {
- Tcl_SetIntObj(result, 0);
- } else {
- Tcl_SetIntObj(result, 1);
- }
- break;
+ if (TclWeb_PrepareUpload(varname, globals->req) != TCL_OK)
+ {
+ Tcl_SetIntObj(result, 0);
+ } else {
+ Tcl_SetIntObj(result, 1);
+ }
+ break;
case SIZE:
- TclWeb_UploadSize(result, globals->req);
- break;
+ TclWeb_UploadSize(result, globals->req);
+ break;
case TYPE:
- TclWeb_UploadType(result, globals->req);
- break;
+ TclWeb_UploadType(result, globals->req);
+ break;
case FILENAME:
- TclWeb_UploadFilename(result, globals->req);
- break;
+ TclWeb_UploadFilename(result, globals->req);
+ break;
case TEMPNAME:
- TclWeb_UploadTempname(result,globals->req);
- break;
+ TclWeb_UploadTempname(result,globals->req);
+ break;
case NAMES:
- if (objc != 2)
- {
- Tcl_WrongNumArgs(interp, 1, objv, "names");
- return TCL_ERROR;
- }
- TclWeb_UploadNames(result, globals->req);
- break;
+ if (objc != 2)
+ {
+ Tcl_WrongNumArgs(interp, 1, objv, "names");
+ return TCL_ERROR;
+ }
+ TclWeb_UploadNames(result, globals->req);
+ break;
default:
- Tcl_WrongNumArgs(interp, 1, objv,
- "channel|save ?name?|data|exists|size|type|filename|names|tempname");
+ Tcl_WrongNumArgs(interp, 1, objv,
+ "channel|save ?name?|data|exists|size|type|filename|names|tempname");
}
Tcl_SetObjResult(interp, result);
return TCL_OK;
@@ -965,13 +963,13 @@ TCL_CMD_HEADER( Rivet_Upload )
*
* Rivet_RawPost --
*
- * Returns the raw POST data.
+ * Returns the raw POST data.
*
* Results:
- * The raw post data, or an empty string if there is none.
+ * The raw post data, or an empty string if there is none.
*
* Side Effects:
- * None.
+ * None.
*
*-----------------------------------------------------------------------------
*/
@@ -985,7 +983,7 @@ TCL_CMD_HEADER ( Rivet_RawPost )
data = TclWeb_GetRawPost(globals->req);
if (!data) {
- data = "";
+ data = "";
}
retval = Tcl_NewStringObj(data, -1);
Tcl_SetObjResult(interp, retval);
@@ -997,14 +995,14 @@ TCL_CMD_HEADER ( Rivet_RawPost )
*
* Rivet_NoBody --
*
- * Tcl command to erase body, so that only header is returned.
- * Necessary for 304 responses.
+ * Tcl command to erase body, so that only header is returned.
+ * Necessary for 304 responses.
*
* Results:
- * A standard Tcl return value.
+ * A standard Tcl return value.
*
* Side Effects:
- * Eliminates any body returned in the HTTP response.
+ * Eliminates any body returned in the HTTP response.
*
*-----------------------------------------------------------------------------
*/
@@ -1014,8 +1012,8 @@ TCL_CMD_HEADER( Rivet_NoBody )
rivet_interp_globals *globals = Tcl_GetAssocData(interp, "rivet", NULL);
if (globals->req->content_sent == 1) {
- Tcl_AddErrorInfo(interp, "Content already sent");
- return TCL_ERROR;
+ Tcl_AddErrorInfo(interp, "Content already sent");
+ return TCL_ERROR;
}
globals->req->content_sent = 1;
@@ -1027,16 +1025,16 @@ TCL_CMD_HEADER( Rivet_NoBody )
*
* Rivet_AbortPageCmd --
*
- * Similar in purpose to PHP's "die" command, which halts all
- * further output to the user. Like an "exit" for web pages, but
- * without actually exiting the apache child.
+ * Similar in purpose to PHP's "die" command, which halts all
+ * further output to the user. Like an "exit" for web pages, but
+ * without actually exiting the apache child.
*
* Results:
- * A standard Tcl result.
+ * A standard Tcl result.
*
* Side Effects:
- * Flushes the standard (apache) output channel, and tells apache
- * to stop sending data.
+ * Flushes the standard (apache) output channel, and tells apache
+ * to stop sending data.
*
*-----------------------------------------------------------------------------
*/
@@ -1047,8 +1045,8 @@ TCL_CMD_HEADER( Rivet_AbortPageCmd )
if (objc != 1)
{
- Tcl_WrongNumArgs(interp, 1, objv, "");
- return TCL_ERROR;
+ Tcl_WrongNumArgs(interp, 1, objv, "");
+ return TCL_ERROR;
}
Tcl_AddErrorInfo (interp, errorMessage);
@@ -1061,14 +1059,14 @@ TCL_CMD_HEADER( Rivet_AbortPageCmd )
*
* Rivet_EnvCmd --
*
- * Loads a single environmental variable, to avoid the overhead
- * of storing all of them when only one is needed.
+ * Loads a single environmental variable, to avoid the overhead
+ * of storing all of them when only one is needed.
*
* Results:
- * A standard Tcl result.
+ * A standard Tcl result.
*
* Side Effects:
- * None.
+ * None.
*
*-----------------------------------------------------------------------------
*/
@@ -1080,8 +1078,8 @@ TCL_CMD_HEADER( Rivet_EnvCmd )
char *val;
if( objc != 2 ) {
- Tcl_WrongNumArgs( interp, 1, objv, "variable" );
- return TCL_ERROR;
+ Tcl_WrongNumArgs( interp, 1, objv, "variable" );
+ return TCL_ERROR;
}
key = Tcl_GetStringFromObj( objv[1], NULL );
@@ -1097,14 +1095,14 @@ TCL_CMD_HEADER( Rivet_EnvCmd )
*
* Rivet_VirtualFilenameCmd --
*
- * Gets file according to its relationship with the request's
- * root. (FIXME - check this).
+ * Gets file according to its relationship with the request's
+ * root. (FIXME - check this).
*
* Results:
- * A standard Tcl result.
+ * A standard Tcl result.
*
* Side Effects:
- * None.
+ * None.
*
*-----------------------------------------------------------------------------
*/
@@ -1116,8 +1114,8 @@ TCL_CMD_HEADER( Rivet_VirtualFilenameCmd
char *virtual;
if( objc != 2 ) {
- Tcl_WrongNumArgs( interp, 1, objv, "filename" );
- return TCL_ERROR;
+ Tcl_WrongNumArgs( interp, 1, objv, "filename" );
+ return TCL_ERROR;
}
virtual = Tcl_GetStringFromObj( objv[1], NULL );
@@ -1132,9 +1130,9 @@ TCL_CMD_HEADER( Rivet_VirtualFilenameCmd
*
* Rivet_LogError --
*
- * Log an error from Rivet
+ * Log an error from Rivet
*
- * log_error priority message
+ * log_error priority message
*
* priority can be one of "emerg", "alert", "crit", "err",
* "warning", "notice", "info", "debug"
@@ -1156,48 +1154,48 @@ TCL_CMD_HEADER( Rivet_LogErrorCmd )
int apLogLevel = 0;
static CONST84 char *logLevel[] = {
- "emerg",
- "alert",
- "crit",
- "err",
- "warning",
- "notice",
- "info",
- "debug",
- NULL
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ NULL
};
enum loglevel {
- EMERG,
- ALERT,
- CRIT,
- ERR,
- WARNING,
- NOTICE,
- INFO,
- DEBUG
+ EMERG,
+ ALERT,
+ CRIT,
+ ERR,
+ WARNING,
+ NOTICE,
+ INFO,
+ DEBUG
};
rivet_interp_globals *globals = Tcl_GetAssocData(interp, "rivet", NULL);
if( objc != 3 ) {
- Tcl_WrongNumArgs( interp, 1, objv, "loglevel message" );
- return TCL_ERROR;
+ Tcl_WrongNumArgs( interp, 1, objv, "loglevel message" );
+ return TCL_ERROR;
}
loglevel = Tcl_GetString(objv[1]);
message = Tcl_GetString (objv[2]);
if (Tcl_GetIndexFromObj(interp, objv[1], logLevel,
- "emerg|alert|crit|err|warning|notice|info|debug",
- 0, &loglevelindex) == TCL_ERROR) {
- return TCL_ERROR;
+ "emerg|alert|crit|err|warning|notice|info|debug",
+ 0, &loglevelindex) == TCL_ERROR) {
+ return TCL_ERROR;
}
switch ((enum loglevel)loglevelindex)
{
case EMERG:
apLogLevel = APLOG_EMERG;
- break;
+ break;
case ALERT:
apLogLevel = APLOG_ALERT;
@@ -1245,23 +1243,23 @@ TCL_CMD_HEADER( Rivet_LogErrorCmd )
*
* TestpanicCmd --
*
- * Calls the panic routine.
+ * Calls the panic routine.
*
* Results:
* Always returns TCL_OK.
*
* Side effects:
- * May exit application.
+ * May exit application.
*
*----------------------------------------------------------------------
*/
static int
TestpanicCmd(dummy, interp, argc, argv)
- ClientData dummy; /* Not used. */
- Tcl_Interp *interp; /* Current interpreter. */
- int argc; /* Number of arguments. */
- CONST char **argv; /* Argument strings. */
+ ClientData dummy; /* Not used. */
+ Tcl_Interp *interp; /* Current interpreter. */
+ int argc; /* Number of arguments. */
+ CONST char **argv; /* Argument strings. */
{
CONST char *argString;
@@ -1283,13 +1281,13 @@ TestpanicCmd(dummy, interp, argc, argv)
*
* Rivet_InitCore --
*
- * Creates the core rivet commands.
+ * Creates the core rivet commands.
*
* Results:
- * A standard Tcl result.
+ * A standard Tcl result.
*
* Side Effects:
- * Creates new commands.
+ * Creates new commands.
*
*-----------------------------------------------------------------------------
*/
@@ -1297,103 +1295,33 @@ TestpanicCmd(dummy, interp, argc, argv)
int
Rivet_InitCore( Tcl_Interp *interp )
{
- Tcl_CreateObjCommand(interp,
- "makeurl",
- Rivet_MakeURL,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "headers",
- Rivet_Headers,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "load_env",
- Rivet_LoadEnv,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "load_headers",
- Rivet_LoadHeaders,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "var",
- Rivet_Var,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "apache_table",
- Rivet_ApacheTable,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "var_qs",
- Rivet_Var,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "var_post",
- Rivet_Var,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "raw_post",
- Rivet_RawPost,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "upload",
- Rivet_Upload,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "include",
- Rivet_Include,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "parse",
- Rivet_Parse,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "no_body",
- Rivet_NoBody,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "env",
- Rivet_EnvCmd,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "apache_log_error",
- Rivet_LogErrorCmd,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
+ rivet_interp_globals *globals = NULL;
+ Tcl_Namespace *rivet_ns;
+
+ globals = Tcl_GetAssocData(interp, "rivet", NULL);
+ rivet_ns = globals->rivet_ns;
+
+ RIVET_OBJ_CMD ("makeurl",Rivet_MakeURL,rivet_ns);
+ RIVET_OBJ_CMD ("headers",Rivet_Headers,rivet_ns);
+ RIVET_OBJ_CMD ("load_env",Rivet_LoadEnv,rivet_ns);
+ RIVET_OBJ_CMD ("load_headers",Rivet_LoadHeaders,rivet_ns);
+ RIVET_OBJ_CMD ("var",Rivet_Var,rivet_ns);
+ RIVET_OBJ_CMD ("abort_page", Rivet_AbortPageCmd ,rivet_ns);
+ RIVET_OBJ_CMD ("virtual_filename", Rivet_VirtualFilenameCmd ,rivet_ns);
+ RIVET_OBJ_CMD ("apache_table",Rivet_ApacheTable,rivet_ns);
+ RIVET_OBJ_CMD ("var_qs",Rivet_Var,rivet_ns);
+ RIVET_OBJ_CMD ("var_post",Rivet_Var,rivet_ns);
+ RIVET_OBJ_CMD ("raw_post",Rivet_RawPost,rivet_ns);
+ RIVET_OBJ_CMD ("upload",Rivet_Upload,rivet_ns);
+ RIVET_OBJ_CMD ("include",Rivet_Include,rivet_ns);
+ RIVET_OBJ_CMD ("parse",Rivet_Parse,rivet_ns);
+ RIVET_OBJ_CMD ("no_body",Rivet_NoBody,rivet_ns);
+ RIVET_OBJ_CMD ("env",Rivet_EnvCmd,rivet_ns);
+ RIVET_OBJ_CMD ("apache_log_error",Rivet_LogErrorCmd,rivet_ns);
#ifdef TESTPANIC
- Tcl_CreateCommand(interp, "testpanic", TestpanicCmd, (ClientData) 0,
- (Tcl_CmdDeleteProc *) NULL);
+ RIVET_OBJ_CMD ("testpanic",TestpanicCmd,rivet_ns);
#endif
- TCL_OBJ_CMD( "abort_page", Rivet_AbortPageCmd );
- TCL_OBJ_CMD( "virtual_filename", Rivet_VirtualFilenameCmd );
-
- return TCL_OK;
+ return Tcl_PkgProvide( interp, "Rivet", "1.2" );
}
Modified: tcl/rivet/branches/rivet-namespace/src/rivet.h
URL: http://svn.apache.org/viewvc/tcl/rivet/branches/rivet-namespace/src/rivet.h?rev=1068238&r1=1068237&r2=1068238&view=diff
==============================================================================
--- tcl/rivet/branches/rivet-namespace/src/rivet.h (original)
+++ tcl/rivet/branches/rivet-namespace/src/rivet.h Tue Feb 8 00:37:22 2011
@@ -1,3 +1,19 @@
+/* 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$ */
/* This is for windows. */
#ifdef BUILD_rivet
@@ -7,6 +23,7 @@
#define STREQU(s1, s2) (s1[0] == s2[0] && strcmp(s1, s2) == 0)
#define STRNEQU(s1, s2) (s1[0] == s2[0] && strncmp(s1, s2, strlen(s2)) == 0)
+#define RIVET_NS "::Rivet"
#define TCL_CMD_HEADER(cmd) \
static int cmd(\
@@ -22,8 +39,17 @@ Tcl_CreateObjCommand( interp, /* Tcl int
NULL, /* Client Data */\
(Tcl_CmdDeleteProc *)NULL /* Tcl Delete Prov */)
+#define RIVET_OBJ_CMD(name,func,ns) \
+Tcl_CreateObjCommand( interp, /* Tcl interpreter */\
+ RIVET_NS "::" name, /* Function name in Tcl */\
+ func, /* C function name */\
+ NULL, /* Client Data */\
+ (Tcl_CmdDeleteProc *)NULL /* Tcl Delete Prov */); \
+Tcl_Export(interp,ns,name,0);
+
+
EXTERN int Rivet_Init( Tcl_Interp *interp );
-EXTERN int Rivet_InitList( Tcl_Interp *interp );
-EXTERN int Rivet_InitCrypt( Tcl_Interp *interp );
-EXTERN int Rivet_InitWWW( Tcl_Interp *interp );
-EXTERN int Rivet_InitCore( Tcl_Interp *interp );
+EXTERN int Rivet_InitList( Tcl_Interp *interp, Tcl_Namespace* ns);
+EXTERN int Rivet_InitCrypt( Tcl_Interp *interp, Tcl_Namespace* ns);
+EXTERN int Rivet_InitWWW( Tcl_Interp *interp, Tcl_Namespace* ns);
+EXTERN int Rivet_InitCore( Tcl_Interp *interp);
Propchange: tcl/rivet/branches/rivet-namespace/src/rivet.h
------------------------------------------------------------------------------
--- svn:keywords (original)
+++ svn:keywords Tue Feb 8 00:37:22 2011
@@ -1 +1 @@
-Author Date Id Revision
+Id
Modified: tcl/rivet/branches/rivet-namespace/src/rivetCrypt.c
URL: http://svn.apache.org/viewvc/tcl/rivet/branches/rivet-namespace/src/rivetCrypt.c?rev=1068238&r1=1068237&r2=1068238&view=diff
==============================================================================
--- tcl/rivet/branches/rivet-namespace/src/rivetCrypt.c (original)
+++ tcl/rivet/branches/rivet-namespace/src/rivetCrypt.c Tue Feb 8 00:37:22 2011
@@ -162,11 +162,15 @@ TCL_CMD_HEADER( Rivet_CryptCmd )
*-----------------------------------------------------------------------------
*/
int
-Rivet_InitCrypt( Tcl_Interp *interp )
+Rivet_InitCrypt( Tcl_Interp *interp, Tcl_Namespace* rivet_ns )
{
- TCL_OBJ_CMD( "encrypt", Rivet_EncryptCmd );
- TCL_OBJ_CMD( "decrypt", Rivet_DecryptCmd );
- TCL_OBJ_CMD( "crypt", Rivet_CryptCmd );
-
+ RIVET_OBJ_CMD( "encrypt", Rivet_EncryptCmd, rivet_ns);
+ RIVET_OBJ_CMD( "decrypt", Rivet_DecryptCmd, rivet_ns);
+ RIVET_OBJ_CMD( "crypt", Rivet_CryptCmd, rivet_ns);
+/*
+ Tcl_Export (interp,rivet_ns,"encrypt",0);
+ Tcl_Export (interp,rivet_ns,"decrypt",0);
+ Tcl_Export (interp,rivet_ns,"crypt",0);
+*/
return TCL_OK;
}
Modified: tcl/rivet/branches/rivet-namespace/src/rivetList.c
URL: http://svn.apache.org/viewvc/tcl/rivet/branches/rivet-namespace/src/rivetList.c?rev=1068238&r1=1068237&r2=1068238&view=diff
==============================================================================
--- tcl/rivet/branches/rivet-namespace/src/rivetList.c (original)
+++ tcl/rivet/branches/rivet-namespace/src/rivetList.c Tue Feb 8 00:37:22 2011
@@ -532,14 +532,19 @@ TCL_CMD_HEADER( Rivet_LassignArrayObjCmd
* o interp - Interpreter to add commands to.
*-----------------------------------------------------------------------------
*/
-int
-Rivet_InitList( interp )
- Tcl_Interp *interp;
-{
- TCL_OBJ_CMD( "lremove", Rivet_LremoveObjCmd );
- TCL_OBJ_CMD( "comma_split", Rivet_CommaSplitObjCmd );
- TCL_OBJ_CMD( "comma_join", Rivet_CommaJoinObjCmd );
- TCL_OBJ_CMD( "lassign_array", Rivet_LassignArrayObjCmd );
+int
+Rivet_InitList( Tcl_Interp *interp, Tcl_Namespace* rivet_ns)
+{
+ RIVET_OBJ_CMD( "lremove", Rivet_LremoveObjCmd ,rivet_ns);
+ RIVET_OBJ_CMD( "comma_split", Rivet_CommaSplitObjCmd ,rivet_ns);
+ RIVET_OBJ_CMD( "comma_join", Rivet_CommaJoinObjCmd ,rivet_ns);
+ RIVET_OBJ_CMD( "lassign_array", Rivet_LassignArrayObjCmd ,rivet_ns);
+/*
+ Tcl_Export (interp,rivet_ns,"lremove",0);
+ Tcl_Export (interp,rivet_ns,"comma_split",0);
+ Tcl_Export (interp,rivet_ns,"comma_join",0);
+ Tcl_Export (interp,rivet_ns,"lassign_array",0);
+*/
return TCL_OK;
}
Modified: tcl/rivet/branches/rivet-namespace/src/rivetPkgInit.c
URL: http://svn.apache.org/viewvc/tcl/rivet/branches/rivet-namespace/src/rivetPkgInit.c?rev=1068238&r1=1068237&r2=1068238&view=diff
==============================================================================
--- tcl/rivet/branches/rivet-namespace/src/rivetPkgInit.c (original)
+++ tcl/rivet/branches/rivet-namespace/src/rivetPkgInit.c Tue Feb 8 00:37:22 2011
@@ -19,12 +19,37 @@
/* Rivet config */
#ifdef HAVE_CONFIG_H
-#include <config.h>
+#include <rivet_config.h>
#endif
#include <tcl.h>
#include "rivet.h"
+#include "mod_rivet.h"
+
+
+static Tcl_Namespace*
+Rivet_GetNamespace( Tcl_Interp* interp)
+{
+ rivet_interp_globals *globals;
+ Tcl_Namespace *rivet_ns;
+
+ globals = Tcl_GetAssocData(interp, "rivet", NULL);
+ if (globals != NULL)
+ {
+// fprintf(stderr,"Associated data found, getting Rivet ns from mod_rivet\n");
+ rivet_ns = globals->rivet_ns;
+ }
+ else
+ {
+// fprintf(stderr,"no Associated data found, running standalone\n");
+ rivet_ns = Tcl_CreateNamespace (interp,RIVET_NS,NULL,
+ (Tcl_NamespaceDeleteProc *)NULL);
+
+ }
+
+ return rivet_ns;
+}
/*-----------------------------------------------------------------------------
@@ -38,13 +63,13 @@
int
Rivet_Init( Tcl_Interp *interp )
{
- Rivet_InitList( interp );
+ Tcl_Namespace *rivet_ns = Rivet_GetNamespace(interp);
- Rivet_InitCrypt( interp );
+ Rivet_InitList( interp, rivet_ns );
+ Rivet_InitCrypt( interp, rivet_ns );
+ Rivet_InitWWW( interp, rivet_ns );
- Rivet_InitWWW( interp );
-
- return Tcl_PkgProvide( interp, "Rivet", "1.1" );
+ return Tcl_PkgProvide( interp, "RivetLib", "1.2" );
}
@@ -60,13 +85,13 @@ Rivet_Init( Tcl_Interp *interp )
int
Rivet_SafeInit( Tcl_Interp *interp )
{
- Rivet_InitList( interp );
-
- Rivet_InitCrypt( interp );
+ Tcl_Namespace *rivet_ns = Rivet_GetNamespace(interp);
- Rivet_InitWWW( interp );
+ Rivet_InitList( interp, rivet_ns );
+ Rivet_InitCrypt( interp, rivet_ns );
+ Rivet_InitWWW( interp, rivet_ns );
- return Tcl_PkgProvide( interp, "Rivet", "1.1" );
+ return Tcl_PkgProvide( interp, "RivetLib", "1.2" );
}
Modified: tcl/rivet/branches/rivet-namespace/src/rivetWWW.c
URL: http://svn.apache.org/viewvc/tcl/rivet/branches/rivet-namespace/src/rivetWWW.c?rev=1068238&r1=1068237&r2=1068238&view=diff
==============================================================================
--- tcl/rivet/branches/rivet-namespace/src/rivetWWW.c (original)
+++ tcl/rivet/branches/rivet-namespace/src/rivetWWW.c Tue Feb 8 00:37:22 2011
@@ -21,7 +21,7 @@
/* Rivet config */
#ifdef HAVE_CONFIG_H
-#include <config.h>
+#include <rivet_config.h>
#endif
#include <tcl.h>
@@ -47,16 +47,17 @@ static int
Rivet_HexToDigit(int c) {
if (c >= 'a' && c <= 'f') {
- return (c - 'a' + 10);
+ return (c - 'a' + 10);
}
if (c >= 'A' && c <= 'F') {
- return (c - 'A' + 10);
+ return (c - 'A' + 10);
}
if (c >= '0' && c <= '9') {
- return (c - '0');
+ return (c - '0');
}
+
return (-1);
}
@@ -79,8 +80,8 @@ TCL_CMD_HEADER( Rivet_UnescapeStringCmd
int digit1, digit2;
if ( objc != 2 ) {
- Tcl_WrongNumArgs( interp, 1, objv, "string" );
- return TCL_ERROR;
+ Tcl_WrongNumArgs( interp, 1, objv, "string" );
+ return TCL_ERROR;
}
origString = Tcl_GetStringFromObj( objv[1], &origLength );
@@ -88,39 +89,40 @@ TCL_CMD_HEADER( Rivet_UnescapeStringCmd
/* for all the characters in the source string */
for (origStringP = origString, newStringP = newString;
- *origStringP != '\0';
- origStringP++) {
- char c = *origStringP;
- char c2;
-
- /* map plus to space */
- if (c == '+') {
- *newStringP++ = ' ';
- continue;
- }
-
- /* if there's a percent sign, decode the two-character
- * hex sequence that follows and copy it to the target
- * string */
- if (c == '%') {
- digit1 = Rivet_HexToDigit(c = *++origStringP);
- digit2 = Rivet_HexToDigit(c2 = *++origStringP);
-
- if (digit1 == -1 || digit2 == -1) {
- char buf[2];
- snprintf( buf, 2, "%c%c", c, c2 );
- Tcl_AppendResult( interp,
- Tcl_GetStringFromObj( objv[0], NULL ),
- ": bad char in hex sequence %", buf, (char *)NULL );
- return TCL_ERROR;
- }
-
- *newStringP++ = (digit1 * 16 + digit2);
- continue;
- }
+ *origStringP != '\0';
+ origStringP++) {
+
+ char c = *origStringP;
+ char c2;
- /* it wasn't a plus or percent, just copy the char across */
- *newStringP++ = c;
+ /* map plus to space */
+ if (c == '+') {
+ *newStringP++ = ' ';
+ continue;
+ }
+
+ /* if there's a percent sign, decode the two-character
+ * hex sequence that follows and copy it to the target
+ * string */
+ if (c == '%') {
+ digit1 = Rivet_HexToDigit(c = *++origStringP);
+ digit2 = Rivet_HexToDigit(c2 = *++origStringP);
+
+ if (digit1 == -1 || digit2 == -1) {
+ char buf[2];
+ snprintf( buf, 2, "%c%c", c, c2 );
+ Tcl_AppendResult( interp,
+ Tcl_GetStringFromObj( objv[0], NULL ),
+ ": bad char in hex sequence %", buf, (char *)NULL );
+ return TCL_ERROR;
+ }
+
+ *newStringP++ = (digit1 * 16 + digit2);
+ continue;
+ }
+
+ /* it wasn't a plus or percent, just copy the char across */
+ *newStringP++ = c;
}
/* Don't forget to null-terminate the target string */
*newStringP = '\0';
@@ -169,8 +171,8 @@ TCL_CMD_HEADER( Rivet_EscapeStringCmd )
int origLength;
if ( objc != 2 ) {
- Tcl_WrongNumArgs( interp, 1, objv, "string" );
- return TCL_ERROR;
+ Tcl_WrongNumArgs( interp, 1, objv, "string" );
+ return TCL_ERROR;
}
origString = Tcl_GetStringFromObj( objv[1], &origLength );
@@ -182,19 +184,19 @@ TCL_CMD_HEADER( Rivet_EscapeStringCmd )
/* for all the characters in the source string */
for (origStringP = origString, newStringP = newString;
- *origStringP != '\0';
- origStringP++) {
- char c = *origStringP;
-
- if (isalnum ((int)c)) {
- *newStringP++ = c;
- } else if (c == ' ') {
- *newStringP++ = '+';
- } else {
- *newStringP++ = '%';
- *newStringP++ = Rivet_DigitToHex((c >> 4) & 0x0f);
- *newStringP++ = Rivet_DigitToHex(c & 0x0f);
- }
+ *origStringP != '\0';
+ origStringP++) {
+ char c = *origStringP;
+
+ if (isalnum ((int)c)) {
+ *newStringP++ = c;
+ } else if (c == ' ') {
+ *newStringP++ = '+';
+ } else {
+ *newStringP++ = '%';
+ *newStringP++ = Rivet_DigitToHex((c >> 4) & 0x0f);
+ *newStringP++ = Rivet_DigitToHex(c & 0x0f);
+ }
}
/* Don't forget to null-terminate the target string */
*newStringP = '\0';
@@ -222,8 +224,8 @@ TCL_CMD_HEADER( Rivet_EscapeSgmlCharsCmd
int origLength;
if( objc != 2 ) {
- Tcl_WrongNumArgs( interp, 1, objv, "string" );
- return TCL_ERROR;
+ Tcl_WrongNumArgs( interp, 1, objv, "string" );
+ return TCL_ERROR;
}
origString = Tcl_GetStringFromObj( objv[1], &origLength );
@@ -235,49 +237,50 @@ TCL_CMD_HEADER( Rivet_EscapeSgmlCharsCmd
/* for all the characters in the source string */
for (origStringP = origString, newStringP = newString;
- *origStringP != '\0';
- origStringP++) {
- char c = *origStringP;
-
- switch(c) {
- case '&':
- *newStringP++ = '&';
- *newStringP++ = 'a';
- *newStringP++ = 'm';
- *newStringP++ = 'p';
- *newStringP++ = ';';
- break;
- case '<':
- *newStringP++ = '&';
- *newStringP++ = 'l';
- *newStringP++ = 't';
- *newStringP++ = ';';
- break;
- case '>':
- *newStringP++ = '&';
- *newStringP++ = 'g';
- *newStringP++ = 't';
- *newStringP++ = ';';
- break;
- case '\'':
- *newStringP++ = '&';
- *newStringP++ = '#';
- *newStringP++ = '3';
- *newStringP++ = '9';
- *newStringP++ = ';';
- break;
- case '"':
- *newStringP++ = '&';
- *newStringP++ = 'q';
- *newStringP++ = 'u';
- *newStringP++ = 'o';
- *newStringP++ = 't';
- *newStringP++ = ';';
- break;
- default:
- *newStringP++ = c;
- break;
- }
+ *origStringP != '\0';
+ origStringP++) {
+
+ char c = *origStringP;
+
+ switch(c) {
+ case '&':
+ *newStringP++ = '&';
+ *newStringP++ = 'a';
+ *newStringP++ = 'm';
+ *newStringP++ = 'p';
+ *newStringP++ = ';';
+ break;
+ case '<':
+ *newStringP++ = '&';
+ *newStringP++ = 'l';
+ *newStringP++ = 't';
+ *newStringP++ = ';';
+ break;
+ case '>':
+ *newStringP++ = '&';
+ *newStringP++ = 'g';
+ *newStringP++ = 't';
+ *newStringP++ = ';';
+ break;
+ case '\'':
+ *newStringP++ = '&';
+ *newStringP++ = '#';
+ *newStringP++ = '3';
+ *newStringP++ = '9';
+ *newStringP++ = ';';
+ break;
+ case '"':
+ *newStringP++ = '&';
+ *newStringP++ = 'q';
+ *newStringP++ = 'u';
+ *newStringP++ = 'o';
+ *newStringP++ = 't';
+ *newStringP++ = ';';
+ break;
+ default:
+ *newStringP++ = c;
+ break;
+ }
}
/* Don't forget to null-terminate the target string */
*newStringP = '\0';
@@ -305,8 +308,8 @@ TCL_CMD_HEADER( Rivet_EscapeShellCommand
int origLength;
if( objc != 2) {
- Tcl_WrongNumArgs( interp, 1, objv, "string" );
- return TCL_ERROR;
+ Tcl_WrongNumArgs( interp, 1, objv, "string" );
+ return TCL_ERROR;
}
origString = Tcl_GetStringFromObj( objv[1], &origLength );
@@ -315,19 +318,19 @@ TCL_CMD_HEADER( Rivet_EscapeShellCommand
/* for all the characters in the source string */
for (origStringP = origString, newStringP = newString;
- *origStringP != '\0';
- origStringP++) {
- char c = *origStringP;
-
- /* if the character is a shell metacharacter, quote it */
- for (checkP = "&;`'|*?-~<>^()[]{}$\\"; *checkP != '\0'; checkP++) {
- if (c == *checkP) {
- *newStringP++ = '\\';
- break;
- }
- }
+ *origStringP != '\0';
+ origStringP++) {
+ char c = *origStringP;
+
+ /* if the character is a shell metacharacter, quote it */
+ for (checkP = "&;`'|*?-~<>^()[]{}$\\"; *checkP != '\0'; checkP++) {
+ if (c == *checkP) {
+ *newStringP++ = '\\';
+ break;
+ }
+ }
- *newStringP++ = c;
+ *newStringP++ = c;
}
/* Don't forget to null-terminate the target string */
*newStringP = '\0';
@@ -347,33 +350,19 @@ TCL_CMD_HEADER( Rivet_EscapeShellCommand
* in safe interpreters, as they process strings only.
*-----------------------------------------------------------------------------
*/
-int
-Rivet_InitWWW( interp )
- Tcl_Interp *interp;
-{
- Tcl_CreateObjCommand(interp,
- "unescape_string",
- Rivet_UnescapeStringCmd,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "escape_string",
- Rivet_EscapeStringCmd,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "escape_sgml_chars",
- Rivet_EscapeSgmlCharsCmd,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
-
- Tcl_CreateObjCommand(interp,
- "escape_shell_command",
- Rivet_EscapeShellCommandCmd,
- NULL,
- (Tcl_CmdDeleteProc *)NULL);
+int
+Rivet_InitWWW( Tcl_Interp *interp, Tcl_Namespace* rivet_ns)
+{
+ RIVET_OBJ_CMD ("unescape_string",Rivet_UnescapeStringCmd,rivet_ns);
+ RIVET_OBJ_CMD ("escape_string",Rivet_EscapeStringCmd,rivet_ns);
+ RIVET_OBJ_CMD ("escape_sgml_chars",Rivet_EscapeSgmlCharsCmd,rivet_ns);
+ RIVET_OBJ_CMD ("escape_shell_command",Rivet_EscapeShellCommandCmd,rivet_ns);
+/*
+ Tcl_Export (interp,rivet_ns,"unescape_string",0);
+ Tcl_Export (interp,rivet_ns,"escape_string",0);
+ Tcl_Export (interp,rivet_ns,"escape_sgml_chars",0);
+ Tcl_Export (interp,rivet_ns,"escape_shell_ccommand",0);
+*/
return TCL_OK;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: rivet-cvs-unsubscribe@tcl.apache.org
For additional commands, e-mail: rivet-cvs-help@tcl.apache.org