int Web_Eval()

in src/generic/webout.c [75:138]


int Web_Eval(ClientData clientData,
	     Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[])
{
    ResponseObj *savedObj = NULL;
    ResponseObj *responseObj = NULL;
    OutData *outData = NULL;
    Tcl_Obj *code = NULL;
    int retval = 0;

    /* --------------------------------------------------------------------------
     * sanity
     * ----------------------------------------------------------------------- */
    WebAssertData(interp, clientData, "web::putx", TCL_ERROR);
    outData = (OutData *) clientData;

    /* --------------------------------------------------------------------------
     * web::putx myVar test
     * 0         1     2
     * ----------------------------------------------------------------------- */
    WebAssertObjc((objc < 2)
		  || (objc > 3), 1, "?channel|#globalvar? extendedstring");

    if (objc == 2) {
	responseObj = outData->defaultResponseObj;
	savedObj = responseObj;
	code = objv[1];

    }
    else {
	savedObj = outData->defaultResponseObj;
	responseObj = getResponseObj(interp, outData, Tcl_GetString(objv[1]));
	code = objv[2];
    }

    if (responseObj == NULL) {

	LOG_MSG(interp, WRITE_LOG | SET_RESULT, __FILE__, __LINE__,
		"web::putx", WEBLOG_ERROR,
		"error accessing response object", NULL);
	return TCL_ERROR;
    }
    outData->defaultResponseObj = responseObj;

    /* --------------------------------------------------------------------------
     * call eval
     * ----------------------------------------------------------------------- */

    switch (outData->putxMarkup) {
    case brace:
	retval = webout_eval_tag(interp, responseObj, code, "{", "}");
	break;
    case tag:
	retval = webout_eval_tag(interp, responseObj, code, "<?", "?>");
	break;
    default:
	LOG_MSG(interp, WRITE_LOG | SET_RESULT, __FILE__, __LINE__,
		"web::putx", WEBLOG_ERROR, "unknown putxmarkup type", NULL);
	retval = TCL_ERROR;
	break;
    }

    outData->defaultResponseObj = savedObj;
    return retval;
}